赞
踩
限定某个字段/某列的值不允许为空
NOT NULL
CREATE TABLE test1 (
id INT NOT NULL,-- 创建表时添加非空约束
last_name VARCHAR ( 20 ) NOT NULL,-- 创建表时添加非空约束
email VARCHAR ( 25 ),
salary DECIMAL ( 10, 2 )
)
-- 修改表时添加非空约束
ALTER TABLE test1 MODIFY email VARCHAR ( 25 ) NOT NULL;
-- 修改表时删除非空约束
ALTER TABLE test1 MODIFY email VARCHAR ( 25 );
用来限制某个字段/某列的值不能重复。
UNIQUE
CREATE TABLE test2 (
-- 列级约束
id INT UNIQUE,-- 创建表时添加唯一约束
last_name VARCHAR ( 20 ),
email VARCHAR ( 25 ),
salary DECIMAL ( 10, 2 ),
-- 表级约束
CONSTRAINT uk_test2_email UNIQUE ( email )
)
-- 复合的唯一性约束(两个字段都相同时才会冲突)
CREATE TABLE test3(
id INT,
last_name VARCHAR ( 20 ),
email VARCHAR ( 25 ),
salary DECIMAL ( 10, 2 ),
-- 表级约束
CONSTRAINT uk_test2_id_email UNIQUE ( id,email )
)
-- 添加唯一约束
-- 方式一
ALTER TABLE test2 ADD CONSTRAINT UNIQUE(last_name);
-- 添加复合约束
ALTER TABLE test3 ADD CONSTRAINT uk_test2_last_name_email UNIQUE(last_name,email);
-- 方式二
ALTER TABLE test2 MODIFY salary DECIMAL ( 10, 2 ) UNIQUE;
ALTER TABLE <表名> DROP INDEX <唯一约束名>;
-- 查看索引
SHOW INDEX FROM test2;
-- 删除唯一约束
ALTER TABLE test2 DROP INDEX salary;
用来唯一标识表中的一行记录。
primary key
CREATE TABLE test4 (
id INT PRIMARY KEY, -- 列级约束
last_name VARCHAR ( 15 ),
salary DECIMAL ( 10, 2 ),
email VARCHAR ( 25 )
);
CREATE TABLE test5 (
id INT,
last_name VARCHAR ( 15 ),
salary DECIMAL ( 10, 2 ),
email VARCHAR ( 25 ),
-- 表级约束
CONSTRAINT PRIMARY KEY ( id )
);
CREATE TABLE test6 (
id INT,
last_name VARCHAR ( 15 ),
salary DECIMAL ( 10, 2 ),
email VARCHAR ( 25 ),
-- 复合主键,两个列看做一个整体作为主键
CONSTRAINT PRIMARY KEY ( id,last_name )
);
ALTER TABLE test7 ADD PRIMARY KEY(id);
ALTER TABLE test7 DROP PRIMARY KEY;
某个字段的值自增
auto_increment
CREATE TABLE test8 (
id INT PRIMARY KEY AUTO_INCREMENT, -- 列级约束
last_name VARCHAR ( 15 ),
salary DECIMAL ( 10, 2 ),
email VARCHAR ( 25 )
);
ALTER TABLE test9 MODIFY id INT AUTO_INCREMENT;
ALTER TABLE test9 MODIFY id INT;
限定某个表的某个字段的引用完整性。
foreign key
-- 创建主表
CREATE TABLE dept (
dept_id INT PRIMARY KEY,
dept_name VARCHAR ( 15 )
);
-- 创建从表
CREATE TABLE emp (
emp_id INT PRIMARY KEY AUTO_INCREMENT,
emp_name VARCHAR ( 15 ),
department_id INT,
-- 外键关联
CONSTRAINT fk_emp_dept_id FOREIGN KEY(department_id) REFERENCES dept(dept_id)
);
-- 创建主表
CREATE TABLE dept2 (
dept_id INT PRIMARY KEY,
dept_name VARCHAR ( 15 )
);
-- 创建从表
CREATE TABLE emp2 (
emp_id INT PRIMARY KEY AUTO_INCREMENT,
emp_name VARCHAR ( 15 ),
department_id INT
);
-- 添加外键
ALTER TABLE emp2 ADD CONSTRAINT fk_emp2_dept_id FOREIGN KEY(department_id) REFERENCES dept2(dept_id);
-- 创建主表
CREATE TABLE dept2 (
dept_id INT PRIMARY KEY,
dept_name VARCHAR ( 15 )
);
-- 创建从表
CREATE TABLE emp2 (
emp_id INT PRIMARY KEY AUTO_INCREMENT,
emp_name VARCHAR ( 15 ),
department_id INT
);
-- 添加外键
ALTER TABLE emp2 ADD CONSTRAINT fk_emp2_dept_id FOREIGN KEY(department_id) REFERENCES dept2(dept_id);
-- 删除外键
ALTER TABLE emp2 DROP FOREIGN KEY fk_emp2_dept_id;
-- 查看外键约束对应的普通索引
SHOW INDEX FROM emp2;
-- 删除索引(索引是随着外键的创建而创建的,名字就是外键约束名)
ALTER TABLE emp2 DROP INDEX fk_emp2_dept_id;
检查某个字段的值是否符号xx要求,一般指的是值的范围。
CHECK
CREATE TABLE test10(
id INT,
last_name VARCHAR(15),
salary DECIMAL(10,2) CHECK(salary > 2000)
);
给某个字段/某列指定默认值,一旦设置默认值,在插入数据时,如果此字段没有显式赋值,则赋值为默认值。
DEFAULT
CREATE TABLE test11(
id INT,
last_name VARCHAR(15),
salary DECIMAL(10,2) DEFAULT(3000)
);
CREATE TABLE test13(
id INT,
last_name VARCHAR(15),
salary DECIMAL(10,2)
);
ALTER TABLE test13 MODIFY salary DECIMAL(10,2) DEFAULT(3000);
DESC 表名
例:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。