从零学习数据库mysql--表的操作,
数据库的完整性
什么是数据的完整性
保证用户输入的数据保存到数据库中是正确的。
如何添加数据完整性
在创建表时给表中添加约束
完整性分类
实体完整性
表中的一行(一条记录)代表一个实体(entity)
- 实体完整性的作用
标识每一行数据不重复。行级约束
- 约束类型
- 主键约束
保证用户输入的数据保存到数据库中是正确的。
在创建表时给表中添加约束
表中的一行(一条记录)代表一个实体(entity)
标识每一行数据不重复。行级约束
特点:
添加主键约束的方式
CREATE TABLE 表名(字段名1 数据类型 primary key,字段2 数据类型);
CREATE TABLE 表名(字段1 数据类型, 字段2 数据类型,primary key(要设置主键的字段));
CREATE TABLE 表名(字段1 数据类型, 字段2 数据类型,primary key(主键1,主键2));
联合主键: 两个字段数据同时相同时,才违反联合主键约束。
1.先创建表
2.再去修改表,添加主键
ALTER TABLE student ADD CONSTRAINT PRIMARY KEY (id);
- 唯一约束:
特点:
CREATE TABLE 表名(字段名1 数据类型 字段2 数据类型 UNIQUE);
- 自动增长列
特点:
CREATE TABLE 表名(字段名1 数据类型 PRIMARY KEY AUTO_INCREMENT ,字段2 数据类型 UNIQUE);
域完整性
限制此单元格的数据正确,不对照此列的其它单元格比较
域代表当前单元格
域完整性约束:
CREATE TABLE 表名(字段名1 数据类型 PRIMARY KEY AUTO_INCREMENT ,字段2 数据类型 UNIQUE not null default '男');
插入的时候,values当中的值直接给default
参照完整性
表之间关系
创建老师表
创建学生表
创建学生与老师关系表
关系图
添加外键
多表操作
合并结果集
合并结果集就是把两个select语句的查询结果合并到一起
- 合并结果集的两种方式
合并结果集就是把两个select语句的查询结果合并到一起
格式:
UNION:
SELECT * FROM 表1 UNION SELECT * FROM 表2;
SELECT * FROM 表1 UNION ALL SELECT * FROM 表2;
创建表:
UNION:
UNION ALL:
注意事项:被合并的两个结果:列数、列类型必须相同。
多表联查:
也可以叫跨表查询,需要关联多个表进行查询
- 什么是笛卡尔集
假设集合A={a,b},集合B={0,1,2},
则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。
可以扩展到多个集合的情况
同时查询两个表,出现的就是笛卡尔集结果
- 查询时给表起别名
- 多表联查,如何保证数据正确
逐行判断,相等的留下,不相等的全不要
连接查询
1. 内连接
内连接
图示:
作用:查询两张表的共有部分
语句:
Select <select_list> from tableA A Inner join tableB B on A.Key = B.Key
示例:
SELECT * from employee e INNER JOIN department d on e.depart_id = d.id;
多表连接:
建表:
使用99连接法:
使用内联查询
2. 左连接
图示
作用: 把左边表的内容全部查出,右边表只查出满足条件的记录
语句:
Select <select_list> from tableA A Left Join tableB B on A.Key = B.Key
示例
SELECT * from employee e LEFT JOIN department d on e.depart_id = d.id;
3. 右连接
图示:
作用
把右边表的内容全部查出,左边表只查出满足条件的记录
语句
Select <select_list> from tableA A Right Join tableB B on A.Key = B.Key
示例
SELECT * from employee e RIGHT JOIN department d on e.depart_id = d.id;
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。