用网页制作个人网站,长沙关键词排名首页,网站安排,邢台企业做网站约束 作用#xff1a;对表中的数据进行限定#xff0c;保证数据的正确性、有效性、完整性#xff01; 约束分类#xff1a;
约束说明PRIMARY KEY主键约束PRIMARY KEY AUTO_INCREMENT主键、自动增长UNIQUE唯一约束NOT NULL非空约束FOREIGN KEY外键约束FOREIGN KEY ON UPDAT…约束 作用对表中的数据进行限定保证数据的正确性、有效性、完整性 约束分类
约束说明PRIMARY KEY主键约束PRIMARY KEY AUTO_INCREMENT主键、自动增长UNIQUE唯一约束NOT NULL非空约束FOREIGN KEY外键约束FOREIGN KEY ON UPDATE CASCADE外键级联更新FOREIGN KEY ON DELETE CASCADE外键级联删除
主键约束
特点 主键约束包含非空和唯一两个功能一张表只能有一个列作为主键主键一般用于表中数据的唯一标识 语法
含义SQL语句在创建表的时候给字段添加主键字段名 字段类型 PRIMARY KEY在已有表中添加主键ALTER TABLE 表名 ADD PRIMARY KEY(字段名);删除主键ALTER TABLE 表名 DROP PRIMARY KEY;主键⾃增字段名 字段类型 PRIMARY KEY AUTO_INCREMENT修改自增起始值ALTER TABLE 表名 AUTO_INCREMENT起始值;
演示
-- 标准语法
CREATE TABLE 表名(列名 数据类型 PRIMARY KEY,列名 数据类型,...
);-- 创建学生表并加主键
CREATE TABLE student(id INT PRIMARY KEY,-- id是主键NAME VARCHAR(30),age TINYINT
);-- 查询学生表详细信息
DESC student;-- 添加数据
INSERT INTO student VALUES(NULL,韩信,99); -- 不能为空
INSERT INTO student VALUES(1,韩信,99);-- 不能重复
INSERT INTO student VALUES1,露娜,98);
INSERT INTO student VALUES(2,李白,97);-- 删除主键
ALTER TABLE student DROP PRIMARY KEY;-- 建表以后单独添加主键
ALTER TABLE student MODIFY id INT PRIMARY KEY;主键自增 Mysql中的自增约束必须配合键的约束一起用如果删除某一行数据再添加一行那id就会再删除的id的基础上加1 -- 建表时添加主键自增约束
CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(30),age TINYINT
);-- 添加数据
INSERT INTO student VALUES (NULL,韩信,99);
INSERT INTO student VALUES (NULL,李白,98);-- 删除主键自增约束
ALTER TABLE student MODIFY id INT;-- 建表后单独添加主键自增约束
ALTER TABLE student MODIFY id INT AUTO_INCREMENT;唯一约束作用使这个字段的值不能够重复唯一约束的格式CREATE TABLE 表名 (字段名 字段类型, 字段名 字段类型 UNIQUE );非空约束CREATE TABLE 表名 (字段名 字段类型,字段名 字段类 NOT NULL, );默认值作用如果这个字段不设置值就使用默认值。默认值的格式CREATE TABLE 表名 (字段名 字段类型, DEFAULT 默认值);
唯一约束 唯一约束就是不让值重复使用关键字UNIQUE -- 唯一约束 标准语法
CREATE TABLE 表名(列名 数据类型 UNIQUE,列名 数据类型,...
);-- 建表时添加唯一约束
CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(30),age TINYINT UNIQUE
);-- 添加数据
INSERT INTO student VALUES (NULL,韩信,99);
INSERT INTO student VALUES (NULL,李白,99);-- 删除唯一约束
ALTER TABLE student DROP INDEX age;-- 建表后添加唯一约束如果要约束的列已经有重复数据是添加不了的
ALTER TABLE student MODIFY age INT UNIQUE;非空约束
-- 非空约束标准语法
CREATE TABLE 表名(列名 数据类型 NOT NULL,列名 数据类型,...
);-- 创建表时添加非空约束
CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20) NOT NULL, -- 给name添加非空约束age INT UNIQUE
);-- 添加数据
INSERT INTO student VALUES (NULL,韩信,99),(NULL,李白,98);-- 删除非空约束
ALTER TABLE student MODIFY name VARCHAR(20);-- 创建表后单独添加非空约束,如果有已经存在的null值会提醒但不报错原来的null值会变空
ALTER TABLE student MODIFY name VARCHAR(20) NOT NULL;外键约束 一个表中的某个字段引用其他表的主键这个字段称为外键主表主键所在的表,约束别人的表,将数据给别人用副表/从表外键所在的表,被约束的表,使用别人的数据 作用 作用就是让表和表之间产生关系保证数据的准确性 为什么有外键约束 表和表之间的数据有关联的时候没有相关的数据约束无法保证数据的准确性 什么时候用 表和表之间有关联的时候呗比如是用户和订单两个表之间 当我们在employee的dep_id里面输入不存在的部门,数据依然可以添加.但是并没有对应的部门不能出现这种情况。employee的dep_id中的内容只能是department表中存在的id 需要达到目的需要约束dep_id只能是department表中已经存在id 解决方式使用外键约束 -- 创建表的时候添加外键约束
-- 格式 CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主表主键列名)
-- 创建用户和订单表
CREATE TABLE user(id INT PRIMARY KEY AUTO_INCREMENT, -- idNAME VARCHAR(20) NOT NULL -- 姓名
);-- 创建orderlist订单表
CREATE TABLE orderlist(id INT PRIMARY KEY AUTO_INCREMENT, -- idnumber VARCHAR(20) NOT NULL, -- 订单编号uid INT, -- 订单所属用户CONSTRAINT ou_wjys FOREIGN KEY (uid) REFERENCES USER(id)
);-- 添加USER表数据
INSERT INTO USER VALUES (NULL,韩信),(NULL,李白),(NULL,露娜);-- 添加orderlist表数据
INSERT INTO orderlist VALUES
(NULL,001,1),(NULL,001,1),
(NULL,002,2),(NULL,002,2),
(NULL,003,3),(NULL,003,3);-- 查询数据
SELECT * FROM USER;
SELECT * FROM orderlist;-- 查询表结构
DESC USER;
DESC orderlist;-- 删除外键
ALTER TABLE orderlist DROP FOREIGN KEY ou_wjys;-- 创建表后单独添加外键约束
ALTER TABLE orderlist ADD CONSTRAINT ou_wjys FOREIGN KEY (uid) REFERENCES USER(id);外键级联更新和级联删除
什么是级联更新和级联删除 把user用户表中的某个用户删该用户所有的订单也随之被删除 把user用户表中的某个用户id修改订单表中该用户所属的订单用户编号也随之修改 语法格式 级联更新ON UPDATE CASCADE 级联删除ON DELETE CASCADE 级联更新和级联删除ON UPDATE CASCADE ON DELETE CASCADE -- 添加级联更新
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名) ON UPDATE CASCADE;
-- 添加级联删除
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名) ON DELETE CASCADE;
-- 添加级联更新和级联删除
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名) ON UPDATE CASCADE ON DELETE CASCADE;演示
-- 添加级联更新和级联删除
ALTER TABLE orderlist ADD CONSTRAINT ou_wjys FOREIGN KEY (uid) REFERENCES USER(id) ON UPDATE CASCADE ON DELETE CASCADE; -- 将韩信这个用户的id改为9
UPDATE USER SET id 9 WHERE id 1 ;-- 将韩信这个用户删除
DELETE FROM USER WHERE id 9;