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

' then 1 else 0 end)'负' from #tmp group (case when shengfu='负

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语句的查询问题

表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B 列,当

B列大于C列时选择B列否则选择C列。

------------------------------------------

select (case when a>b then a else b end ),

(case when b>c then b esle c end) from table_name

3.面试题:一个日期判断的sql语句,

请取出tb_send表中日期(SendTime字段)为当天的所有记录?(SendTime字段为

datetime型,包含日期与时间)

------------------------------------------

elect * from tb where datediff(dd,SendTime,getdate())=0 s

4.有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示

语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以

下条件显示出来(并写出您的思路):

大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。

显示格式:

语文数学英语

及格优秀不及格 ------------------------------------------

select

(case when 语文>=80 then '优秀'

when 语文>=60 then '及格'

else '不及格') as 语文,

(case when 数学>=80 then '优秀'

when 数学>=60 then '及格'

else '不及格') as 数学,

(case when 英语>=80 then '优秀'

when 英语>=60 then '及格'

else '不及格') as 英语,

from table

5.在sqlserver2000中请用sql创建一张用户临时表和系统临时表,里面包含

两个字段ID和IDValues,类型都是int型,并解释下两者的区别? ------------------------------------------ 用户临时表:create table #xx(ID int, IDValues int)

系统临时表:create table ##xx(ID int, IDValues int)

区别:

用户临时表只对创建这个表的用户的Session可见,对其他进程是不可见的.

当创建它的进程消失时这个临时表就自动删除.

全局临时表对整个SQL Server实例都可见,但是所有访问它的Session都消失它也自动删除. 的时候,

6.sqlserver2000是一种大型数据库,他的存储容量只受存储介质的限制,请

问它是通过什么方式实现这种无限容量机制的。

------------------------------------------

它的所有数据都存储在数据文件中(*.dbf),所以只要文件够大,SQL

Server的存储容量是可以扩大的.

SQL Server 2000 数据库有三种类型的文件:

主要数据文件

主要数据文件是数据库的起点,指向数据库中文件的其它部分。每个数据库都有一个主要数据文件。主要数据文件的推荐文件扩展名是 .mdf。

次要数据文件

次要数据文件包含除主要数据文件外的所有数据文件。有些数据库可能没有次要数据文件,而有些数据库则有多个次要数据文件。次要数据文件的推荐文件扩展名是 .ndf。

日志文件

日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个

日志文件,但可以不止一个。日志文件的推荐文件扩展名是 .ldf。

7.请用一个sql语句得出结果

从table1,table2中取出如table3所列格式数据,注意提供的数据及结果不准

确,只是作为一个格式向大家请教。

如使用存储过程也可以。

table1

月份mon 部门dep 业绩yj

-------------------------------

一月份 01 10 一月份 02 10 一月份 03 5 二月份 02 8 二月份 04 9 三月份03 8

table2

部门dep 部门名称dname --------------------------------

01 国内业务一部

02 国内业务二部

03 国内业务三部

04 国际业务部

table3 (result)

部门dep 一月份二月份三月份

--------------------------------------

01 10 null null

02 10 8 null

03 null 5 8

04 null null 9

------------------------------------------ 1)

select a.部门名称dname,b.业绩yj as '一月份',c.业绩yj as '二

月份',d.

业绩yj as '三月份'

from table1 a,table2 b,table2 c,table2 d where a.部门dep = b.部门

dep and b.月份mon = '一月份' and a.部门dep = c.部门dep and c.月份mon = '二月份' and

a.部门dep = d.部门dep and d.月份mon = '三月份' and

2)

select a.dep,

sum(case when b.mon=1 then b.yj else 0 end) as '一月份',

sum(case when b.mon=2 then b.yj else 0 end) as '二月份',

sum(case when b.mon=3 then b.yj else 0 end) as '三月份',

sum(case when b.mon=4 then b.yj else 0 end) as '四月份',

sum(case when b.mon=5 then b.yj else 0 end) as '五月份',

sum(case when b.mon=6 then b.yj else 0 end) as '六月份',

sum(case when b.mon=7 then b.yj else 0 end) as '七月份',

sum(case when b.mon=8 then b.yj else 0 end) as '八月份',

sum(case when b.mon=9 then b.yj else 0 end) as '九月份',

sum(case when b.mon=10 then b.yj else 0 end) as '十月份',

sum(case when b.mon=11 then b.yj else 0 end) as '十一月份',

sum(case when b.mon=12 then b.yj else 0 end) as '十二月份',

from table2 a left join table1 b on a.dep=b.dep

8.华为一道面试题

一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有

多少条

记录数。

------------------------------------------ select id, Count(*) from tb group by id having count(*)>1 select * from(select count(ID) as count from table group by ID)T

where T.count>1

9、说明:日程安排提前五分钟提醒

SQL: select * from 日程安排 where datediff('minute',f开始时

间,getdate())>5

10、说明:一条sql 语句搞定数据库分页

select top 10 b.* from (select top 20 主键字段,排序字段 from 表名

order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段

order by a.排序字段

11、说明:两张关联表,删除主表中已经在副表中没有的信息

delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

12、说明:四表联查问题:

select * from a left inner join b on a.a=b.b right inner join c on

a.a=c.c inner join d on a.a=d.d where .....

SQL Server日期计算

a. 一个月的第一天

SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

b. 本周的星期一

SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

c. 一年的第一天

SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

d. 季度的第一天

SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)

e. 上个月的最后一天

SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) f. 去年的最后一天

SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)) g. 本月的最后一天

SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)) h. 本月的第一个星期一

select DATEADD(wk, DATEDIFF(wk,0,

dateadd(dd,6-datepart(day,getdate()),getdate())

), 0)

i. 本年的最后一天

SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))。

获取表结构[把 'sysobjects' 替换成 'tablename' 即可]

SELECT CASE IsNull(https://www.360docs.net/doc/2019341107.html,, '')

When '' Then ''

Else '*'

End as IsPK,

Object_Name(A.id) as t_name,

https://www.360docs.net/doc/2019341107.html, as c_name,

IsNull(SubString(M.text, 1, 254), '') as pbc_init,

https://www.360docs.net/doc/2019341107.html, as F_DataType,

CASE IsNull(TYPEPROPERTY(https://www.360docs.net/doc/2019341107.html,, 'Scale'), '')

WHEN '' Then Cast(A.prec as varchar)

ELSE Cast(A.prec as varchar) + ',' + Cast(A.scale as varchar)

END as F_Scale,

A.isnullable as F_isNullAble

FROM Syscolumns as A

JOIN Systypes as T

ON (A.xType = T.xUserType AND A.Id = Object_id('sysobjects') ) LEFT JOIN ( SysIndexes as I

JOIN Syscolumns as A1

ON ( I.id = A1.id and A1.id = object_id('sysobjects') and (I.status & 0x800) = 0x800 AND A1.colid <= I.keycnt) )

ON ( A.id = I.id AND https://www.360docs.net/doc/2019341107.html, = index_col('sysobjects', I.indid,

A1.colid) )

LEFT JOIN SysComments as M

ON ( M.id = A.cdefault and ObjectProperty(A.cdefault,

'IsConstraint') = 1 )

ORDER BY A.Colid ASC

13。为管理业务培训信息,建立3个表:

S(S#,SN,SD,SA)S#,SN,SD,SA分别代表学号,学员姓名,所属单位,学

员年龄

C(C#,CN)C#,CN分别代表课程编号,课程名称

SC(S#,C#,G) S#,C#,G分别代表学号,所选的课程编号,学习成绩

(1)使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名?

答案:select s# ,sn from s where S# in(select S# from c,sc where c.c#=sc.c# and cn=’税收基础’)

(2) 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和

所属单

位?

答:select sn,sd from s,sc where s.s#=sc.s# and sc.c#=’c2’ (3) 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和

所属单

位?

答:select sn,sd from s where s# not in(select s# from sc where c#=

’c5’)

(4)查询选修了课程的学员人数

答:select 学员人数=count(distinct s#) from sc

(5) 查询选修课程超过5门的学员学号和所属单位?

答:select sn,sd from s where s# in(select s# from sc group by s#

having count(distinct c#)>5)

是查询A(ID,Name)表中第31至40条记录,ID作为主键可能是不是连

续增长的

列,完整的查询语句如下:

select top 10 * from A where ID >(select max(ID) from (select top

30 ID from A order by A

T) order by A )

要求是查询表A中存在ID重复三次以上的记录,完整的查询语句如下: select * from(select count(ID) as count from table group by ID)T where T.count>3

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数据库面试题和答案 常见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数据库经典面试题修改笔试题有答案

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面试题及答案

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,

数据库面试题(SQLSERVER)及答案

数据库面试题(SQL2005) 一、选择题(5分一题,共50分) 1、公司A使用SQL Server 2005数据库。来自贸易伙伴的客户数据每天晚上都要导入到客户表。你要确保,在导入的过程中,对于存在的客户数据进行更新、对于不存在的客户数据进行插入。你该怎么做?(B) A. 创建一个FOR触发器。 B. 创建一个INSTEAD OF 触发器。 C. 创建一个 AFTER 触发器。 D. 创建一个 DDL 触发器。 2、你负责维护你们部门SQL Server 2005数据库的调度作业。其中一个作业从多源为报表聚集数据。这个作业每日运行,由多步构成。每一步都为某一特定报表聚集数据。有用户反映一些报表的数据近期没有更新。你要确保即使发生错误,聚合数据作业的每一步也都要执行。那你该如何做?(C) A. 将作业中所有步骤组合成一个每日运行的步骤。 B. 创建一个通知;在每次出现错误时通知你。以便你能及时更正错误,重启作业。 C. 修改失败使要执行的步骤为“转到下一步”。 D. 设置作业重试当前步骤。 3、你要创建一个SQL Server 2005应用程序来存储和管理法律文件。原文件以XML文档存于一文件服务器上。此应用程序用于将文件插入到数据库。此后,这些文档必须能够从数据库中得到,并与原文件保持一致。你要设计一个表去存储这些文档数据,该怎样做?(A) A. 将XML文档存于以nvarchar(max)为数据类型的一列中。 B. 分割此XML文档并将其存储于在一个关系结构中。 C. 将XML文档存于以XML为数据类型的一列中。 D. 将XML文档存于以varchar(8000)为数据类型的一列中。 4、你正在写一个查询,从SQL Server 2005数据库表中返回数据。一些数据存储在关系列中,一些存储在XML数据类型列中。你的查询需要返回一个关系结果集,其中包含关系域中的数据以及XML数据类型列的属性值。你应该使用XML数据类型的哪两个方法?(每一个正确的答案代表方案的一部分。选两项。)(AD) A. the value() 方法。 B. the exist()方法。 C. the query()方法。 D. the nodes()方法。 E. the modify()方法。 5、你配置一个采用默认设置全新安装的SQL SERVER 2005计算机使用TCP/IP协议。公司的安全策略也要求每个服务器都使用防火墙。你发现在本地计算机上可以连接到这个SQL SERVER 实例,但是客户端计算机却不能连接到这个SQL SERVER 实例上。为了找到最有可能导致这个连接问题的原因,你首先应该做?(A) A. 检查防火墙是否打开了1433端口。 B. 检查防火墙是否打开了433端口。

SQL数据库对于海量数据面试题及答案

本文整理和大家分享一些SQL数据库对于海量数据面试题及答案给大家,很不错哦,喜欢请收藏一下。 1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。 s 遍历文件a,对每个url求取,然后根据所取得的值将url分别存储到1000个小文件(记为)中。这样每个小文件的大约为300M。 s 遍历文件b,采取和a相同的方式将url分别存储到1000各小文件(记为)。这样处理后,所有可能相同的url都在对应的小文件()中,不对应的小文件不可能有相同的url。然后我们只要求出1000对小文件中相同的url即可。 s 求每对小文件中相同的url时,可以把其中一个小文件的url存储到hash_set中。然后遍历另一个小文件的每个url,看其是否在刚才构建的hash_set中,如果是,那么就是共同的url,存到文件里面就可以了。 方案2:如果允许有一定的错误率,可以使用Bloom filter,4G内存大概可以表示340亿bit。将其中一个文件中的url使用Bloom filter映射为这340亿bit,然后挨个读取另外一个文件的url,检查是否与Bloom filter,如果是,那么该url应该是共同的url(注意会有一定的错误率)。 2. 有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query 都可能重复。要求你按照query的频度排序。 方案1: s 顺序读取10个文件,按照hash(query)%10的结果将query写入到另外10个文件(记为)中。这样新生成的文件每个的大小大约也1G(假设hash函数是随机的)。 s 找一台内存在2G左右的机器,依次对用hash_map(query, query_count)来统计每个query 出现的次数。利用快速/堆/归并排序按照出现次数进行排序。将排序好的query和对应的query_cout输出到文件中。这样得到了10个排好序的文件(记为)。 s 对这10个文件进行归并排序(内排序与外排序相结合)。 方案2: 一般query的总量是有限的,只是重复的次数比较多而已,可能对于所有的query,一次性就可以加入到内存了。这样,我们就可以采用trie树/hash_map等直接来统计每个query出现的次数,然后按出现次数做快速/堆/归并排序就可以了。

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

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

28、ﻫ数据库:抽出部门,平均工资,要求按部门得字符串顺序排序,不能含有"human resource"部门,employee结构如下: employee_id,employee_name,depart_id,depart_name,wage 答:ﻫselect depart_name, avg(wage) fromemployee where depart_name〈〉'humanresource'ﻫgroup by depart_nameorder by depart_name ---—--——----—-——----—--——-—---———----—————-—- 29、 —-—--—---—-—--————-——--——--——ﻫ 给定如下SQL数据库:Test(num INT(4))请用一条SQL语句返回num得最小值,但不许使用统计功能,如MIN,MAX等 答: select top1 num from Test orderbynum ----—-----——-—----———----—---—----—-—-—-———-—- 33、一个数据库中有两个表:——----—-—----—--—--——--—----ﻫ 一张表为Customer,含字段ID,Name; 一张表为Order,含字段ID,CustomerID(连向Customer中ID得外键),Re venue;ﻫ写出求每个Customer得Revenue总与得SQL语句。 建表create table customerﻫ(ID int primary key,Namechar (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]、custome rid=customer、id) groupby customer、id selectcustomer、id,sum(order、revener) fromorder,customer where customer、id=customerid group by customer、id select customer、id,sum(order、revener)from customer fulljoin order on(order、customerid=customer、id)group bycustomer、id 5数据库(10) a tabel called “performance”contain :name andscore,please用SQL语言表述

sql server常见面试题

sql server常见面试题 以下是一些常见的SQL Server 面试题及其答案: 1. 什么是SQL Server? SQL Server 是由Microsoft 开发的关系型数据库管理系统(RDBMS)。它是一个功能强大、可靠性高的数据库平台,广泛用于企业级应用和数据管理。 2. 什么是数据库? 数据库是一个组织结构化的数据集合,可以通过数据库管理系统(DBMS)进行访问、管理和操作。它提供了一种存储、检索和处理数据的方式。 3. 什么是表? 表是数据库中的基本组成单元,用于存储数据。它由列(字段)和行组成,每个列定义了数据类型和约束规则,每一行表示一个记录。 4. 什么是主键? 主键是表中唯一标识每个记录的列或列组合。它用于确保数据的唯一性和完整性,并且在建立关系时起到重要作用。 5. 什么是外键? 外键是表中与其他表的关联字段,它建立了表之间的关系。外键约束用于确保引用表中的数据完整性,并支持表之间的数据关联。 6. 什么是索引? 索引是一种数据结构,用于快速定位和访问数据库中的数据。它可以加快查询的速度,但会增加写操作的开销。常见的索引类型包括聚集索引、非聚集索引和全文索引。 7. 什么是事务? 事务是数据库操作的基本单位,它是由一个或多个数据库操作组成的逻辑工作单元。事务要么

完全执行,要么完全回滚,以确保数据的一致性和完整性。 8. 什么是视图? 视图是从一个或多个表中派生的虚拟表。它是一个预定义的查询,可以像操作表一样使用。视图提供了数据的安全性、简化了复杂的查询和隐藏了底层数据结构的能力。 9. 什么是存储过程? 存储过程是一组预编译的SQL 语句,以及可选的流程控制语句,用于执行特定任务。它们被保存在数据库中,并可以通过名称调用和执行,提供了代码重用和性能优化的好处。 10. 什么是触发器? 触发器是与表相关联的特殊类型的存储过程。它们在插入、更新或删除表中的数据时自动触发,并允许执行其他的业务逻辑或数据操作。 这些问题涵盖了SQL Server 中的一些基本概念和功能。当然,在面试中可能还会涉及更深入的问题,具体取决于面试官的要求和职位的要求。希望这些回答能帮到你!

SQL面试题目及答案java面试题

SQL面试题目及答案java面试题 学生成绩表(stuscore): 姓名:name 课程:subject 分数:score 学号:stuid 张三数学 89 1 张三语文 80 1 张三英语 70 1 李四数学 90 2 李四语文 70 2 李四英语 80 2 1.计算每个人的总成绩并排名(要求显示字段:姓名,总成绩) 答案:select name,sum(score) as allscore from stuscore group by name order by allscore 2.计算每个人的总成绩并排名(要求显示字段: 学号,姓名,总成绩) 答案:select distinct https://www.360docs.net/doc/2019341107.html,,t1.stuid,t2.allscore from stuscore t1,( select stuid,sum(score) as allscore from stuscore group by stuid)t2where t1.stuid=t2.stuidorder by t2.allscore desc 3.计算每个人单科的最高成绩(要求显示字段: 学号,姓名,课程,最高成绩) 答案:select t1.stuid,https://www.360docs.net/doc/2019341107.html,,t1.subject,t1.score from stuscore t1,(select stuid,max(score) as maxscore from stuscore group by stuid) t2where t1.stuid=t2.stuid and t1.score=t2.maxscore 4.计算每个人的平均成绩(要求显示字段: 学号,姓名,平均成绩) 答案:select distinct t1.stuid,https://www.360docs.net/doc/2019341107.html,,t2.avgscore from stuscore t1,(select stuid,avg(score) as avgscore from stuscore group by stuid) t2where t1.stuid=t2.stuid 5.列出各门课程成绩最好的学生(要求显示字段: 学号,姓名,科目,成绩)

【2018-2019】SQL查询面试题与答案-范文模板 (14页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除! == 本文为word格式,下载后可方便编辑和修改! == SQL查询面试题与答案 SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。下面是小编搜集的SQL查询面试题与答案,欢迎大家阅读。 SQL查询面试题与答案一 1.一道SQL语句面试题,关于group by表内容: 201X-05-09 胜 201X-05-09 胜 201X-05-09 负 201X-05-09 负 201X-05-10 胜 201X-05-10 负 201X-05-10 负 如果要生成下列结果, 该如何写sql语句? 胜负 201X-05-09 2 2 201X-05-10 1 2 ------------------------------------------ create table #tmp(rq varchar(10),shengfu nchar(1)) insert into #tmp values('201X-05-09','胜')

insert into #tmp values('201X-05-09','胜') insert into #tmp values('201X-05-09','负') insert into #tmp values('201X-05-09','负') insert into #tmp values('201X-05-10','胜') insert into #tmp values('201X-05-10','负') insert into #tmp values('201X-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语句的查询问题 表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。 ------------------------------------------ select (case when a>b then a else b end ), (case when b>c then b esle c end) from table_name

2021年sql常见面试题

sql理论题 1.触发器作用? 答:触发器是一中特殊存储过程,重要是通过事件来触发而被执行。它可以强化约束,来维护数据完整性和一致性,可以跟踪数据库内操作从而不容许未经允许更新和变化。可以联级运算。如,某表上触发器上包括对另一种表数据操作,而该操作又会导致该表触发器被触发。 2。什么是存储过程?用什么来调用? 答:存储过程是一种预编译SQL语句,长处是容许模块化设计,就是说只需创立一次,后来在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一种命令对象来调用存储过程。 3。索引作用?和它长处缺陷是什么? 答:索引就一种特殊查询表,数据库搜索引擎可以运用它加速对数据检索。它很类似与现实生活中书目录,不需要查询整本书内容就可以找到

想要数据。索引可以是唯一,创立索引容许指定单个列或者是各种列。缺陷是它减慢了数据录入速度,同步也增长了数据库尺寸大小。 3。什么是内存泄漏? 答:普通咱们所说内存泄漏指是堆内存泄漏。堆内存是程序从堆中为其分派,大小任意,使用完后要显示释放内存。当应用程序用核心字new 等创立对象时,就从堆中为它分派一块内存,使用完后程序调用free或者delete释放该内存,否则就说该内存就不能被使用,咱们就说该内存被泄漏了。 4。维护数据库完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么? 答:我是这样做,尽量使用约束,如check,主键,外键,非空字段等来约束,这样做效率最高,也最以便。另一方面是使用触发器,这种办法可以保证,无论什么业务系统访问数据库都可以保证数据完整新和一致性。最后考虑是自写业务逻辑,但这样做麻烦,编程复杂,效率低下。 5。什么是事务?什么是锁?

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 a.S# 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 ,Teacher 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、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2 from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2

TDSQL计算引擎研发工程师岗位面试题及答案(经典版)

TDSQL计算引擎研发工程师岗位面试题及答案 1.介绍一下TDSQL计算引擎的基本工作原理。 回答:TDSQL是基于分布式计算框架的实时数据分析引擎,通过将SQL查询转化为分布式计算任务来实现快速数据分析。在查询处理过程中,数据会被分片并在多个节点上并行处理,最终结果会被聚合返回。 2.请解释一下分布式计算中的数据分片和数据聚合。 回答:数据分片是将数据划分成小块,使得每个节点可以并行处理部分数据。数据聚合是将多个节点处理的结果合并为最终的输出。 3.在TDSQL中,如何处理复杂的SQL查询,例如涉及多表连接和子查询的情况? 回答:复杂的SQL查询需要经过优化器解析,优化和重写阶段。TDSQL会根据数据分布情况决定是否将多表连接和子查询下推到各个节点进行处理,然后再将结果聚合。 4.请描述一下TDSQL的查询优化过程。 回答:查询优化过程包括查询解析、查询重写、查询优化以及物理计划生成等阶段。解析器解析查询语句,重写器根据规则进行优化,优化器选择最优执行计划,执行引擎根据物理计划执行任务。 5.在TDSQL中,如何处理数据倾斜的情况?请举例说明。

回答:数据倾斜可能导致某些节点负载过重。可以采用数据重分布、数据倾斜检测和动态负载均衡等方法来处理。例如,可以将数据倾斜的表进行重新分片,或者在查询时通过动态调整任务分配来平衡负载。 6.请讨论一下TDSQL中的事务处理和并发控制。 回答:TDSQL支持分布式事务处理,通过协调者节点来保证事务的原子性、一致性、隔离性和持久性。并发控制可以使用多版本并发控制(MVCC)来管理不同事务的访问。 7.如何确保TDSQL的查询结果的准确性和一致性? 回答:TDSQL通过在分布式计算中引入数据同步和版本控制机制来确保查询结果的准确性和一致性。每个节点在执行查询时,都会根据数据版本来保证结果的正确性。 8.请解释一下索引在TDSQL中的作用以及如何选择合适的索引。回答:索引在TDSQL中用于加速查询,减少数据扫描的成本。选择合适的索引需要考虑查询频率、数据分布以及索引维护的开销等因素。 9.在TDSQL的开发过程中,如何进行性能优化? 回答:性能优化可以从查询的角度、数据模型的角度以及系统配置的角度入手。通过调整查询,合理设计数据模型,并针对硬件和网络等进行系统配置优化,可以提升性能。 10.请讨论一下TDSQL的容错机制和故障恢复策略。

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