数据库 SQL面试题
1) 谈一下数据库索引原理,如何发挥作用?针对插入操作索引会起正面作用么?
索引类似于书目录,重要用于提高查询效率,也就是按条件查询时候,先查询索引,再通过索引找到有关数据,索引相称于记录了对某个核心词,指定到不同文献,或者文献里不同位置构造
索引会减少数据更新效率,当插入、修改、删除时会引起索引构造更新
2) 数据库表里如果数据行数诸多,做分页查询,SQL如何书写?
3) 说说group by,having是做什么,举一种group by例子
4) 说说外连接和内连接区别
5) 事务是什么概念,举例阐明
6) 一种表:emp(姓名,性别,年龄,工作类型,领导姓名,工资,部门) a) 列出每个部门最高工资和最低工资
Select max(工资),min(工资) from emp group by部门 b) 列出各部门’工作类型’为’普通职工’最低和最高工资
Select max(工资),min(工资) from emp group by部门 Where工作类型=’ 普通职工’
c) 列出高于本部门平均工资员工姓名,工资,部门
select 姓名,工资,部门 from emp e1 where工资>(
select avg(工资) from emp e2 where e2. 部门=e1.部门 )
存储过程和函数区别是什么?
答:存储过程是顾客定义一系列SQL语句集合,涉及特定表或其她对象任务,顾客可以调用存储过程。而函数普通是数据库已定义办法,它接受参数并返回某种类型值,并且不涉及特定顾客表。 4.事务是什么?
答:事务是作为一种逻辑单元执行一系列操作。一种逻辑工作单元必要有4个属性,称为ACID(原子性、一致性、隔离性和持久性)属性,只有这样才干称为一种事务。
5.游标作用是什么?如何懂得游标已经到了最后?
答:游标用于定位成果集行。通过判断全局变量@@FETCH_STATUS可以判断其与否到了最后。普通此变量不等于0表达出错或到了最后。
7.什么叫做SQL注入式袭击?如何防范?
答:所谓SQL注入式袭击,就是袭击者把SQL命令插入到Web表单输入域页面祈求查询字符串中,欺骗服务器执行恶意SQL命令。在某些表单中,顾客输入内容直接用来构造动态SQL命令,或作为存储过程输入参数,此类表单特别容易受到SQL注入式袭击。防范SQL注入式袭击闯入:只要在运用表单输入内容构造SQL命令之前,把所有输入内容过滤一番就可以了。过滤输入内容可以按各种方式进行。如:替代单引号,即把所有单独浮现单引号改成两个单引号,防止袭击者修改SQL命令含义。
10.什么是汇集索引?什么是非汇集索引?什么是主键?
答:表中经常有一种列或列组合,其值能唯一地标记表中每一行。这样一列或多列称为表主键。汇集索引拟定表中数据物理顺序。一种表中只能包括一种汇集索引。非汇集索引与课本中索引类似。数据存储在一种地方,索引存储在另一种地方,索引带有指针指向数据存储位置。索引中项目按索引键值顺序存储,而表中信息按另一种顺序存储。
11.既有一张表,有两个字段:ID,NAME。ID为主键。如果但愿查询出所有拥有2个或更多ID NAME,查询语句应当如何写?
select [Name] from [table] group by(name) having(count([ID]>=2)。
15.普通数据库若浮现日记满了,会浮现什么状况,与否还能使用?
答:只能执行查询等读操作,不能执行更改,备份等写操作,因素是任何写操作都要记录日记。也就是说基本上处在不能使用状态。
19.学生其存储在Student表中,学生选课状况存储在SC表中,课程状况存储在Course表中。
(1)查询与“刘晨”在同一种系学习学生。
答:SELECT Sno,Sname,Sdept FROM Student WHERE Sdept IN(SELECT Sdept FROM Student WHERE Sname=’刘晨’);
或者:SELECT S1.Sno,S1.Sname,S1.Sdept FROM Student S1,Student S2 WHERE S1.Sdept=S2.Sdept AND S2.Sname=’刘晨’; (2)查询选修了课程名为“信息系统”学生学号和姓名
答:SELECT Sno,Sname FROM Student WHERE Sno IN(SELECT Sno FROM