MySQL 数据约束
非空约束
CREATE TABLE USER( uid INT NOT NULL,-- 非空约束 uname VARCHAR(10), address VARCHAR(30) DEFAULT '山东省' -- 默认值 )
唯一约束
CREATE TABLE USER( uid INT UNIQUE,-- 唯一约束 uname VARCHAR(10), address VARCHAR(30) DEFAULT '山东省' -- 默认值 )
-- 主键约束 -- 注意: -- 1)通常情况下,每张表都会设置一个主键字段。用于标记表中的每条记录的唯一性。 -- 2)建议不要选择表的包含业务含义的字段作为主键,建议给每张表独立设计一个非业务含义的id字段。
CREATE TABLE USER( uid INT PRIMARY KEY,-- 主键约束 非空+唯一 uname VARCHAR(10), address VARCHAR(30) DEFAULT '山东省' -- 默认值 ) INSERT INTO USER( uid,uname) VALUES('张三');
自增长约束
CREATE TABLE USER( uid INT PRIMARY KEY AUTO_INCREMENT,-- 自增长约束必须是主键 uname VARCHAR(10), address VARCHAR(30) DEFAULT '山东省' -- 默认值 ) INSERT INTO USER(uname) VALUES('张三');
零填充
CREATE TABLE USER( uid INT(5) ZEROFILL PRIMARY KEY AUTO_INCREMENT,-- 自增长约束必须是主键,零填充 uname VARCHAR(10), address VARCHAR(30) DEFAULT '山东省' -- 默认值 ) INSERT INTO USER(uname) VALUES('张三');
-- delete from 清空表不能删除约束 -- tauncate table 清空表能删除约束
外键
CREATE TABLE dept( deptid INT PRIMARY KEY AUTO_INCREMENT, deptname VARCHAR(10) ) SELECT * FROM dept; SELECT * FROM emp; INSERT INTO dept(deptname) VALUES('软件开发部'); INSERT INTO dept(deptname) VALUES('软件测试部'); CREATE TABLE emp( eid INT PRIMARY KEY AUTO_INCREMENT, ename VARCHAR(5), deptid INT, CONSTRAINT emp_dept_fk FOREIGN KEY(deptid) REFERENCES dept(deptid) ) INSERT INTO emp(ename,deptid) VALUES('张三',1);
1)被约束的表称为副表,约束别人的表称为主表,外键设置在副表上的!!!
2)主表的参考字段通用为主键!
3)添加数据: 先添加主表,再添加副表
4)修改数据: 先修改副表,再修改主表
5)删除数据: 先删除副表,再删除主表