sql数据库面试题及答案

sql数据库面试题及答案
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,

(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 ab then a else b end ),

(case when bc then b esle c end)

from table_name

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

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

录?(sendtime字段为datetime型,包含日期与时间)

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

select * from tb where datediff(dd,sendtime,getdate())=0

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

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

一月份0110

一月份0210

一月份035

二月份028

二月份049

三月份038

table2

部门dep部门名称dname

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

01国内业务一部

02国内业务二部

03国内业务三部

04国际业务部

table3 (result)

【篇二: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的一个(仅有一个)

仅选出分数,select max(score) from performance

仅选出名字,即选出名字,又选出分数:select top 1

score ,name from per order by score

select name1,score from per where score in/=(select

max(score) from per)

.....

4 有关系 s(sno,sname) c(cno,cname) sc(sno,cno,grade)

1 问上课程 db的学生no

select count(*) from c,sc where https://www.360docs.net/doc/5412428801.html,ame=db and https://www.360docs.net/doc/5412428801.html,o=https://www.360docs.net/doc/5412428801.html,o select count(*) from sc where cno=(select cno from c where

https://www.360docs.net/doc/5412428801.html,ame=db)

2 成绩最高的学生号

select sno from sc where grade=(select max(grade) from sc ) 3 每科大于90分的人数

select https://www.360docs.net/doc/5412428801.html,ame,count(*) from c,sc where https://www.360docs.net/doc/5412428801.html,o=https://www.360docs.net/doc/5412428801.html,o and

sc.grade90 group by https://www.360docs.net/doc/5412428801.html,ame

select https://www.360docs.net/doc/5412428801.html,ame,count(*) from c join sc on https://www.360docs.net/doc/5412428801.html,o=https://www.360docs.net/doc/5412428801.html,o and sc.grade90

group by https://www.360docs.net/doc/5412428801.html,ame

数据库笔试题

*

建表:

dept:

deptno(primary key),dname,loc

emp:

empno(primary key),ename,job,mgr,sal,deptno

*/

1 列出emp表中各部门的部门号,最高工资,最低工资

select max(sal) as 最高工资,min(sal) as 最低工资,deptno from emp group by deptno;

2 列出emp表中各部门job为clerk的员工的最低工资,最高工资 select max(sal) as 最高工资,min(sal) as 最低工资,deptno as 部门号 from emp where job = clerk group by deptno;

3 对于emp中最低工资小于1000的部门,列出job为clerk的员工的部门号,最低工资,最高工资

select deptno,max(),min(sal) from emp as b where job=”clerk” and 1000(select min(sal)from emp as a where a.deptno

=b.deptno)group by b.deptno

select max(sal) as 最高工资,min(sal) as 最低工资,deptno as 部门号 from emp as b

where job=clerk and 1000(select min(sal) from emp as a where

a.deptno=

b.deptno) group by b.deptno

4 根据部门号由高而低,工资有低而高列出每个员工的姓名,部门号,工资

select deptno as 部门号,ename as 姓名,sal as 工资 from emp order by deptno desc,sal asc

5 写出对上题的另一解决方法

(请补充)

6 列出张三所在部门中每个员工的姓名与部门号

select ename,deptno from emp where deptno = (select deptno from emp where ename = 张三)

7 列出每个员工的姓名,工作,部门号,部门名

select ename,job,emp.deptno,dept.dname from emp,dept

where emp.deptno=dept.deptno

8 列出emp中工作为clerk的员工的姓名,工作,部门号,部门名

select ename,job,dept.deptno,dname from emp,dept where

dept.deptno=emp.deptno and job=clerk

9 对于emp中有管理者的员工,列出姓名,管理者姓名(管理者外

键为mgr) select a.ename as 姓名,b.ename as 管理者 from emp as a,emp as b where a.mgr is not null and a.mgr=b.empno

10 对于dept表中,列出所有部门名,部门号,同时列出各部门工

作为clerk的员工名与工作

select dname as 部门名,dept.deptno as 部门号,ename as 员工名,job as 工作 from dept,emp

where dept.deptno *= emp.deptno and job = clerk

11 对于工资高于本部门平均水平的员工,列出部门号,姓名,工资,按部门号排序

select a.deptno as 部门号,a.ename as 姓名,a.sal as 工资 from emp as a where a.sal(select avg(sal) from emp as b where

a.deptno=

b.deptno) order by a.deptno

12 对于emp,列出各个部门中平均工资高于本部门平均水平的员工数和部门号,按部门号排序

select count(a.sal) as 员工数,a.deptno as 部门号 from emp as a where a.sal(select avg(sal) from emp as b where

a.deptno=

b.deptno) group by a.deptno order by a.deptno

13 对于emp中工资高于本部门平均水平,人数多与1人的,列出

部门号,人数,按部门号排序

select count(a.empno) as 员工数,a.deptno as 部门号,avg(sal)

as 平均工资 from emp as a

where (select count(c.empno) from emp as c where

c.deptno=a.deptno and c.sal(select avg(sal) from emp as b where c.deptno=b.deptno))1 group by a.deptno order by

a.deptno

14 对于emp中低于自己工资至少5人的员工,列出其部门号,姓名,工资,以及工资少于自己的人数

select a.deptno,a.ename,a.sal,(select count(b.ename) from

emp as b where b.sala.sal) as 人数 from emp as a

where (select count(b.ename) from emp as b where

b.sala.sal)5 数据库笔试题及答案

第一套

一.选择题

1. 下面叙述正确的是ccbad ______。

a、算法的执行效率与数据的存储结构无关

b、算法的空间复杂度是指算法程序中指令(或语句)的条数

c、算法的有穷性是指算法必须能在执行有限个步骤之后终止

d、以上三种描述都不对

2. 以下数据结构中不属于线性数据结构的是______。a、队列b、线性表c、二叉树d、栈

3. 在一棵二叉树上第5层的结点数最多是______。a、8 b、16 c、32 d、15

4. 下面描述中,符合结构化程序设计风格的是______。

a、使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑

b、模块只有一个入口,可以有多个出口

c、注重提高程序的执行效率

d、不使用goto语句

5. 下面概念中,不属于面向对象方法的是______。

a、对象

b、继承

c、类

d、过程调用

6. 在结构化方法中,用数据流程图(dfd)作为描述工具的软件开发阶段是___ bdbca ___。

a、可行性分析

b、需求分析

c、详细设计

d、程序编码

7. 在软件开发中,下面任务不属于设计阶段的是______。

a、数据结构设计

b、给出系统模块结构

c、定义模块算法

d、定义需求并建立系统模型

8. 数据库系统的核心是______。

a、数据模型

b、数据库管理系统

c、软件工具

d、数据库

9. 下列叙述中正确的是______。

a、数据库是一个独立的系统,不需要操作系统的支持

b、数据库设计是指设计数据库管理系统

c、数据库技术的根本目标是要解决数据共享的问题

d、数据库系统中,数据的物理结构必须与逻辑结构一致

10. 下列模式中,能够给出数据库物理存储结构与物理存取方法的是______。

a、内模式

b、外模式

c、概念模式

d、逻辑模式

11. visual foxpro数据库文件是__ dcbaa ____。

a、存放用户数据的文件

b、管理数据库对象的系统文件

c、存放用户数据和系统的文件

d、前三种说法都对

12. sql语句中修改表结构的命令是______。

a、modify table

b、modify structure

c、alter table

d、alter structure

13. 如果要创建一个数据组分组报表,第一个分组表达式是部门,第二个分组表达式是性别,第三个分组表达式是基本工资,当前索引的索引表达式应当是______。

a、部门+性别+基本工资

b、部门+性别+str(基本工资)

c、str(基本工资)+性别+部门

d、性别+部门+str(基本工资)

14. 把一个项目编译成一个应用程序时,下面的叙述正确的是

______。

a、所有的项目文件将组合为一个单一的应用程序文件

b、所有项目的包含文件将组合为一个单一的应用程序文件

c、所有项目排除的文件将组合为一个单一的应用程序文件

d、由用户选定的项目文件将组合为一个单一的应用程序文件

15. 数据库db、数据库系统dbs、数据库管理系统dbms三者之间的关系是______。

a、dbs包括db和dbms

b、dbms包括db和dbs

c、db包括dbs和dbms

d、dbs就是db,也就是dbms

16. 在选项对话框的文件位置选项卡中可以设置_ baaba _____。

a、表单的默认大小

b、默认目录

c、日期和时间的显示格式

d、程序代码的颜色

【篇三: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的一个(仅有一个)

仅选出分数,select max(score) from performance

仅选出名字,即选出名字,又选出分数: select top 1

score ,name from per order by score

select name1,score from per where score in/=(select

max(score) from per)

.....

4 有关系 s(sno,sname) c(cno,cname) sc(sno,cno,grade)

1 问上课程 db的学生no

select count(*) from c,sc where https://www.360docs.net/doc/5412428801.html,ame=db and https://www.360docs.net/doc/5412428801.html,o=https://www.360docs.net/doc/5412428801.html,o select count(*) from sc where cno=(select cno from c where

https://www.360docs.net/doc/5412428801.html,ame=db)

2 成绩最高的学生号

select sno from sc where grade=(select max(grade) from sc ) 3 每科大于90分的人数

select https://www.360docs.net/doc/5412428801.html,ame,count(*) from c,sc where https://www.360docs.net/doc/5412428801.html,o=https://www.360docs.net/doc/5412428801.html,o and

sc.grade90 group by https://www.360docs.net/doc/5412428801.html,ame

select https://www.360docs.net/doc/5412428801.html,ame,count(*) from c join sc on https://www.360docs.net/doc/5412428801.html,o=https://www.360docs.net/doc/5412428801.html,o and sc.grade90 group by https://www.360docs.net/doc/5412428801.html,ame

数据库笔试题

*

建表:

dept:

deptno(primary key),dname,loc

emp:

empno(primary key),ename,job,mgr,sal,deptno

*/

1 列出emp表中各部门的部门号,最高工资,最低工资

select max(sal) as 最高工资,min(sal) as 最低工资,deptno from emp group by deptno;

2 列出emp表中各部门job为clerk的员工的最低工资,最高工资 select max(sal) as 最高工资,min(sal) as 最低工资,deptno as 部门号 from emp where job = clerk group by deptno;

3 对于emp中最低工资小于1000的部门,列出job为clerk的员工的部门号,最低工资,最高工资

select max(sal) as 最高工资,min(sal) as 最低工资,deptno as 部门号 from emp as b

where job=clerk and 1000(select min(sal) from emp as a where

a.deptno=

b.deptno) group by b.deptno

4 根据部门号由高而低,工资有低而高列出每个员工的姓名,部门号,工资

select deptno as 部门号,ename as 姓名,sal as 工资 from emp order by deptno desc,sal asc

5 写出对上题的另一解决方法

(请补充)

6 列出张三所在部门中每个员工的姓名与部门号

select ename,deptno from emp where deptno = (select deptno from emp where ename = 张三)

7 列出每个员工的姓名,工作,部门号,部门名

select ename,job,emp.deptno,dept.dname from emp,dept

where emp.deptno=dept.deptno

8 列出emp中工作为clerk的员工的姓名,工作,部门号,部门名

dept.deptno=emp.deptno and job=clerk

9 对于emp中有管理者的员工,列出姓名,管理者姓名(管理者外

键为mgr) select a.ename as 姓名,b.ename as 管理者 from emp as a,emp as b where a.mgr is not null and a.mgr=b.empno

10 对于dept表中,列出所有部门名,部门号,同时列出各部门工

作为clerk的员工名与工作

select dname as 部门名,dept.deptno as 部门号,ename as 员工名,job as 工作 from dept,emp

where dept.deptno *= emp.deptno and job = clerk

11 对于工资高于本部门平均水平的员工,列出部门号,姓名,工资,按部门号排序

select a.deptno as 部门号,a.ename as 姓名,a.sal as 工资 from emp as a where a.sal(select avg(sal) from emp as b where

a.deptno=

b.deptno) order by a.deptno

12 对于emp,列出各个部门中平均工资高于本部门平均水平的员工

数和部门号,按部门号排序

select count(a.sal) as 员工数,a.deptno as 部门号 from emp as a where a.sal(select avg(sal) from emp as b where

a.deptno=

b.deptno) group by a.deptno order by a.deptno

13 对于emp中工资高于本部门平均水平,人数多与1人的,列出

部门号,人数,按部门号排序

select count(a.empno) as 员工数,a.deptno as 部门号,avg(sal)

as 平均工资 from emp as a

where (select count(c.empno) from emp as c where

c.deptno=a.deptno and c.sal(select avg(sal) from emp as b where c.deptno=b.deptno))1 group by a.deptno order by

a.deptno

14 对于emp中低于自己工资至少5人的员工,列出其部门号,姓名,工资,以及工资少于自己的人数

select a.deptno,a.ename,a.sal,(select count(b.ename) from

emp as b where b.sala.sal) as 人数 from emp as a

where (select count(b.ename) from emp as b where

b.sala.sal)5 数据库笔试题及答案

第一套

一.选择题

1. 下面叙述正确的是ccbad ______。

a、算法的执行效率与数据的存储结构无关

b、算法的空间复杂度是指算法程序中指令(或语句)的条数

c、算法的有穷性是指算法必须能在执行有限个步骤之后终止

d、以上三种描述都不对

2. 以下数据结构中不属于线性数据结构的是______。a、队列b、线性表c、二叉树d、栈

3. 在一棵二叉树上第5层的结点数最多是______。a、8 b、16 c、32 d、15

4. 下面描述中,符合结构化程序设计风格的是______。

a、使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑

b、模块只有一个入口,可以有多个出口

c、注重提高程序的执行效率

d、不使用goto语句

5. 下面概念中,不属于面向对象方法的是______。

a、对象

b、继承

c、类

d、过程调用

6. 在结构化方法中,用数据流程图(dfd)作为描述工具的软件开发阶段是___ bdbca ___。

a、可行性分析

b、需求分析

c、详细设计

d、程序编码

7. 在软件开发中,下面任务不属于设计阶段的是______。

a、数据结构设计

b、给出系统模块结构

c、定义模块算法

d、定义需求并建立系统模型

8. 数据库系统的核心是______。

a、数据模型

b、数据库管理系统

c、软件工具

d、数据库

9. 下列叙述中正确的是______。

a、数据库是一个独立的系统,不需要操作系统的支持

b、数据库设计是指设计数据库管理系统

c、数据库技术的根本目标是要解决数据共享的问题

d、数据库系统中,数据的物理结构必须与逻辑结构一致10. 下列模式中,能够给出数据库物理存储结构与物理存取方法的是______。 a、内模式 b、外模式 c、概念模式 d、逻辑模式 11. visual foxpro数据库文件是__ dcbaa ____。 a、存放用户数据的文件 b、管理数据库对象的系统文件

c、存放用户数据和系统的文件

d、前三种说法都对

12. sql语句中修改表结构的命令是______。

a、modify table

b、modify structure

c、alter table

d、alter structure

13. 如果要创建一个数据组分组报表,第一个分组表达式是部门,第二个分组表达式是性别,第三个分组表达式是基本工资,当前索引的索引表达式应当是______。

a、部门+性别+基本工资

b、部门+性别+str(基本工资)

c、str(基本工资)+性别+部门

d、性别+部门+str(基本工资)

14. 把一个项目编译成一个应用程序时,下面的叙述正确的是

______。

a、所有的项目文件将组合为一个单一的应用程序文件

b、所有项目的包含文件将组合为一个单一的应用程序文件

c、所有项目排除的文件将组合为一个单一的应用程序文件

d、由用户选定的项目文件将组合为一个单一的应用程序文件

15. 数据库db、数据库系统dbs、数据库管理系统dbms三者之间的关系是______。

a、dbs包括db和dbms

b、dbms包括db和dbs

c、db包括dbs和dbms

d、dbs就是db,也就是dbms

16. 在选项对话框的文件位置选项卡中可以设置_ baaba _____。

a、表单的默认大小

b、默认目录

c、日期和时间的显示格式

d、程序代码的颜色

17. 要控制两个表中数据的完整性和一致性可以设置参照完整性,要求这两个表______。

a、是同一个数据库中的两个表

b、不同数据库中的两个表

c、两个自由表

d、一个是数据库表另一个是自由表

18. 定位第一条记录上的命令是______。

a、go top

b、go bottom

c、go 6

d、skip

19. 在关系模型中,实现关系中不允许出现相同的元组的约束是通过______。

a、候选键

b、主键

c、外键

d、超键

20. 设当前数据库有10条记录(记录未进行任何索引),在下列三种情况下,当前记录号为1时;eof()为真时;bof()为真时,命令?recn()的结果分别是______。

a、1,11,1

b、1,10,1

c、1,11,0

d、1,10,0

21. 下列表达式中结果不是日期型的是__ ccbba ____。

a、ctod(2000/10/01)

b、{^99/10/01}+365

c、val(2000/10/01)

d、date()

sql数据库基础面试题复习试题考试题_全

不定项选择题(针对以下题目,请选择最符合题目要求的答案,每道题有一项或二项正确答案。针对每一道题目,所有答案都选对,则该题得分,所选答案错误或不能选出所有答案,则该题不得分。题量为50道,每题2分,总分为100分。) 第一章 1、是SQLServer数据库的主数据文件的扩展名。(选择一项) A、.sql B、.mdb C、.ldf D、.mdf 2、在SQL Server 2005中,有系统数据库和用户数据库,下列不属于系统数据库的是()。 (选择一项) A、master B、pubs C、model D、msdb 3、当安装完SQL Server2005数据库时,系统默认当前的超级管理员是( ) (选择一项) A、sa B、master C、administrator D、super 4、在使用SQL Server2005数据库时,有时需要将本机的数据库移动到其他机器上,恢复成对应的数据库使用。移动数据库分两步进行,应包括()和附加数据库(选择一项)A、分离数据库 B、删除数据库 C、新建数据库 D、合并数据库 5、在SQL Server2005中,附加数据库操作是指()(选择一项) A、把SQL Server 数据库文件保存为其他数据文件 B、根据数据库物理文件中的信息,把数据库在SQL Server 2005中恢复 C、把所有该数据库表的数据清空 D、把数据库删除掉 6、某单位由不同的部门组成,不同的部门每天都会生产一些报告、报表等数据,以为都采用纸张的形式来进行数据的保存和分类,随着业务的发展,这些数据越来越多,管理这些报告越来越费力,此时应考虑()(选择一项) A、由多个人来完成这些工作 B、在不同的部门中,由专门的人员去管理这些数据 C、采用数据库系统来管理这些数据 D、把这些数据统一成一样的格式 7、在SQL Server 2005中,对于数据库的定义正确的是()(选择一项) A、数据库是用来描述事物的符号记录 B、数据库是位于用户与操作系统之间的一层数据管理软件

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='胜'

Sql常见面试题 受用了

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 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. 一个叫team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球对,现在四个球对进行比赛,用一条sql 语句显示所有可能的比赛组合. 你先按你自己的想法做一下,看结果有我的这个简单吗? 答:select https://www.360docs.net/doc/5412428801.html,, https://www.360docs.net/doc/5412428801.html, from team a, team b where https://www.360docs.net/doc/5412428801.html, < https://www.360docs.net/doc/5412428801.html, 4. 请用SQL 语句实现:从TestDB 数据表中查询出所有月份的发生额都比101 科目相应月份的发生额高的科目。请注意:TestDB 中有很多科目,都有1 -12 月份的发生额。AccID :科目代码,Occmonth :发生额月份,DebitOccur :发生额。 数据库名:JcyAudit ,数据集:Select * from TestDB 答:select a.* from TestDB a ,(select Occmonth,max(DebitOccur) Debit101ccur from TestDB where AccID='101' group by Occmonth) b where a.Occmonth=b.Occmonth and a.DebitOccur>b.Debit101ccur ******************************************************************************* ***** 5. 面试题:怎么把这样一个表儿 year month amount 1991 1 1.1

Oracle_PL_SQL经典练习题

Oracle 作业题 一.创建一个简单的PL/SQL程序块 使用不同的程序块组件工作 使用编程结构编写PL/SQL程序块 处理PL/SQL程序块中的错误 1.编写一个程序块,从emp表中显示名为“SMITH”的雇员的薪水和职位。 declare v_emp emp%rowtype; begin select * into v_emp from emp where ename='SMITH'; dbms_output.put_line('员工的工作是:'||v_emp.job||' ;他的薪水是: '||v_emp.sal); end; 2.编写一个程序块,接受用户输入一个部门号,从dept表中显示该部门的名称与所在位置。方法一:(传统方法) declare v_loc deptcp.dname%type; v_dname deptcp.dname%type; v_deptno deptcp.deptno%type; begin v_deptno :=&部门编号; select loc,dname into v_loc,v_dname from deptcp where deptno=v_deptno; dbms_output.put_line('员工所在地是:'||v_loc||';部门名称是:'||v_dname); exception when no_data_found then dbms_output.put_line('您输入的部门编号不存在,请从新输入,谢谢'); end; 方法二:(使用%rowtype) declare v_dept dept%rowtype; begin select * into v_dept from dept where deptno=&部门号; dbms_output.put_line(v_dept.dname||'--'||v_dept.loc); end; 3.编写一个程序块,利用%type属性,接受一个雇员号,从emp表中显示该雇员的整体薪水(即,薪水加佣金)。(*期末考试试题*) declare v_sal emp.sal%type; begin select sal+comm into v_sal from emp where empno=&雇员号;

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 wh ere 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 Teahcer.Tname ='叶平'); 6、查询学过“叶平”老师所教的所有课的同学的学号、姓名: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='叶平')); 7、查询学过“011”并且也学过编号“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'); 8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名: Select S#,Sname

SQL经典面试题及答案

1. 用一条SQL 语句查询出每门课都大于80 分的学生姓名 name kechengfenshu 张三语文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笔试题

精心整理 SQL笔试题 1.统计查询SQL练习 数据库中表结构如下,字段分别任rg(日期),shengfu(胜负),考察groupby语句的使用:2005-05-09胜 2005-05-09胜 2005-05-09负 2005-05-09负 2005-05-10胜 2005-05-10负 2005-05-10负 如果要生成下列结果,该如何写sql语句? 胜负 2005-05-0922 2005-05-1012 答案: 1)selectrq,sum(casewhenshengfu='胜'then1else0end)'胜',sum(casewhenshengfu='负' then1else0end)'负'from#tmpgroupbyrq 2)selectN.rq,N.胜,M.负from( selectrq,胜=count(*)from#tmpwhereshengfu='胜'groupbyrq)Ninnerjoin (selectrq,负=count(*)from#tmpwhereshengfu='负'groupbyrq)MonN.rq=M.rq 3)selecta.col001,a.a1胜,b.b1负from (selectcol001,count(col001)a1fromtemp1wherecol002='胜'groupbycol001)a,

(selectcol001,count(col001)b1fromtemp1wherecol002='负'groupbycol001)b wherea.col001=b.col001 2.条件判断SQL练习 表中有ABC三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列 答案: select(casewhena>bthenaelsebend), (casewhenb>cthenbeslecend) fromtable_name 3.日期统计SQL练习 请取出tb_send表中日期(SendTime字段)为当天的所有记录?(SendTime字段为datetime型,包含日期与时间) 答案: select*fromtbwheredatediff(dd,SendTime,getdate())=0 4.统计查询SQL练习 有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70 分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路): 大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。 显示格式: 语文数学英语

数据库面试题(4)

数据库面试题 四数据库写SQL题(30) 1.按要求写SQL语句:根据集团成员培训业务,建立以下三张表: S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄 C (C#,CN ) C#,CN 分别代表课程编号、课程名称 SC ( S#,C#,G ) S#,C#,G分别代表学号、所选修的课程编号、学习成绩 要求如下: 1)使用标准SQL语句查询成员名单中所属单位叫“技术一部”的人员总数及 平均年龄; 2)使用标准的SQL语句更新学号为‘S#1’的姓名为“Mike”; 3)使用嵌套语句查询选修课程编号为‘C2’的学员姓名和所属单位; 4)使用嵌套语句查询不选修课程编号为‘C5’的学员姓名和所属单位; 5)查询选修课程超过5门的学员学号和所属单位; 解答: 1) select count(SN),avg(SA) from S where SD='技术一部'; 2) update S set SN='Mike' where S#='S#1'; 3) select SN,SD from S where S#=(select S# from SC where C#='C2'); 4) select SN,SD from S where S# not in(select S# from SC where C#='C5'); 5) select S#,SD from S where S#= (select S# from SC group by S# having count(S#)>=5); 2.请根据以下四张表(其中course_t表的teacher_id字段是teacher_t表的id字段的外键引用), 拼写出相应的sql语句(oracle语法)。(15分) 学生表:students_t id name sex 001赵学生Male 002钱学生Male 003孙学生Male 004李学生Female 005周学生Female ……… 教师表:teacher_t id name sex 001吴老师Male 002郑老师Male 003王老师Male

sql经典笔试题目(整理)

一单词解释(2分/个) 34 Data 数据 Database 数据库 RDBMS 关系数据库管理系统 GRANT 授权 REVOKE取消权限 DENY 拒绝权限 DECLARE 定义变量 PROCEDURE存储过程 Transaction事务 TRIGGER触发器继续 continue 唯一 unqiue 主键 primary key 标识列 identity 外键 foreign kdy 检查 check 约束 constraint 二编写SQL语句(5分/题)50 1) 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话Create table stu (学号 int , 姓名 varchar(8), 年龄 int, 性别 varchar(4), 家庭地址 varchar(50), 联系电话 int ); 2) 修改学生表的结构,添加一列信息, 学历 Alter table stu add 学历 varchar(6); 3) 修改学生表的结构,删除一列信息,家庭住址 Alter table stu drop column 家庭地址 4) 向学生表添加如下信息: 学号姓名年龄性别联系电话学历 1 A 22 男 123456 小学 2 B 21 男 119 中学 3 C 23 男 110 高中 4 D 18 女 114 大学 Insert into stu values('1', 'A', '22', '男' , ' 123456', '小学') Insert into stu values('2', 'B', '21', '男', '119' , '中学') Insert into stu values('3', 'C', '23', '男', '110', '高中') Insert into stu values('4' , 'D', '18', '女', '114', '大学') 5) 修改学生表的数据,将电话号码以11开头的学员的学历改为“大专” Update stu set 学历=’大专’ where 联系电话 like ‘11%’ 6) 删除学生表的数据,姓名以C开头,性别为‘男’的记录删除 Delect from stu where 性别=’男’ and 姓名 like ‘c%’ 7) 查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号示出来 Select 姓名,学号 from stu where 年龄<22 and 学历=’大专’ 8) 查询学生表的数据,查询所有信息,列出前25%的记录 Select top 25 percent * from stu 9) 查询出所有学生的姓名,性别,年龄降序排列

(完整版)常见SQL笔试题

SQL笔试题 1.统计查询SQL练习 数据库中表结构如下,字段分别任rg(日期),shengfu(胜负),考察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 答案: 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 3.日期统计SQL练习 请取出tb_send 表中日期(SendTime 字段) 为当天的所有记录?(SendTime 字段为 datetime 型,包含日期与时间)

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

1.触发器的作用? 答:触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。 它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。 2.什么是存储过程?用什么来调用? 答:存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。 3.索引的作用?和它的优点缺点是什么? 答:索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。 缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。 3。什么是内存泄漏? 答:一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new 等创建对象时,就从堆中为它分配一块内存,使用完后程序调用free或者delete释放该内存,否则就说该内存就不能被使用,我们就说该内存被泄漏了。 4.维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么? 答:我是这样做的,尽可能使用约束,如check,主键,外键,非空字段等来约束,这样做效率最高,也最方便。其次是使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据的完整新和一致性。最后考虑的是自写业务逻辑,但这样做麻烦,编程复杂,效率低下。 5.什么是事务?什么是锁? 答:事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。 要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。 锁:在所以的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。

面试真题及答案SQL面试题目汇总

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

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常见面试题受用了 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 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.一个叫team 的表,里面只有一个字段name, 一共有4 条纪录,分别是 a,b,c,d, 对应四个球对,现在四个球对进行比赛,用一条sql 语句显示所有可能的比赛组合. 你先按你自己的想法做一下,看结果有我的这个简单吗?

答:select https://www.360docs.net/doc/5412428801.html,, https://www.360docs.net/doc/5412428801.html, from team a, team b where https://www.360docs.net/doc/5412428801.html, < https://www.360docs.net/doc/5412428801.html, 4.请用SQL 语句实现:从TestDB 数据表中查询出所有月份的发生额都比101 科目相应月份的发生额高的科目。请注意:TestDB 中有很多科目,都有1 -12 月份的发生额。 AccID :科目代码,Occmonth :发生额月份,DebitOccur :发生额。 数据库名:JcyAudit ,数据集:Select * from TestDB 答:select a.* from TestDB a ,(select Occmonth,max(DebitOccur) Debit101ccur from TestDB where AccID='101' group by Occmonth) b where a.Occmonth=b.Occmonth and a.DebitOccur>b.Debit101ccur ********************************************************************* *************** 5.面试题:怎么把这样一个表儿 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

java、sql、oracle面试题汇总

1.(口述题)请简述迅雷、 BT 等 p2p 下载软件的实现原理。如何资源分布。解释:A 想来 B 家做客 ,但是遭到了 B 的管家 NAT B 的拒绝 ,理由是 :我从来没有听我家 B 提过你的名字,这时 A 找到了 A,B 都认识的朋友 server,要求 server给 B 报一个信 ,让 B 去跟管家说 A 是我的朋友 ,于是 ,B 跟管家 NAT B 说 ,A 是我认识的朋友 ,这样 A 的访问请求就不会再被管家 NAT B 所拒绝了 .简而言之 ,UDP 打洞 就是一个通过 server保存下来的地址使得彼此之间能够直接通信的过程,server只 管帮助建立连接 ,在建立间接之后就不再介入了 . 2.维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么解 释:尽可能用约束(包括 CHECK 、主键、唯一键、外键、非空字段)实现,这 种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访 问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现, 但这种方式效率最低、编程最复杂,当为下下之策。 3.A=10,b=20 在不使用第三变量使两值互换 解释 : a=10,b=8 a=a-b b=b+a a=b-a 4.override 与重载的区别 解释: o verride是把继承于父类的方法给覆盖掉 重载是同一个函数名接受不同类型、个数的参数,完成不同的功能,调用起来 方便 5.抽象类跟接口的区别 解释:抽象类可以有非抽象方法,接口中只能有抽象方法。接口可以实现多继 承。 6.try {}里有一个return语句,那么紧跟在这个try 后的 finally{} 里的code 会不会被执行,什么时候被执行,在return前还是后? 解释: inally 里的代码会执行,在return 之前执行 7.实现一个冒泡排序 解释: ArrayList list=new ArrayList(); list.add(76); list.add(4); list.add(786); list.add(43); list.add(21); list.add(432); list.add(10); for(int i=0;i

经典SQL面试题总结

表 Student(S#,Sname,Sage,Ssex) 学生表 CREATE TABLE student ( sid varchar(10) NOT NULL, sName varchar(20) DEFAULT NULL, sAge datetime DEFAULT '1980-10-12 23:12:36', sSex varchar(10) DEFAULT NULL, PRIMARY KEY (sid) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Course(C#,Cname,T#) 课程表 CREATE TABLE course ( cid varchar(10) NOT NULL, cName varchar(10) DEFAULT NULL, tid int(20) DEFAULT NULL, PRIMARY KEY (cid) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; SC(S#,C#,score) 成绩表 CREATE TABLE sc ( sid varchar(10) DEFAULT NULL, cid varchar(10) DEFAULT NULL, score int(10) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8; Teacher(T#,Tname) 教师表 CREATE TABLE teacher ( tid int(10) DEFAULT NULL, tName varchar(10) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 数据:(MySQL) insert into teacher(tid,tName) values (1,'李老师'),(2,'何以琛'),(3,'叶平'); insert into student(sid,sName,sAge,sSex) values ('1001','张三丰','1980-10-12 23:12:36','男'),('1002','张无极','1995-10-12 23:12:36','男'),('1003','李奎','1992-10-12 23:12:36','女'),('1004','李元宝','1980-10-12 23:12:36','女'),('1005','李世明','1981-10-12 23:12:36','男'),('1006','赵六','1986-10-12 23:12:36','男'),('1007','田七','1981-10-12 23:12:36','女'); insert into sc(sid,cid,score) values ('1','001',80),('1','002',60),('1','003',75),('2','001',85),('2','002',70),('3','004',100), ('3','001',90),('3','002',55),('4','002',65),('4','003',60); insert into course(cid,cName,tid) values ('001','企业管理',3),('002','马克思',3),('003','UML',2),('004','数据库',1),('005 ','英语',1); 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分的同学的学号和平均成绩;

相关文档
最新文档