文档库 最新最全的文档下载
当前位置:文档库 › 一些比较好的SQL查询题目及答案

一些比较好的SQL查询题目及答案

一些比较好的SQL查询题目及答案
一些比较好的SQL查询题目及答案

SQL查询强化训练

以下案例用到以下表

Student(S#,Sname,Sage,Ssex) 学生表

S#:学生编号,字符串型

Sname:学生姓名,字符串型

Sage:年龄,数值型

Ssex:性别,字符串型

Course(C#,Cname,T#) 课程表

C#:课程编号,字符串型(企业管理001,马列002,UML 003,数据库004,英语006)Cname:课程名称,字符串型

T#:教师编号,字符串型

SC(S#,C#,score) 成绩表

S#:学生编号,字符串型

C#:课程编号,字符串型

score:成绩,数值型

Teacher(T#,Tname) 教师表

T#:教师编号,字符串型

Tname:教师姓名,字符串型

注:合格的标准为课程的成绩大于等于60分,带#号的字段表示主键或有外键关联

******************************************************************************** SQL脚本:

create table COURSE

(

C# VARCHAR2(20),

CNAME VARCHAR2(20),

T# VARCHAR2(20)

)

create table SC

(

S# VARCHAR2(20),

C# VARCHAR2(20),

SCORE NUMBER(5,2)

)

create table STUDENT

(

S# VARCHAR2(20),

SNAME VARCHAR2(20),

SAGE NUMBER,

SSEX VARCHAR2(20)

)

create table TEACHER

(

T# VARCHAR2(20),

TNAME VARCHAR2(20)

)

insert into course (C#, CNAME, T#) values ('001', '企业管理', '9001');

insert into course (C#, CNAME, T#) values ('002', '马列', '9002');

insert into course (C#, CNAME, T#) values ('003', 'UML', '9006');

insert into course (C#, CNAME, T#) values ('004', '数据库', '9004');

insert into course (C#, CNAME, T#) values ('006', '英语', '9006');

insert into sc (S#, C#, SCORE)

values ('1008', '003', 85.00);

insert into sc (S#, C#, SCORE)

values ('1008', '004', 21.00);

insert into sc (S#, C#, SCORE)

values ('1008', '001', 47.00);

insert into sc (S#, C#, SCORE)

values ('1005', '006', 99.00);

insert into sc (S#, C#, SCORE)

values ('1012', '002', 22.00);

insert into sc (S#, C#, SCORE)

values ('1001', '001', 60.00);

insert into sc (S#, C#, SCORE)

values ('1001', '002', 88.00);

insert into sc (S#, C#, SCORE)

values ('1001', '004', 20.00);

insert into sc (S#, C#, SCORE)

values ('1002', '006', 20.00);

insert into sc (S#, C#, SCORE)

values ('1003', '002', 78.00);

insert into sc (S#, C#, SCORE) values ('1003', '006', 90.00);

insert into sc (S#, C#, SCORE) values ('1003', '001', 97.00);

insert into sc (S#, C#, SCORE) values ('1003', '003', 72.00);

insert into sc (S#, C#, SCORE) values ('1004', '002', 88.00);

insert into sc (S#, C#, SCORE) values ('1004', '006', 62.00);

insert into sc (S#, C#, SCORE) values ('1006', '001', 32.00);

insert into sc (S#, C#, SCORE) values ('1006', '003', 99.00);

insert into sc (S#, C#, SCORE) values ('1006', '004', 69.00);

insert into sc (S#, C#, SCORE) values ('1006', '006', 73.00);

insert into sc (S#, C#, SCORE) values ('1007', '001', 77.00);

insert into sc (S#, C#, SCORE) values ('1007', '002', 54.00);

insert into sc (S#, C#, SCORE) values ('1007', '003', 83.00);

insert into sc (S#, C#, SCORE) values ('1008', '006', 12.00);

insert into sc (S#, C#, SCORE) values ('1008', '002', 55.00);

insert into sc (S#, C#, SCORE) values ('1009', '002', 34.00);

insert into sc (S#, C#, SCORE)

values ('1010', '002', 84.00);

insert into sc (S#, C#, SCORE)

values ('1010', '006', 87.00);

insert into sc (S#, C#, SCORE)

values ('1011', '006', 99.00);

insert into sc (S#, C#, SCORE)

values ('1012', '004', 87.00);

insert into sc (S#, C#, SCORE)

values ('1002', '002', 75.00);

insert into sc (S#, C#, SCORE)

values ('1011', '001', 12.00);

insert into sc (S#, C#, SCORE)

values ('1011', '002', 76.00);

insert into sc (S#, C#, SCORE)

values ('1011', '004', 44.00);

insert into sc (S#, C#, SCORE)

values ('1012', '001', 89.00);

insert into student (S#, SNAME, SAGE, SSEX) values ('1001', 'kangyue', 29, 'male');

insert into student (S#, SNAME, SAGE, SSEX) values ('1002', 'wangyu', 29, 'male');

insert into student (S#, SNAME, SAGE, SSEX) values ('1003', '王新刚', 30, '');

insert into student (S#, SNAME, SAGE, SSEX) values ('1004', '鲁豫', 27, 'famale');

insert into student (S#, SNAME, SAGE, SSEX) values ('1005', 'sanhui', 29, 'male');

insert into student (S#, SNAME, SAGE, SSEX) values ('1006', '梦涵', 28, 'famale');

insert into student (S#, SNAME, SAGE, SSEX)

values ('1007', 'yangdayong', 30, 'male');

insert into student (S#, SNAME, SAGE, SSEX)

values ('1008', 'sunguoqiang', 30, 'male');

insert into student (S#, SNAME, SAGE, SSEX)

values ('1009', '李宏利', 49, 'male');

insert into student (S#, SNAME, SAGE, SSEX)

values ('1010', '小心', 20, 'famale');

insert into student (S#, SNAME, SAGE, SSEX)

values ('1011', '小泉', 99, 'male');

insert into student (S#, SNAME, SAGE, SSEX)

values ('1012', '特里', 39, 'male');

insert into teacher (T#, TNAME)

values ('9001', '崔老师');

insert into teacher (T#, TNAME)

values ('9002', '颜老师');

insert into teacher (T#, TNAME)

values ('9003', '岳老师');

insert into teacher (T#, TNAME)

values ('9004', '夏老师');

insert into teacher (T#, TNAME)

values ('9005', '杨老师');

insert into teacher (T#, TNAME)

values ('9006', '叶平');

insert into teacher (T#, TNAME)

values ('9007', '梦老师');

********************************************************************************

完成以下语句:

1、查询001课程比002课程成绩高的所有学生的学号;

SELECT T2.S#--, T2.COURSE_001, T2.COURSE_002

FROM

(

SELECT T1.S#, SUM(T1.COURSE_001) COURSE_001, SUM(T1.COURSE_002) COURSE_002 FROM

(

SELECT S#,

CASE WHEN C# = '001'THEN SCORE

ELSE0

END COURSE_001,

CASE WHEN C# = '002'THEN SCORE

ELSE0

END COURSE_002

FROM SC

) T1

GROUP BY S#

) T2

WHERE T2.COURSE_001 > T2.COURSE_002

2、查询平均成绩大于60分的同学的学号和平均成绩;

SELECT S#, AVG(SCORE) SCORE

FROM SC

GROUP BY S#

HAVING AVG(SCORE) >60

3、查询所有同学的学号、姓名、选课数、总成绩;

SELECT T1.S#, T1.SNAME, https://www.wendangku.net/doc/ed11095792.html,T, T2.TOTAL_SCORE

FROM STUDENT T1,

(

SELECT S#, COUNT(1) CNT, SUM(SCORE) TOTAL_SCORE FROM SC

GROUP BY S#

) T2

WHERE T1.S# = T2.S#

4、查询姓“李”的老师的个数;

SELECT COUNT(1) FROM TEACHER WHERE TNAME LIKE'李%';

5、查询没学过“叶平”老师课的同学的学号、姓名;

SELECT T.S#, T.SNAME

FROM STUDENT T

WHERE T.S# NOT IN (SELECT S#

FROM SC

WHERE C# IN (SELECT C#

FROM TEACHER T1, COURSE T2

WHERE T1.T# = T2.T#

AND TNAME = '叶平'));

6、查询学过“001并且也学过编号002”课程的同学的学号、姓名;SELECT T1.S#, T1.SNAME

FROM STUDENT T1

WHERE EXISTS (SELECT T2.S#

FROM SC T2

WHERE T2.C# IN ('001', '002')

AND T2.S# = T1.S#

GROUP BY T2.S#

HAVING COUNT(1) > 1);

7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;

SELECT T.S#, T.SNAME

FROM STUDENT T

WHERE T.S# IN (SELECT S#

FROM SC

WHERE C# IN (SELECT C#

FROM TEACHER T1, COURSE T2

WHERE T1.T# = T2.T#

AND TNAME = '叶平'));

8、查询课程编号001的成绩比课程编号002课程低的所有同学的学号、姓名;

SELECT T3.S#, T3.SNAME--, T2.COURSE_001, T2.COURSE_002

FROM

(

SELECT T1.S#, SUM(T1.COURSE_001) COURSE_001, SUM(T1.COURSE_002) COURSE_002 FROM

(

SELECT S#,

CASE WHEN C# = '001'THEN SCORE

ELSE0

END COURSE_001,

CASE WHEN C# = '002'THEN SCORE

ELSE0

END COURSE_002

FROM SC

) T1

GROUP BY S#

) T2,

STUDENT T3

WHERE T2.S# = T3.S#

AND T2.COURSE_001 < T2.COURSE_002

9、查询所有课程成绩小于60分的同学的学号、姓名;

SELECT T.S#, T.SNAME FROM STUDENT T

WHERE EXISTS (SELECT DISTINCT T1.S#

FROM SC T1

WHERE NOT EXISTS (SELECT1

FROM SC T2

WHERE T2.SCORE > 60

AND T2.S# = T1.S#)

AND T1.S# = T.S#)

10、查询没有学全所有课的同学的学号、姓名;

SELECT T1.S#, T1.SNAME FROM STUDENT T1

WHERE NOT EXISTS (SELECT S#

FROM (SELECT S#, COUNT(1) CNT FROM SC GROUP BY S#) T

WHERE CNT = (SELECT COUNT(1) FROM COURSE)

AND T.S# = T1.S#)

ORDER BY T1.S#

11、查询至少有一门课与学号为1001的同学所学相同的同学的学号和姓名;

SELECT T1.S#, T1.SNAME

FROM STUDENT T1,

(SELECT DISTINCT S#

FROM SC

WHERE C# IN (SELECT C# FROM SC WHERE S# = 1001)

AND S# != 1001) T2

WHERE T1.S# = T2.S#

12、查询至少学过学号为1001同学所有课的其他同学学号和姓名;

SELECT DISTINCT T4.S#, T4.SNAME

FROM (SELECT T1.S#, https://www.wendangku.net/doc/ed11095792.html,T1, https://www.wendangku.net/doc/ed11095792.html,T2, COUNT(1) OVER(PARTITION BY S#) CNT FROM (SELECT S#, C#, COUNT(1) OVER(PARTITION BY S#) CNT1

FROM SC

WHERE S# != '1001'

GROUP BY S#, C#) T1,

(SELECT C#, COUNT(1) OVER(PARTITION BY S#) CNT2

FROM SC

WHERE S# = '1001') T2

WHERE T1.C# = T2.C#

AND https://www.wendangku.net/doc/ed11095792.html,T1 >= https://www.wendangku.net/doc/ed11095792.html,T2) T3,

STUDENT T4

WHERE T4.S# = T3.S#

AND https://www.wendangku.net/doc/ed11095792.html,T >= https://www.wendangku.net/doc/ed11095792.html,T2

13、把SC表中叶平老师教的课的成绩都更改为此课程的平均成绩;(暂时未发现其他好办法)UPDATE SC SET SC.SCORE=(

WITH TT AS(

SELECT T.C#, AVG(T.SCORE) SCO

FROM SC T

WHERE T.C# IN (SELECT T1.C#

FROM COURSE T1, TEACHER T2

WHERE T1.T# = T2.T#

AND T2.TNAME = '叶平')

GROUP BY T.C#

)

SELECT SCO FROM TT WHERE TT.C# = SC.C#

)

WHERE EXISTS

(SELECT T1.C#

FROM COURSE T1, TEACHER T2

WHERE T1.T# = T2.T#

AND T2.TNAME = '叶平'

AND T1.C# = SC.C#

)

14、查询和1002号的同学学习的课程完全相同的其他同学学号和姓名;

SELECT DISTINCT T4.S#, T4.SNAME

FROM (SELECT T1.S#, https://www.wendangku.net/doc/ed11095792.html,T2, COUNT(1) OVER(PARTITION BY S#) CNT FROM (SELECT S#, C#, COUNT(1) OVER(PARTITION BY S#) CNT1

FROM SC

WHERE S# != '1002'

GROUP BY S#, C#) T1,

(SELECT C#, COUNT(1) OVER(PARTITION BY S#) CNT2

FROM SC

WHERE S# = '1002') T2

WHERE T1.C# = T2.C#

AND https://www.wendangku.net/doc/ed11095792.html,T1 = https://www.wendangku.net/doc/ed11095792.html,T2) T3,

STUDENT T4

WHERE T4.S# = T3.S#

AND https://www.wendangku.net/doc/ed11095792.html,T = https://www.wendangku.net/doc/ed11095792.html,T2

15、删除学习“叶平”老师课的SC表记录;

DELETE FROM SC T1

WHERE EXISTS (SELECT1

FROM COURSE T2

WHERE T2.T# IN (SELECT T# FROM TEACHER WHERE TNAME = '叶平')

AND T2.C# = T1.C#)

16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号002课程的同学学

号、002、002号课的平均成绩

INSERT INTO SC WITH TT AS

(SELECT ROUND(AVG(SCORE), 2) AVG_SCORE FROM SC WHERE C# = '002')

SELECT DISTINCT T1.S#, '002', TT.AVG_SCORE

FROM SC T1, TT

WHERE NOT EXISTS (SELECT T2.S#

FROM SC T2

WHERE T2.C# = '002'

AND T2.S# = T1.S#)

17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程

成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分;SELECT S#, ENTERPRISE_, DATABASE_, ENGLISH_, SCORE_CNT,

TRUNC((NVL(ENTERPRISE_, 0) + NVL(DATABASE_, 0) + NVL(ENGLISH_,

0))/SCORE_CNT, 2) AVG_SCORE

FROM

(

SELECT S#, ENTERPRISE_, DATABASE_, ENGLISH_,

DECODE(ENTERPRISE_, '', DECODE(DATABASE_, '', DECODE(ENGLISH_, '', 0,

1), DECODE(ENGLISH_, '', 1, 2)), DECODE(DATABASE_, '',DECODE(ENGLISH_, '', 1,

2), DECODE(ENGLISH_,'',2, 3))) SCORE_CNT

FROM(

SELECT S#, SUM(ENTERPRISE_) ENTERPRISE_, SUM(DATABASE_) DATABASE_,

SUM(ENGLISH_) ENGLISH_

FROM

(

SELECT S#,

CASE WHEN C# = '001'THEN SCORE

ELSE NULL

END ENTERPRISE_,

CASE WHEN C# = '004'THEN SCORE

ELSE NULL

END DATABASE_,

CASE WHEN C# = '006'THEN SCORE

ELSE NULL

END ENGLISH_

FROM SC

WHERE C# IN(SELECT C# FROM COURSE WHERE CNAME IN ('数据库', '企业管理', '英语'))

)

GROUP BY S#

)

);

18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分;

SELECT C#, MAX(SCORE), MIN(SCORE) FROM SC GROUP BY C#;

19、按各科平均成绩从低到高和及格率的百分数从高到低顺序;

SELECT T1.C#,

ROUND(T1.AVG_SCORE, 2) AVG_SCORE,

ROUND(T2.PASS_COUNT / T1.ALL_COUNT, 2) PASS_POINT

FROM (SELECT DISTINCT C#,

COUNT(1) OVER(PARTITION BY C# ORDER BY C#) ALL_COUNT,

AVG(SCORE) OVER(PARTITION BY C# ORDER BY C#) AVG_SCORE FROM SC) T1,

(SELECT DISTINCT C#,

COUNT(1) OVER(PARTITION BY C# ORDER BY C#) PASS_COUNT FROM SC

WHERE SCORE >= 60) T2

WHERE T1.C# = T2.C#

ORDER BY AVG_SCORE, PASS_POINT DESC

20、查询如下课程平均成绩和及格率的百分数:企业管理(C#为001)平均分,企业管理及格

百分数,马克思平(C#为002)均分,马克思及格百分数,UML(C#为003)平均分,UML及格百分数,数据库平均分(C#为004),数据库及格百分数

WITH TT AS(

SELECT C#, SCORE

FROM SC

WHERE C# IN (SELECT C#

FROM COURSE

WHERE CNAME IN ('企业管理', '马列', 'UML', '数据库'))

)

SELECT T1.C#,

ROUND(T1.AVG_SCORE, 2) AVG_SCORE,

ROUND(T2.PASS_COUNT / T1.ALL_COUNT*100, 2) || '%' PASS_POINT FROM (SELECT DISTINCT C#,

COUNT(1) OVER(PARTITION BY C# ORDER BY C#) ALL_COUNT,

AVG(SCORE) OVER(PARTITION BY C# ORDER BY C#) AVG_SCORE FROM TT) T1,

(SELECT DISTINCT C#,

COUNT(1) OVER(PARTITION BY C# ORDER BY C#) PASS_COUNT FROM TT

WHERE SCORE >= 60) T2

WHERE T1.C# = T2.C#

数据库SQL查询例题及解答

1 实验目的 1.熟悉数据库的交互式SQL工具。 2.熟悉通过SQL对数据库进行操作。 3.完成作业的上机练习。 2 实验工具sql server 利用Sql server及其交互式查询工具-查询分析器来熟悉SQL。 3 实验内容和要求 1)实验内容: 创建数据库boat,包括Sailors,Boats,Reserves三个表,表结构如下: Sailors(sid: integer, sname: string, rating: integer, age: real) 船员(船员编号,姓名,级别,年龄) Boats(bid: integer, bname: string, color: string) 船(船编号,名称,颜色) Reserves(sid: integer, bid: integer, day: date) 租赁(船员编号,船编号,日期) (注:下划线表示主键),并插入一定数据。 2)完成下列要求:

(1)查询所有船员的信息 (2)查询所有姓王的船员的信息 (3)查询租用过103号船的船员姓名 (4)查找租用过船只的船员编号 (5)查找rating>7且年龄>25的水手编号 (6)查找租用过红船和绿船的水手名字 (7)查找租用过红船或绿船的水手编号 (8)查找最年长的水手的年龄和名字 (9)在18岁以上水手中,对于每个rating级别中最少有两个水手以上的组中最年轻水手的年龄 (10)查找每条红色船只被租用的次数 (11)把30岁以上船员的级别调高一级 (12)删除所有年龄超过40岁的船员信息 (13)建立年龄超过25岁的船员的视图 (14)对(13)建立的视图,举一操作的例子(查询、删除、修改均可) 2)要求: a.建立boat数据库的SQL脚本,插入所有数据项的SQL脚本(包括所有的测试数据)。 b.记录完成查询要求的SQL语句脚本。 c.记录完成查询的查询结果。

SQLServer数据库试题九及答案

SQL Server数据库试题九及答案 一、选择题(每题2分,共30分) 1、下面不属于数据定义功能的SQL语句是:() A.CREAT TABLE B.CREAT CURSOR C.UPDA TE D.ALTER TABLE 2、SQL数据库中的视图与下列哪项是对应的()。 A.关系模式 B.存储模式 C.子模式 D.以上都不是 3、下列选项中不是数据库复制类型的是()。 A.快照复制 B.差异复制 C.事务复制 D.合并复制 4、下列说法错误的是: ()。 A.一个基本表可以跨一个或多个存储文件 B. 一个存储文件可以跨一个或多个基本表 C.每个存储文件与外部存储器上一个物理文件对应 D.每个基本表与外部存储器上一个物理文件对应 5.显示包含警告信息或其他信息的消息框,应该使用的操作是()。 A.Echo B.Message C.Warn D.MsgBox 6、在SQL Server 2000中,索引的顺序和数据表的物理顺序相同的索引是()。 A.聚集索引 B.非聚集索引 C.主键索引 D.唯一索引 7. SQL Server的字符型系统数据类型主要包括()。 A. Int、money、char B. char、varchar、text C. datetime、binary、int D. char、varchar、int 8、以下选项中哪一项不是访问数据库系统的接口()。 A.ODBC B.OLE DB C.API D.ADO 9、在SELECT语句的WHERE子句的条件表达式中,可以匹配0个到多个字符的通配符是() A.* B.% C.- D.? 10、SELECT语句中与HA VING子句同时使用的是()子句。 A.ORDER BY B.WHERE C.GROUP BY D.无需配合 11~15题使用如下数据: 当前盘当前目录下有数据库db_stock,其中有表stock的内容是: 股票代码股票名称单价交易所 600600 青岛啤酒7.48 上海 600601 方正科技15.20 上海 600602 广电电子10.40 上海 600603 兴业房产12.76 上海 600604 二纺机9.96 上海 600605 轻工机械14.59 上海 000001 深发展7.48 深圳 000002 深万科12.50 深圳 11、有如下SQL语句 create view stock_view as select * from stock where 交易所=”深圳” 执行该语句后产生的视图包含的记录个数是() A.1 B.2 C.3 D.4 12、有如下SQL语句

SQL Server习题及答案

1. 有个用户的计算机不能连接到中心机房的SQL Server 2000上。你在调试过程中发现这个用户的计算机的网络功能是正常的,而且其他用户都能正常地连接到SQL Server 2000。下面的哪些工具有助于你诊断和解决该问题?(多选) A.Enterprise Manager B.Server Network Utility C.Profiler D.Query Analyzer E.Client Network Utility 答:B和E 2. 你在SQL Server 2000创建了酒店管理系统的数据库HotelDB,并创建了表CustInfo。当下面的哪些数据库被删除的情况下,仍能正确地执行“SELECT * FROM CustInfo?A.Model B.Tempdb C.Msdb D.Master E.Pubs 答:A、C、E 3. 你正在使用SQL Server 2000开发银行交易系统,为了保证商业数据在网络传输(用TCP/IP协议)时不会被窃取,你在SQL Server 2000中启用了网络加密功能。请问该功能在哪一层被实现? A.TCP/IP协议软件 B.超级套接字层 C.开放式数据服务 D.关系引擎 E.存储引擎 答:B 4. 你正在使用SQL Server 2000开发超市收银系统。在客户端编写软件时使用SQL语句“SELECT * FROM Products”来查询商品的信息,但是不小心把Products输入成Product。请问该错误在哪一层被发现? A.客户端的数据库API B.客户端的NET-LIBRARY C.服务器端的开放式数据服务 D.服务器端的关系引擎 E.服务器端的存储引擎 答:D

数据库SQL查询语句大全

经典SQL查询语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1. dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tab name(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!

SQLServer选择题含答案去原题

第一套选择题 1.下列说法错误的是()。 A.内嵌表值函数没有函数主体,返回的表是单个SELECT语句的结果集B.多语句表值函数的调用与内嵌表值函数的调用方法相同 C.多语句表值函数的功能可以用标量函数来实现 D.在内嵌表值函数的定义中,不使用BEGIN…END块定义函数主体2.以下哪个事件不能激活DML触发器的执行()。 A.SELECT B. UPDATE C. INSERT D. DELETE 3.以下哪个数据库实例不属于系统数据库()。 A.master B.model C.msdb D.temp 4.执行以下语句: DECLARE @n int Set @n=3 WHILE @n<5 Begin IF @n=4 Print ltrim(@n)+‘的平方数为’+ltrim(@n*@n) Set @n=@n+1 End 执行完成后循环次数为()。

A.0次B.1次 C.2次D.死循环 5.利用游标来操纵数据时,所用的FOR UPDATE子句充分利用了事务的哪个特性()。 A.原子性B.一致性 C.永久性D.隔离性 6.关于触发器的描述,下列说法正确的是()。 A.触发器是在数据修改前被触发,约束是在数据修改后被触发 B.触发器是一个能自动执行的特殊的存储过程 C.触发器作为一个独立的对象存在,与数据库中其他对象无关D.inserted表和deleted表是数据库中的物理表 7.关于服务器角色与数据库角色,说法正确的是()。 A.只能将一个登录名添加为某个固定服务器角色的成员 B.只能将一个登录名添加为某个固定数据库角色的成员 C.sysadmin是固定数据库角色 D.db_owner是固定服务器角色 8.关于创建永久备份设备,下列说法错误的是()。 A.执行系统存储过程sp_addumpdevice创建永久备份设备 B.执行系统存储过程sp_dropdevice删除永久备份设备 C.若被删除的“命名备份设备”的类型为磁盘,那么必须指定DELFILE选项D.只须指定该命名备份设备的物理名,无须指定该命名备份设备的逻辑名9.能够将‘java’课的学分赋值给变量的语句是哪一个()。

sql查询题目及答案

数据库中有如下三个表: 学生表(学号id,姓名name,性别sex,系部depart,年龄age)8个学生记录 选课表(学号id,课程号cid,成绩grade) 12门课程 课程表(课程号cid,课程名cname,学分Ccredit) 6门课程 学生-课程模式 S-T : 学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 课程表:Course(Cno,Cname,Cpno,Ccredit) 学生选课表:SC(Sno,Cno,Grade) 1.从学生表中查询所有同学的所有信息 select*from学生表 2.从学生表中查询所有学生的信息,并分别赋予一个别名 select学号as xuehao,姓名as xingming,性别as xingbie,系部as xibu,年龄as nianling from学生表 3.从学生表中查询姓名是Allen的学生的信息 select*from学生表 where姓名='Allen' 4.从学生表中查询 学号在1101到1199之间的所有学生的信息 select*from学生表 where学号between 1101 and 1199 5.从学生表中查询年龄小于18和大于20的所有学生的学号和姓名 select学号,姓名from学生表 where年龄<18 or年龄>20 6.从学生表中查询计算机系年龄小于20的所有学生的信息 select*from学生表 where系部='computer'and年龄<20 7.从学生表中查询姓名以A开头的学生的信息 select*from学生表 where姓名LIKE'A%'

数据库SQL查询语句大全修订稿

数据库S Q L查询语句 大全 公司标准化编码 [QQX96QT-XQQB89Q8-NQQJ6Q8-MQM9N]

经典SQL查询语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definitio n only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type

注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词 A:UNION 运算符

2016sql数据库期末考试题及答案

一、单选题(共10 道试题,共50 分。)V 1. SQL Server中,保存着每个数据库对象的信息的系统表是(C)。 A. sysdatabases B. Syscolumns C. Sysobjects D. Syslogs 满分:5 分 2. 在存在下列关键字的SQL语句中,不可能出现Where子句的是(D )。 A. Update B. Delete C. Insert D. Alter 满分:5 分 3. 在查询语句的Where子句中,如果出现了“age Between 30 and 40”,这个表达式等同于(A )。 A. age>=30 and age<=40 B. age>=30 or age<=40 C. age>30 and age<40 D. age>30 or age<40

满分:5 分 4. 如果要在一张管理职工工资的表中限制工资的输入范围,应使用(D )约束。 A. PDRIMARY KEY B. FOREIGN KEY C. unique D. check 满分:5 分 5. 记录数据库事务操作信息的文件是(D )。 A. 数据文件 B. 索引文件 C. 辅助数据文件 D. 日志文件 满分:5 分 6. 要查询XSH数据库CP表中产品名含有“冰箱”的产品情况,可用(C)命令。 A. SELECT * FROM CP WHERE 产品名称LIKE ‘冰箱’ B. SELECT * FROM XSH WHERE 产

品名称LIKE ‘冰箱’ C. SELECT * FROM CP WHERE 产品名称LIKE ‘%冰箱%’ D. SELECT * FROM CP WHERE 产品名称=‘冰箱’ 满分:5 分 7. 储蓄所有多个储户,储户能够在多个储蓄所存取款,储蓄所与储户之间是(D )。 A. 一对一的联系 B. 一对多的联系 C. 多对一的联系 D. 多对多的联系 满分:5 分 8. SQL的聚集函数COUNT、SUM、AVG、MAX、MIN不允许出现在查询语句的(D)子句之中。 A. SELECT B. HAVING C. GROUP BY… HAVING D. WHERE 满分:5 分

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查询练习题含答案

--(1)查询20号部门的所有员工信息。 select * from emp e where e.deptno=20; --(2)查询奖金(COMM)高于工资(SAL)的员工信息。 select * from emp where comm>sal; --(3)查询奖金高于工资的20%的员工信息。 select * from emp where comm>sal*0.2; --(4)查询10号部门中工种为MANAGER和20号部门中工种为CLERK的员工的信息。select * from emp e where (e.deptno=10 and e.job='MANAGER') or (e.deptno=20 and e.job='CLERK') --(5)查询所有工种不是MANAGER和CLERK, --且工资大于或等于2000的员工的详细信息。 select * from emp where job not in('MANAGER','CLERK') and sal>=2000; --(6)查询有奖金的员工的不同工种。 select * from emp where comm is not null; --(7)查询所有员工工资和奖金的和。 select (e.sal+nvl(https://www.wendangku.net/doc/ed11095792.html,m,0)) from emp e; --(8)查询没有奖金或奖金低于100的员工信息。 select * from emp where comm is null or comm<100; --(9)查询员工工龄大于或等于10年的员工信息。 select * from emp where (sysdate-hiredate)/365>=10; --(10)查询员工信息,要求以首字母大写的方式显示所有员工的姓名。 select initcap(ename) from emp; select upper(substr(ename,1,1))||lower(substr(ename,2)) from emp; --(11)显示所有员工的姓名、入职的年份和月份,按入职日期所在的月份排序, --若月份相同则按入职的年份排序。 select ename,to_char(hiredate,'yyyy') year,to_char(hiredate,'MM') month from emp order by month,year; --(12)查询在2月份入职的所有员工信息。 select * from emp where to_char(hiredate,'MM')='02' --(13)查询所有员工入职以来的工作期限,用“**年**月**日”的形式表示。 select e.ename,floor((sysdate-e.hiredate)/365)||'年' ||floor(mod((sysdate-e.hiredate),365)/30)||'月' ||floor(mod(mod((sysdate-e.hiredate),365),30))||'日' from emp e; --(14)查询从事同一种工作但不属于同一部门的员工信息。

SQL数据库查询语句范例

推荐一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和Where子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。Select nickname,email FROM testtable Where n ame=’张三’ (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列例如,下面语句显示testtable表中所有列的数据:Select * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如:Select nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: Select 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 Select语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINC T选项时,对于所有重复的数据行在Select返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。例如: Select TOP 2 *FROM testtable Select TOP 20 PERCENT * FROM testtable (二) FROM子句 FROM子句指定Select语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和cityta ble表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: Select username,citytable.cityid FROM usertable,citytable Where usertable.cityid=citytable.cityid 在FROM子句中可用以下两种格式为表或视图指定别名: 表名 as 别名表名别名

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查询语句上机练习1_习题_结果(单世民)

习题1 请根据给出的数据库表结构来回答相应问题: DEPT (DEPTNO INT, DNAME VARCHAR(14),LOC VARCHAR(13)); EMP (EMPNO INT,ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT, HIREDATE DATE, SAL FLOAT, COMM FLOAT, DEPTNO INT); BONUS (ENAME VARCHAR(10), JOB VARCHAR(9), SAL INT, COMM INT); SALGRADE ( GRADE INT, LOSAL INT, HISAL INT); 其中表中包含如下数据: DEPT表: EMP表: SALGRADE表:

BONUS表: 无数据 根据上面描述完成下面问题: (注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原) DDL 1. 写出上述表的建表语句。此外,在DEPT上创 建名为”PK_DEPT”的主键约束,在EMP表上 创建名为”PK_EMP”的主键约束以及指向表 DEPT的外键约束”FK_DEPTNO”。 命令: Create table DEPT (DEPTNO INT NOT NULL,DNAME VARCHAR(14),LOC VARCHAR(13)); Alter table DEPT add constraint PK_DEPT PRIMARY KEY (DEPTNO); create table EMP(EMPNO INT NOT NULL,ENAME VARCHAR(10),JOB VARCHAR(9),MGR INT,HIREDATE DATE, SAL FLOAT,COMM FLOAT,DEPTNO INT); alter table EMP add constraint PK_EMP PRIMARY KEY (EMPNO); alter table EMP add constraint FK_DEPTNO foreign key(DEPTNO) references DEPT(DEPTNO);

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

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

数据库中SQL查询语句习题含的答案

.word 版本可编辑. 查询问题:设教学数据库Education 有三个关系: 学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT );学习关系SC (SNO ,CNO ,GRADE );课程关系C (CNO ,CNAME ,CDEPT ,TNAME ) (1)检索计算机系的全体学生的学号,姓名和性别; (2)检索学习课程号为C2的学生学号与姓名; (3)检索选修课程名为“DS ”的学生学号与姓名; (4)检索选修课程号为C2或C4的学生学号; (5)检索至少选修课程号为C2和C4的学生学号; (6)检索不学C2课的学生姓名和年龄; (7)检索学习全部课程的学生姓名; (8)查询所学课程包含学生S3所学课程的学生学号。 (1)检索计算机系的全体学生的学号,姓名和性别; SELECT Sno ,Sname ,Sex FROM S WHERE Sdept =’CS ’; (2)检索学习课程号为C2的学生学号与姓名; (1)首先在C 表中找出“DS ”课程的课程号Cno ; (2)然后在SC 表中找出Cno 等于第一步给出的Cno 集合中的某个元素Cno ; (3)最后在S 关系中选出Sno 等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname 送入结果表列。 SELECT Sno ,Sname FROM S WHERE Sno IN (SELECT Sno FROM SC WHERE Cno IN (SELECT Cno FROM C WHERE Cname=‘DS ’)); (4)检索选修课程号为C2或C4的学生学号; SELECT Sno FROM SC WHERE Cno=‘C2’ OR Cno=‘C4’; (5)检索至少选修课程号为C2和C4的学生学号; SELECT Sno FROM SC X ,SC Y WHERE X.Sno=Y.Sno AND https://www.wendangku.net/doc/ed11095792.html,o=‘C2’ AND https://www.wendangku.net/doc/ed11095792.html,o=‘C4’ ; (6)检索不学C2课的学生姓名和年龄; 有学。 SELECT Sname FROM S WHERE NOT EXISTS (SELECT * FROM C WHERE NOT EXISTS (SELECT * FROM SC WHERE SC.Sno=S.Sno AND https://www.wendangku.net/doc/ed11095792.html,o=https://www.wendangku.net/doc/ed11095792.html,o )); (8)查询所学课程包含学生S3所学课程的学生学号。 分析:不存在这样的课程Y ,学生S3选了Y ,而其他学生没有选。 SELECT DISTINCT Sno FROM SC AS X WHERE NOT EXISTS (SELECT * FROM SC AS Y WHERE Y.Sno=‘S3’ AND NOT EXISTS (SELECT * FROM SC AS Z WHERE Z.Sno=X.Sno AND https://www.wendangku.net/doc/ed11095792.html,o=https://www.wendangku.net/doc/ed11095792.html,o )); 设教学数据库Education 有三个关系: 学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT ); 学习关系SC (SNO ,CNO ,GRADE ); 课程关系C (CNO ,CNAME ,CDEPT ,TNAME ) 查询问题: 1:查所有年龄在20岁以下的学生姓名及年龄。 2:查考试成绩有不及格的学生的学号 3:查所年龄在20至23岁之间的学生姓名、系别及年龄。 4:查计算机系、数学系、信息系的学生姓名、性别。 5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别 6:查所有姓“刘”的学生的姓名、学号和性别。 7:查姓“上官”且全名为3个汉字的学生姓名。 8:查所有不姓“张”的学生的姓名。 9:查DB_Design 课程的课程号。 10:查缺考的学生的学号和课程号。 11:查年龄为空值的学生的学号和姓名。 12:查计算机系20岁以下的学生的学号和姓名。 13:查计算机系、数学系、信息系的学生姓名、性别。 14:查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。 15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。 16:查询学生总人数。 17:查询选修了课程的学生人数。 18:计算选修了C1课程的学生平均成绩。

数据库sql查询语句练习2_习题_结果(单世民)

现在有一教学管理系统,具体的关系模式如下:Student (no, name, sex, birthday, class) Teacher (no, name, sex, birthday, prof, depart) Course (cno, cname, tno) Score (no, cno, degree) 其中表中包含如下数据: Course表: Score表: Student表:

Teacher表: 根据上面描述完成下面问题: (注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原)DDL 1.写出上述表的建表语句。 2.给出相应的INSERT语句来完成题中给出数据的插入。 单表查询 3.以class降序输出student的所有记录(student表全部属性) 命令:select*from Student order by class desc;

4.列出教师所在的单位depart(不重复)。 命令:select distinct depart from Teacher; 5.列出student表中所有记录的name、sex和class列 命令:select name,sex,class from Student; 6.输出student中不姓王的同学的姓名。 命令:select name from Student except select name from Student where name like'王%';或

select name from Student where name not like'王%'; 7.输出成绩为85或86或88或在60-80之间的记录(no,cno,degree) 命令:select no,cno,DEGREE from Score where degree=85 or degree=86 or degree=88 or degree between 60 and 80; 8.输出班级为95001或性别为‘女’的同学(student表全部属性) 命令:select*from Student where class=95001 or sex='女';

sql考试题及答案

sql考试题及答案 【篇一:sql试题及答案】 题(在每个小题四个备选答案中选出一个正确答案,填在题末的括号中)(本大题共10小题,每小题2分,总计20分) 1. ()是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。数据库在建立、使用和维护时由其统一管理、统一控制。 a.dbms b.db c.dbs d.dba 2. 下列四项中,不属于sql2005实用程序的是()。 a.对象资源管理器 b.查询分析器 c.服务管理器 d.媒体播放器 3. sql server安装程序创建4个系统数据库,下列哪个不是()系统数据库。 a. master b. model c. pub d. msdb 4. 下列哪个不是sql 数据库文件的后缀。 a..mdf b..ldf c..tif d..ndf 5. sql语言允许使用通配符进行字符串匹配的*作,其中?%?可以表示() a.零个字符 b.1个字符串 c. 多个字符串 d. 以上都是 6. sql语言中,条件年龄 between 15 and 35表示年龄在15至35之间,且( )。 a.包括15岁和35岁 b.不包括15岁和35岁 c.包括15岁但不包括35岁 d.包括35岁但不包括15岁 7. sql的视图是从()中导出的。 a. 基本表 b. 视图 c. 基本表或视图 d. 数据库 8. 在sql语言中,建立存储过程的命令是() a、create procedure b、create rule c、create dure d、create file 9. sql语言中,删除表中数据的命令是( )。 a. delete b. drop

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-0922 2005-05-1012 ------------------------------------------ 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='胜'then1else0end)'胜',sum(case when shengfu='负'then1else0end)'负'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)a1from temp1where col002='胜'group by col001)a, (select col001,count(col001)b1from temp1where 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

相关文档