MySql的初学习 -- 第五章 -- 了解约束


博客说明

文章内容输出来源:拉勾教育Java就业急训营

什么是约束

  1. 约束的作用:
    对表中的数据进行进一步的限制,从而保证数据的正确性、有效性、完整性. 违反约束的不正确数据,将无法插入到表中
  2. 常见的约束
约束名 约束关键字
主键约束 primary key
唯一约束 unique
非空约束 not null
外键约束 foreign key

主键约束

特点:不可重复、唯一、不可为空
作用:用来表示数据库中的每一条数据(类似人的身份证,因此可以通过主键来找到相应的数据)

主键约束的添加与删除

-- 方法一:创建表时添加主键
-- 格式:字段名称 字段类型 PRIMARY KEY;
CREATE TABLE test1(
	id INT PRIMARY KEY,
	name VARCHAR(20)
);

-- 方法二:创建表时添加主键
-- 格式:PRIMARY KEY(字段名称);
CREATE TABLE test2(
	id INT,
	name VARCHAR(20),
	PRIMARY KEY(id)
);

-- 方法三:创建表之后,再添加主键 -- 通过DDL语句添加主键约束
#第一步,创建一个没有主键的表
CREATE TABLE test3(
	id INT,
	name VARCHAR(20),
);
#第二步,使用DDL语句添加主键约束
ALTER TABLE test3 ADD PRIMARY KEY(id);

-- 删除主键约束  -- 通过DDL语句删除主要约束
-- 格式:ALTER TABLE 表名 DROP PRIMARY KEY;
ALTER TABLE test3 DROP PRIMARY KEY;

主键的自增 与 修改自增初始值

主键如果让自己添加很有可能重复,通常希望在每次插入新记录时,数据库自动生成主键字段的值.但主键的字段类型必须是整数类型

-- 创建表时添加主键自增
-- 格式:字段名称 字段类型 PRIMARY KEY AUTO_INCREMENT;
CREATE TABLE test1(
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(20)
);

-- 修改自增的起始值(默认是1)
-- 重新创建自增主键的表,自定义自增的起始位置
-- 格式:在建表SQL后加上AUTO_INCREMENT = 开始位置;
CREATE TABLE test1(
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(20)
)AUTO_INCREMENT = 100;

delete(DELETE)和truncate(TRUNCATE)对自增长的影响

方法 执行流程
delete 删除表中数据,将表中的数据逐条删除
truncate 将整个表删除后,重新创建一个结构相同的新表

结论

方法 结果
delete 对自增是没有影响,删除数据后自增不会恢复初始则会一直自增下去
truncate 对自增有影响,删除数据后自增会恢复初始,从初始值开始自增

非空约束

特点:不可为空
作用:用来约束数据不能为空

-- 创建表时添加非空约束
-- 格式:字段名称 字段类型 NOT NULL;
CREATE TABLE test(
	id INT NOT NULL,
	name VARCHAR(20)
);

唯一约束

特点:不可重复
补充:对null值不做唯一判断
作用:用来约束数据不能重复

-- 创建表时添加唯一约束
-- 格式:字段名称 字段类型 UNIQUE;
CREATE TABLE test(
	id INT UNIQUE,
	name VARCHAR(20)
);

主键约束和唯一约束的区别

约束 区别
主键约束 唯一,且不能为空(null)
唯一约束 唯一,但可以为空(null)
补充 一个表中只能有一个主键约束,但可以有多个唯一约束

外键约束

MySql的初学习 – 第七章 – 多表、外键、数据库设计

默认值

作用:如果数据为null时,默认给予的值

-- 格式:字段名 字段类型 DEFAULT 默认值
CREATE TABLE test(
	id INT PRIMARY KEY,
	name VARCHAR(20),
	sex CHAR(1) DEFAULT '男'
);

-- 使用默认值
INSERT INTO test(id,name) VALUE (1,"张三");
INSERT INTO test(id,name) VALUE (2,"李四");
-- 不使用默认值时,直接自定义值既可
INSERT INTO test VALUE (3,"小红",'女');

猜你喜欢

转载自blog.csdn.net/zy3062231314/article/details/112915266