zoukankan      html  css  js  c++  java
  • 数据约束

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

    1、默认值约束 default

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

    CREATE TABLE student(
        id INT,
        NAME VARCHAR(20),
        address VARCHAR(20) DEFAULT '山东淄博'  -- 默认值
    )

    当用户插入NULL时,可以允许,值为NULL

    2、非空约束   NOT NULL

    限制字段必须赋值,不能为NULL

    -- 需求: gender字段必须有值(不为null)
    CREATE TABLE student(
        id INT,
        NAME VARCHAR(20),
        gender VARCHAR(2) NOT NULL -- 非空
    )
    --非空字符gender不能插入null

    3、唯一约束  unique

    设定字段的值不能重复

    CREATE TABLE student(
        id INT UNIQUE, -- 唯一
        NAME VARCHAR(20)
    )

    id字段不能有重复字段

    注意: 1)唯一字段可以插入null

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

    4、主键约束   primary key

    设定该字段唯一且非空,每个表只能有一个主键

    CREATE TABLE student(
        id INT PRIMARY KEY, -- 主键
        NAME VARCHAR(20)
    )

    注意:

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

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

    5、自增长约束  AUTO_INCREMENT

    设定自动递增,前提该字段必须是主键,默认1开始

    CREATE TABLE student(
        id INT PRIMARY KEY AUTO_INCREMENT, -- 自增长,从1开始  
        NAME VARCHAR(20)
    )

    注意:

    -- 不能影响自增长约束,再次添加数据,还从删除前接着自增
    DELETE FROM student;
    
    -- 可以影响自增长约束,再次添加数据,重新从1开始自增
    TRUNCATE TABLE student;

    零填充  ZEROFILL 

    CREATE TABLE USER(
        uid INT(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT,
        uname VARCHAR(10),
        address VARCHAR(30) DEFAULT '山东省'
    )
    --int 后添加位数,ZEROFILL,在前面用零填充

    6、外键

    约束两种表的数据,只能是另一个表的主键

     出现两种表的情况:为解决数据冗余高问题: 独立出一张表

    -- 部门表(主表)
    CREATE TABLE dept(
        id INT PRIMARY KEY,
        deptName VARCHAR(20)
    )
    
    -- 修改员工表(副表/从表)
    CREATE TABLE employee(
        id INT PRIMARY KEY,
        empName VARCHAR(20),
        deptId INT,-- 把部门名称改为部门ID,数据类型与dept定义相同
        -- 声明一个外键约束
        CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id)
    )
    deptId INT,  -- 数据类型int 与dept定义相同
    CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id)
    --CONSTRAINT     声明
    --emlyee_dept_fk 自定义 (emlyee:本表名,dept:外键表名,fk:外键缩写 FOREIGN KEY)
    --FOREIGN KEY    外键约束语句
    --deptId         与emlyee的外键名相同
    --REFERENCES     依赖
    --dept(id)      dept的id键(与dept一致)

    注意:

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

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

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

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

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

  • 相关阅读:
    深度分析:SpringBoot异常捕获与封装处理,看完你学会了吗?
    去年去阿里面试,面试官居然问我Java类和对象,我是这样回答的!
    面试官:小伙子,你给我详细说一下线程的状态有哪些吧?
    新鲜出炉!JAVA线程池精华篇深度讲解,看完你还怕面试被问到吗?
    面试官:小伙子,你给我讲一下java类加载机制和内存模型吧
    深度分析:面试90%被问到的多线程、创建线程、线程状态、线程安全,一次性帮你全搞定!
    close与shutdown
    select模型(二 改进服务端)
    select模型(一 改进客户端)
    5种IO模型
  • 原文地址:https://www.cnblogs.com/dk2557/p/9293052.html
Copyright © 2011-2022 走看看