2. SQL - 约束
2023-12-28 12:38:49
1 主键约束
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。
添加主键约束
- 创建表时,在字段描述处,声明指定字段为主键
- 创建表时,在constraint约束区域,声明指定字段为主键
- 创建表之后,通过修改表结构,声明指定字段为主键
CREATE TABLE persons
(
id_p int PRIMARY KEY,
lastname varchar(255),
firstname varchar(255),
address varchar(255),
city varchar(255),
-- CONSTRAINT PRIMARY KEY (id_p)
);
-- ALTER TABLE persons ADD PRIMARY KEY (id_p)
删除主键约束
ALTER TABLE persons DROP PRIMARY KEY
2 自动增长列
我们通常希望在每次插入新记录时,数据库自动生成字段的值。我们可以在表中使用 auto_increment(自动增长列)关键字,自动增长列类型必须是整形,自动增长列必须为键(一般是主键)。
下列 SQL 语句把 “persons” 表中的 “p_id” 列定义为 auto_increment 主键
CREATE TABLE persons
(
p_id int PRIMARY KEY AUTO_INCREMENT,
lastname varchar(255),
firstname varchar(255),
address varchar(255),
city varchar(255)
)
- 向persons添加数据时,可以不为p_id字段设置值,也可以设置成null,数据库将自动维护主键值:
INSERT INTO persons (firstname,lastname) VALUES ('Bill','Gates')
INSERT INTO persons (p_id,firstname,lastname) VALUES (NULL,'Bill','Gates')
- 默认AUTO_INCREMENT 的开始值是 1,如果希望修改起始值,请使用下列 SQL 语法:
ALTER TABLE persons AUTO_INCREMENT=100
- 问:针对auto_increment ,删除表中所有记录使用 delete from 表名 或使用 truncate table 表名,二者有什么区别?
- delete 一条一条删除,不清空auto_increment记录数。
- truncate 直接将表删除,重新建表,auto_increment将置为零,从新开始。
3 非空约束
NOT NULL 约束强制列不接受 NULL 值。
NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
4 唯一约束
UNIQUE 约束唯一标识数据库表中的每条记录。 UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。 PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
5 默认约束
对列添加默认约束,若不写入该列值,则使用默认值。
CREATE TABLE persons11(
-- 主键
pid INT PRIMARY KEY AUTO_INCREMENT,
-- 名
lastname VARCHAR(20),
-- 姓
firstname VARCHAR(20),
-- 城市
city VARCHAR(10) DEFAULT '北京'
);
文章来源:https://blog.csdn.net/muLanlh/article/details/135247678
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!