10-10 46—50
______egon新书python全套来袭请看:https://egonlin.com/book.html
46.简述leftjoin和rightjoin的区别?
left join:外链接之左连接:优先显示左表全部记录
#以左表为准,即找出所有员工信息,当然包括没有部门的员工
#本质就是:在内连接的基础上增加左边有右边没有的结果
right join:外链接之右连接:优先显示右表全部记录
#以右表为准,即找出所有部门信息,包括没有员工的部门
#本质就是:在内连接的基础上增加右边有左边没有的结果
47.索引有什么作用,有那些分类,有什么好处和坏处?
作用:
索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息。
分类:
1、唯一索引
唯一索引是不允许其中任何两行具有相同索引值的索引。当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。
2、主键索引
数据库表经常有一列或多列组合,其值唯一标识表中的每一行。该列称为表的主键。在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。
3、聚集索引
在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。如果某索引不是聚集索引,则表中行的物理顺序与键值的逻辑顺序不匹配。与非聚集索引相比,聚集索引通常提供更快的数据访问速度。
4、索引列
可以基于数据库表中的单列或多列创建索引。多列索引可以区分其中一列可能有相同值的行。如果经常同时搜索两列或多列或按两列或多列排序时,索引也很有帮助。例如,如果经常在同一查询中为姓和名两列设置判据,那么在这两列上创建多列索引将很有意义。
优点:
1、大大加快数据的检索速度。
2、创建唯一性索引,保证数据库表中每一行数据的唯一性。
3、加速表和表之间的连接。
4、在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
缺点:
1、索引需要占物理空间。
2、当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
48.写sql语句
TableA
ID | NAME | KECHENG | FENSHU |
---|---|---|---|
1 | 张三 | 语文 | 81 |
2 | 张三 | 数学 | 75 |
3 | 李四 | 语文 | 76 |
4 | 李四 | 数学 | 90 |
5 | 王五 | 语文 | 81 |
6 | 王五 | 数学 | 100 |
7 | 王五 | 英语 | 90 |
TableB
ID | NAME |
---|---|
1 | 张三 |
2 | 李四 |
3 | 王五 |
4 | 赵六 |
查询:
1.查询出每门课程都大于80分的学生姓
SELECT
`NAME`
FROM
TableA
WHERE
`NAME` NOT IN (
SELECT
`NAME`
FROM
TableA
WHERE
FENSHU < 80
GROUP BY
`NAME`
)
GROUP BY
`NAME`;
2.查询出语文成绩最大的学生姓名
SELECT
TableA.`NAME`
FROM
TableA
WHERE
FENSHU = (
SELECT
`FENSHU`
FROM
TableA
WHERE
KECHENG = "语文"
GROUP BY
FENSHU
ORDER BY
FENSHU DESC
LIMIT 1
)
3.查询没有成绩的学生姓名
SELECT
`NAME`
FROM
TableB
WHERE
NAME NOT IN ( SELECT `NAME` FROM TableA GROUP BY `NAME` )
49.试列出至少三种目前流行的大型关系型数据库的名称
试列出至少三种目前流行的大型关系型数据库的名称
其中您最熟悉的是
什么时候开始使用
“”“
Oracle
SQL Server
MySQL
”“”
50.什么是MySQL慢日志?
慢日志查询的主要功能就是,记录sql语句中超过设定的时间阈值的查询语句。例如,一条查询sql语句,我们设置的阈值为1s,当这条查询语句的执行时间超过了1s,则将被写入到慢查询配置的日志中.
慢查询主要是为了我们做sql语句的优化功能.
配置项说明:
登陆mysql服务:
> show variables like '%query%';
关注三个配置项即可。
1.slow_query_log
该配置项是决定是否开启慢日志查询功能,配置的值有ON或者OFF.
2.slow_query_log_file
该配置项是慢日志查询的记录文件,需要手动创建.
3.long_query_time
该配置项是设置慢日志查询的时间阈值,当超过这个阈值时,慢日志才会被记录.配置的值有0(任何的sql语句都记录下来),或者>0(具体的阈值).该配置项是以秒为单位的,并且可以设置为小数.
4.log-queries-not-using-indexes
该配置项是为了记录未使用到索引的sql语句.