• 入门数据库Days7


    mysql约束

    约束用于确保数据库的数据满足特定的商业规则。在mysql中,约束包括 : not null,unique,primary key,foregin key和check五种。

    primary key(主键)

            用于唯一的标示表行的数据,当定义主键结束后,该列不能重复

    注意: 

    • primary key 不能重复且不能为null
    • 一张表最多只能有一个主键,但可以是复合主键
    • 主键的指定方式 有两种
    • 直接在字段后指定 : 字段名  primary key
    • 在表定义最后写  primary key(列名)
    • 使用desc  表名,可以看到primary key 的情况

     not null(非空)

    如果在列上定义了not null,那么当插入数据时,必须为列提供数据。

    unique(唯一)

     当定义了唯一约束后,该列值是不能重复的。

    注意:

    1. 如果没有指定not null,则unique 字段可以有多个null
    2. 一张表可以有多个unique字段

     例:

     

    第二种:

     foreign key(外键约束)

    用于定义主表和从表之间的关系:外键约束要定义在从表上,主表则必须具有主键约束或是unique约束,当定义外键约束后,要求外键列数据必须在主表的主键列存在或是为null(学生/班级 )

     下面创建一个班级表一个学生表

    1. CREATE TABLE my_class(
    2. id INT PRIMARY KEY, -- 班级编号
    3. `name` VARCHAR(32) NOT NULL DEFAULT ' ');
    4. -- 创建从表 my_stu
    5. CREATE TABLE my_stu (
    6. id INT PRIMARY KEY, -- 学生编号
    7. `name` VARCHAR(32) NOT NULL DEFAULT ' ',
    8. class_id INT, -- 学生所在班级的编号
    9. -- 下面指定外键关系
    10. FOREIGN KEY (class_id) REFERENCES my_class(id)
    11. );

    注意:

    •  外键指向的表的字段,要求是primary key 或者是   unique
    • 表的类型是innodb,这样的表才支持外键
    • 外键字段的类型要和主键字段的类型一致(长度可以不同)
    • 外键字段的值,必须在主键字段中出现过,或者为null(前提是外键字段允许为null)
    • 一旦建立主外键的关系,数据不能随意删除了

     外键约束失败

    check

    用于强制行数据必须满足的条件,假定在sal例上定义了check约束,并要求sal列值在1000~2000之间如果不再1000~2000 之间就会提示出错

    mysql 5.7 目前还不支持check,只做语法校验,但不会生效

    学习 oracle,sql server,这两个数据库是真的生效

     例:

    1. -- 商品goods
    2. CREATE TABLE goods (
    3. id INT PRIMARY KEY,
    4. goods_name VARCHAR(64) NOT NULL DEFAULT ' ',
    5. price DECIMAL(10,2) NOT NULL DEFAULT 0 CHECK (price >=1.0 AND
    6. price <=999.99),
    7. category INT NOT NULL DEFAULT 0,
    8. provider VARCHAR(64) NOT NULL DEFAULT ' ');
    1. -- 客户customer
    2. CREATE TABLE customer (
    3. customer_id CHAR(8) PRIMARY KEY,
    4. `name` VARCHAR(64) NOT NULL DEFAULT ' ',
    5. address VARCHAR(64) NOT NULL DEFAULT ' ',
    6. email VARCHAR(64) UNIQUE NOT NULL ,
    7. sex ENUM ('男','女') NOT NULL ,-- 枚举类型
    8. card_id CHAR(18)) ;
    1. -- 购买purchase
    2. CREATE TABLE purchase (
    3. order_id INT UNSIGNED PRIMARY KEY,
    4. customer_id CHAR(8) NOT NULL DEFAULT ' ',-- 外键约束在后
    5. goods_id INT NOT NULL DEFAULT 0, -- 外键约束在后
    6. nums INT NOT NULL DEFAULT 0,
    7. FOREIGN KEY (customer_id) REFERENCES customer(customer_id),
    8. FOREIGN KEY (goods_id) REFERENCES goods(id));

    以上为今天的视频笔记,如有侵权请联系我删除。

    学习如逆水行舟,不进则退。和小吴一起加油吧!

  • 相关阅读:
    【PAT甲级题解】PAT-2020年冬季考试-甲级
    【MySQL事务_2_事务提交与回滚】
    共享办公室行业当前发展现状和未来发展前景
    idea Maven Helper插件使用方法
    Cent OS 使用ip addr or nmcli 分配临时IP地址
    在线相册的前后端交互
    linux 下代码检查工具部署使用
    【实战项目之个人博客】
    Linux应用 防止程序重复发起
    spring启动时如何自定义日志实现
  • 原文地址:https://blog.csdn.net/Wuweihendidiao/article/details/126673133