主键由一个字段组成,SQL语句格式分为以下两种情况:
# 在定义列的同时指定主键
字段名 数据类型 PRIMARY KEY [默认值]
CREATE TABLE tb_emp2
(
id INT PRIMARY KEY,
name VARCHAR(25),
deptId INT,
salary FLOAT
);
# 在定义完所有列之后指定主键
[CONSTRAINT <约束名>] PRIMARY KEY [字段名]
CREATE TABLE tb_emp3
(
id INT,
name VARCHAR(25),
deptId INT,
salary FLOAT,
PRIMARY KEY(id)
);
#主键由多个字段联合组成
PRIMARY KEY [字段1, 字段2,…,字段n]
CREATE TABLE tb_emp4
(
name VARCHAR(25),
deptId INT,
salary FLOAT,
PRIMARY KEY(name,deptId)
);
[CONSTRAINT <外键名>] FOREIGN KEY 字段名1 [ ,字段名2,…]
REFERENCES <主表名> 主键列1 [ ,主键列2,…]
# 主表
CREATE TABLE tb_dept1
(
id INT PRIMARY KEY,
name VARCHAR(22) NOT NULL,
location VARCHAR(50)
);
# 从表
CREATE TABLE tb_emp5
(
id INT PRIMARY KEY,
name VARCHAR(25),
deptId INT,
salary FLOAT,
CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
);
非空约束(Not Null ConstraINT)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。
字段名 数据类型 not null
CREATE TABLE tb_emp6
(
id INT PRIMARY KEY,
name VARCHAR(25) NOT NULL,
deptId INT,
salary FLOAT
);
唯一性约束(Unique ConstraINT)要求该列唯一,允许为空,但只能出现一个空值。
唯一性约束可以确保一列或者几列不出现重复值。
UNIQUE和PRIMARY KEY的区别:
字段名 数据类型 UNIQUE
CREATE TABLE tb_dept2
(
id INT PRIMARY KEY,
name VARCHAR(22) UNIQUE,
location VARCHAR(50)
);
[CONSTRAINT <约束名>] UNIQUE(<字段名>)
CREATE TABLE tb_dept3
(
id INT PRIMARY KEY,
name VARCHAR(22),
location VARCHAR(50),
CONSTRAINT STH UNIQUE(name)
);
默认约束(Default ConstraINT)指定某列的默认值
字段名 数据类型 DEFAULT 默认值
CREATE TABLE tb_emp7
(
id INT PRIMARY KEY,
name VARCHAR(25) NOT NULL,
deptId INT DEFAULT 1111,
salary FLOAT
);
在MySQL中AUTO_INCREMENT的初始值是1,每新增一条记录,字段值自动加1。
一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。
AUTO_INCREMENT约束的字段可以是任何整数类型(TINYINT、SMALLIN、INT、BIGINT等)
字段名 数据类型 AUTO_INCREMENT
CREATE TABLE tb_emp8
(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(25) NOT NULL,
deptId INT,
salary FLOAT
);