1、分类
-- 每个表最多只允许一个主键,主键约束列不允许重复,也不允许出现空值。
主键约束(primary key) PK
自增长约束(auto_increment)
非空约束(not null)
唯─性约束(unique)
默认约束(default)
零填充约束(zerofill)
外键约束(foreign key)FK
2、主键
语法案例
CREATE TABLE reader(
id INT primary key, -- 主键
card_id char(18),
gender VARCHAR(10),
age INT,
birth DATE,
score DOUBLE
);
3、联合主键
语法结构
CREATE TABLE reader(
primary key (列名1,列名2,列名3.... ) -- 主键
);
语法案例
-- 联合主键 constraint
CREATE TABLE emp(
name VARCHAR(10),
de VARCHAR(10),
-- constraint关键字 PK1加不加都行 主键名称
constraint pk1 primary key(name,de)
);
4、修改表结构添加主键
语法结构
creat table 表名(
...
);
alter table <表名> add primary key (字段名);
语法案例
CREATE TABLE emp(
name VARCHAR(10),
de VARCHAR(10),
);
alter table emp add primary key (name);
5、删除主键约束
语法结构
alter table <表名> drop primary key;
语法案例
alter table emp drop primary key;
6、自增约束
当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。每增加一条记录 主键会自动以相同的步长进行增长。
语法结构
字段名 数据类型 auto_increment
语法案例
CREATE TABLE emp(
-- 自增约束
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20)
);
7、指定自增字段约束
语法案例
CREATE TABLE emp(
-- 自增约束
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20)
)AUTO_INCREMENT=100; -- 指定自增约束 从100开始
8、非空约束
语法结构
方式1:<字段名> <数据类型> not null;
方式2:alter table 表名 modify 字段 类型 not null;
语法案例
CREATE TABLE emp(
id INT,
name VARCHAR(20) NOT NULL,
address VARCHAR(20) NOT NULL
);
9、唯一约束
是指所有记录中字段的值不能重复出现
语法结构
方式1:<字段名> <数据类型> nuique;
方式2:alter table 表名 add coonstraint 约束名 nuique;
语法案例
CREATE TABLE emp(
id INT,
name VARCHAR(20),
phone_number VARCHAR(20) nuique
);
alter table emp add coonstraint 约束名 nuique(id);
10、默认约束
语法结构
方式1:<字段名> <数据类型> default <默认值>;
方式2:alter table 表名 modify 列名 类型 default 默认值;
语法案例
CREATE TABLE emp(
id INT,
name VARCHAR(20),
address VARCHAR(20) default '北京' -- 指定默认约束
);
11、外键约束
主表的数据被从表依赖时,不能删除,否则可以删除
从表的数据可以随便删除
语法结构
在create table语句中,通过foreign key关键字来指定外键,具体的语法格式如下:
constraint 外键名 foreign key(外键列名) references 主表名(主键列名)
alter table student add constraint fk_student_grade foreign key(gid) references grade(gradeid);
语法案例
CREATE DATABASE mydb;
USE mydb;
-- 创建部门表 主表
CREATE TABLE dept (
detpno VARCHAR ( 20 ) PRIMARY KEY, -- 部门号
name VARCHAR ( 20 ) -- 部门名字
);
-- 创建员工表,并创建dept_id外键约束
CREATE TABLE emp (
eid VARCHAR ( 20 ) PRIMARY KEY,-- 员工编号
ename INT, -- 员工名字
dept_id VARCHAR ( 20 ), -- 所属部门
-- 外键约束 外键内容
CONSTRAINT emp_fk FOREIGN KEY ( dept_id ) REFERENCES dept ( detpno )
)
12、删除外键约束
当一个表中不需要外键约束时,就需要从表中将其删除。外键一旦删除,就会解除主表和从表间的关联关系
语法结构
alter table <表名> drop foreign key <外键约束名>;
语法案例
alter table emp2 drop foreign key dept_id;