主键约束和唯一约束
PRIMARY KEY–>唯一,标识表中的一行数据,此列的值不可以重复,不可以为NULL
UNIQUE–>唯一,标识表中的一行数据,此列的值不可以重复,可以为NULL
USE companydb;
CREATE TABLE subjects(
subjectid INT PRIMARY KEY,
subjectName VARCHAR(20) UNIQUE,
subjectHours INT
)CHARSET=utf8;
自动增长列
AUTO_INCREMENT 自动增长,给主键数值列添加自动增长,从1开始,每次加1.不能单独使用,和主键配合
CREATE TABLE subjects(
subjectid INT PRIMARY KEY AUTO_INCREMENT,
subjectName VARCHAR(20) UNIQUE,
subjectHours INT
)CHARSET=utf8;
非空约束
课程名称虽然添加了唯一约束,但是由NULL值存在的肯,要避免课程名称为NULL
CREATE TABLE subjects(
subjectid INT PRIMARY KEY AUTO_INCREMENT,
subjectName VARCHAR(20) UNIQUE NOT NULL,
subjectHours INT
)CHARSET=utf8;
如果再添加subjectName为空值,则会报错
INSERT INTO subjects(subjectid,subjectName,subjectHours)
VALUES(NULL,40);#error,课程名称约束了非空
默认值约束
default值 为列赋予默认值,当新增的数据没有指定时,在代码里面写default,以指定的默认值填充
如下题:自动填充subjectHours列的数据为20
CREATE TABLE subjects(
subjectid INT PRIMARY KEY AUTO_INCREMENT,
subjectName VARCHAR(20) UNIQUE NOT NULL,
subjectHours INT DEFAULT 20
)CHARSET=utf8;
INSERT INTO subjects(subjectid,subjectName,subjectHours)
VALUES('java',DEFAULT);
引用完整性约束
语法:constraint 引用名 foreign key 列名 references 被引用表名(列名)
例题如下:
#创建专业表
CREATE TABLE Speciality(
id INT PRIMARY KEY AUTO_INCREMENT,
SpecialName VARCHAR(20) UNIQUE NOT NULL
)CHARSET=utf8;
#创建课程表(课程表的SpecialId引用专业表的 id)
CREATE TABLE subjects(
subjectid INT PRIMARY KEY AUTO_INCREMENT,
subjectName VARCHAR(20) UNIQUE NOT NULL,
subjectHours INT DEFAULT 20,
specialId INT NOT NULL,
CONSTRAINT fk_subjects_specialId FOREIGN KEY(specialId) REFERENCES Speciality(id)
)CHARSET=utf8;
两张表存在引用关系,要执行删除操作,一定要先删除从表(引用表),再删除主表(被引用表)
DROP TABLE Speciality;
DROP TABLE subjects;