SQL面试72题
大家好,这一期呢,我们来看一下sql的面试题。
第1题,什么是sql?
结构化查询语言。用来创建和访问数据库从而对软件应用提供支持。
第2题,什么是表?
表是一些记录的集合,表被认为是一个单一的数据空间。
第3题,有几种类型的语句?
Ddl数据定义语言,dml数据管理语言,dcl数据控制语言。
第4题,介绍一下distinct。
Distinct 跟 select,语句结合使用的, 以避免出现指定的重复的列记录。
select distinct columnnames from tablename;
第5题, 有哪些不同的clauses?
Where, 为了定义条件来过滤数据的。
Group by, 通过指定的条件来对数据进行分组.
Having, 跟group by结合使用, 用来过滤数据.
Order by用来排序。
Using, 跟Join结合使用,可以用on来替代.
第6题, 为什么使用constraints? 在创建数据库的时候,需要用哪些constraints?
Constraints用来对表的记录设定规则。如果相关的记录不符合规则,就会被终止操作。
有5种主要的constraints。Not null, unique, primary key, foreign key, check.
第7题,有几种不同的join?
Inner join, left join, right join, full join.
Inner join, 就是只要有一个列能够匹配, 就简单的返回两个table中所有的对应行。
select columnnames from tablename1 inner join tablename2 on columnname1=columnname2
Left join也就是left outer join。当有一个列能够匹配时就返回左边表中所有的行。
select columnnames from tablename1 left join tablename2 on columnname1=columnname2
Right join也就是right outer join,当有列匹配时,返回右边表格中所有的行。
select columnnames from tablename1 right join tablename2 on columnname1=columnname2
Full join也就是full outer join, 当有匹配时, 会返回左边表格和右边表格任意情况下的行组合。
第8题,什么是transaction及其控制?
Transaction包含了一系列的任务操作。这些操作可能是创建更新删除等等操作,是作为一个特定的结果来表现的。要么成功,要么不成功。
有4种控制,一种是commit,也就是提交。一种是rollback,也就是回调。再一种是set transaction,对这个事务设定一个名字。再一种是save point。这个控制是用来设定某个点用来回退的。
第9题,事务的属性是什么?
Atomicity, Consistency, Isolation, Durability.
第10题,有哪些直接可以调用的arregate函数?
Avg, count, max, min, sum, first, last.
第11题, 有哪些scalar函数?
ucase, lcase, mid, format, len, round.
第12题,什么是trigger?
Trigger相当于stored procedure, 它是用来对某些动作出反应的机制。
create trigger name before|after event on tablename for each row | statememt execute procedure functionname arguments
第13题,什么是view?
view是个虚拟表,它包含多行多列,这些数据来自于一个或者多个表格。
create view viewname as select columname from tablename where condition
第14题, 如何更新view?
使用create和replace来更新view。
create or replace view viewname as select columname from tablename where condition
第15题, 解释一下权限是怎么工作的?
Grant和revoke分别是给予权限和去除权限。
包括如下动作,select, insert,update, delete, all等等。
gant privilegename on objectname to username or public or rolename with grant option
revoke privilegenane on objectname from username or public or rolename
第16题, 有几种类型的privileges?
有两种System privilege和object privilege。
System privilege主要做的工作有alter any index, alter any cache group, create, alter, delete table, create, alter,delete view等等。
对象privilege包含,execute, insert, update, delete. select, flush, load, index, references等操作。
第17题,什么是sql injection?
这是一种攻击数据库的技术,是在数据库的查询语句中嵌套,恶意破坏性的sql语句。当这些语句被执行时会对数据库的数据造成破坏。
第18题, 什么是sql的sandbox?
Safe access sandbox.
External access sandbox.
Unsafe access sandbox.
第19题, Sql和pl/sql有什么区别?
Sql是结构化查询语言, pl/sql是procedural concepts编程语言。
第20题, Nvl函数的作用是什么?
Nvl是为了把空值转换成真正的值。
第21题, 什么是carteslan product?
两个表相乘。两个表的数据进行叠加。一个表有5个行,另一个表有6个行。最后的结果就是30行。
第22题, Sql和my sql的区别是什么?
Sql是结构化查询语言,my sql是一个关系型数据库。
第23题, Subquery是什么意思?
子查询是一个查询嵌入在另一个查询里面。
第24题, 使用子查询时有多少比较的运算符?
In, any和all。
第25题, Clustered索引和非clustered索引有什么区别?
一张表只有一个clustered索引,可以有多个非clustered索引。
clustered索引,要快于非clustered索引。
Clustered索引会存储数据在表和视图当中。而非clustered索引不会。
第26题, Delete和truncate的区别是什么?
Delete是dml,truncate是ddl。
Delete是用来删除一行或者多行。Truncate是用来删除一个表中的所有行。
我们可以用where跟delete结合使用。Truncate不可以。
第27题, Drop跟truncate的区别是什么?
truncate是删除表中所有的行,drop是删除整张表。这两个操作都不可以回撤。
第28题, 写出一行语句显示学生表中学生名字以k开头的所有学生。
select * from student where studentname like 'k%'
第29题, 嵌套查询和关联查询有什么区别吗?
在一个子查询中再套另外一个字查询成为嵌套查询。如果查询的输出依赖于父查询表的话,这个查询称为关联子查询。
select adminid(select firstname+' '+lastname from emplyee where empid=emp.adminid) as empadminid from employee
第30题, 什么是Normalization, 有几种形式?
Normalization是指避免数据冗余而使用的机制。
有4种,
第1范式是避免在表中出现重复的列。
第2范式遵循第1范式并且建立表之间的关联。
第3范式遵循第2范式,并且去除了跟主键不相关的列。
第4范式遵循第3范式,并且不定义多值依赖。
第31题,什么是关系?有几种关系?
关系是指多表在数据库中的关联。
有4种关系。
1对1,多对一,多对多,一对多。
第32题, 什么是stored procedures? 如何使用?
Stored procedure是一系列的sql语句,可以被当做函数来执行操作数据库。stored procedure用来减轻网络负担并提高性能。
create procedure procedurename (parameters) as begin
sql statements in stored procedures to update/retrieve records
end
第33题, 关系型数据库的一些基本属性是什么?
每一列要有唯一的名字。
表行的顺序和列的顺序无关紧要。
所有的值是原子性的,每一行都是唯一的。
第34题,什么叫嵌套trigger?
Trigger可以在满足一些条件的时候用来做数据的修改。
在triggers里面含有另外的trigger,我们称之为嵌套的trigger。
第35题, 什么是cursor?
Cursor相当于是一个指针来访问数据库的对象, 它是以行为单位的。
使用cursor的步骤如下, 声明cursor, 打开 cursor, 获取行数据, 处理行, 关掉cursor, 释放cursor。
第36题, 什么是collation?
Collation是一系列的规则用来检查数据是如何排序的. 比如字符串数据是通过字符串的顺序,字符串的大小写敏感等等来排序的。
第37题, 在数据库测试中,我们需要检查什么?
数据库的链接。
Constraint检查。
数据域的大小。
通过dml操作进行数据获取和处理。
存储过程。
Functional flow。
第38题, 什么是数据库的白盒测试?
数据库的一致性和ACID属性。
数据库的triggers和逻辑视图。
Decision覆盖,条件覆盖和语句覆盖。
数据库表, 数据模型, 数据定义。
参照完整性规则。
第39题, 什么是数据库的黑盒测试?
数据mapping。
数据存储和获取。
使用黑盒技术。
第40题, 什么是数据库的索引?
数据库的索引是为了快速的获取数据。
create index indexname on tablename (columnname )
第41题, 如何在表中添加一条记录?
insert into tablename values(...)
第42题, 如何在表中添加一列?
alter table tablename add (columnname)
第43题, 如何使用delete语句?
delete from tablename where (...)
第44题, Commit的作用是什么?
Commit是为了提交所有dml语句的修改。
第45题,什么是主键?
主键是表中每一行的标识。
第46题,什么是外键?
在本表中关联另外一张表的主键称之为这个表的外键。
第47题,什么是check constraint?
是用来限制某一列的数据和数据的类型。
第48题,布尔数据域的可能值有哪些?
-1 true, 0 false.
第49题, 什么是identity?
Identity是数据库自动生成的数字值来标识主键列, 我们可以定义一个起始值。
第50题, 如何随机的从表中取行?
select * from tablename sample 10
第51题, Sql server缺省的TCP/ip端口是什么?
1433.
第52题, 写一个语句返回不同名字。
select distinct name from tablename
第53题, 如何在输出中改变列的名称?
select columnname as newname from tablename;
第54题, Select语句中可能使用的clauses的排列顺序。
select,from,where,group by, having, order by.
第55题, 学生表中有名字和分数两个列,如何获取前三名?
select name, marks from student s1 where 3 <= (select count (*) from students s2 where s1.marks=s2.marks)
第56题, sql语句的注释。
使用两个的hyphens.
第57题, 什么是rowID?
在表的每一个行中都存在这么一个虚拟的列,他有18个字符的长度。
第58题, 说一下union, minus, union all和intersect。
minus返回所有第1个查询中不同的行。
union返回任意查询中不同的行。
union all 返回任意查询中所有的行,包括重复的行。
intersect返回两个查询相结合的不同的行。
第59题, Unique和primary key区别有哪些?
一个表中只允许有一个primary key,但是可以有多个unique key。
Primary key不可以为空,uniquekey 可以可以为空。
第60题, 什么是 composite primary key?
有多个列生成的primary key称之为composite primary key.
第61题, 什么叫查询优化?
是指数据库系统,对多个查询进行比较,会选择其中代价最小的那个查询。
第62题, 什么是case function?
If then else类型的逻辑。他会根据这些条件判断而返回不同的结果表达式。
第63题, 什么是临时表?
临时表用来临时存储数据的存储结构。
第64题,Rename和alias的区别是什么?
Rename是改名。Alias是别名,它不会修改列名称。
第65题, 视图的优势在哪里?
视图可以限定访问表格的列。
视图可以访问多个表格。
第66题, 用户之间可以给予的权限有哪些?
Select, connect, resources.
第67题, 什么是Schema?
Schema是一个用户的数据库对象的集合。
第68题, 视图是否包含数据?
视图不包含数据,视图是一个虚拟结构。
第69题, 一个视图可以从另一个视图中创建吗?
可以,一个视图可以从另一个视图中创建。
第70题, Having clause和where clause的区别是什么?
两者都是指定查询条件的,但是having只能用select语句中,典型的用途跟group by相结合的时候。
第71题, 局部临时表和全局临时表的区别是什么?
局部临时表只会存在于语句运行的时候。
全局临时表会存在于数据库当中,但是如果连接关闭的话,它也会消失。
第72题,什么是cte?
Cte也就是common table expression,它是包含一个语句的临时结果集的表达式。
码字不易,请关注点赞!
网友评论