数据库知识2
关系完整性
数据完整性 指的是数据库中的数据的准确性和可靠性
实体完整性约束:
目的: 在表中至少有一个唯一的 标识,主属性字段中,不为空,不重复
主键约束:唯一 不重复 不为空 primary key,一个表中只可以有一个主键约束
- 创建表的同时创建主键约束
create table 表名(
列名 数据类型 primary key,
列名2 数据类型
); - 主键约束名字的写法:PK_列名
create table 表名(
列名1 数据类型,
列名2 数据类型,
constraint 主键约束的名字 primary key(列名)
);
create table 表名(
列名1 数据类型,
列名2 数据类型,
primary key(列名)
);
4. 对已经存在的表
--对id添加主键约束
alter table teacher modify id int(6) primary key;
-- 商品编号添加主键约束
alter table 商品信息表 add constraint PK_编号 primary key(商品编号);
-- 商品编号添加主键约束
alter table 商品信息表 add primary key(商品编号);
--删除主键约束
alter table teacher drop primary key;
联合主键
指把两个列堪称一个整体,这个整体不为空,唯一,不重复
- 创建表的同时创建联合主键
- 主键约束名字的写法:PK_列名
create table 表名(
列名1 数据类型,
列名2 数据类型,
constraint 主键约束的名字 primary key(列名1,列名2)
);
create table 表名(
列名1 数据类型,
列名2 数据类型,
primary key(列名1,列名2)
);
-- 创建一个员工 员工编号姓名 年龄 部门编号 员工编号和部门编号当作联合主键
create table stuff(
snum varchar(10),
name char(10),
age int,
snnum int,
constraint PK_员工部门 primary key (snum,snnum)
);
-- 删除联合主键
alter table stuff drop primary key;
-- 对已经存在的表添加联合主键
alter table stuff add constraint PK_yuangpngbumen primary key(snum,snnum);
唯一约束
唯一约束 unique
-
不允许有重复的值,保证数据的唯一性
-
可以用空值
-
在一个表中可以有多个唯一约束
-
默认情况下唯一约束的名字和列名保持一致
-
添加唯一约束的列,系统也会默认给这个列添加一个唯一索引
-
创建表的同时创建唯一约束 UN_列名
create table 表名(
列名1 数据类型,
列名2 数据类型,
constraint 唯一约束的名字 unique(列名1)
);
create table 表名(
列名 数据类型 unique,
列名2 数据类型
);
2. 对已经存在的表添加唯一约束
格式:alter table 表名 add unique(列名1,列名2);
- 删除唯一约束
格式: alter table 表名 drop index 唯一约束的名字
(唯一约束的删除是使用名字来删除的,不是根据关键字来删的)
域完整性约束:保证在表中不会输入无校的数据
默认约束:default 当默认约束来修饰某个列的时候,修饰的列即使不写数据也会默认一个值的
- 创建表的同时创建默认约束
create table 表名(
列名1 数据类型 default ‘字符串类型或日期类型的默认值’,
列名2 数据类型 default 数值
) ;
alter table 成绩表 modify 成绩 int default 60;
非空约束 not null
CREATE TABLE StudentStudent(
sno varchar(10) primary key,
sname varchar(15) unique,
sdept varchar(10) not null,
sage int not null
);
参照完整性
外键约束 foreign key
- 创建表的同时创建外键约束
主表(创建新表时要参照的表)
create table 表1 (
列名1 数据类型 primary key,
列名2 数据类型
);
从表(外键约束所在的表)FK_列名
create table 表1 (
列名1 数据类型 primary key,
列名2 数据类型,
constraint 外键约束的名字 foreign key(从表的列名1) references 主表表名1(列名1)
);
注意:关于引用的列的要求,从表和主表中的列,列名可以不一样,但这两个列的数据类型和内容必须保持一致。
CREATE TABLE StudentStudent(
sno varchar(10) primary key,
sname varchar(15) unique,
sdept varchar(10) not null,
sage int not null
);
CREATE TABLE stu(
sno varchar(10),
name char(10),
age int,
constraint FK_sno foreign key(sno) references StudentStudent(sno)
)
–给学生表添加一个外键约束
–主表
CREATE TABLE StudentStudent(
sno varchar(10),
sname varchar(15) unique,
sdept varchar(10) not null,
sage int not null
);
CREATE TABLE chengji(
sno varchar(10),
chengji int
);
ALTER TABLE StudentStudent ADD constraint FK_xuehao foreign key(sno) references chengji(sno);
- 删除外键约束
格式: alter table 表明 drop foreign key 外键约束的名字;
练习题:
CREATE database 教师授课管理;
use 教师授课管理;
CREATE TABLE Teacher(
Tno varchar(7) primary key,
Tname varchar(10) not null,
Tsex char(2) default '男',
Birthday datetime,
Dept varchar(20),
Sid char(18)
);