目录
一、数据完整性
1.1数据库完整性
用来确保数据库中的数据有效,保证其有效性和准确性,通过添加约束来实现
完整性分类:
- 实体完整性(行的完整性)
- 域完整性(列完整性)
- 引用完整性(关联表之间的完整性如学生表和成绩表):
主键约束:primary key
唯一约束:unique [key]
非空约束:not null
默认约束:default
自动增长:auto_increment
外键约束: foreign key
1.2实体完整性
实体:即表中的一行(一条记录)代表一个实体(entity)
实体完整性的作用:标识每一行数据不重复。
约束类型:
主键约束(primary key)
唯一约束(unique)
自动增长列(auto_increment)
1.2.1 主键约束(primary key)
注:每个表中要有一个主键,数据不允许为空
特点:数据唯一,且不能为null
第一种添加方式:(id设为了主键)直接在要设为主键的属性后添加primary key
CREATE TABLE student( id int primary key, name varchar(50) );
第二种添加方式:这种方式优势在于,可以创建联合主键,所有属性写完后在最后添加
CREATE TABLE student( id int, name varchar(50), primary key(id) );
CREATE TABLE student( classid int, stuid int, name varchar(50), primary key(classid,stuid) );
第三种添加方式:建表后用alter table添加主键
CREATE TABLE student( id int, name varchar(50) );
ALTER TABLE student ADD PRIMARY KEY (id);
1.2.2唯一约束(unique)
特点:数据不能重复,允许一次为空
CREATE TABLE student( Id int primary key, Name varchar(50) unique );
1.2.3自动增长列(auto_increment)
给主键添加自动增长的数值,列只能是整数类型
其他数据库中的名字:
sqlserver数据库 (identity-标识列)
oracle数据库(sequence-序列)
CREATE TABLE student(Id int primary key auto_increment,Name varchar(50));
1.3域完整性
作用:限制此列的数据以确保数据正确
如:性别只能是男女,可以添加约束确保域完整性
域完整性约束:
数值类型约束
非空约束(not null)
默认值约束(default)
check约束(mysql不支持)check(sex='男' or sex='女')
1.3.1数据类型约束
类型
|
大小 | 范围(有符号) | 范围(无符号) | 用途 |
tinyint
|
1
字节
|
(-128
,
127)
|
(0
,
255)
|
小整数值
|
smallint
|
2
字节
|
(-32 768
,
32 767)
|
(0
,
65 535)
|
大整数值
|
mediumint
|
3
字节
|
(-8 388 608
,
8 388 607)
|
(0
,
16 777 215)
|
大整数值
|
INT
|
4
字节
|
(-2 147 483 648
,
2 147 483 647)
|
(0
,
4 294 967 295)
|
大整数值
|
bigint
|
8
字节
|
(-9 233 372 036 854 775 808
,
9 223 372 036 854 775 807)
|
(0
,
18 446 744
073 709 551 615)
|
极大整数值
|
float
|
4
字节
|
(-3.402 823 466 E+38
,
-1.175 494 351 E-38)
,
0
,
(1.175 494 351 E-38
,
3.402
823 466 351 E+38)
|
0
,
(1.175 494 351 E-38
,
3.402 823 466 E+38)
|
单精度浮点数值
|
double
|
8
字节
|
(-1.797 693 134 862 315 7 E+308
,
-2.225 073 858 507 201 4 E-308)
,
0
,
(2.225 073 858 507 201 4 E-308
,
|