sql经典笔试题目(整理)

sql经典笔试题目(整理)
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) 查询出所有学生的姓名,性别,年龄降序排列

Select 姓名,性别 from stu order by 年龄 desc

10) 按照性别分组查询所有的平均年龄

Select avg(年龄) from stu group by 性别

三填空(3分/题) 36

1) 索引分为__聚集索引___和__非聚集索引__在一张表上最多可以创建1个聚集索引_索引。但是可以创建_249个非聚集索引索引。

2) 系统存储过程_sp-helptext__是用来显示规则,默认值,未加密的存储过程,用户定义函数,触发或视图的文本 3)事务开始:begin Transction 提交事务:commit Transction 回滚事务:rollback Transction

四问答题(5分/题)60

1) 数据库包含哪些那几种后缀名的文件必须,这些文件分别存放在什么的信息?

主要数据文件(.mdf) 包含数据用户收集的信息,还有数据库其他相关的信息, 日志数据文件(.ndf) 存放用户对数据库的增删改查的信息,用于备份恢复使用

2) TRUNCATE TABLE 命令是什么含义?和Delete from 表名有什么区?

TRUNCATE TABLE: 提供了一种删除表中所有记录的快速方法 Delete from 表名:可以删除表的一个或多条记录

3) 说出以下聚合数的含义:avg ,sum ,max ,min , count ,count(*)

A VG:求平均值 SUM:求和

MAX:求最大值 MIN:求最小值

COUNT(*):返回所有行数

COUNT返回满足指定条件的记录值

4) inner join 是什么意思?作用是什么?写出基本语法结构

INNER JOIN 内联接,用于返回两个表中要查询的列数据通信 Select * from 表名1 inner join 表名2 on 条件表达式

5) 左向外联接,右向外联接,全联接的关健字如何写?

Left outer join 左向外联接 Right outer join 右向外联接 Full outer join 全联接

6) 子查询分为几类,说明相互之间的别了查询分三种基本子查询:

1.使用in 查询返回一列或更多值

2.比较运算符,返回单个值勤做为外查询的参数

3.用exists 查询时相当于进行一次数据测试

7) 实现实体完整性,实现域完整性,实现完整性(引用完整性),实现自定义完整性分别使用什么手段?

实现实体完整性: 主键约束唯一约束标识列实现域完整性: 默认值约束检查约束非空属性引用完整性: 外键引用

8) 视图可以更新吗?会影响到实际表吗?

视图是可以更新的,视图只是基于基本表上的虚拟表,对视图的更新会直接影响到实际表

9) 谈谈这样几个角色, dbo , Sysadmin public

Dbo : 是数据库的拥有者,对数据库拥有所有操作的权限

Sysadmin : 可以对SQL SERVER执行任何活动

Public : 自动创建的,能捕获数据库中用户的所有默认权限

10) 何为动态游标?何为静态游标?

动态游标与静态游标相对,反映结果集中所做的所有更改,

静态游标的结果集在游标打开时,建立在tempdb中,总按照游标打开时的原样显示

11) 什么是存储过程?为什么存储过程要比单纯的Sql 语句执行起来要快?

存储过程:是一组预先编译好的T-SQL代码;

在创建存储过程时经过了语法和性能优化,执行不必重复的步骤,使用存储过程可提高运行效率

12)什么是Inserted 表?什么是Deleted 表?

Inserted表用于存储inserted和update语句影响的副本

Deleted 表用于存储delect 和 update语句影响的行的副本

SQL Server数据库笔试题和答案

网上转载 2009-06-07 21:19:35 阅读727 评论0 字号:大中小一单词解释(2分/个) 34分

Data 数据 Database 数据库 RDBMS 关系数据库管理系统 GRANT 授权 REVOKE 取消权限 DENY 拒绝权限 DECLARE 定义变量 PROCEDURE存储过程

事务 Transaction 触发器 TRIGGER 继续 continue 唯一 unqiue 主键 primary key 标识列 identity 外键 foreign key 检查 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) 向学生表添加如下信息:

学号姓名年龄性别联系电话学历 1A22男123456小学 2B21男119中学 3C23男110高中 4D18女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) 查询出所有学生的姓名,性别,年龄降序排列 Select 姓名,性别 from stu order by 年龄 desc 10) 按照性别分组查询所有的平均年龄 Select avg(年龄) from stu group by 性别

三填空(3分/题) 36分(包含笔试题问题和解答答案)

1) 索引分为__聚集索引___和__非聚集索引__在一张表上最多可以创建1个聚集索引_索引。但是可以创建_249个非聚集索引索引。 2) 系统存储过程_sp-helptext__是用来显示规则,默认值,未加密的存储过程,用户定义函数,触发或视图的文本 3) 事务开始:begin Transction 提交事务:commit Transction 回滚事务:rollback Transction

四问答题(5分/题) 60分(包含笔试题问题和解答答案) 1) 数据库包含哪些那几种后缀名的文件必须,这些文件分别存放在什么的信息?

主要数据文件(.mdf) 包含数据用户收集的信息,还有数据库其他相关的信息, 日志数据文件(.ndf) 存放用户对数据库的增删改查的信息,用于备份恢复使用

2) TRUNCATE TABLE 命令是什么含义?和Delete from 表名有什么区? TRUNCATE TABLE: 提供了一种删除表中所有记录的快速方法 Delete from 表名:可以删除表的一个或多条记录

3) 说出以下聚合数的含义:avg ,sum ,max ,min , count ,count(*) AVG:求平均值 SUM:求和 MAX:求最大值 MIN:求最小值

COUNT(*):返回所有行数

COUNT返回满足指定条件的记录值

4) inner join 是什么意思?作用是什么?写出基本语法结构 INNER JOIN 内联接,用于返回两个表中要查询的列数据通信 Select * from 表名1 inner join 表名2 on 条件表达式 5) 左向外联接,右向外联接,全联接的关健字如何写? Left outer join 左向外联接 Right outer join 右向外联接 Full outer join 全联接

6) 子查询分为几类,说明相互之间的别

了查询分三种基本子查询: 1.使用in 查询返回一列或更多值 2.比较运算符,返回单个值勤做为外查询的参数 3.用exists 查询时相当于进行一次数据测试

7) 实现实体完整性,实现域完整性,实现完整性(引用完整性),实现自定义完整性分别使用什么手段?

实现实体完整性: 主键约束唯一约束标识列实现域完整性: 默认值约束检查约束非空属性引和完整性: 外键引用

8) 视图可以更新吗?会影响到实际表吗?

视图是可以更新的,视图只是基于基本表上的虚拟表,对视图的更新会直接影响到实际表

9) 谈谈这样几个角色, dbo , Sysadmin public

Dbo : 是数据库的拥有者,对数据库拥有所有操作的权限 Sysadmin : 可以对SQL SERVER执行任何活动

Public : 自动创建的,能捕获数据库中用户的所有默认权限 10) 何为动态游标?何为静态游标?

动态游标与静态游标相对,反映结果集中所做的所有更改,

静态游标的结果集在游标打开时,建立在tempdb中,总按照游标打开时的原样显示

11) 什么是存储过程?为什么存储过程要比单纯的Sql 语句执行起来要快? 存储过程:是一组预先编译好的T-SQL代码

在创建存储过程时经过了语法和性能优化,执行不必重复的步骤,使用存储过程可提高运行效率

12)什么是Inserted 表 ?什么是Deleted 表?

Inserted表用于存储inserted和update语句影响的副本 Deleted 表用于存储delect 和 update 语句影响的行的副本

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

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

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_面试题含建表语句

Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 建表语句 Create table Student ( S# number(4), Sname varchar2(9) not null, Ssex varchar2(3), Sage date, constraint Student_S#_Pk primary key(S#) ); insert into Student values(1001,'李志国','男',to_date('26-9-1985','dd-mm-yyyy')); insert into Student values(1002,'李甜甜','女',to_date('6-2-1987','dd-mm-yyyy')); insert into Student values(1003,'张小燕','女',to_date('18-11-1984','dd-mm-yyyy')); insert into Student values(1004,'王菲','男',to_date('3-6-1985','dd-mm-yyyy')); insert into Student values(1005,'杜宇','女',to_date('25-4-1986','dd-mm-yyyy')); insert into Student values(1006,'彭大生','男',to_date('28-12-1988','dd-mm-yyyy')); insert into Student values(1007,'王亮','男',to_date('1-8-1983','dd-mm-yyyy')); insert into Student values(1008,'赵婷婷','女',to_date('2-2-1984','dd-mm-yyyy')); Create table Teacher ( T# number(4), Tname varchar2(9) not null, constraint Teacher_T#_Pk primary key(T#) ); insert into Teacher values(2001,'李华'); insert into Teacher values(2002,'王力宏'); insert into Teacher values(2003,'叶平'); insert into Teacher values(2004,'王倩倩'); insert into Teacher values(2005,'李莉莉');

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.触发器的作用? 答:触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。 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,

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分的同学的学号和平均成绩;

SQL数据库面试题以及答案精编

S Q L数据库面试题以及 答案精编 Document number:WTT-LKK-GBB-08921-EIGG-22986

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#='00 1')a, (select s#,score from SC where c#='002')b Whe re > and # = #; 2、查询平均成绩大于60分的同学的学号和平均成绩select S#, avg(score) from sc group by S# having av g(score)>60 3、查询所有同学的学号、姓名、选课数、总成绩 select #, , count#), sum(score) from student left o uter join SC on # = # group by #, Sname 4、查询姓‘李’的老师的个数: select count(distinct(Tname)) from teacher where tname like '李%'; 5、查询没有学过“叶平”老师可的同学的学号、姓名:select #, from Student

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 fr om table where 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 g roup by 学号,姓名,课程编号,课程名称,分数) 一个叫department的表,里面只有一个字段name,一共有4条纪录,分别是a,b,c,d,对应四个球对,现在四个球对进行比赛,用一条sql语句显示所有可能的比赛组合. 你先按你自己的想法做一下,看结果有我的这个简单吗? 答:select https://www.360docs.net/doc/2718177238.html,, https://www.360docs.net/doc/2718177238.html, from team a, team b where https://www.360docs.net/doc/2718177238.html, < https://www.360docs.net/doc/2718177238.html,

请用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 ******************************************************************************* ***** 面试题:怎么把这样一个表儿 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 答案一、 select year, (select amount from aaa m where month=1 and m.year=aaa.year) as m1, (select amount from aaa m where month=2 and m.year=aaa.year) as m2, (select amount from aaa m where month=3 and m.year=aaa.year) as m3, (select amount from aaa m where month=4 and m.year=aaa.year) as m4 from aaa group by year 这个是ORACLE 中做的: select * from (select name, year b1, lead(year) over (partition by name order by year) b2, lead(m,2) over(partition by name order by year) b3,rank()over( partition by name order by year) rk from t) where rk=1; ******************************************************************************* ***** 精妙的SQL语句! 精妙SQL语句

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/2718177238.html,, https://www.360docs.net/doc/2718177238.html, from team a, team b where https://www.360docs.net/doc/2718177238.html, < https://www.360docs.net/doc/2718177238.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

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、一个数据库中有两个表: 一张表为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)

ORACLEPLSQL面试题

OraclePL/SQL面试题 一、求1-100之间的素数 declare fag boolean:=true; begin for i in1..100loop for j in2..i-1loop if mod(i,j)=0then fag:=false; end if; end loop; if fag then dbms_output.put_line(i); end if; fag:=true; end loop; end; 二、对所有员工,如果该员工职位是MANAGER,并且在DALLAS工作那么就给他薪金加15%;如果该员工职位是CLERK,并且在NEW YORK工作那么就给他薪金扣除5%;其他情况不作处理 declare cursor c1is select*from emp; c1rec c1%rowtype; v_loc varchar2(20); begin for c1rec in c1loop select loc into v_loc from dept where deptno=c1rec.deptno; if c1rec.job='MANAGER'and v_loc='DALLAS'then update emp set sal=sal*1.15where empno=c1rec.empno; elsif c1rec.job='CLERK'and v_loc='NEW YORK'then update emp set sal=sal*0.95where empno=c1rec.empno; else null; end if; end loop; end; 三、对直接上级是'BLAKE'的所有员工,按照参加工作的时间加薪: 81年6月以前的加薪10% 81年6月以后的加薪5% declare cursor c1is select*from emp where mgr=(select empno from emp where ename='BLAKE');--直接上级是'BLAKE'的所有员工 c1rec c1%rowtype; begin

经典的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

相关文档
最新文档