- 参考书籍《MySql从入门到精通》
- 学习视频【韩顺平讲MySQL】零基础一周学会MySQL -sql mysql教程 mysql视频 mysql入门_哔哩哔哩_bilibili
- 萌新入门,如有错误恳请各位大佬指点,不甚感激
约束用于确保数据库的数据满足特定的商业规则。在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,那么当插入数据时,必须为列提供数据。
当定义了唯一约束后,该列值是不能重复的。
注意:
- 如果没有指定not null,则unique 字段可以有多个null
- 一张表可以有多个unique字段
例:
第二种:
用于定义主表和从表之间的关系:外键约束要定义在从表上,主表则必须具有主键约束或是unique约束,当定义外键约束后,要求外键列数据必须在主表的主键列存在或是为null(学生/班级 )
下面创建一个班级表一个学生表
- CREATE TABLE my_class(
- id INT PRIMARY KEY, -- 班级编号
- `name` VARCHAR(32) NOT NULL DEFAULT ' ');
- -- 创建从表 my_stu
- CREATE TABLE my_stu (
- id INT PRIMARY KEY, -- 学生编号
- `name` VARCHAR(32) NOT NULL DEFAULT ' ',
- class_id INT, -- 学生所在班级的编号
- -- 下面指定外键关系
- FOREIGN KEY (class_id) REFERENCES my_class(id)
- );
注意:
- 外键指向的表的字段,要求是primary key 或者是 unique
- 表的类型是innodb,这样的表才支持外键
- 外键字段的类型要和主键字段的类型一致(长度可以不同)
- 外键字段的值,必须在主键字段中出现过,或者为null(前提是外键字段允许为null)
- 一旦建立主外键的关系,数据不能随意删除了
外键约束失败
用于强制行数据必须满足的条件,假定在sal例上定义了check约束,并要求sal列值在1000~2000之间如果不再1000~2000 之间就会提示出错
mysql 5.7 目前还不支持check,只做语法校验,但不会生效
学习 oracle,sql server,这两个数据库是真的生效
例:
- -- 商品goods
- CREATE TABLE goods (
- id INT PRIMARY KEY,
- goods_name VARCHAR(64) NOT NULL DEFAULT ' ',
- price DECIMAL(10,2) NOT NULL DEFAULT 0 CHECK (price >=1.0 AND
- price <=999.99),
- category INT NOT NULL DEFAULT 0,
- provider VARCHAR(64) NOT NULL DEFAULT ' ');
- -- 客户customer
- CREATE TABLE customer (
- customer_id CHAR(8) PRIMARY KEY,
- `name` VARCHAR(64) NOT NULL DEFAULT ' ',
- address VARCHAR(64) NOT NULL DEFAULT ' ',
- email VARCHAR(64) UNIQUE NOT NULL ,
- sex ENUM ('男','女') NOT NULL ,-- 枚举类型
- card_id CHAR(18)) ;
- -- 购买purchase
- CREATE TABLE purchase (
- order_id INT UNSIGNED PRIMARY KEY,
- customer_id CHAR(8) NOT NULL DEFAULT ' ',-- 外键约束在后
- goods_id INT NOT NULL DEFAULT 0, -- 外键约束在后
- nums INT NOT NULL DEFAULT 0,
- FOREIGN KEY (customer_id) REFERENCES customer(customer_id),
- FOREIGN KEY (goods_id) REFERENCES goods(id));
以上为今天的视频笔记,如有侵权请联系我删除。
学习如逆水行舟,不进则退。和小吴一起加油吧!