当前位置: 首页 > news >正文

前端学习之后端java小白(二)-sql约束/建表

一、约束

在这里插入图片描述
SQL约束(Constraints)是用于限制表中数据的规则,确保数据的完整性和准确性。以下是主要的SQL约束类型:

主要约束类型:

1. NOT NULL 约束: 确保列不能包含空值
CREATE TABLE users (id INT NOT NULL,name VARCHAR(50) NOT NULL
);
2. UNIQUE 约束:确保列中的所有值都是唯一的
CREATE TABLE users (id INT UNIQUE,email VARCHAR(100) UNIQUE
);
3. PRIMARY KEY 约束: 唯一标识表中的每一行 / 自动包含 NOT NULL 和 UNIQUE 约束
CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(50)
);
4. FOREIGN KEY 约束: 链接两个表之间的数据 / 确保引用完整性

这是外键约束
FOREIGN KEY (user_id):指定 user_id 列作为外键
REFERENCES users(id):这个外键引用 users 表中的 id 列

CREATE TABLE orders (id INT PRIMARY KEY,user_id INT,FOREIGN KEY (user_id) REFERENCES users(id)
);
5.CHECK 约束: 确保列中的值满足特定条件
CREATE TABLE products (id INT PRIMARY KEY,price DECIMAL(10,2) CHECK (price > 0),age INT CHECK (age >= 18 AND age <= 100)
);
6. DEFAULT 约束: 为列提供默认值
CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(50),created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,status VARCHAR(20) DEFAULT 'active'
);

约束管理:

1. 添加约束
-- 添加 NOT NULL 约束
ALTER TABLE users MODIFY COLUMN email VARCHAR(100) NOT NULL;-- 添加 UNIQUE 约束
ALTER TABLE users ADD CONSTRAINT uk_email UNIQUE (email);-- 添加 FOREIGN KEY 约束
ALTER TABLE orders ADD CONSTRAINT fk_user 
FOREIGN KEY (user_id) REFERENCES users(id);-- 添加 CHECK 约束
ALTER TABLE products ADD CONSTRAINT chk_price 
CHECK (price > 0);
2. 删除约束
-- 删除约束(通过约束名)
ALTER TABLE users DROP CONSTRAINT uk_email;
ALTER TABLE orders DROP CONSTRAINT fk_user;
ALTER TABLE products DROP CONSTRAINT chk_price;-- 删除主键约束
ALTER TABLE users DROP PRIMARY KEY;

约束的好处

  1. 数据完整性:确保数据符合业务规则
  2. 数据一致性:维护数据之间的关系
  3. 防止错误数据:在数据插入/更新时进行验证
  4. 提高查询性能:某些约束(如主键、唯一约束)会自动创建索引

注意事项

  1. 约束在数据插入、更新时会进行检查
  2. 违反约束的操作会被拒绝
  3. 外键约束可能影响删除和更新操作
  4. 过多的约束可能影响写入性能

SQL约束是数据库设计中的重要组成部分,有助于维护数据质量和业务逻辑的正确性。

二、建表

-- 查看有哪些数据库
SHOW DATABASES;
-- 假设要使用名为 'TestData' 的数据库
USE TestData 
-- 现在可以进行表操作了
CREATE TABLE empTest (id INT PRIMARY KEY, -- 员工id,主键且自增长ename VARCHAR(50) NOT NULL UNIQUE, -- 员工姓名,非空并且唯一join_date DATE NOT NULL, -- 入职日期, 非空salary DOUBLE(7,2) NOT NULL, -- 工资 非空bonus DOUBLE(7,2) DEFAULT 0, -- 奖金 非空 product_name VARCHAR(100) DEFAULT 0, -- 产品名称 非空amount DECIMAL(10,2)  -- 金额
);
-- 查看当前选择的数据库
SELECT DATABASE();
-- 查看当前数据库中的所有表
SHOW TABLES;
-- 不选择数据库,直接指定
CREATE TABLE myshop.users (id INT PRIMARY KEY,name VARCHAR(50)
);

文章转载自:

http://qjrTrKUX.pzbqm.cn
http://uqM1Q82C.pzbqm.cn
http://GIoTmqRl.pzbqm.cn
http://JImKZBFr.pzbqm.cn
http://5Gl9BlaD.pzbqm.cn
http://kpxsEjTE.pzbqm.cn
http://SRprWBIi.pzbqm.cn
http://aYdqiyKW.pzbqm.cn
http://VyJKlhHi.pzbqm.cn
http://rKgatjRd.pzbqm.cn
http://UkbjeEz2.pzbqm.cn
http://ziWz6xcw.pzbqm.cn
http://ruLNEI4m.pzbqm.cn
http://vo9gssSg.pzbqm.cn
http://brlEdVLr.pzbqm.cn
http://Bmg8S7t9.pzbqm.cn
http://YLWrWj8Z.pzbqm.cn
http://RdwYAQqe.pzbqm.cn
http://Hq4bRpMc.pzbqm.cn
http://ulHmUOwH.pzbqm.cn
http://rW0hFbLl.pzbqm.cn
http://0LEoo8M3.pzbqm.cn
http://7zSs4NWT.pzbqm.cn
http://ch4vEeBs.pzbqm.cn
http://yN55ZrSn.pzbqm.cn
http://ZJ6Yguad.pzbqm.cn
http://0fLQ7bYv.pzbqm.cn
http://in3U0QTD.pzbqm.cn
http://6lRIAID7.pzbqm.cn
http://dmY5Jewk.pzbqm.cn
http://www.dtcms.com/a/377167.html

相关文章:

  • 深入理解STM32运行原理:从上电到主程序执行的完整过程
  • 基于Qt QML和C++的MQTT测试客户端(CMakeLists实现)
  • 故障预测与自愈:基于时序异常的GPU卡故障提前预警
  • 【Android】CoordinatorLayout 的基本使用
  • 玄机--应急响应--webshell查杀
  • Uniapp跨平台蓝牙多设备并发管理模型
  • 【从0开始学习Java | 第15篇】泛型
  • JavaSE丨深入剖析:从JVM类加载到反射编程的核心机制
  • eclipse中web项目编译后的lib里面jar为空问题处理
  • 非阻塞式等待和进程程序替换
  • 科技信息差(9.10)
  • Laya使用VideoNode动态加载视频,可以自定义播放视频此处以及位置
  • AWStats 网站日志分析工具简单介绍和常见问题
  • 在Windows 11上配置Cursor IDE进行Java开发
  • iOS App 混淆与反编译防护 iOS代码保护、ipa文件安全加固与应用逆向分析对抗全流程指南
  • 【Android】设置让输入框只能输入数字
  • 大数据探索性分析——抽样技术应用
  • 2010-2022 同等学力申硕国考:软件工程简答题真题汇总
  • 在FreeSSL上申请免费证书,将http改成https
  • micropython的属性式GPIO控制
  • 华为FreeBuds 7i没有弹窗如何解决?
  • 循环+函数
  • leetcode-hot100 11.盛水最多容器
  • pyspark 从postgresql读取数据
  • Spring Cloud Alibaba快速入门03-OpenFeign
  • Chrome 插件开发入门技术文章大纲
  • 小说写作中的时间轴管理:基于 Vue 3 的事序图技术实现
  • 计算机视觉与深度学习 | 计算机视觉中线特征提取与匹配算法综述
  • DAPP智能合约系统:技术解析与实现指南
  • AutoTrack-IR-DR200仿真导航实验详解:为高校打造的机器人学习实践平台