1、单字段主键:
create table tb_emp(id int(11) primary key,name varchar(25),depId int(11),salary float);
primary key 指定该列为主键;
定义完所有列之后指定主键:
create table tb_emp(id int(11),name varchar(25),deptId int(11),salary float,primary key(id));
2、使用外键约束
语法:
constraint <外键名> foreign key 字段名1 ,字段名2,... references <主表名> 主键列1,主键列2,...
create table tb_dept1(id int(11) primary key,name varchar(22) not null,location varchar(50));create table tb_emp(id int(11) primary key,name varchar(25),deptId int(11),salary float,constraint fk_emp_dept1 foreign key(deptId) references tb_dept1(id));
以上语句执行之后,在表tb_emp上添加了名称为fk_emp_dept1的外键约束,外键名称为deptId,其依赖于表tb_dept1的主键id。
3、非空约束
语法:
字段名 数据类型 not null
create table tb_emp(id int(11) primary key,name varchar(25) not null,deptId int(11),salary float);
执行之后,在tb_emp中创建了一个name字段,其插入值不能为空(not null)。
4、唯一性约束
语法:
create table tb_dept(id int(11) primary key,name varchar(22) unique,location varchar(50));
字段名 数据类型 unique
也可以在定义完所有列之后指定唯一约束,语法如下:
constraint <约束名> unique (<字段名>)
create table tb_dept(id int(11) primary key,name varchar(22),location varchar(50),constraint sth unique(name));
unique和primary key的区别:一个表中可以有多个字段声明为unique,但只能有一个primary key声明;声明为primary key 的列不允许有空值,但是声明为unique的字段允许空值(null)的存在。
5、使用默认约束
语法:
字段名 数据类型 default 默认值
create table tb_emp(id int(11) primary key,name varchar(25) not null,deptId int(11) default 111,salary float);
以上语句执行之后,表tb_emp上的字段deptId拥有了一个默认值111,新插入的记录如果没有指定部门编号,则默认都为111。
6、设置表的属性值自动增加
语法:
字段名 数据类型 auto_increment
create table tb_emp(id int(11) primary key auto_increment,name varchar(25) not null,deptId int(11),salary float);
在mysql中,auto_increment的初始值是1,每新增一条记录,字段值自动加1。一个表只能有一个字段使用auto_increment约束,且该字段必须为主键的一部分。auto_increment约束的字段可以是任何整数类型(tinyint、smallin、int、bigint等)。