文档库 最新最全的文档下载
当前位置:文档库 › SQL练习及答案

SQL练习及答案

SQL练习及答案
SQL练习及答案

问题描述:

为管理岗位业务培训信息,建立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 SN,SD FROM S

Where [S#]IN (

Select [S#] FROM SC

Where [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

GROUP BY [S#]

HAVING Count (Distinct C#)

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

问题描述:

已知关系模式:

S (SNO,SNAME) 学生关系。SNO 为学号,SNAME 为姓名

C (CNO,CNAME,CTEACHER) 课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师SC(SNO,CNO,SCGRADE) 选课关系。SCGRADE 为成绩

1.找出没有选修过“李明”老师讲授课程的所有学生姓名

Select SNAME FROM S

Where NOT EXISTS(

Select * FROM SC,C

Where https://www.wendangku.net/doc/fb6311477.html,O=https://www.wendangku.net/doc/fb6311477.html,O

AND CNAME='李明'

AND SC.SNO=S.SNO)

2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩

Select S.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE)

FROM S,SC,(

Select SNO

FROM SC

Where SCGRADE<60

GROUP BY SNO

HAVING COUNT(DISTINCT CNO)>=2

)A Where S.SNO=A.SNO AND SC.SNO=A.SNO

GROUP BY S.SNO,S.SNAME

3. 列出既学过“1”号课程,又学过“2”号课程的所有学生姓名

Select S.SNO,S.SNAME

FROM S,(

Select SC.SNO

FROM SC,C

Where https://www.wendangku.net/doc/fb6311477.html,O=https://www.wendangku.net/doc/fb6311477.html,O

AND https://www.wendangku.net/doc/fb6311477.html,AME IN('1','2')

GROUP BY SNO

HAVING COUNT(DISTINCT CNO)=2

)SC Where S.SNO=SC.SNO

4. 列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号

Select S.SNO,S.SNAME

FROM S,(

Select SC1.SNO

FROM SC SC1,C C1,SC SC2,C C2

Where https://www.wendangku.net/doc/fb6311477.html,O=https://www.wendangku.net/doc/fb6311477.html,O AND https://www.wendangku.net/doc/fb6311477.html,='1'

AND https://www.wendangku.net/doc/fb6311477.html,O=https://www.wendangku.net/doc/fb6311477.html,O AND https://www.wendangku.net/doc/fb6311477.html,='2'

AND SC1.SCGRADE>SC2.SCGRADE

)SC Where S.SNO=SC.SNO

5. 列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩

Select S.SNO,S.SNAME,SC.[1号课成绩],SC.[2号课成绩]

FROM S,(

Select SC1.SNO,[1号课成绩]=SC1.SCGRADE,[2号课成绩]=SC2.SCGRADE

FROM SC SC1,C C1,SC SC2,C C2

Where https://www.wendangku.net/doc/fb6311477.html,O=https://www.wendangku.net/doc/fb6311477.html,O AND https://www.wendangku.net/doc/fb6311477.html,='1'

AND https://www.wendangku.net/doc/fb6311477.html,O=https://www.wendangku.net/doc/fb6311477.html,O AND https://www.wendangku.net/doc/fb6311477.html,='2'

AND SC1.SCGRADE>SC2.SCGRADE

)SC Where S.SNO=SC.SNO

SQL Server笔试题(Sql2000常见笔试题)

一单词解释(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语句影响的行的副本

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

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

模拟测验1 一、选择题(在每个小题四个备选答案中选出一个正确答案,填在题末的括号中)(本大题共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语言中,条件年龄BETWEEN15AND35表示年龄在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 C.CLEAR D.REMOVE 10.在MS SQL Server中,用来显示数据库信息的系统存储过程是()。 A.sp_dbhelp B.sp_db C.sp_help D.sp_helpdb 二、简答题(16分) 1、什么是游标?使用游标的步骤? 2、什么是事务?事务的基本属性是什么? 三、应用题 1、创建一个名字为ks的数据库,包含一个数据文件和一个日志文件,逻辑文件名为ks_data,磁盘文件名为ks_data.mdf,文件初始容量为5MB,最大容量为10MB,文件递增量为1MB;而事务日志文件的逻辑文件名ks_log,磁盘文件名为ks_log.ldf,文件初始容量为1MB,最大容量为5MB,文件递增量为1MB(数据库创建在C:\SERVER文件夹下)(10分) 2、假设ks数据库有以下三张表,请写出下列问题的SQL语句:(每题6分,共54分) 学生(学号,姓名,年龄,性别) 课程(课程号,课程名,任课教师) 成绩(学号,课程号,成绩) (1)如何在SQL Server上创建这三张表; (2)查询刘峰教师所授课程号,课程名; (3)查询年龄大于20岁的所有男同学的学号、姓名; (4)查询王文芳同学选修的所有课程的课程号;

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经典习题及答案(新手必看)

Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题: 1、查询“001”课程比“002”课程成绩高的所有学生的学号; select a.S# from (select s#,score from SC where C#='001') a,(select s#,score from SC where C#='002') b where a.score>b.score and a.s#=b.s#; 2、查询平均成绩大于60分的同学的学号和平均成绩; select S#,avg(score) from sc group by S# having avg(score) >60; 3、查询所有同学的学号、姓名、选课数、总成绩; select Student.S#,Student.Sname,count(SC.C#),sum(score) from Student left Outer join SC on Student.S#=SC.S# group by Student.S#,Sname 4、查询姓“李”的老师的个数; select count(distinct(Tname)) from Teacher where Tname like '李%'; 5、查询没学过“叶平”老师课的同学的学号、姓名; select Student.S#,Student.Sname from Student where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平'); 6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名; select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002'); 7、查询学过“叶平”老师所教的所有课的同学的学号、姓名; select S#,Sname from Student where S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='叶平')); 8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名; Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2 from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 60);

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

--(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/fb6311477.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习题及答案

题 1、查询Student表中得所有记录得Sname、Ssex与Class列。 2、查询教师所有得单位即不重复得Depart列。 3、查询Student表得所有记录。 4、查询Score表中成绩在60到80之间得所有记录。 5、查询Score表中成绩为85,86或88得记录。 6、查询Student表中“95031”班或性别为“女”得同学记录。 7、以Class降序查询Student表得所有记录。 8、以Cno升序、Degree降序查询Score表得所有记录。 9、查询“95031”班得学生人数。 10、查询Score表中得最高分得学生学号与课程号。 11、查询‘3-105’号课程得平均分。 12、查询Score表中至少有5名学生选修得并以3开头得课程得平均分数。 13、查询最低分大于70,最高分小于90得Sno列。 14、查询所有学生得Sname、Cno与Degree列。 15、查询所有学生得Sno、Cname与Degree列。 16、查询所有学生得Sname、Cname与Degree列。 17、查询“95033”班所选课程得平均分。

18、假设使用如下命令建立了一个grade表: create table grade(low numeric(3,0),upp numeric(3),rank char(1)); insert into grade values(90,100,'A'); insert into grade values(80,89,'B'); insert into grade values(70,79,'C'); insert into grade values(60,69,'D'); insert into grade values(0,59,'E'); 现查询所有同学得Sno、Cno与rank列。 19、查询选修“3-105”课程得成绩高于“109”号同学成绩得所有同学得记录。 20、查询score中选学一门以上课程得同学中分数为非最高分成绩得记录。 21、查询成绩高于学号为“109”、课程号为“3-105”得成绩得所有记录。 22、查询与学号为108得同学同年出生得所有学生得Sno、Sname与Sbirthday列。 23、查询“张旭“教师任课得学生成绩。 24、查询选修某课程得同学人数多于5人得教师姓名。 25、查询95033班与95031班全体学生得记录。 26、查询存在有85分以上成绩得课程Cno、 27、查询出“计算机系“教师所教课程得成绩表。 28、查询“计算机系”与“电子工程系“不同职称得教师得Tname与Prof。

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练习题+答案

(一)新建以下几个表 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的课程的详细情况。

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课程没有成绩的学生学号、课程号

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

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

SQL数据库题库及答案 (1)

实训13 1.使用T-SQL语句创建“Windows身份验证”登录名(对应的Windows用户为testwin)。 create login [stu1001\testwin] from windows exec sp_addlogin 'aa' , '123' /*用存储过程创建sql登录名*/ 2.使用T-SQL语句查看所创建的登录名“testwin”的属性。select loginname,sid from master.sys.syslogins 3.使用T-SQL删除登录名“testwin”。 drop login [stu1001\testwin] 4.使用SSMS创建与登录名“testsql”对应的数据库用户“sqluser”(对应于数据库WebShop),并查看其属性 5.使用SSMS删除数据库用户“sqluser”。 6.使用T-SQL语句创建与登录名“testwin”对应的数据库用户“winuser”。 use webshop create user [winuser] for login [stu1001\testwin] 7.将数据库用户“winuser”修改为“win”。 use webshop alter user [winuser] with name=win /* Alter User的语法结构:

ALTER USER userName WITH [ ,...n ] ::= NAME = newUserName | DEFAULT_SCHEMA = { schemaName | NULL } | LOGIN = loginName | PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ] | DEFAULT_LANGUAGE = { NONE | | | } */ 1.使用SSMS或T-SQL语句查看WebShop数据库中数据库用户的信息。 select * from SYSUSERS 2.使用T-SQL删除数据库用户“win”。 drop user win 3.使用SSMS将数据库用户sqluser添加到db_owner角色中。 4.使用T-SQL在WebShop数据库中创建用户定义数据库角色 “db_myuser”。 use webshop create role db_myuser 5.将数据库用户“sqluser”添加到“db_myuser”角色中。(截图以示结果) 6.使用SSMS授予数据库用户“sqluser”对Goods表的查询权限。(截图以示结果) grant select on Goods to sqluser

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/fb6311477.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.e name,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模拟考试题及答案1

SQL模拟考试题及答案 选择题 数据库概念模式产生于数据库系统设计的 _C______ 阶段。 A 、规划 B 、需求分析 C 、概念设计 D 、逻辑设计 以下运算符中优先级最低的是( D )。 (A)+(加)(B)=(等于)(C)like (D)=(赋值) 在SQL中,SELECT语句的“SELECT TOP 10 ”表示查询结果中 ( A ) A.前10条记录 B. 后10条记录 C. 前10%条记录 D. 后10%条记录 下列哪些语句用于删除存储过程( C )? A、CREATE PROCEDURE B、CREATE TABLE C、DROP PROCEDURE D、其他print round ( 998.88 , 0 ),round(999.99,-1) 执行结果是:C A 、 999.00 , 990.00 B 、 999.00 , 1000.00 C 、 998.00 , 1000.00 D 、 999.00 , 999.99 下列语句中正确的是 _____B__ 。表 score(sti_id,names,math,English,VB) A) select stu_id,sum(math) from score B) select sum(math),avg(VB) from score C) select * ,sum(english) from score D) delete * from score SELECT语句中与HAVING子句通常同时使用的是( C )子句。 A.ORDER BY B.WHERE C.GROUP BY D.无需配合 关系数据模型 ______D_ 。 A) 只能表示实体间的 1 : 1 联系 B) 只能表示实体间的 1 : n 联系 C) 只能表示实体间的 m : n 联系 D) 只能表示实体间的上述 3 种联系 SQL Server 2000 企业版可以安装在操作系统上。C (A)Microsoft Windows 98 (B)Microsoft Windows 2000 Professional (C)Microsoft Windows 2000 Server (D)Microsoft Windows XP SQL Server 2000提供了一整套管理工具和实用程序,其中只负责启动、暂停和停止SQL Server的4种服务的是( D )。

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

查询问题:设教学数据库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的学生学号与姓名; (3)检索选修课程名为“DS”的学生学号与姓名本查询涉及到学号、姓名和课程名三个属性,分别 存放在S和C表中,但S和C表没有直接联系,必须通过SC表建立它们二者的联系。 C → SC → S 基本思路: (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 = AND =‘C2’ AND =‘C4’; (6)检索不学C2课的学生姓名和年龄; (7)检索学习全部课程的学生姓名; 在表S中找学生,要求这个学生学了全部课程。换言之,在S表中找学生,在C中不存在一门课程,这个学生没有学。 SELECT Sname FROM S WHERE NOT EXISTS (SELECT * FROM C WHERE NOT EXISTS (SELECT * FROM SC WHERE = AND =)); (8)查询所学课程包含学生S3所学课程的学生学号。分析:不存在这样的课程Y,学生S3选了Y,而其他学生没有选。 SELECT DISTINCT Sno FROM SC AS X WHERE NOT EXISTS (SELECT * FROM SC AS Y WHERE =‘S3’ AND NOT EXISTS (SELECT * FROM SC AS Z WHERE = AND =));

相关文档