数据约束

数据约束

  定义:对用户操作表的数据进行约束

 默认值约束

  作用:当用户对使用默认值的字段不插入值的时候,就使用默认值

  注意:                     

                   1)对默认值字段插入null是可以的。

                   2)对默认值字段可以插入非null

  例子:

CREATE TABLE USER(
    uid INT,
    uname VARCHAR(10),
    address VARCHAR(30) DEFAULT '山东省'
)
INSERT INTO USER(uid, uname) VALUES(1,'张三');

INSERT INTO USER VALUES(2,'李四','河南省');
SELECT * FROM USER;

 效果为:

非空约束 

  作用: 限制字段必须赋值

  注意:

           1)非空字符必须赋值

           2)非空字符不能赋null

CREATE TABLE USER(
    uid INT NOT NULL,
    uname VARCHAR(10),
    address VARCHAR(30) DEFAULT '山东省'
)
INSERT INTO USER(uid,uname) VALUES(1,'张三');
SELECT * FROM USER;

唯一约束

  作用: 对字段的值不能重复

  注意:

           1)唯一字段可以插入null                               

           2)唯一字段可以插入多个null

CREATE TABLE USER(
    uid INT UNIQUE,
    uname VARCHAR(10),
    address VARCHAR(30) DEFAULT '山东省'
)
INSERT INTO USER(uid,uname) VALUES(2,'张三');
SELECT * FROM USER;

主键约束

  作用: 非空+唯一

  注意:                      

           1)通常情况下,每张表都会设置一个主键字段。用于标记表中的每条记录的唯一性。

           2)建议不要选择表的包含业务含义的字段作为主键,建议给每张表独立设计一个非业务含义的id字段。

-- 主键约束
CREATE TABLE USER(
    uid INT PRIMARY KEY,
    uname VARCHAR(10),
    address VARCHAR(30) DEFAULT '山东省'
)
INSERT INTO USER (uid,uname) VALUES(2,'张三');

 自增长约束

  作用:自动递增

/*自增长约束AUTO_INCREMENT*/
CREATE TABLE USER(
    uid INT PRIMARY KEY AUTO_INCREMENT,
    uname VARCHAR(10),
    address VARCHAR(30) DEFAULT '山东省'
)
INSERT INTO USER(uname) VALUES('张三');
SELECT * FROM USER

 零填充约束

1 CREATE TABLE USER(
2      uid INT(3) ZEROFILL  PRIMARY KEY AUTO_INCREMENT,
3      uname   VARCHAR(10),
4      address   VARCHAR(30) DEFAULT '山东省'
5 )
6 INSERT INTO USER(uname) VALUES('张三');

delete from 清空表不能删除约束

1 DELETE FROM USER;

truncate table 清空表可以删除约束

1 TRUNCATE TABLE USER;

 外键约束

  作用:约束两种表的数据                

  出现两种表的情况:

           解决数据冗余高问题: 独立出一张表

 注意:

                            1)被约束的表称为副表,约束别人的表称为主表,外键设置在副表上的!!!

                            2)主表的参考字段通用为主键!

                            3)添加数据: 先添加主表,再添加副表

                            4)修改数据: 先修改副表,再修改主表

                            5)删除数据: 先删除副表,再删除主表

-- 先见主表
CREATE TABLE dept(
  -- 主键,自增 deptid
INT PRIMARY KEY AUTO_INCREMENT, deptname VARCHAR(10) ) INSERT INTO dept (deptname) VALUES('软件开发部'); INSERT INTO dept (deptname) VALUES('软件测试部'); INSERT INTO dept (deptname) VALUES('软件运维部'); SELECT * FROM dept; -- 副表 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('张三',2); SELECT * FROM emp;

-- 修改附表
UPDATE emp SET deptid = 3  WHERE eid =1;

-- 修改主表
UPDATE dept SET deptid = 2  WHERE deptid =1;

-- 删除主表
DELETE FROM emp WHERE deptid =3;
-- 删除副表
DELETE FROM dept WHERE deptid =3;
原文地址:https://www.cnblogs.com/lzw123-/p/9294011.html