一些经典的sql书写面试题

一些经典的sql书写面试题

在SQL的面试中,经常会有一些经典的问题,这些问题可以测试应聘者的SQL技能和经验。以下是一些常见的SQL面试问题:

1. 请解释什么是SQL?

这个问题是为了测试应聘者对SQL的基本理解。SQL是“结构化查询语言”的缩写,用于管理关系数据库系统中的数据。

2. 什么是主键?

主键是数据库表中的一个或多个字段,用于唯一标识表中的每条记录。

3. 什么是外键?

外键是一个字段,其值必须在另一个表的主键中存在。它用于建立两个表之间的关系。

4. 什么是联接(JOIN)?请给出几种不同类型的JOIN的例子。

联接用于从两个或多个表中基于相关列检索数据。常见的联接类型包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN。

5. 请解释什么是子查询,并给出一个例子。

子查询是一个嵌套在另一个查询中的查询。它可以在SELECT、FROM或WHERE子句中使用。

6. 什么是索引?为什么我们需要索引?

索引是一个数据库对象,它为数据表提供快速访问路径。通过使用索引,可以大大加快查询速度。

7. 什么是事务?

事务是一系列操作,要么全部成功,要么全部失败。它们用于保持数据库的一致性和完整性。

8. 什么是视图?

视图是基于SQL查询的结果集的可视化表示。它是一个虚拟表,可以用来简化复杂的查询或只显示用户需要的部分数据。

9. 请解释什么是存储过程和函数。

存储过程是一组为了完成特定功能而编写的SQL语句。函数与存储过程类似,但返回一个值。

10. 如何优化SQL查询性能?

这个问题可以考察应聘者对数据库性能调优的了解。优化方法包括使用索引、避免全表扫描、减少使用SELECT 、使用连接(JOIN)代替子查询等。

sql面试题及答案

sql面试题及答案 SQL(Structured Query Language)是一种用于管理关系型数据库系 统的标准化语言。在面试过程中,针对SQL的相关问题被广泛应用, 以评估面试者对数据库和SQL的理解程度和能力。以下是一些常见的SQL面试题及其答案,供读者参考。 一、简答题 1. 什么是SQL? SQL是一种用于管理关系型数据库系统的标准化语言。它可以用于 创建数据库、插入、更新、删除和查询数据。 2. SQL语言的分类有哪些? SQL语言可以分为DDL(数据定义语言)、DML(数据操作语言)和DQL(数据查询语言)。 3. DDL和DML的区别是什么? DDL用于定义和管理数据库结构,如创建表、修改表的结构等;DML用于对数据库中的数据进行操作,如增加、修改、删除数据等。 4. 什么是主键? 主键是用于唯一标识表中每一条记录的列或一组列。它具有唯一性 和非空性约束。 5. 什么是外键?

外键是一个表中的列,它与另一个表的主键建立关系。它用于保持 表与表之间的完整性,可以实现关系数据库的特性。 6. 什么是索引? 索引是一种帮助数据库系统快速查找数据的数据结构。它可以加快 数据检索的速度,但会增加数据修改的时间。 7. 请解释SQL中的JOIN操作。 JOIN操作用于将两个或多个表中的数据连接起来,根据某个共同 的列值将它们关联起来。常见的JOIN操作包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN。 8. 请解释SQL中的GROUP BY和HAVING操作。 GROUP BY用于将数据按照指定的列进行分组;HAVING则用于 对GROUP BY结果进行过滤,只选择满足条件的分组。 9. 什么是视图? 视图是一个虚拟的表,它是由数据库中的一个或多个表的数据组成的。视图是基于某个或多个表的查询结果,可以简化复杂的查询操作。 二、编程题 1. 如何在表中插入数据? 使用INSERT INTO语句向表中插入数据。例如,INSERT INTO 表 名 (列1, 列2, 列3) VALUES (值1, 值2, 值3)。

sql经典面试题

1.张表,学生表S,课程C,学生课程表SC,学生可以选修多门课程,一门课程可以被多个学生选修,通过SC表关联;(SQL) 1)写出建表语句; 答:建表语句如下(mysql数据库): create table s(id integer primary key, name varchar(20)); create table c(id integer primary key, name varchar(20)); create table sc( sid integer references s(id), cid integer references c(id), primary key(sid,cid) ); 2)写出SQL语句,查询选修了所有选修课程的学生; 答:SQL语句如下: select , from s stu where (select count(*) from sc where sid= = (select count(*) from c); 3)写出SQL语句,查询选修了至少5门以上的课程的学生。 答:SQL语句如下: select , from s stu where (select count(*) from sc where sid=>=5; 2.数据库表(Test)结构如下:(SQL) IDNAMEAGEMANAGER(所属主管人ID) 106A30104 109B19104 104C20111 107D35109

112E25120 119F45NULL 要求:列出所有年龄比所属主管年龄大的人的ID和名字 答:SQL语句如下: select from test employee where > (select from test manager where =; 3.有3个表(15分钟):(SQL) Student 学生表 (学号,姓名,性别,年龄,组织部门) Course 课程表 (编号,课程名称) Sc 选课表 (学号,课程编号,成绩) 表结构如下: 1)写一个SQL语句,查询选修了’计算机原理’的学生学号和姓名(3分钟) 答:SQL语句如下: select , from Student stu where (select count(*) from sc where sno= and cno = (select cno from Course where cname=’计算机原理’)) != 0; 2)写一个SQL语句,查询’周星驰’同学选修了的课程名字(3分钟) 答:SQL语句如下: select cname from Course where cno in (select cno from sc where sno=(select sno from Student where sname=’周星驰’)); 3)写一个SQL语句,查询选修了5门课程的学生学号和姓名(9分钟) 答:SQL语句如下: select , from student stu where (select count(*) from sc where sno= = 5;

经典的SQL语句面试题

经典的SQL语句面试题 from (select s#,score from SC where C#= 001 ) a, (select s#,score from SC where C#= 002 ) b where a.score>b.score and a.s#=b.s#; 2、查询平均成绩大于60分的同学的学号和平均成绩;select S#,avg(score) from sc group by S# having avg(score) >60; 3、查询所有同学的学号、姓名、选课数、总成绩; select Student.S#,Student.Sname,count(SC.C#),sum(score) from Student left Outer join SC on Student.S#=SC.S# group by Student.S#,Sname 4、查询姓“李”的老师的个数; select count(distinct(Tname)) from Teacher where Tname like 李% 5、查询没学过“叶平”老师课的同学的学号、姓名; select Student.S#,Student.Sname from Student where S# not in (select distinct( SC.S#) from

SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname= 叶平); 6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名; select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#= 001 and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#= 002 ); 7、查询学过“叶平”老师所教的所有课的同学的学号、姓名; select S#,Sname from Student where S# in (select S# from SC ,Course ,T eacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname= 叶平group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname= 叶平)); 8、查询所有课程成绩小于60分的同学的学号、姓名; select S#,Sname from Student

常见SQL数据库面试题和答案

常见SQL数据库面试题和答案 常见SQL数据库面试题和答案(一) Student(S#,Sname,Sage,Ssex) 学生表S#:学号;Sname:学生姓名;Sage:学生年龄;Ssex:学生性别 Course(C#,Cname,T#) 课程表 C#,课程编号;Cname:课程名字;T#:教师编号 SC(S#,C#,score) 成绩表 S#:学号;C#,课程编号;score:成绩 Teacher(T#,Tname) 教师表 T#:教师编号; Tname:教师名字 问题: 1、查询“001”课程比“002”课程成绩高的所有学生的学号; select # from (select s#,score from SC where C#='001') a,(select s#,score from SC where C#='002') b where > and #=#; 2、查询平均成绩大于60分的同学的学号和平均成绩; select S#,avg(score) from sc group by S# having avg(score) >60; 3、查询所有同学的学号、姓名、选课数、总成绩; select #,,count#),sum(score) from Student left Outer join SC on #=# group by #,Sname 4、查询姓“李”的老师的个数; select count(distinct(Tname)) from Teacher where Tname like '李%'; 5、查询没学过“叶平”老师课的同学的学号、姓名; select #, from Student

经典SQL面试题

经典SQL面试题 SQL面试题 一、选择题 1、假设在某个公司环境中,一个部门有多名职工,一名职工只能属于一个部门,则部门与职工之间的联系是( A )。 A、一对多 B、一对一 C、多对多 D、不确定 2、create database用来( A )。 A、创建数据库 B、删除数据库 C、创建表 D、创建视图 3、如果将某一列设置为表的主键,在表中此列的值(C )。 A、可以出现重复值 B、允许为空值 C、不允许为空值,也不能出现重复值 D、不允许为空值,但允许列值重复 4、对于表的外键,下列哪些描述正确( A )。 A、是表的非主键列,是另一个表的主键列 B、主键和外键不能描述表之间的关系 C、外键不能是表的索引 D、外键允许为空值 5、在查询时,如果要去掉查询结果中的重复项,需要使用( C )。 A、UNIQUE B、COUNT C、DISTINCT D、UNION

6、SELECT语句中使用*表示( B )。 A、选择任何属性 B、选择全部属性 C、选择全部元组 D、选择键码 7、在SQL中,下列涉及空值操作不正确的_是( A )。 A、AGE IS NULL B、AGE IS NOT NULL C、AGE=NULL D、NOT(AGE IS NULL) 8、在SELECT语句中,(A)子句可用于对查询到的记录进行分组。 A、GROUP BY B、ORDER BY C、WHERE D、FROM 9、Oracle数据库是( C )数据库。 A、层次模型 B、网状模型 C、关系模型 D、面向对象模型 二、查询题 参照如下表,完成下面题目: Student course score teacher

SQL经典面试题及答案

SQL经典面试题及答案 1.一道SQL语句面试题,关于group by 表内容: 2005-05-09 胜 2005-05-09 胜 2005-05-09 负 2005-05-09 负 2005-05-10 胜 2005-05-10 负 2005-05-10 负 如果要生成下列结果, 该如何写sql语句? 胜负 2005-05-09 2 2 2005-05-10 1 2 ------------------------------------------ create table #tmp(rq varchar(10),shengfu nchar(1)) insert into #tmp values('2005-05-09','胜') insert into #tmp values('2005-05-09','胜') insert into #tmp values('2005-05-09','负') insert into #tmp values('2005-05-09','负') insert into #tmp values('2005-05-10','胜') insert into #tmp values('2005-05-10','负') insert into #tmp values('2005-05-10','负') 1)select rq, sum(case when shengfu='胜' then 1 else 0 end)'胜',sum(case when shengfu='负' then 1 else 0 end)'负' from #tmp group by rq 2) select N.rq,N.勝,M.負 from ( select rq,勝=count(*) from #tmp where shengfu='胜'group by rq)N inner join (select rq,負=count(*) from #tmp where shengfu='负'group by rq)M on N.rq=M.rq 3)select a.col001,a.a1 胜,b.b1 负 from (select col001,count(col001) a1 from temp1 where col002='胜' group by col001) a, (select col001,count(col001) b1 from temp1 where col002='负' group by col001) b where a.col001=b.col001 2.请教一个面试中遇到的SQL语句的查询问题

SQL数据库经典面试题修改笔试题有答案

28. 数据库:抽出部门,平均工资,要求按部门的字符串顺序排序,不能含有"human resource"部门,employee结构如下: employee_id, employee_name,depart_id,depart_name,wage 答: select depart_name, avg(wage) from employee where depart_name <> 'human resource' group by depart_name order by depart_name -------------------------------------------------------------------------- 29. 给定如下SQL数据库:Test(num INT(4)) 请用一条SQL语句返回num的最小值,但不许使用统计功能,如MIN,MAX等 答: select top 1 num from Test order by num -------------------------------------------------------------------------- 33.一个数据库中有两个表: 一X表为Customer,含字段ID,Name; 一X表为Order,含字段ID,CustomerID(连向Customer中ID的外键),Revenue;写出求每个Customer的Revenue总和的SQL语句。 建表create table customer (ID int primary key,Name char(10)) go

SQL_面试题及答案

1、SQL SREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值 dd我们希望马上得到这个新用户的ID,因为我们一般都是把这种用户ID的字段设置成自增长类型的,乍看起来好像没有要得到那个新ID很麻烦,其实sql server内置了一些全局的变量,使我们很容易就得到那个新的自增字段的ID,就是使用@@IDENTITY。 在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含语句生成的最后一个标识值。如果语句未影响任何包含标识列的表,则 @@IDENTITY 返回 NULL。如果插入了多个行,生成了多个标识值,则 @@IDENTITY 将返回最后生成的标识值。如果语句触发了一个或多个触发器,该触发器又执行了生成标识值的插入操作,那么,在语句执行后立即调用 @@IDENTITY 将返回触发器生成的最后一个标识值。 在具体应用中可以这样来写SQL语句: string strSql = "INSERT INTO [User]([Name],[LoginName],[Pwd],[RegTime],[IsSuper],[Remark])" + "VALUES(@Name,@LoginName,@Pwd,@RegTime,@IsSuper,@Remark);select @@IDENTITY ;"; 执行的时候直接用command.ExecuteScalar();就可以了,能直接返回该条记录的UserID; 解答二: 经过实验,得如下结论: select DISTINCT @@IDENTITY as iden from FaWen 解释:上述语句对 SQL SERVER 的一个会话,也就是一条连接,返回该连接最后一条插入记录得到的自增字段的值。 假设有3个程序,分别连接SQL SERVER,有三个连接。3个程序都向同一个表依顺序插入数据,得到的值分别是1、2、3,那么,只要3个程序对SQL的连接还保持着,第一个程序使用上述语句,将得到1,而不是3,第二个程序将得到2,也不是3。第三个程序得到3。 因此,用上述语句可以得到自己刚才插入记录的自增字段的值,不怕其它程序的并发插入操作。

SQL数据库面试题目及其答案

1.什么是存储过程?用什么来调用? 答:存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。 2.索引的作用?和它的优点缺点是什么?答:索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。 3。什么是内存泄漏?答:一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new 等创建对象时,就从堆中为它分配一块内存,使用完后程序调用free 或者delete 释放该内存,否则就说该内存就不能被使用,我们就说该内存被泄漏了。 3.维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么? 答:我是这样做的,尽可能使用约束,如check, 主键,外键,非空字段等来约束,这样做效率最高,也最方便。其次是使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据的完整新和一致性。最后考虑的是自写业务逻辑,但这样做麻烦,编程复杂,效率低下。

4.什么是事务?什么是锁? 答:事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。 锁:在所以的DBMS^,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。 5.什么叫视图?游标是什么?答:视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。 游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。 6.为管理业务培训信息,建立 3 个表: S(S#,SN,SD,SA)S#,SN,SD,SA分别代表学号,学员姓名,所属单位, 学员年龄 C(C#,CN)C#,CN分别代表课程编号,课程名称 SC(S#,C#,G) S#,C#,G 分别代表学号,所选的课程编号,学习成绩

sql面试题及答案

sql面试题及答案 sql面试题及答案一 1. 简述索引存取的方法的作用和建立索引的原则 作用:加快查询速度。 原则: (1) 如果某属性或属性组经常出现在查询条件中,考虑为该属性或属性组建立索引; (2) 如果某个属性常作为最大值和最小值等聚集函数的参数,考虑为该属性建立索引; (3) 如果某属性经常出现在连接操作的连接条件中,考虑为该属性或属性组建立索引; 2. 简述数据库的设计过程 数据库设计分为五个阶段: 需求分析:主要是准确收集用户信息需求和处理需求,并对收集的结果进行整理和分析,形成需求说明。 概念结构设计:对用户需求进行综合、归纳、抽象,形成一个与与具体的DBMS无关概念模型(一般为ER模型)。 逻辑结构设计:将概念结构设计的概念模型转化为某个特定的DBMS所支持的数据模型,建立数据库逻辑模式,并对其进行优化,同时为各种用户和应用设计外模式。

物理结构设计:为设计好的逻辑模型选择物理结构,包括存储结构和存取方法等,建立数据库物理模式。 实施和维护:实施就是使用DLL语言建立数据库模式,将实际数据载入数据库,建立真正的数据库。维护阶段是对运行中的数据库进行评价、调整和修改。 3. 什么是内存泄漏? 答案:一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new 等创建对象时,就从堆中为它分配一块内存,使用完后程序调用free或者delete 释放该内存,否则就说该内存就不能被使用,我们就说该内存被泄漏了。 4. 什么是基本表?什么是视图? 答案:基本表是本身独立存在的表,在 SQL 中一个关系就对应一个表。 视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表 5. 试述视图的优点 (1) 视图能够简化用户的操作 (2) 视图使用户能以多种角度看待同一数据; (3) 视图为数据库提供了一定程度的逻辑独立性; (4) 视图能够对机密数据提供安全保护。 6. 所有的视图是否都可以更新?为什么? 答案:不是。

sql数据库面试题及答案

sql数据库面试题及答案 【篇一:sql数据库经典面试题(笔试题)】 =txt>1.一道sql语句面试题,关于group by 表内容: 2005-05-09 胜 2005-05-09 胜 2005-05-09 负 2005-05-09 负 2005-05-10 胜 2005-05-10 负 2005-05-10 负 如果要生成下列结果, 该如何写sql语句? 胜负 2005-05-09 2 2 2005-05-10 1 2 ------------------------------------------ create table #tmp(rq varchar(10),shengfu nchar(1)) insert into #tmp values(2005-05-09,胜) insert into #tmp values(2005-05-09,胜) insert into #tmp values(2005-05-09,负) insert into #tmp values(2005-05-09,负) insert into #tmp values(2005-05-10,胜) insert into #tmp values(2005-05-10,负) insert into #tmp values(2005-05-10,负) 1)select rq, sum(case when shengfu=胜 then 1 else 0 end)胜,sum(case when shengfu=负 then 1 else 0 end)负 from #tmp group by rq 2) select n.rq,n.勝,m.負 from ( select rq,勝=count(*) from #tmp where shengfu=胜group by rq)n inner join (select rq,負=count(*) from #tmp where shengfu=负group by rq)m on n.rq=m.rq 3)select a.col001,a.a1 胜,b.b1 负 from (select col001,count(col001) a1 from temp1 where col002=胜group by col001) a,

sql语句面试题及答案

sql语句面试题及答案 本文将为您提供一些常见的SQL语句面试题,并给出相应的答案。通过阅读本文,您将对SQL语句有更深入的了解,从而在面试中更加 自信。 一、查询相关的面试题 1. 如何用SQL语句查询一张表的所有记录? 答案:使用SELECT语句来查询表中的所有记录,语法为:SELECT * FROM 表名; 2. 如何查询指定条件的记录? 答案:使用SELECT语句的WHERE子句来查询指定条件的记录, 语法为:SELECT * FROM 表名 WHERE 条件; 3. 如何对查询结果进行排序? 答案:使用SELECT语句的ORDER BY子句来对查询结果进行排序,语法为:SELECT * FROM 表名 ORDER BY 列名 ASC/DESC; 4. 如何获取查询结果的前几条记录? 答案:使用SELECT语句的TOP或LIMIT子句来获取查询结果的 前几条记录,语法为:SELECT TOP 数量 * FROM 表名; 或 SELECT * FROM 表名 LIMIT 数量; 5. 如何对查询结果进行分页?

答案:使用SELECT语句的LIMIT子句来实现分页效果,语法为:SELECT * FROM 表名 LIMIT 起始位置, 每页数量; 二、插入、更新和删除相关的面试题 1. 如何插入一条新记录? 答案:使用INSERT INTO语句来插入一条新记录,语法为:INSERT INTO 表名 (列1, 列2, 列3) VALUES (值1, 值2, 值3); 2. 如何更新已有的记录? 答案:使用UPDATE语句来更新已有的记录,语法为:UPDATE 表名 SET 列名 = 新值 WHERE 条件; 3. 如何删除指定的记录? 答案:使用DELETE FROM语句来删除指定的记录,语法为:DELETE FROM 表名 WHERE 条件; 三、聚合函数相关的面试题 1. 如何计算表中记录的数量? 答案:使用COUNT(*)函数来计算表中记录的数量,语法为:SELECT COUNT(*) FROM 表名; 2. 如何计算某一列的总和? 答案:使用SUM(列名)函数来计算某一列的总和,语法为:SELECT SUM(列名) FROM 表名;

sql面试题大全

sql面试题大全 SQL(Structured Query Language)是一种用于管理关系型数据库的 标准化语言。在数据库相关的职位面试中,SQL面试题是常见的一种 考察方式。本文将为您提供一份SQL面试题大全,帮助您更好地准备 面试。 1. SELECT语句 SELECT语句用于从数据库中检索数据。以下是一些常见的SELECT语句相关的面试题: - 请解释SELECT语句中的DISTINCT关键字的作用。 - 如何使用WHERE子句来过滤结果? - 什么是表达式(Expression)和谓词(Predicate)? - 请解释SQL中的NULL值和未知值(UNKNOWN)的区别。 2. 数据库表操作 数据库表操作是SQL中的核心操作之一。以下是一些常见的数据 库表操作相关的面试题: - 如何创建一个新的数据库表? - 如何添加列、删除列或修改列的定义? - 如何添加主键(Primary Key)和外键(Foreign Key)约束? - 请解释SQL中的合并(JOIN)操作和不同类型的合并操作的区别。

3. 数据查询与过滤 数据查询与过滤是SQL中的重要方面,以下是一些相关的面试题:- 如何使用GROUP BY子句对数据进行分组? - 如何使用HAVING子句过滤分组数据? - 请解释SQL中的聚合函数(Aggregate Functions)的作用和常见的聚合函数有哪些? - 如何使用ORDER BY子句对结果进行排序? 4. 数据更新与删除 数据更新与删除是SQL中的常见操作之一。以下是一些相关的面 试题: - 如何使用INSERT语句向数据库表中插入新的数据? - 如何使用UPDATE语句更新已有的数据? - 如何使用DELETE语句从数据库中删除数据? - 请解释SQL中的事务(Transaction)和事务的四个特性(ACID)。 5. 数据库索引与优化 数据库索引和优化是提高数据库性能的重要手段。以下是一些相关 的面试题: - 请解释数据库索引的作用和常见的索引类型有哪些?

数据库sql面试题及答案

数据库sql面试题及答案 数据库sql面试题及答案 【篇一:sql数据库经典面试题(修改笔试题)(有答案)】 部门,平均工资,要求按部门的字符串顺序排序,不能含有human resource部门,employee结构如下: employee_id, employee_name,depart_id,depart_name,wage 答: select depart_name, avg(wage) from employee where depart_name human resource group by depart_name order by depart_name -------------------------------------------------------------------------- 29. 给定如下sql数据库:test(num int(4)) 请用一条sql语句返回num的最小值,但不许使用统计 功能,如min,max等答: select top 1 num from test order by num -------------------------------------------------------------------------- 33.一个数据库中有两个表: 一张表为customer,含字段id,name; 一张表为order,含字段id,customerid(连向customer中 id的外键),revenue;

写出求每个customer的revenue总和的sql语句。建表create table customer (id int primary key,name char(10)) go create table [order] (id int primary key,customerid int foreign key references customer(id) , revenue float) go --查询 select customer.id, sum( isnull([order].revenue,0) ) from customer full join [order] on( [order].customerid=customer.id ) group by customer.id select customer.id,sum(order.revener) from order,customer where customer.id=customerid group by customer.id select customer.id, sum(order.revener ) from customer full join order on( order.customerid=customer.id ) group by customer.id 5数据库(10) a tabel called “performance”contain :name and score,please 用 sql语言表述 如何选出score最high的一个(仅有一个)

sql面试题及答案

sql面试题及答案 数据库面试的技术员,对常见的面试题目了解会对面试结果有所帮助。以下是为大家的sql面试题及答案,希望可以帮到大家。 1. 在一个查询中,使用哪一个关键字能够除去重复列值? 答案:使用distinct关键字 2. 什么是快照?它的作用是什么? 答案:快照Snapshot是一个文件系统在特定时间里的镜像,对于在线实时数据备份非常有用。快照对于拥有不能停顿的应用或具有常翻开文件的文件系统的备份非常重要。对于只能提供一个非常短的备份时间而言,快照能保证系统的完整性。 3. 解释存储过程和触发器 答案: 存储过程是一组Transact-SQL语句,在一次编译后可以执行屡次。因为不必重新编译Transact-SQL语句,所以执行存储过程可以提高性能。 触发器是一种特殊类型的存储过程,不由用户直接调用。创立触发器时会对其进展定义,以便在对特定表或列作特定类型的数据修改时执行。 4. SQL Server是否支持行级锁,有什么好处? 答案:支持动态行级锁定 SQL Server 2000动态地将查询所引用的每一个表的锁定粒度调整到适宜的级别。当查询所引用的少数几行分散在一个大型表中时,优化数据并行访问的最正确方法是使用粒度锁,如行锁。但是,如果查询引用的是一个表中的大多数行或所有行,优化数据并

行访问的最正确方法可以是锁定整个表,以尽量减少锁定开销并尽快完成查询。 SQL Serve 2000通过为每个查询中的每个表选择适当的锁定级别,在总体上优化了数据并发访问。对于一个查询,如果只引用一个大型表中的几行,那么数据库引擎可以使用行级锁定;如果引用一个大型表的几页中的多行,那么使用页级锁定;如果引用一个小型表中的所有行,那么使用表级锁定。 5. 数据库日志干什么用,数据库日志满的时候再查询数据库时会出现什么情况。 答案:每个数据库都有事务日志,用以记录所有事务和每个事务对数据库所做的修改。 6. 存储过程和函数的区别? 答案:存储过程是用户定义的一系列SQL语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表 7. 事务是什么? 答案:事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务: (1) 原子性 事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。 (2) 一致性

SQL经典面试题及答案

1。用一条SQL 语句查询出每门课都大于80 分的学生姓名 name kecheng fenshu 张三语文81 张三数学75 李四语文76 李四数学90 王五语文81 王五数学100 王五英语90 A:select distinct name from table where name not in (select distinct name from table where fenshu<=80) select name from table group by name having min(fenshu)〉80 select name from table group by name having count(kecheng)〉=3 and min (fenshu)>=80 2. 学生表如下: 自动编号学号姓名课程编号课程名称分数 1 2005001 张三0001 数学69 2 2005002 李四0001 数学89 3 2005001 张三0001 数学69 删除除了自动编号不同,其他都相同的学生冗余信息 A: delete tablename where 自动编号not in(select min(自动编号) from tablename group by 学号,姓名,课程编号, 课程名称, 分数) 3。面试题:怎么把这样一个表儿 year month amount 1991 1 1.1 1991 2 1.2 1991 3 1。3 1991 4 1。4 1992 1 2.1 1992 2 2.2 1992 3 2.3 1992 4 2。4 查成这样一个结果 year m1 m2 m3 m4 1991 1。1 1.2 1.3 1.4 1992 2.1 2.2 2。3 2.4

相关主题
相关文档
最新文档