MySql之约束详解

约束

约束是添加在列上的,用来约束列的!

主键约束(唯一标识)

PRIMARY KEY
  • 非空
  • 唯一
  • 被引用

当表的某一列被指定为主键后,该列就不能为空,不能有重复值出现。

创建表时指定主键的两种方式:

CREATE TABLE stu(
sid	    CHAR(6) PRIMARY KEY,
sname	VARCHAR(20),
age		INT,
gender	VARCHAR(10) 
);

指定sid列为主键列,即为sid列添加主键约束

CREATE TABLE stu(
sid	    CHAR(6),
sname	VARCHAR(20),
age		INT,
gender	VARCHAR(10),
PRIMARY KEY(sid)
);

指定sid列为主键列,即为sid列添加主键约束

  • 修改表时指定主键:ALTER TABLE 表名 ADD PRIMARY KEY(sid);
  • 删除主键:ALTER TABLE 表名 DROP PRIMARY KEY;

主键自增长

AUTO_INCREMENT
  • 因为主键列的特性是:必须唯一、不能为空,所以我们通常会指定主键类为整型,然后设置其自动增长,这样可以保证在插入数据时主键列的唯一和非空特性。
  • 创建表时指定主键自增长
CREATE TABLE stu(
		sid INT PRIMARY KEY AUTO_INCREMENT,
		sname	VARCHAR(20),
		age		INT,
		gender	VARCHAR(10)
  );
  • 修改表时设置主键自增长:ALTER TABLE stu CHANGE sid sid INT AUTO_INCREMENT;
  • 修改表时删除主键自增长:ALTER TABLE stu CHANGE sid sid INT;

非空约束

NOT NULL

因为某些列不能设置为NULL值,所以可以对列添加非空约束。
例如:

  CREATE TABLE stu(
		sid INT PRIMARY KEY AUTO_INCREMENT,
		sname	VARCHAR(20) NOT NULL,
		age		INT,
		gender	VARCHAR(10)
  );
  
  对sname列设置了非空约束
  

唯一约束

库某些列不能设置重复的值,所以可以对列添加唯一约束。

例如:

  CREATE TABLE stu(
		sid INT PRIMARY KEY AUTO_INCREMENT,
		sname	VARCHAR(20) NOT NULL UNIQUE,
		age		INT,
		gender	VARCHAR(10)
  );
  • 对sname列设置了非空约束

外键约束

  • 外键必须是另一表的主键的值 (外键要引用主键!)
  • 外键可以重复
  • 外键可以为空
  • 一张表中可以有多个外键!

语法:

CONSTRAINT 约束名称 FOREIGN KEY(外键列名) REFERENCES 关联表(关联表的主键) 

创建表时指定外键约束

 create talbe emp (
    empno int primary key,
    ...
    mgr int, emp中加约束的列
    约束:
    CONSTRAINT fk_emp   FOREIGN KEY(mgr) REFERENCES     emp(empno)  
      关键字    约束名		加约束的列      关键字     引用的表和其主键
  );

修改表时添加外键约束

ALERT TABLE emp
  ADD CONSTRAINT fk_emp   FOREIGN KEY(mgr) REFERENCES     emp(empno)  

修改表时删除外键约束

  ALTER TABLE emp
  DROP FOREIGN KEY fk_emp_deptno;  约束名称
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值