一、为什么用自增列作为主键1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引。如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引。如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含的聚集索引(ROWID随着行记录的写入而主键递增,这个ROWID不像ORAC ......
400
0
0
2022-12-16
sql面试题1,写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。答:→ 解1: select top 10 * from A where id not in (select top 30 id from A)演变步骤:1)select top 30 id from T_FilterWo ......
543
0
0
2022-10-07
对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引:尝试下面的技巧以避免优化器错选了表扫描:使用ANALYZE TABLE tbl_name为扫描的表更新关键字分布。对扫描的表使用FORCE INDEX告知MySQL,相对于使用给定的索引表扫描将非常耗时。SELECT * FROM t1, t2 FORCE ......
511
0
0
2022-09-01
三大范式是什么?第一范式:数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性;第二范式(2NF):满足1NF后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情;第三范式:必须先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键); ......
402
0
0
2022-09-01
问题及描述:1.学生表Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 2.课程表 Course(CID,Cname,TID) --CID --课程编号,Cname 课程名称,TID 教师编号 3.教师表 Teacher(TID,Tname) --TID 教师编号 ......
438
0
0
2022-07-24
阅读下面的PL/SQL程序块:BEGININSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(35000,'WANG','FRED');SAVEPOINT SAVE_A;INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(40000,'W ......
473
0
0
2022-07-15
1. MySQL 索引使用有哪些注意事项呢?可以从两个维度回答这个问题:索引哪些情况会失效,索引不适合哪些场景索引哪些情况会失效查询条件包含or,会导致索引失效。隐式类型转换,会导致索引失效,例如age字段类型是int,我们where age = “1”,这样就会触发隐式类型转换。like通配符会导致索引失效,注意:”ABC%”不会失效,会走range索引, ......
567
0
0
2022-07-04
1. 当使用索引列进行查询的时候尽量不要使用表达式,把计算放到业务层而不是数据库层如下图 两个sql的结果是一样的,但是两个sql的执行计划是不一样,在type中index的效率远不如const where条件中 actor_id+4 表达式影响了执行计划2. 尽量使用主键查询,而不是其他索引,主键查询不会出现回表查询。我们所有的表基本都会有主键的,所以平时 ......
408
0
0
2022-07-03
1. UNION ALL 与 UNION 的区别UNION和UNION ALL关键字都是将两个结果集合并为一个。UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。而UNION ALL只是简单的将两个结果合并后就返回。由于UNION需要排序去重,所以 UNION ALL 的效率比 UNION 好 ......
472
0
0
2022-07-01
看下一面数据库面试题面试题:柠檬班第30期学生要毕业了,他们的成绩存放在下表中,现在需要查询每个班的最高分同学,并且显示该同学的名字!附建表和初始化数据-- 1:创建表CREATE TABLE tb_lemon_grade (分析题目:数据表中每行记录保存的是每个学生的姓名、各科成绩和班级,现在需求是求出每个班的最高分,所以肯定需要以班级去进行分组(GROU ......
459
0
0
2022-05-29
SQL面试题之行列转换在写SQL时,行转列是一个比较常见的问题,接下来我看一下 下面几种情况。情况一,如何行转列表结构如下:CREATE TABLE tb(姓名 VARCHAR(10),课程 VARCHAR(10),分数 INT);数据如下:希望转换成如下的格式:思考10S中,如果是你SQL怎么写......看下我们的SQL:情况二,如何列转行建表语句如下: ......
444
0
0
2022-04-29
1. 用一条SQL 语句 查询出每门课都大于80 分的学生姓名name kecheng fenshu张三 语文 81张三 数学 75李四 语文 76李四 数学 90王五 语文 81王五 数学 100王五 英语 90A: select distinct name from table where name not in (select distinct nam ......
397
0
0
2022-04-21
面试题如何保证缓存与数据库的双写一致性?面试官心理分析你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?面试题剖析一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化 ......
404
0
0
2022-04-15