test SQL

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

. 在SQL中,建立表用的命令是 ( B )。

A.CREATE SCHEMA
B.CREATE TABLE
C.CREATE VIEW
D.CREATE INDEX
.SQL语言中,条件年龄 BETWEEN 15 AND 35表示年龄在15至35之间,且( A )。

A.包括15岁和35岁
B.不包括15岁和35岁
C.包括15岁但不包括35岁
D.包括35岁但不包括15岁
.在MS SQL Server中,用来显示数据库信息的系统存储过程是( D )。

A. sp_dbhelp
B. sp_db
C. sp_help
D. sp_helpdb
.SQL语言中,删除表中数据的命令是( A )。

A. DELETE
B. DROP
C. CLEAR
D. REMOVE
.SQL的视图是从(C)中导出的。

A. 基本表
B. 视图
C. 基本表或视图
D. 数据库
.SQL Server 2000局部变量名字必须以__@__开头,而全局变量名字必须以__@@___开头。

.在SQL Server 中,数据库对象包括_游标__视图____、触发器、过程、列、索引、约束、规则、默认和用户自定义的数据类型等。

设计题
现有关系数据库如下:
数据库名:我班同学数据库
同学表(学号 char(6),姓名,性别,年龄,民族,身份证号,宿舍号)
宿舍表(宿舍号 char(6),宿舍电话)
用SQL语言实现下列功能的sql语句代码:
1.创建数据库[我班同学数据库]代码。

create database 我班同学数据库
2.创建数据表[宿舍表]代码;
宿舍表(宿舍号 char(6),宿舍电话)
要求使用:主键(宿舍号)、宿舍电话:以633开头的7位电话号码
Use 我班同学数据库
Create table 宿舍表
(宿舍号 char(6) primary key,
宿舍电话 char(7) not null
Check(宿舍电话 like '633[0-9][0-9][0-9][0-9]')
3.创建数据表[同学表]代码;
同学表(学号 char(6),姓名,性别,年龄,民族,身份证号,宿舍号)
要求使用:主键(学号)、外键(宿舍号)、默认(民族)、非空(民族,姓名,年龄)、唯一(身份证号)、检查(性别)
Create table 同学表
(学号 char(6), Primary key
姓名 char(10) not null,
性别 char(1),
年龄 int not null,
民族 char(6) not null,
身份证号 char(18) unique,
宿舍号 char(3),
Foreign key (宿舍号) reference 宿舍表(宿舍号),
Check(性别in '男' or '女')
4.将下列宿舍信息添加到宿舍表的代码
宿舍号宿舍电话
101 6331157
102 6331777
Insert into 宿舍表(宿舍号,宿舍号码) values('101','6331157'), Insert into 宿舍表(宿舍号,宿舍号码) values('102','6331777') 修改宿舍号为101的宿舍电话:6331158
update table 宿舍表 set 宿舍电话=’6331158’ where 宿舍号 =’101’
删除宿舍号为102的宿舍信息
Delete from 宿舍表 Where 宿舍号='102'
5.创建视图[同学表视图]代码;
同学表视图(学号, 姓名, 性别, 年龄, 民族, 身份证号, 宿舍号, 宿舍电话) Create view 同学表视图
As
Select 学号,姓名,性别,年龄,民族,身份证号,宿舍号,宿舍电话
From 同学表,宿舍表
Where 宿舍表.宿舍号=同学表.宿舍号
6.从同学表视图中查询姓张的女同学的姓名、性别、宿舍电话。

Select 姓名,性别,宿舍电话 from 同学表视图 where 姓名like'张%'
7.从同学表中查询女同学的最大年龄、最小年龄、平均年龄。

Select Max(年龄) as 最大年龄,Min(年龄) as 最小年龄,AVG(年龄) as 平均年龄From 同学表
Where 性别=‘女’
8.创建带参数的存储过程查询[某宿舍同学姓名, 性别, 宿舍电话
执行此过程,查询'101'宿舍情况
Create proc name1 @proc1
Select 行么,性别,宿舍电话 from 宿舍表,同学表
Where @proc1=宿舍号宿舍表.宿舍号=同学表.宿舍号
Exec name1 @proc1=101
8.设置一SQL身份验证的用户账户:登录名:U班主任,密码:888,数据库用户名:U读
者,权限:可查询查询本数据库中所有表、视图、内嵌表值函数的数据,执行所有的存储过程。

请写出账户、权限设置的T_SQL脚本。

Exec sp_addlogin’U班主任’,’888’,’我班同学数据库’
Exec sp_grantdbaccess ‘U读者’
Exec sp_addrolemember’db-reader’,’U班主任’
判断
Y、每一个服务器必须属于一个服务器组。

一个服务器组可以包含0个、一个或多个服务器。

Y、验证模式是在安装SQL Server过程中选择的。

系统安装之后,可以重新修改SQL Server 系统的验证模式。

Y、固定数据库角色:db_datareader 的成员不能修改本数据库内表中的数据。

Y、当用户定义的数据类型正在被某个表的定义引用时,这些数据类型不能被删除。

N、在使用子查询时,必须使用括号把子查询括起来,以便区分外查询和子查询。

N、索引越多越好。

Y、视图本身不保存数据,因为视图是一个虚拟的表。

N、创建触发器的时候可以不是表的所有者或数据库的所有者。

填空
、SQL Server登录身份验证模式类型有_windows身份验证_和_混合身份验证模式_ 两种。

、表是由行和列组成的,行有时也称为_元组_,列有时也称为_属性__或域。

、数据库操作语句就是指insert、_update__、_delete___和select语句。

、触发器有3种类型,即insert类型、_update__和_delete___。

设计题
有一个[学生课程]数据库,数据库中包括三个表:
学生表由学号、姓名、性别、年龄、所在系五个属性组成,
可记为:学生表(学号,姓名,性别,年龄,所在系) [学号]为关键字。

课程表由课程号、课程名、先修课号、学分四个属性组成,
可记为:课程表(课程号,课程名,先修课号,学分) 课程表为关键字。

学生选课表由学号、课程号、成绩三个属性组成,
可记为:成绩表(学号,课程号,成绩) (学号、课程号)为关键字。

编写用SQL语言实现下列功能的sql语句代码:
1、建立一个[学生表],其中学号属性不能为空,并且其值是唯一的。

Create table 学生表(
学号char(6) not null ,primary key ,unique,
姓名char(6) 性别char(6) 年龄char(4) 所在系char(6)
)
2、查询全体学生的详细记录。

Select * from 学生表
3、查询年龄在20至23岁之间的学生的姓名、系别、和年龄。

Select 姓名,系别,年龄from 学生表where 年龄between 20 and 23
4、计算1号课程的学生平均成绩。

Select avg(成绩) as 平均成绩from 成绩表where 课程号=‘1’
5、将计算机科学系全体学生的成绩置零。

Update 成绩表
set 成绩=0 from 成绩表,学生表 where 学生表.学号=成绩表.学号
所在系=’计算机科学系’
. SQL语言中,删除一个表的命令是( B )。

A. DELETE
B. DROP
C. CLEAR
D. REMOVE
. 哪个关键字用于测试跟随的子查询中的行是否存在( B )。

A.MOV B.EXISTS
C.UNION D.HAVING
. 以哪个符号开头的变量是全局变量( C )。

A.@ B.@*
C.@@ D.@$
. 如果在一个关系中,存在某个属性(或属性组),虽然不是该关系的主码或只是主码的一部分,但却是另一个关系的主码时,称该属性(或属性组)为这个关系的 ( C )
A.候选码
B.主码
C.外码
D.连接码
、设计题
在[Xk]数据库中有
课程表[Course]由课程编码(CouNo)、课程名称(CouName)、教师名(Teacher),报名人数(num)等组成
学生表[Student]由学号(StuNo)、学生姓名(StuName)、班级编号(ClassNo)等组成,学生选课表[StuCou] 由学号(StuNo)、课程编码(CouNo)等组成。

. 检索Xk数据库中的课程表(Course)中的教师名(Teacher)、课程编码(CouNo)、课程名称(CouName),要求检索结果首先按照教师名降序排列,教师名相同时,则按照课程号升序排列。

(5分)
Select teacher,couno,couname from course
Order by teacher DESC ,couno
. 使用IN关键字检索Xk数据库中的课程表(Course),要求检索课程编码(CouNo)不为'004'、'007'、'013' (5分)
Select couno from course not in ‘004’,‘007’‘013’
. 使用Transact-SQL语句在XK数据库中创建一个名为[p_StudentPara]的存储过程。

该存储过程能根据给定的班级返回该班级代码对应的Student表中的记录。

Create proc p_StudentPara @class1 char(6) as
Select * from student where classno=@class1
. 创建一个触发器,要求当插入、删除StuCou表的选课记录时,能更新Course表中相应的报名人数。

Create trigger on stucou for insert,delete as
If(Select count(*) from inserted)>0 update course set num=num+1
If(Select count(*) from deleted)>0 update course set num=num-1
.触发器可以创建在( A )中。

A. 表
B. 过程
C. 数据库
D. 函数
. 以下触发器是当对[表1]进行( D )操作时触发。

Create Trigger abc on 表1
For insert , update , delete
As ……
A.只是修改
B.只是插入
C.只是删除
D.修改、插入、删除
. 规则对象在使用上与( A )约束类似。

A.CHECK
B.PRIMARY KEY
C.FOREIGN KEY
D.UNIQU
.主索引可确保字段中输入值的( C )性。

A.多样
B.重复
C.唯一
D.若干
.关于视图下列哪一个说法是错误的( B )。

A.视图是一种虚拟表
B.视图中也保存有数据
C.视图也可由视图派生出来
D.视图是保存在SELECT查询
.执行带参数的过程,正确的方法为( A )。

A. 过程名参数
B. 过程名(参数)
C.过程名=参数
D.A,B,C三种都可以
.查询毕业学校名称与“清华”有关的记录应该用( D)。

A. SELECT * FROM 学习经历 WHERE 毕业学校 LIKE ’*清华*’
B. SELECT * FROM 学习经历 WHERE 毕业学校 = ’%清华%’
C. SELECT * FROM 学习经历 WHERE 毕业学校 LIKE ’?清华?’
D. SELECT * FROM 学习经历 WHERE 毕业学校 LIKE ’%清华%’
阅读下列程序,说明它们的功能。

1.use 教学成绩管理数据库
select 教学成绩表.学号,姓名,sum(分数) 总分,avg(分数) 均分
from 学生信息表 join 教学成绩表
on 学生信息表.学号 = 教学成绩表.学号
group by 教学成绩表.学号,姓名
order by avg(分数) desc
查找学生的学号,姓名,总分,平均分,并按照学号,姓名分组,再按平均分由低到高排序。

设计题
现有关系数据库如下:
数据库名:学生成绩数据库
学生表(班级编号,学号,姓名,性别,民族,身份证号,出生日期)
课程表(课程号,课程名,开课学期,学时)
成绩表(ID,学号,课程号,分数)
用SQL语言实现下列功能的sql语句代码:
1.查询学生信息表中的年龄(重复年龄只显示一次)
Select distinct year(getdate()-出生日期) from 学生表
2.从学生信息表和教学成绩表中查询查询学生的学号、姓名、课程名和分数Select 学号,姓名,课程名,分数from 学生表,成绩表where学生表.学号=成绩表.学号
3.从课程表中统计第二学期的总学时。

执行结果为:
课程好课程名开课学期学时
…………
…………
sum
============
Select * from 课程表compute sum(学时) where 开课学期=’2’
4.编写一个存储过程,输入学号,显示该学生的姓名、课程名、分数。

Create proc name1@ xh char(20) as
Select 姓名,课程名,分数from 学生表,成绩表where学生表.学号=成绩表.学号and 学号=@xh
5.创建一个触发器,当修改学生表中的姓名时,显示“学生姓名已被修改”。

Create trigger t1 on 学生表for update as
If update(学生名)print‘学生姓名已经被修改’
2.使用SQL语句创建一个班级表CLASS,属性如下:CLASSNO,DEPARTNO,CLASSNAME;类型均为字符型;长度分别为8、2、20且均不允许为空。

CREATE __table__ CLASS
(CLASSNO __char____ (8) NOT NULL,
DEPARTNO CHAR (2) NOT NULL,
CLASSNAME CHAR (_20_) NOT NULL

3.声明一个名为CRSCOURSE的游标,并利用游标遍历,显示整个结果集。

USE XK
DECLARE @COUNO VARCHAR(3),@COUNAME VARCHAR(20)
____declare crscourse___cursor__________________
FOR SELECT COUNO,COUNAME FROM COURSE ORDER BY COUNO
____open crscourse_____________________
FETCH NEXT FROM CRSCOURSE INTO @COUNO,@COUNAME
WHILE @@FETCH_STATUS=0
BEGIN
PRINT ’课程号:’+ @COUNO +’课程名称:’+ @CouName
FETCH NEXT FROM CRSCOURSE INTO @COUNO,@COUNAME
END
____close crscourse_____________________
DEALLOCATE CRSCOURSSE
4.使用SQL语句在XK数据库中创建一个名为V_STUDENT的视图,该视图仅查看“STUDENT”
表中“00电子商务”班的学生信息。

USE XK
CREATE _view_________ V_STUDENT
AS
SELECT *
FROM __STUDENT__________
WHERE CLASSNO=’20000001’
5、删除stu_score表中的外键约束con_num
Alter TABLE stu_score
drop CONSTRAINT con_num
6、为student_info表添加“总学分”列,并为该列建立默认对象df_credit,使其默认值为0 Create default df_credit as 0
Alter table student_info add 总学分real
Exec sp_bindefault‘df_credit’,’student_info.总学分’
7、创建和执行带有输入和输出参数的存储过程proc_avg,查sc表中输入课程编号的最高分,最低分和平均分。

Create proc proc_avg
@cid char(4),@max_scr int output,@min_scr int output,@avg_scr int output
As
Select @max_scr=max(grade),@min_scr=min(grade),@avg_scr= avg(grade)
From grade
Where cno=@cid
Group by cno
执行:
Declare @maxs int,@mins int,@avgs int
Exec proc_avg ‘3’,@maxs output, @mins output,@avgs output
Select @maxs,@mins,@avgs
8.建立表的命令如下,请补全约束定义。

create table employee
( eno char(5) primary key , --主键
ename varchar(8) __unique____ --可以为空,但不重名
esex char(2) default(女) , --默认值为’女’
eage smallint between 18 and 60 , --18到60岁之间
item varchar(10) not null , --非空
dno char(3) foreign key references department(no) )
--外键,参照DEPARTMENT表的主码(no)
9.创建SQL SERVER身份认证的登陆账户“stulogin”并进行授权,添加到tech数据库,
使其成为数据库用户“stuuser”,然后将其添加到数据库的db_accessadmin角色中,
完成下列代码。

EXEC sp_addlogin ‘stulogin’,’12345’,’tech’
USE tech
GO
EXEC sp_grantdbaccess‘stulogin’,’stuuser’
EXEC sp_addrolemember‘db_accessadmin’, ’stuuser’
10、credit表包括学号sno、课程编号cno、分数、学分列。

建立INSERT触发器ins_cr,当为表credit插入记录时,检查分数是否大于等于60,是则从course表取得该分数对应课程的学分,插入表中,否则不插入。

Create trigger ins_cr
On credit
For insert
As
Begin
Declare @score int , @credit int
Select @score=分数from inserted
Select @credit=course.学分from course, inserted
Where o=o
If @score>=60
Begin
Update credit set 学分=@credit from credit,inserted
Where and o=o
End
End。

相关文档
最新文档