• MySQL数据约束


    定义:建表时在各字段类型后设置,用来对用户操作表的数据进行约束。

    代码:

    1.默认值  :   default ' ' 

    作用:当用户对使用默认值的字段不插入值的时候,就使用默认值(自动填充)。

    注意:(1) 对默认值字段插入null是可以的

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

    create table student(
           id int,
           name  varchar(20),
           address varchar(20)  default '山东淄博'     /*默认值*/
    );

    2.非空  :   not null

    作用: 限制字段必须赋值, ' ' 空字符也是值

    注意:  (1)非空字符必须赋值

                 (2)非空字符不能赋null

    create table student(
           id int,
           name  varchar(20),
           address varchar(20) not null     /*非空*/
    );
    /*非空字段必须赋值*/
    insert into student(id,name)values(1,'张三') /*添加失败,因为没有赋值*/
    /*非空字符不能插入null*/
    insert into student values(1,'张三',NULL)    /*添加失败,因为赋值NULL*/

    3.唯一 : unique

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

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

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

    create table student(
           id int unique,    /*int 唯一*/
           name  varchar(20),
           address varchar(20)     
    );
    insert into student(id,name)values(1,'张三')  
    insert into student values(1,'张三','山东淄博')    /*添加失败,因为id重复了*/

    4.主键: primary key

    作用:非空 + 唯一

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

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

    create table student(
           id int unique,    /*int 唯一*/
           name  varchar(20),
           address varchar(20)     
    );
    insert into student(id,name)values(1,'张三')  
    insert into student values(1,'张三''山东淄博')    /*添加失败,因为id重复了 错误代码:Duplicate entry '1' for key 'PRIMARY'*/
    insert into student values(null,'张三''山东淄博')  /*添加失败,因为id没有赋值 错误代码:ERROR 1048 (23000): Column 'id' cannot be null*/

    5.自增长:zerofill primary key auto_increment

    create table student(
           id int ZEROFILL PRIMARY KEY AUTO_INCREMENT,    /*自增长,从0开始
               zerofill :l填充 */
           name  varchar(20)     
    );
    insert into student(name)values('张三');        
    insert into student(name)values('李四');  
    insert into student(name)values('王五');  
    /*id 自动对应为 0,1,2*/    

    6.外键: constraint 副表名称_主表名称_fk foreign key(副表中的某字段名) references 主表名称(主表主键)

    作用:约束两种表的数据,副表中的外键字段必须主表主键对应

    /*部门表(主表)*/
    CREATE TABLE dept(
        id INT PRIMARY KEY,
        deptName VARCHAR(20)
    )
    
    /* 修改员工表(副表/从表)*/
    CREATE TABLE employee(
        eid INT PRIMARY KEY,
        empName VARCHAR(20),
        deptId INT,/* 把部门名称改为部门ID  */
        /* 声明一个外键约束  /*
        CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id)
        /*           外键名称                  外键               参考表(参考字段)*/
    )

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

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

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

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

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

  • 相关阅读:
    Ubuntu中用户名密码和root密码修改
    在Python中,输出格式:%d , %6d , %-6d, %06d , %.6f的一些区分
    定制的print()输出格式
    python编程系列---Pycharm快捷键(更新中....)
    webbrowser控件——Windows下的开发利器
    Windows读写文件的猫腻
    根据GUID获取设备信息
    转:APDU命令格式
    VC中添加消息响应函数
    VC 取消warning
  • 原文地址:https://www.cnblogs.com/0328dongbin/p/9007465.html
Copyright © 2020-2023  润新知