约束是作用于表中列上的规则,用于限制加入表的数据,它的存在保证了数据库的正确性、有效性、完整性
约束的分类:
非空约束:保证列中的所有数据不能有null值 NOT NULL
唯一约束:保证列中的所有数据各不相同 UNIQUE
主键约束:逐渐是一行数据的唯一标识,要求非空且唯一 PRIMARY KEY(非空且唯一)
检查约束:保证列中的值满足某一条件 CHECK (MySQL不支持检查约束)
默认约束:保存数据时,未指定值则采取默认值 DEFAULT
外键约束:外键用于让两表建立链接,保证数据一致性、完整性 FOREIGN KEY
(主键自增长时,不添加或者添加NULL上面数据递增)
DROP TABLE IF EXISTS emp;
CREATE TABLE emp(
id INT PRIMARY KEY auto_increment, -- 员工id,主键自增长
ename VARCHAR(50) NOT NULL UNIQUE, -- 员工姓名,非空且唯一
joindate DATE NOT NULL, -- 入职日期,非空
salary DOUBLE(7,2) NOT NULL, -- 工资,非空
bonus DOUBLE(7,2) DEFAULT 0 -- 奖金,默认0
);
INSERT INTO
emp(id,ename,joindate,salary,bonus)
VALUES
(1,'关银屏','195-11-4',10000,20000);
INSERT INTO
emp(ename,joindate,salary,bonus)
VALUES
('张星彩','195-11-4',10600,20600);
INSERT INTO
emp(id,ename,joindate,salary,bonus)
VALUES
(NULL,'黄月英','195-11-4',10200,20800);
SELECT id,ename,joindate,salary,bonus FROM emp;
非空约束:
建完表后添加:
ALTER TABLE emp MODIFY id INT NOT NULL;
删除约束:
ALTER TABLE emp MODIFY id INT;
唯一约束:
建完表后添加:
ALTER TABLE emp MODIFY id INT UNIQUE;
删除约束:
ALTER TABLE emp DROP INDEX id;
主键约束:
建完表后添加:
ALTER TABLE emp ADD PRIMARY KEY;
删除约束:
ALTER TABLE emp DROP PRIMARY KEY;
默认约束:
建完表后添加:
ALTER TABLE emp ALTER id SET DEFAULT 0;
删除约束:
ALTER TABLE emp ALTER id DROP DEFAULT;
网友评论