文档库 最新最全的文档下载
当前位置:文档库 › sql练习题+答案

sql练习题+答案

sql练习题+答案
sql练习题+答案

(一)新建以下几个表

student(学生表):

sno sname sex dept birth age

其中约束如下:

(1)学号不能存在相同的

(2)名字为非空

(3)性别的值只能是’男’或’女’

(4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系

(5)出生日期为日期格式

(6)年龄为数值型,且在0~100之间

create table student(

sno smallint constraint a primary key,----设置学生学号为student的主键

sname varchar(10)not null,

sex varchar(2)constraint b check(sex in('男','女')),----检查约束——性别的值只能是’男’或’女’dept varchar(20)constraint c check(dept in('信息系','计算机科学系','数学系','管理系','中文系','外语系','法学系')),----检查约束——系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,

外语系,法学系

birth datetime,

age smallint constraint d check(age between0

and 100)----检查约束——年龄为数值型,且在~100之间)

cs(成绩表):

sno cno cj

其中约束如下:

(1)sno和cno分别参照student和course表中的sno,cno的字段

(2)cj(成绩)只能在0~100之间,可以不输入值

create table cs(

sno smallint not null references

student(sno),----定义成外键

cno smallint not null references

course(cno),----定义成外键

cj smallint constraint e check(cj between

0 and100),----检查约束——cj(成绩)只能在~100

之间,可以不输入值

constraint f primary key(sno,cno)----定

义学生学号和课程号为sc表的主键

)

course(课程表)

cno cname

其约束如下:

(1)课程号(cno)不能有重复的

(2)课程名(cname)非空

create table course(

cno smallint not null constraint g primary key,----设置课程号为course的主键

cname varchar(20)not null

)

(三)针对学生课程数据库查询

(1)查询全体学生的学号与姓名。

Select sno,sname from student

(2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。Select sname as'姓名',sno as'学号',dept as'所在地'from student

(3)查询全体学生的详细记录。

select*from student

(4)查全体学生的姓名及其出生年份。

select sname,birth from student

(5)查询学校中有哪些系。

select distinct dept from student

(6)查询选修了课程的学生学号。

select sno from cs where cno is not null

(7)查询所有年龄在20岁以下的学生姓名及其年龄。

select sname,age from student where age < 20

(8)查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。

select sname,dept,age from student where age between 20 and 23

(9)查询年龄不在20~23岁之间的学生姓名、系别和年龄。

select sname,dept,age from student where

age<20 or age>23

(10)查询信息系、数学系和计算机科学系生的姓名和性别。

select sname,sex from student where dept='信息系'or dept='数学系'or dept='计算机科学系'

(11)查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。select sname,sex from student where dept!='信息系'and dept!='数学系'and dept!='计算机科学系'

(12)查询所有姓刘学生的姓名、学号和性别。

select sname,sno,sex from student where sname like('刘%')

(13)查询学号为2009011的学生的详细情况。(具体的学号值根据表中数据

确定)

select*from student where sno=5

(14)查询姓“欧阳”且全名为三个汉字的学生姓名

select sname from student where sname like('欧阳_')

(15)查询名字中第2个字为“晨”字的学生的姓名和学号

select sname,sno from student where sname like('_晨')

(16)查询所有不姓刘的学生姓名。

select sname,sno from student where sname not like('刘%')

(17)查询sql课程的课程号和学分。

select cno from course where cname='sql' (18)查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况。

select*from course where cname

like('DB[_]%i__')

(19)查询缺少成绩的学生的学号和相应的课程号。

select sno,cno from cs where cj is null

(20)查所有有成绩的学生学号和课程号。

select sno,cno from cs where cj is not null

(21)查询计算机系年龄在20岁以下的学生姓名。

select sname from student where age < 20 and dept='计算机科学系'

(22)查询信息系、数学系和计算机科学系学生的姓名和性别。(使用多个条

件表达式)

select sname,sex from student where dept='信息系'or dept='数学系'or dept='计算机科学系'

(23)查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年

龄。(使用多个条件表达式)

select sname,dept,age from student where age between 20 and 23

(24)查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。

select sno,cj from cs where cno=3 order by cj desc

(25)查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学

生按年龄降序排列。

select*from student order by dept asc,age desc

(26)查询学生总人数。

select count(*)from student

(27)查询选修了课程的学生人数。

select count(sno)from cs where cno is not null

(28)计算1号课程的学生平均成绩。

select avg(cj)from cs where cno=1

(29)查询选修1号课程的学生最高分数。

select max(cj)from cs where cno=1

(30)求各个课程号及相应的选课人数。

select https://www.wendangku.net/doc/a9224275.html,o,count(cs.sno)from course

left join cs

on https://www.wendangku.net/doc/a9224275.html,o=https://www.wendangku.net/doc/a9224275.html,o group by https://www.wendangku.net/doc/a9224275.html,o

(31)查询选修了3门以上课程的学生学号。

select sno,count(cno)from cs group by sno having count(cno)>3

(32)查询有3门以上课程是90分以上的学生的学号及(90分以上的)课程数。select sno,count(cno)as'课程数'from cs where cj>90

group by sno having count(cno)>=3

(33)查询学生2006011选修课程的总学分。

select sum(course)from course,cs where https://www.wendangku.net/doc/a9224275.html,o=cs.sno and cs.sno=2006011

(34)查询每个学生选修课程的总学分。

select sno,sum(cj)from cs,course

where https://www.wendangku.net/doc/a9224275.html,o=https://www.wendangku.net/doc/a9224275.html,o

group by sno

union

select sno, 0 from student

where sno not in(select sno from cs)

(35)查询每个学生及其选修课程的情况。

select cs.sno,course.*from cs,course where https://www.wendangku.net/doc/a9224275.html,o=https://www.wendangku.net/doc/a9224275.html,o

(36)查询选修2号课程且成绩在90分以上的所有学生的学号、姓名

select sno,sname from student where

sno=(select sno from cs where cno=2 and cj>90)

(37)查询每个学生的学号、姓名、选修的课程名及成绩。

select

student.sno,sname,course.course,cs.cj

from student,course,cs where

student.sno=cs.sno and https://www.wendangku.net/doc/a9224275.html,o=https://www.wendangku.net/doc/a9224275.html,o

(38)查询与“刘晨”在同一个系学习的学生(分别用嵌套查询和连接查询)----嵌套查询

select*from student where dept in

(select dept from student where sname='刘晨

----连接查询

select stu1.*from student as stu1,student as stu2

where stu1.dept=stu2.dept and stu2.sname='刘晨'

----exists查询

select*from student s1 where exists( select*from student s2 where s1.dept=s2.dept and

s2.sname='刘晨'

)

(39)查询选修了课程名为“信息系统”的学生学号和姓名

select sno,sname from student where sno in (select sno from cs where cno in(select cno from course where cname='信息系统'))

(40)查询其他系中比信息系任意一个(其中某一个)学生年龄小的学生姓名

和年龄

select sname,age from student where age

----聚合函数

select sname,age from student where age < (select min(age)from student where dept='信息系')

(42)查询所有选修了1号课程的学生姓名。(分别用嵌套查询和连查询)

----嵌套查询

select sname from student where sno in (select sno from cs where cno=1)

----连接查询

select sname from student,cs

where student.sno=cs.sno and https://www.wendangku.net/doc/a9224275.html,o=1

(43)查询没有选修1号课程的学生姓名。

select sname from student where sno in (select sno from cs where cno!=1)

(44)查询选修了全部课程的学生姓名。

select sname from student where not exists (select*from course where not exists (select*from cs where

cs.sno=student.sno and

https://www.wendangku.net/doc/a9224275.html,o=https://www.wendangku.net/doc/a9224275.html,o))

(45)查询至少选修了学生95002选修的全部课程的学生号码。

select distinct sno from sc scx where not exists

(select*from cs scy where scy.sno='95002' and not exists

(select*from sc scz where scz.sno=scx.sno and https://www.wendangku.net/doc/a9224275.html,o=https://www.wendangku.net/doc/a9224275.html,o))

(46)查询计算机科学系的学生及年龄不大于19岁的学生的信息。

select*from student where dept='计算机科学系'or age<19

(47)查询选修了课程1或者选修了课程2的学生的信息。

select student.*from student,cs where student.sno = cs.sno and(https://www.wendangku.net/doc/a9224275.html,o=1 or

https://www.wendangku.net/doc/a9224275.html,o=2)

(48)查询计算机科学系中年龄不大于19岁的学生的信息。

select*from student where age<=19 and dept='计算机科学系'

(49)查询既选修了课程1又选修了课程2的学生的信息。

select*from student where sno in(

select sno from cs where cno='003'and sno in( select sno from cs where cno='004'

))

----用exists查询

select*from student where exists(

select*from cs where student.sno=cs.sno and cno='003'and sno in(

select sno from cs where cno='004'

))

(50)查询计算机科学系的学生与年龄不大于19岁的学生的差集。

select*from student where dept='计算机科学系'and age>19

(51)通过查询求学号为1学生的总分和平均分。

select sum(cj)as'总分',avg(cj)'平均分'from cs where sno=1

(52)求出每个系的学生数量

select dept,count(sno)as'学生个数'from student group by dept

(53)查询平均成绩大于85的学生学号及平均成绩。

select sno,avg(cj)from cs group by sno having avg(cj)>85

(54)要求查寻学生的所有信息,并且查询的信息按照年龄由高到低排序,如果年龄相等,则按照学号从低到高排序

select*from student order by age desc,sno asc

1.在SELECT语句中DISTINCT、ORDER BY、GROUP BY和HA VING 子句的功能各是什么?

答各子句的功能如下。

DISTINCT:查询唯一结果。

ORDER BY:使查询结果有序显示。

GROUP BY:对查询结果进行分组。

HA VING:筛选分组结果。

2.在一个SELECT语句中,当WHERE子句、GROUP BY子句和HA VING 子句同时出现在一个查询中时,SQL的执行顺序如何?

答其执行顺序如下:

(1)执行WHERE子句,从表中选取行。

(2)由GROUP BY对选取的行进行分组。

(3)执行聚合函数。

(4)执行HA VING子句选取满足条件的分组。

第三章 SQL语言练习题和答案

第三章SQL语言 一、选择题 1. SQL语言是(B )的语言,容易学习。 A.过程化 B. 非过程化 C.格式化 D. 导航式 2. SQL语言的数据操纵语句包括SELECT、INSERT、UPDATE、DELETE等。其中最重要的,也是使用最频繁的语句是(A)。 A. SELECT B. INSERT C. UPDATE D. DELETE 3. 在视图上不能完成的操作是()。 A. 更新视图 B. 查询 C. 在视图上定义新的表 D. 在视图上定义新的视图 4. SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,CREATE、DROP、ALTER语句是实现哪种功能()。 A. 数据查询 B. 数据操纵 C. 数据定义 D. 数据控制 5. SQL语言中,删除一个视图的命令是()。 A.DELETE B.DROP C.CLEAR D.REMOVE 6. 在SQL语言中的视图VIEW是数据库的()。 A. 外模式 B. 模式 C. 内模式 D. 存储模式 7. 下列的SQL语句中,()不是数据定义语句。 A. CREATE TABLE B. DROP VIEW C. CREATE VIEW D. GRANT 8. 若要撤销数据库中已经存在的表S,可用()。 A. DELETE TABLE S B. DELETE S C. DROP TABLE S D. DROP S 9. 若要在基本表S中增加一列CN(课程名),可用()。 A.ADD TABLE S(CN CHAR(8)) B.ADD TABLE S ALTER(CN CHAR(8)) C.ALTER TABLE S ADD(CN CHAR(8)) D.ALTER TABLE S (ADD CN CHAR(8)) 10. 学生关系模式S(S#,Sname,Sex,Age),S的属性分别表示学生的学号、姓名、性别、年龄。要在表S中删除一个属性“年龄”,可选用的SQL语句是()。 A. DELETE Age from S B. ALTER TABLE S DROP Age C. UPDATE S Age D. ALTER TABLE S ‘Age’ 11. 有关系S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#,GRADE)。其中S#是学生号,SNAME是学生姓名,SAGE是学生年龄,C#是课程号,CNAME是课程名称。要查询选修“ACCESS”课的年龄不小于20的全体学生姓名的SQL语句是SELECT SNAME FROM S,C,SC WHERE子句。这里的WHERE子句的内容是()。

sql练习题+答案

(一)新建以下几个表 student(学生表): 其中约束如下: (1)学号不能存在相同的 (2)名字为非空 (3)性别的值只能是’男’或’女’ (4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系 (5)出生日期为日期格式 (6)年龄为数值型,且在0~100之间

cs(成绩表): 其中约束如下: (1)sno和cno分别参照student和course表中的sno,cno的字段(2)cj(成绩)只能在0~100之间,可以不输入值 course(课程表)

其约束如下: (1)课程号(cno)不能有重复的 (2)课程名(cname)非空 (三)针对学生课程数据库查询 (1)查询全体学生的学号与姓名。 (2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。 (3)查询全体学生的详细记录。 (4)查全体学生的姓名及其出生年份。 (5)查询学校中有哪些系。

(6)查询选修了课程的学生学号。 (7)查询所有年龄在20岁以下的学生姓名及其年龄。 (8)查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。 (9)查询年龄不在20~23岁之间的学生姓名、系别和年龄。 (10)查询信息系、数学系和计算机科学系生的姓名和性别。 (11)查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。 (12)查询所有姓刘学生的姓名、学号和性别。

(13)查询学号为2009011的学生的详细情况。(具体的学号值根据表中数据确定) (14)查询姓“欧阳”且全名为三个汉字的学生姓名 (15)查询名字中第2个字为“晨”字的学生的姓名和学号 (16)查询所有不姓刘的学生姓名。 (17)查询sql课程的课程号和学分。 (18)查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况。 (19)查询缺少成绩的学生的学号和相应的课程号。

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语句

MySQL练习题及答案

答案见参考下列黄色标记 一、下面所有题目中包括单选或多选 1.若MySQL Server运行在Linux系统上,那访问MySQL服务器的客 户端程序也必须运行在Linux系统吗? A.是 B. 否 2.MySQL与其他关系型数据库(SQL Server/Oracle)架构上最大的区别 是? A.连接层 B. SQL层 C.存储引擎层 3.MySQL使用磁盘空间来存储下面哪些信息? A.server和client程序、其他lib库文件 B.日志文件和状态文件 C.数据库 D.表格式(.frm)文件、数据文件、索引文件 E.当内部临时表超过控制设置时,由内存表形式转化为磁盘形式存储 F.上面所有 4.下面哪四种是mysql客户端程序的功能? A.创建、删除数据库 B.创建、删除、修改表和索引

C.使用shutdown命令关闭服务器 D.创建、管理用户 E.显示replication状态信息 F.使用start backup命令来进行数据库二进制备份 5.在MySQL内部有4种常见日志,哪种日志是不能直接cat或more 文本查阅日志内容? A.错误日志(error-log) B.二进制日志(bin-log) C.查询日志(query-log) D.慢查询日志(slow-log) 6.下面哪三种方式可以查看Country表的存储引擎? A.SHOW CREATE TABLE Country; B.SHOW ENGINE Country STATUS;; C.SHOW TABLE STATUS LIKE ‘Country’; D.SELECT ENGINE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=’Country’; E.SELECT ENGINE FROM INFORMATION_SCHEMA.ENGINES WHERE TABLE_NAME =’County’; 7.在高并发、事务等场景下,MySQL5.6数据库默认使用哪种存储引

SQL复习题答案

SQL Server数据库应用管理-习题集 说明:本习题集所涉及的数据库,名为Student,其数据表有3个,分别是学生(学号,,性别,年龄),课程(课号,课名,学分),选修(学号,课号,成绩)。 一、单项选择题 1.下列属于SQL Server系统数据库的是。 A.master B.Sysbase C.student D.Database 2.SQL Server中,数据库主数据文件扩展名为。 A.ldf B.mdf C.ndf D.dbf 3.SQL Server中,索引类型按结构划分,包括。 A.聚集索引和非聚集索引B.主索引和次索引C.单索引和复合索引D.索引和外索引4.SQL Server的数据定义语句是。定义:创建 A.CREATE,DROP,ALTER B.INSERT,UPDATE,DELETE C.SELECT,DELETE,UPDATE D.CREATE,GRANT,INSERT 5.下面的描述正确的是。 A.每个数据文件中可以有多个主数据文件 B.只允许有一个次数据文件。 C.一个数据库有主数据库文件即可。 D.一个数据库至少由一个主数据文件和一个日志文件组成。 6.下面字符串能与通配符表达式 ABC%a 进行匹配的是。 A. BCDEF B.A_BCD C. ABCDa D. ACBDE 7.下列属于数据库管理系统的是。 A.SQL Server 2005 B.Excel

C.Windows 2000 D.IE6 8.实体完整性要求主属性不能取空值,这一点通常是通过实现。A.定义外部键来保证 B.定义主键来保证 C.用户定义的完整性来保证 D.关系系统自动保证 9.SQL Server的数据操纵命令是。 A.SELECT,INSERT,UPDATE,DELETE B.CREATE,INSERT,UPDATE,DELETE C.GRANT,CREATE,REVOKE D.SELECT,CREATE,DROP,ALTER 10.下面的描述错误的是。 A. 每个数据文件中有且只有一个主数据文件 B.可以有多个次数据文件。 C.一个数据库有主数据库文件即可。 D.一个数据库至少由主数据文件和日志文件组成。 11.对于查询语句的结果,有时会出现重复的数据行,可以使用以下哪个关键字可消去重复记录行。 A. Only B. Select C. Distinct D. Order by 12.下列说法中正确的是。 A.SQL 中局部变量可以不声明就使用 B.SQL 中全局变量必须先声明再使用 C.SQL 中所有变量都必须先声明后使用 D.SQL 中只有局部变量先声明后使用;全局变量是由系统提供的用户不能自己建立。 13.下面对索引的相关描述正确的是:。 A. 经常被查询的列不适合建索引。

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’课的学分赋值给变量的语句是哪一个()。

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/a9224275.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查询题目及答案

数据库中有如下三个表: 学生表(学号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经典笔试题目(整理)

一单词解释(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 SERVER练习题及答案学习资料

S Q L S E R V E R练习题 及答案

题目1: 问题描述: 为管理岗位业务培训信息,建立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 SN,SD FROM S WHERE [S#] IN( SELECT [S#] FROM C,SC WHERE C.[C#]=SC.[C#] AND CN=N\'税收基础\') 2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位 --实现代码: SELECT S.SN,S.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. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位 --实现代码: SELECT SN,SD FROM S

WHERE [S#] IN( SELECT [S#] FROM SC RIGHT JOIN C ON SC.[C#]=C.[C#] GROUP BY [S#] HAVING COUNT(*)=COUNT([S#])) 5. 查询选修了课程的学员人数 --实现代码: SELECT 学员人数=COUNT(DISTINCT [S#]) FROM SC 6. 查询选修课程超过5门的学员学号和所属单位 --实现代码: SELECT SN,SD FROM S WHERE [S#] IN( SELECT [S#] FROM SC GROUP BY [S#] HAVING COUNT(DISTINCT [C#])>5) 题目2 问题描述: 本题用到下面三个关系表: CARD 借书卡。 CNO 卡号,NAME 姓名,CLASS 班级 BOOKS 图书。 BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价,QUANTITY 库存册数 BORROW 借书记录。 CNO 借书卡号,BNO 书号,RDATE 还书日期 备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。 要求实现如下15个处理: 1.写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束。

数据库sql练习题

use test /* 问题及描述: --1.学生表 Student(S#,Sname,Sage,Ssex) --S# 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别--2.课程表 Course(C#,Cname,T#) --C# --课程编号,Cname 课程名称,T# 教师编号 --3.教师表 Teacher(T#,Tname) --T# 教师编号,Tname 教师姓名 --4.成绩表 SC(S#,C#,score) --S# 学生编号,C# 课程编号,score 分数 select * from Student select * from Course select * from Teacher select * from SC */ --创建测试数据 create table Student(S# varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10)) insert into Student values('01', N'赵雷','1990-01-01', N'男') insert into Student values('02', N'钱电','1990-12-21', N'男') insert into Student values('03', N'孙风','1990-05-20', N'男') insert into Student values('04', N'李云','1990-08-06', N'男') insert into Student values('05', N'周梅','1991-12-01', N'女') insert into Student values('06', N'吴兰','1992-03-01', N'女') insert into Student values('07', N'郑竹','1989-07-01', N'女') insert into Student values('08', N'王菊','1990-01-20', N'女') create table Course(C# varchar(10),Cname nvarchar(10),T# varchar(10)) insert into Course values('01', N'语文','02') insert into Course values('02', N'数学','01') insert into Course values('03', N'英语','03') create table Teacher(T# varchar(10),Tname nvarchar(10)) insert into Teacher values('01', N'张三') insert into Teacher values('02', N'李四') insert into Teacher values('03', N'王五') create table SC(S# varchar(10),C# varchar(10),score decimal(18,1)) insert into SC values('01','01', 80) insert into SC values('01','02', 90) insert into SC values('01','03', 99) insert into SC values('02','01', 70) insert into SC values('02','02', 60) insert into SC values('02','03', 80)

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

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

SQL SERVER练习题及答案

题目1: 问题描述: 为管理岗位业务培训信息,建立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 SN,SD FROM S WHERE [S#] IN( SELECT [S#] FROM C,SC WHERE C.[C#]=SC.[C#] AND CN=N\'税收基础\') 2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位 --实现代码: SELECT S.SN,S.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. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位 --实现代码: SELECT SN,SD FROM S WHERE [S#] IN( SELECT [S#] FROM SC RIGHT JOIN C ON SC.[C#]=C.[C#] GROUP BY [S#] HA VING COUNT(*)=COUNT([S#])) 5. 查询选修了课程的学员人数 --实现代码: SELECT 学员人数=COUNT(DISTINCT [S#]) FROM SC 6. 查询选修课程超过5门的学员学号和所属单位 --实现代码: SELECT SN,SD FROM S WHERE [S#] IN( SELECT [S#] FROM SC GROUP BY [S#] HA VING COUNT(DISTINCT [C#])>5)

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

sql语句练习题及答案

一在数据库 school 中建立student , sc, course 表。 学生表、课程表、选课表属于数据库 School ,其各自的数据结构如下:学生 Student (Sno,Sname,Ssex,Sage,Sdept) 课程表 course(Cno,Cname,Cpno,Ccredit) 学生选课 SC(Sno,Cno,Grade) 二设定主码 1 Student表的主码:sno 2 Course表的主码:cno 3 Sc表的主码:sno,cno 1写出使用 Create Table 语句创建表 student , sc, course 的SQL语句create table student (sno char(6), sname varchar(8), ssex char(2), sage smallint, sdept varchar(15), primary key(sno)); Create table course( Cno char(4) primary key, Cname varchar(20), Cpno char(4),

Ccredit tinyint) create table sc (sno char(6), cno char(4), grade decimal(12,2), primary key(sno,cno)); c 2 insert into student values( ’4001’,’赵茵’,’男’,20,’SX’) insert into student values( ’4002’,’杨华’,’女’,21,’JXJ’) Delete 1 删除所有 JSJ 系的男生 delete from Student where Sdept=’JSJ’ and Ssex=’男’; 2 删除“数据库原理”的课的选课纪录 delete from SC where Cno in (select Cno fromCourse where Cname=’数据库原理’); Update 1 修改 0001 学生的系科为: JSJ Update student set sdept=’JSJ’ where sno=’0001’ 2 把陈小明的年龄加1岁,性别改为女。 Update student set age=age+1,ssex=’女’ where sname=’陈小明’ Select 查询语句 一单表 1查询年龄在19至21岁之间的女生的学号,姓名,年龄,按年龄从大到小排列。 select sno, sname, sage from student where ssex=’女’ and sage between 19 and 21 order by sage desc; 2查询姓名中第2个字为“明”字的学生学号、性别。 select sno, ssex from student where sname like ’_明% ’ ; 3查询 1001课程没有成绩的学生学号、课程号

相关文档