DQL,多表设计
1、DQL是什么?
数据库查询语言,查询数据库中表的记录
2、查询语句的完整格式是怎样的?
select 字段列表
where 条件列表
group by 分组字段列表
having 分组后条件列表
order by 排序字段列表
limit 分页参数
3、条件查询的关键字是什么,常见的运算符有哪些?
where
4、如何实现模糊查询?
select * from 表名 where 字段名 like '张%'; select * from 表名 where 字段名 like ' _ _ ';
5、怎么实现排序查询?
order by select 字段列表 from 表名 order by 字段1 排序方式1 , 字段2 排序方式2 ;
6、怎么实现分页查询?
select 字段列表 from 表名 limit 起始索引, 查询记录数 ;
7、分页查询中怎么计算某一页开始索引?
某一页的开始索引 = (页码 - 1) 页显示数量
8、怎么实现分组查询,分组查询的目的是什么?
group by
select 字段列表 from 表名 [ where 条件 ] group by 分组字段名 [ having 分组后过滤条件 ];
9、聚合函数有哪些?
10、怎么实现给查询的值设定新的数据:比例 1变成男,2变成女
使用 if
select count(*) '数量', if(gender = 1, '男', '女') '性别' from emp group by gender;
11、表和表之间有哪些关系?
一对一 :一个部门对应多个员工,一个员工对应一个部门
- 实现: 在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)
一对多 :将一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以提升操作效率
- 实现:一对多关系实现:在数据库表中多的一方,添加字段,来关联少的一方的主键。
多对多 :关系: 一个学生可以选修多门课程,一门课程也可以供多个学生选择
- 实现: 建立第三张中间表,中间表至少包含两个外键,分别关联两方主键
12、不同关系怎么设计外键
让两张表的数据建立连接,保证数据的一致性和完整性。 对应的关键字:foreign key
13、什么是物理外键,什么是逻辑外键
使用 foreign key 定义外键关联另外一张表 对应的关键字:foreign key
缺点:
A. 影响增、删、改的效率(需要检查外键关系)。
B. 仅用于单节点数据库,不适用与分布式、集群场景。
C. 容易引发数据库的死锁问题,消耗性能。
逻辑外键:在后端业务层逻辑中,解决外键关联。
通过逻辑外键,可以很方便的解决上述问题。