1.SQL约束
1.主键约束
特点 | 不可重复 唯一非空 |
作用 | 用来表示数据库中的每一条记录 |
1.添加主键约束
字段名 字段类型
primary key
#
方式
1
创建一个带主键的表
CREATE TABLE
emp2(
--
设置主键 唯一 非空
eid
INT
PRIMARY KEY
,
ename
VARCHAR
(
20
),
sex
CHAR
(
1
)
);
--
删除表
DROP TABLE
emp2;
--
方式
2
创建一个带主键的表
CREATE TABLE
emp2(
eid
INT
,
ename
VARCHAR
(
20
),
sex
CHAR
(
1
),
--
指定主键为
eid
字段
PRIMARY KEY
(eid)
);
--
方式
3
创建一个带主键的表
CREATE TABLE
emp2(
eid
INT
,
ename
VARCHAR
(
20
),
sex
CHAR
(
1
)
)
--
创建的时候不指定主键
,
然后通过
DDL
语句进行设置
ALTER TABLE
emp2
ADD PRIMARY KEY
(eid);
--
查看表的详细信息
DESC
emp2;
2.测试主键的唯一性 非空性
#
正常插入一条数据
INSERT INTO
emp2
VALUES
(
1
,
'
宋江
'
,
'
男
'
);
#
插入一条数据
,
主键为空
-- Column 'eid' cannot be null
主键不能为空
INSERT INTO
emp2
VALUES
(
NULL
,
'
李逵
'
,
'
男
'
);
#
插入一条数据
,
主键为
1
-- Duplicate entry '1' for key 'PRIMARY'
主键不能重复
INSERT INTO
emp2
VALUES
(
1
,
'
孙二娘
'
,
'
女
'
);
3.删除主键约束
--
使用
DDL
语句 删除表中的主键
ALTER TABLE
emp2
DROP PRIMARY KEY
;
DESC
emp2;
2.主键的自增
1.
创建主键自增的表
--
创建主键自增的表
CREATE TABLE
emp2(
--
关键字
AUTO_INCREMENT,
主键类型必须是整数类型
eid
INT
PRIMARY KEY AUTO_INCREMENT
,
ename
VARCHAR
(
20
),
sex
CHAR
(
1
)
);
2.添加数据 观察主键的自增
INSERT INTO
emp2(ename,sex)
VALUES
(
'
张三
'
,
'
男
'
);
INSERT INTO
emp2(ename,sex)
VALUES
(
'
李四
'
,
'
男
'
);
INSERT INTO
emp2
VALUES
(
NULL
,
'
翠花
'
,
'
女
'
);
INSERT INTO
emp2
VALUES
(
NULL
,
'
艳秋
'
,
'
女
'
);
3.修改主键自增的起始值
--
创建主键自增的表
,
自定义自增其实值
CREATE TABLE
emp2(
eid
INT
PRIMARY KEY AUTO_INCREMENT
,
ename
VARCHAR
(
20
),
sex
CHAR
(
1
)
)
AUTO_INCREMENT
=
100
;
--
插入数据
,
观察主键的起始值
INSERT INTO
emp2(ename,sex)
VALUES
(
'
张百万
'
,
'
男
'
);
INSERT INTO
emp2(ename,sex)
VALUES
(
'
艳秋
'
,
'
女
'
);
4.
DELETE
和
TRUNCATE对自增长的影响
1.删除表中所有数据有两种方式
清空表数据的方式
|
特点
|
DELETE
|
只是删除表中所有数据
,
对自增没有影响
|
TRUNCATE
|
truncate
是将整个表删除掉
,
然后创建一个新的表
自增的主键
,
重新从
1
开始
|
1.1 命令
--
目前最后的主键值是
101
SELECT
*
FROM
emp2;
-- delete
删除表中数据
,
对自增没有影响
DELETE FROM
emp2;
--
插入数据 查看主键
INSERT INTO
emp2(ename,sex)
VALUES
(
'
张百万
'
,
'
男
'
);
INSERT INTO
emp2(ename,sex)
VALUES
(
'
艳秋
'
,
'
女
'
);
1.2
truncate
删除 表中数据
--
使用
truncate
删除表中所有数据
,
TRUNCATE TABLE
emp2;
--
插入数据 查看主键
INSERT INTO
emp2(ename,sex)
VALUES
(
'
张百万
'
,
'
男
'
);
INSERT INTO
emp
3. 非空约束
非空约束的特点: 某一列不予许为空
1.命令
#
非空约束
CREATE TABLE
emp2(
eid
INT
PRIMARY KEY AUTO_INCREMENT
,
--
添加非空约束
, ename
字段不能为空
ename
VARCHAR
(
20
)
NOT
NULL
,
sex
CHAR
(
1
)
);
4.唯一约束
唯一约束的特点
:
表中的某一列的值不能重复
(
对
null
不做唯一的判断
)
1.添加唯一约束
#
创建
emp3
表 为
ename
字段添加唯一约束
CREATE TABLE
emp3(
eid
INT
PRIMARY KEY AUTO_INCREMENT
,
ename
VARCHAR
(
20
)
UNIQUE
,
sex
CHAR
(
1
)
);
2.测试唯一约束
--
测试唯一约束 添加一条数据
INSERT INTO
emp3 (ename,sex)
VALUES
(
'
张百万
'
,
'
男
'
);
--
添加一条
ename
重复的 数据
-- Duplicate entry '
张百万
' for key 'ename' ename
不能重复
INSERT INTO
emp3 (ename,sex)
VALUES
(
'
张百万
'
,
'
女
'
);
主键约束与唯一约束的区别:
|
1.
主键约束 唯一且不能够为空
|
2. 唯一约束,唯一 但是可以为空 |
3. 一个表中只能有一个主键 , 但是可以有多个唯一约束 |
5.默认值
默认值约束 用来指定某列的默认值
1.
创建
emp4
表
,
性别字段默认 女
--
创建带有默认值的表
CREATE TABLE
emp4(
eid
INT
PRIMARY KEY AUTO_INCREMENT
,
--
为
ename
字段添加默认值
ename
VARCHAR
(
20
)
DEFAULT
'
奥利给
'
,
sex
CHAR
(
1
)
);
2.
测试 添加数据使用默认值
--
添加数据 使用默认值
INSERT INTO
emp4(ename,sex)
VALUES
(
DEFAULT
,
'
男
'
);
INSERT INTO
emp4(sex)
VALUES
(
'
女
'
);
--
不使用默认值
INSERT INTO
emp4(ename,sex)
VALUES
(
'
艳秋
'
,
'
女
'
);