SQL语句常见面试题(上)

yumo6666个月前 (03-30)技术文章45

描述主键、外键、超键是什么

- 超键(super key): 在关系中能唯一标识元组的属性集
- 候选键(candidate key): 不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性,就不
是键了!
- 主键(primary key): 用户选作元组标识的一个候选程序主键
- 外键(foreign key):如果关系模式R中属性K是其它模式的主键,那么k在模式R中称为外键。

数据库设计的三大范式

1. 第一范式(确保每列保持原子性)
2. 第二范式(确保表中的每列都和主键相关)
3. 第三范式(确保每列都和主键列直接相关,而不是间接相关)

drop,delete与truncate的区别

1. delete和truncate都是只能删除表的内容而不能删除表的结构,而drop则是删除表的结构和内容(表将
不复存在);
2. delete可以删除整个表的数据也可以有选择性地删除某一条或多条数据,而truncate则是一次性删除整
个表的数据;
3. 使用delete删除的表数据并没有真正被删掉,数据占用的表空间还存在,日后有需要还可以恢复;
4. 使用truncate删除的表数据会连同其占用的表空间一起直接被删掉,无法恢复

SQL UNION 和 UNION ALL 区别

union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct,会对获取的结果进行排序操作
union all: 对两个结果集进行并集操作, 包括重复行, 即所有的结果全部显示。
union all只是合并查询结果,并不会进行去重和排序操作,在没有去重的前提下,使用union all的执行效率要比union高

exists、in、any、all区别

- exists是表示子查询是否返回结果,而不管返回的具体内容
- in表示值是否存在子查询结果集中
- any是表示子查询结果中任意一个
- all表示子查询结果中的所有

sql语句的执行顺序

1. from 子句组装来自不同数据源的数据
2. where 子句基于指定的条件对记录行进行筛选
3. group by 子句将数据划分为多个分组
4. 使用聚集函数进行计算
5. 使用 having 子句筛选分组
6. 计算所有的表达式
7. select 的字段筛选
8. 使用 order by 对结果集进行排序。

count(*)和count(1)和count(id)区别

count(字段名称)
扫描全表,判断字段可空,拿出该字段所有值,判断每一个值是否为空,不为空则累加 。
count(1)
扫描全表,但不取值,收到的每一行都是1,判断不可能是null,按值累加。
count(*)
MySQL 执行count(*)在优化器做了专门优化。因为count(*)返回的行一定不是空。扫描全表,但是不取值,按行累加。
性能方面:
count(可空字段) < count(非空字段) = count(主键 id) < count(1) ≈ count(*)

SQL语句优化

SQL语句优化

1. 尽量避免在字段开头模糊查询,会导致数据库引擎放弃索引进行全表扫描
2. order by 条件要与where中条件一致,否则order by不会利用索引进行排序
3. 对where条件后的查询条件尽量添加索引
4. 多表关联查询时,小表在前,大表在后。
5. 避免在索引列上使用内置函数
6. 对于复杂的查询,可以使用中间临时表 暂存数据;
7.避免在where子句中使用 or 来连接条件
8.尽量使用数值替代字符串类型(例如性别(sex):0代表女,1代表男;【因为引擎在处理查询和连接时会逐个比较字符串中每一个字符;而对于数字型而言只需要比较一次就够了;字符会降低查询和连接的性能,并会增加存储开销】)
9.避免在where子句中使用!=或<>操作符

SQL常用函数有哪些?

- 数学函数
- 字符串函数
- 日期和时间函数
- 条件判断函数
- 系统信息函数
- 加密函数
- 格式化函数等

左连接 右连接 内连接的区别

三种连接如果结果相同,优先使用inner join,如果使用left join左边表尽量小
inner join
内连接,只保留两张表中完全匹配的结果集;
left join
会返回左表所有的行,即使在右表中没有匹配的记录;
right join
会返回右表所有的行,即使在左表中没有匹配的记录;

Mysql三种常见引擎的区别

MySQL常见的三种存储引擎为InnoDB、MyISAM和MEMORY。其区别体现在事务安全、存储限制、空间使用、
内存使用、插入数据的速度和对外键的支持。
1. 事务安全:InnoDB支持事务安全,MyISAM和MEMORY两个不支持。
2. 存储限制:InnoDB有64TB的存储限制,MyISAM和MEMORY要是具体情况而定。
3. 空间使用:InnoDB对空间使用程度较高,MyISAM和MEMORY对空间使用程度较低。
4. 内存使用:InnoDB和MEMORY对内存使用程度较高,MyISAM对内存使用程度较低。
5. 插入数据的速度:InnoDB插入数据的速度较低,MyISAM和MEMORY插入数据的速度较高。
6. 对外键的支持:InnoDB对外键支持情况较好,MyISAM和MEMORY两个不支持外键。



















相关文章

总结面试:SQL常见面试题-1

刚刚走过了金三银四,相信许多小伙伴已经得到了自己心仪的offer,在这里先恭喜大家啦!但可能还有一些小伙伴刚刚开始找工作,作为一名数据分析师,还是想总结一些面试的经验及SQL的笔试面试题给各位小伙伴,...

金三银四,金九银十面试必备的SQL题,你会吗?

金三银四,金九银十是面试的最佳时机,有同学在面试测试岗位时经常遇到一些SQL难题,问到就两眼转动,给面试官一种不靠谱的感觉,这样的面试过程注定是要经历挫折的。老师在这里为大家准备了一些SQL面试经典题...

网络安全面试题-SQL注入问题总结

一、知识储备类1.SQL与NoSQL的区别?SQL:关系型数据库NoSQL:非关系型数据库存储方式:SQL具有特定的结构表,NoSQL存储方式灵活性能:NoSQL较优于SQL数据类型:SQL适用结构化...

「春招系列」MySQL面试核心25问(附答案)

篇幅所限本文只写了MySQL25题,像其他的Redis,SSM框架,算法,计网等技术栈的面试题后面会持续更新,个人整理的1000余道面试八股文会放在文末给大家白嫖,最近有面试需要刷题的同学可以直接翻到...

SQL优化这十条,面试的时候你都答对了吗?

尽量不要在要给在SQL语句的where子句中使用函数,这样会使索引失效。如果已经确定查询结果只有一条数据(当表中数据的该字段是唯一的),在查询SQL末尾增加 limit 1,这样MySQL的查询执行引...

「数分分析面试」大厂高频SQL笔试题(三)

数据分析SQL笔试题系列第3篇来啦!更多数据分析干货文章请移步共粽号:【数据分析星球】,领取大厂SQL笔试题库。之前笔试题的文章如果没有看可以戳:【数分面试宝典】大厂数分高频SQL笔试题(一)【数分面...