• 数据约束


    数据约束

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

     默认值约束

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

      注意:                     

                       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;
  • 相关阅读:
    09.session #
    08.cookie
    07.中间件
    06.类视图
    374. 猜数字大小 力扣 二分 简单却易错
    278. 第一个错误的版本 力扣 二分 简单
    1449. 数位成本和为目标值的最大数字 力扣 动态规划 难 string赋值和比较
    279. 完全平方数 力扣 动态规划 中等
    518. 零钱兑换 II 力扣 动态规划,中等吧
    203. 移除链表元素 力扣
  • 原文地址:https://www.cnblogs.com/lzw123-/p/9294011.html
Copyright © 2020-2023  润新知