1.什么是DQL?
DQL英文称为:Data Query Language(数据查询语言)用来查询数据库中表的记录。
2、查询语句的完整格式是怎样的?
查询多字段: select 字段1,字段2,字段3 form 表名;
查询所以字段:select * form 表名;
设置别名:select 字段1[ as 别名1 ] ,字段2 [ as 别名2 ] (as也可以省略直接在字段后面写别名) form 表名;
去除重复记录:select distinct 字段列表 form 表名;
3、条件查询的关键字是什么,常见的运算符有哪些?
条件查询的关键字是where;
常见比较运算符:
比较运算符 | 功能 |
---|---|
> | 大于 |
< | 小于 |
= | 等于 |
>= | 大于等于 |
<= | 小于等于 |
<>或!= | 不等于 |
between...and... | 在某个范围之间(含最小值、最大值) |
in(...) | 在in之后列表的值,多选 |
like 占位符 | 模糊匹配( _ 匹配单个字符,%匹配多个字符) |
is null | 是空 |
常见逻辑运算符:
逻辑运算符 | 功能 |
---|---|
and 或 && | 并且(多个条件同时成立) |
or 或 || | 或者(多个条件任意一个成立) |
not 或 ! | 不等于 |
4、如何实现模糊查询?
select * form 表名 like ( '_' 匹配单个字符,'%' 匹配多个字符);
5、怎么实现排序查询?
select * form 表名 order by ( asc 升序 默认值 )或(desc 降序);
6、怎么实现分页查询?
select * form 表名 limit 起始索引,查询记录数;
7、分页查询中怎么计算某一页开始索引?
计算某一页开始索引公式:(页码-1)*每页显示记录数
8、怎么实现分组查询,分组查询的目的是什么?
select 字段列表 form 表名[ where 条件 ] groud by [ having 分组后过滤条件 ];
where 和 having 的区别:
1.执行时机不同:where 是分组前进行过滤,不满足where条件,不参加分组;having是分组之后对结果进行过滤的
2.判断条件不同:where 不能对聚合函数进行判断,having可以
分组查询的目的是:对数据进行分类统计
9、聚合函数有哪些?
函数 | 功能 |
---|---|
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
10、怎么实现给查询的值设定新的数据:比例 1变成男,2变成女
if(条件表达式1,为 true 的值 ,为 false 的值)
select if( gender = 1 , '男' ,' 女 ' ) form 表名 groud by gender ;
11、表和表之间有哪些关系?
1.一对多
2.一对一
3.多对多
12、不同关系怎么设计外键
1. 一对多:在数据库表多的一方(从表 或者叫 子表 ),添加字段,来关联主表(父表)的主键;
2. 一对一:在任意一方加入外键,关联另一方的主键,并且设置外键为唯一的(unique)
3. 多对多:建立一个中间表,中间表至少包含两个外键,分别关联两方的主键
13、什么是物理外键,什么是逻辑外键
物理外键:使用 foreigen key (关键词)定义外键关联另一表;
缺点:
1.影响增、删、改的效率(需要检查外键关系);
2.仅用于单节点数据库,不适合用于分布式、集群场景;
3.容易引发数据库死锁问题,消耗性能。
逻辑外键:在业务逻辑中,解决外键关联(需要程序员自己清楚)。