入门数据库Days7

  • 参考书籍《MySql从入门到精通》
  • 学习视频【韩顺平讲MySQL】零基础一周学会MySQL -sql mysql教程 mysql视频 mysql入门_哔哩哔哩_bilibili
  • 萌新入门,如有错误恳请各位大佬指点,不甚感激

mysql约束

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

primary key(主键)

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

入门数据库Days7_第1张图片

注意: 

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

 not null(非空)

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

unique(唯一)

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

注意:

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

 例:入门数据库Days7_第2张图片

入门数据库Days7_第3张图片 

第二种:

 foreign key(外键约束)

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

入门数据库Days7_第4张图片

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

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) 
	);

入门数据库Days7_第5张图片

注意:

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

 外键约束失败

check

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

入门数据库Days7_第6张图片

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

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

 例:

入门数据库Days7_第7张图片

-- 商品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));
	

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

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

你可能感兴趣的:(mysql,数据库,mysql)