SQL数据约束

tech2022-07-07  231

数据约束

1、 常见的约束类型

约束说明PRIMARY KEY主键,保证数据的唯一性,并且是非空default默认值,保证这个字段也有默认值的存在not null非空约束,保证了当前的字段不允许存在空值unique唯一值约束,但是可以为空check检查,但是不支持FOREIGN KEY外键,限制两个表的关系,约束该字段的值必须来自与之关联的主表的值

2、 创建约束的时间

1、创建表的时候 2、修改表的时候 3、必须在插入数据之前

3、约束的分类

分类说明字段约束语法上都支持,但是外键约束是没有效果的表级约束除了非空、默认,其他都支持

4、 字段约束的实例

CREATE TABLE users( id INT PRIMARY KEY AUTO_INCREMENT, #主键 username VARCHAR(20) NOT NULL, #非空 gender CHAR CHECK(gender='男' OR gender='女'),#检查 phone VARCHAR(11) UNIQUE, #唯一值 age INT DEFAULT 18, #默认值 address INT REFERENCES address(id) #外键 ) CREATE TABLE address( id INT PRIMARY KEY AUTO_INCREMENT, city VARCHAR(50) ) SHOW TABLES; 注意点: 1、check这个约束正常写,不报错,但是mysql是不支持的 2、外键写在字段约束中,不生效

5、表级约束

表级约束 CREATE TABLE userss( id INT , #主键 username VARCHAR(20) , #非空 gender CHAR ,#检查 phone VARCHAR(11), #唯一值 age INT , #默认值 addressid INT, CONSTRAINT uid PRIMARY KEY(id),#约束的是主键 CONSTRAINT uqkey UNIQUE(phone),#约束的是唯一值 CONSTRAINT ck CHECK(gender='男' OR gender='女'),#约束的是检查 CONSTRAINT fkk FOREIGN KEY(addressid) REFERENCES address(id) #约束的是外键 ) SELECT * FROM userss; CREATE TABLE usersss( id INT , #主键 username VARCHAR(20) , #非空 gender CHAR ,#检查 phone VARCHAR(11), #唯一值 age INT , #默认值 addressid INT, PRIMARY KEY(id),#约束的是主键 UNIQUE(phone),#约束的是唯一值 CHECK(gender='男' OR gender='女'),#约束的是检查 FOREIGN KEY(addressid) REFERENCES address(id) #约束的是外键 )

6、通用格式

# 通用格式 CREATE TABLE userssss( id INT PRIMARY KEY AUTO_INCREMENT, #主键 username VARCHAR(20) NOT NULL, #非空 gender CHAR CHECK(gender='男' OR gender='女'),#检查 phone VARCHAR(11) UNIQUE, #唯一值 age INT DEFAULT 18, #默认值 addressid INT, #外键 FOREIGN KEY(addressid) REFERENCES address(id) )

7、修改约束

约束类型语法字段约束alter table 表名 modify 字段名 字段类型 新约束表级约束ALTER TABLE 表名 ADD CONSTRAINT 新约束名 约束类型注意点(外键的添加)ALTER TABLE 表名 ADD CONSTRAINT FOREIGN KEY(需要添加外键的字段名) REFERENCES 产生关联的表(字段);

8、外键的重要事项

1、添加外键的时候,使用的是表级约束,字段约束可以写,但是不生效 2、如果字段额外增加外键的时候,ALTER TABLE 表名 ADD CONSTRAINT FOREIGN KEY(需要添加外键的字段名) REFERENCES 产生关联的表(字段);

9、删除约束

# 删除约束 删除主键 ALTER TABLE userss DROP PRIMARY KEY; 删除唯一值 ALTER TABLE userss DROP INDEX uqkey 删除外键 ALTER TABLE userss DROP FOREIGN KEY fkk 注意点: 1、在删除约束之前,必须查看一下约束名 SHOW INDEX FROM userssss; 2、在1的基础上删除
最新回复(0)