主键,唯一,非空约束,外键,表属性自动增加(MySQL)

一,添加主键约束

有两种方式可以添加主键约束:1.在定义列的同时指定主键;2.在定义完字段之后再指定主键。

(1) 在定义列的同时指定主键:

(2) 在定义完所有列之后指定主键。

多字段联合主键

举例:

1.	CREATE TABLE t_emp
2.	(
3.	name VARCHAR(32),
4.	deptId INT,
5.	PRIMARY KEY(name,deptId)
6.	)

 

二,外部关键字

将外部关键字叫做外键,外键就是另一张表中的主键

问:外键有啥用啊?

答:外键的主要作用就是保持数据的一致性,完整性。

再问:怎么保证的呢?

答:看图。

如图有两张表,classId T_Student的外键,是T_class 表的主键, 如果我们要删除T_class 表中classId1的字段,程序是会报错的,因为t_student表中有数据和classId1的字段关联了,是不能删除的,这样子就保证了数据的一致性和完整性

继续问:那怎么才能删除呢?

接着答:需要先删除T__student表中classId1的两个字段。

何给表添加外部关键字

MySQL中给表中字段添加外键约束的语法规则如下:

1.	CONSTRAINT 外键名 FOREIGN KEY 字段名 REFERENCES 主表名(主键名)

举个例子:现在有两张表,t_empt_dept如下。

t_dept

字段名称

数据类型

备注

deptId

INT

部门编号

name

VARCHAR(22)

部门名称

location

VARCHAR(50)

部门位置

t_emp

字段名称

数据类型

备注

id

INT

员工编号

name

VARCHAR(22)

员工姓名

deptId

INT

部门ID(外键类型必须和对应主键类型一直)

我们来创建两张表,并给员工表(t_emp)添加外键:

1.	CREATE TABLE t_dept
2.	(
3.	    deptId INT PRIMARY KEY,
4.	    name VARCHAR(22),
5.	    location VARCHAR(50)
6.	);
7.	
8.	CREATE TABLE t_emp
9.	(
10.	    id INT PRIMARY KEY,
11.	    name VARCHAR(22),
12.	    deptId INT,
13.	    CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES t_dept(deptId)
14.	);

 

三,添加唯一约束

唯一约束Unique Constraint要求该列唯一,允许为空,但是只能有一个空值。唯一约束可以确保一列或者几列不出现重复值。

定义部门表的部门名称唯一,SQL语句如下:关键词 UNIQUE

1.	CREATE TABLE t_dept(
2.	    id INT PRIMARY KEY,
3.	    name VARCHAR(22) UNIQUE,
4.	    location VARCHAR(50)
5.	)

四,添加非空约束

在数据库的使用过程中我们经常要限制字段的取值,比如有些字我们不能让它为空,我们就需要添加非空约束

关键词:NOT NULL

例如:

CREATE TABLE t_dept(
    id INT PRIMARY KEY,
    name VARCHAR(22) NOT NULL,
    location VARCHAR(50)
)

五,使用默认约束

默认约束:即给字段一个默认值。

关键词:DEFAULT

1.	CREATE TABLE t_emp(
2.	    id INT PRIMARY KEY,
3.	    name VARCHAR(22),
4.	    sex VARCHAR(2) DEFAULT '男'
5.	) DEFAULT CHARSET=utf8;

注意:

  • 如果是添加字符串型默认值要使用单引号,如果是整型则不需要加任何符号;
  • 如果要添加的是中文默认值,则需要加上DEFAULT CHARSET=utf8;使用英文字符则不需要。

 

五,设置表的属性值自动增加

在数据库应用中,经常有个需求就是,在每次插入新纪录时,系统自动生成字段的主键值,即:

id

name

1

张三

2

李四

ID每次自动加一

姓名

关键词:AUTO_INCREMENT,默认情况下初始值和增量都为1

例如:

•	CREATE TABLE t_tmp
•	(
•	    id int PRIMARY KEY AUTO_INCREMENT,
•	    name VARCHAR(32)
•	)
发布了14 篇原创文章 · 获赞 8 · 访问量 1608

猜你喜欢

转载自blog.csdn.net/Zhongtongyi/article/details/104122729