SQL笔试题
一 单词解释(2分/个) 34
Data 数据 Database数据库 RDBMS关系型数据库管理系统 GRANT授予(权限)
REVOKE废除权限 DENY否认 DECLARE声明 PROCEDURE过程
Transaction事务 TRIGGER触发器 继续continue 唯一unique
主键 primary key 标识列 sign column 外键foreign key 检查check
二 编写SQL语句(5分/题)50
1) 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话
Create table student
( 学号 char(10) not null primary key,
姓名 char(10) not null,
年龄 char(4) not null,
性别 char(2) not null,
家庭住址 text,
联系电话 char(20)
)
2) 修改学生表的结构,添加一列信息,学历
Alter table student
Add 学历 char(10) not null
Go
3) 修改学生表的结构,删除一列信息,家庭住址
Alter table student
Drop column 家庭住址
Go
4) 向学生表添加如下信息:
学号 姓名 年龄 性别 联系电话 学历
1 A 22 男 123456 小学
2 B 21 男 119 中学
3 C 23 男 110 高中
4 D 18 女 114 大学
解答:
insert into student values(‘1’,‘A’,‘22’,‘男’,‘123456’,‘小学’)
insert into student values(‘2’,‘B’,‘21’,‘男’,‘119’,‘中学’)
insert into student values(‘3’,‘C’,‘23’,‘男’,‘110’,‘高中’)
insert into student values(‘4’,‘D’,‘18’,‘女’,‘114’,‘大学学’)
5) 修改学生表的数据,将电话号码以11开头的学员的学历改为“大专”
Updata student
Set 学历=’大专’
Where 联系电话=‘11%‘
6) 删除学生表的数据,姓名以C开头,性别为‘男’的记录删除
Delete
From student
Where 姓名=’C%’and 性别=’男’
Go
7) 查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号示出来
Select 学号,姓名
From student
Where 年龄<22
Go
8) 查询学生表的数据,查询所有信息,列出前25%的记录
9) 查询出所有学生的姓名,性别,年龄降序排列
Select 姓名,性别,年龄
Fron student
Group by 年龄 DESC
10) 按照性别分组查询所有的平均年龄
Select avg(年龄) as ‘平均年龄’
From student
Group by 性别
Go
三填空(3分/题) 36
1) 索引分为(聚合索引)和(非聚合索引)在一张表上最多可以创建(一)个聚合索引。但是可以创建(多)个个非聚合索引。
2) 完全限定名分为四部分:(服务器名),(数据库名),(数据库构架名),(对象名)
3) 视图是从(一个或多个表或视图)中导出的表。
4) 事务开始: BEGIN Transction
提交事务: COMMIT Transction
回滚事务: POLLBACK Transction
四 问答题(5分/题)60
1) 数据库包含哪些那几种后缀名的文件必须,这些文件分别存放在什么的信息?
答:主数据文件, 默认扩展名为.MDF,包含了数据库的启动信息,并且存储数据.
辅助数据文件, 默认扩展名为.NDF,存储未包括在主文件内的其他数据
日志文件, 扩展名为.LDF, 保存恢复数据库所需的事务日志信息
2) TRUNCATE TABLE 命令是什么含义?和Delete from 表名有什么区别?
答:TRUNCATE TABLE快速地从一个表中删除所有行。TRUNCATE TABLE和无条件的Delete from 表名有相同的效果,都是删除表中的所有行。前者没有选择条件,是单纯的删除表中的所有行,后者可以有选择条件,只有满足条件的行才删除。
3) 说出以下聚合数的含义:avg ,sum ,max ,min , count ,count(*)
答:avg:求表达式中所有值项的平均值;
sum:求表达式中所有值项的总和;
max:求表达式中所有值项的最大值;
min:求表达式中所有值项的最小值;
count:用于统计组中满足条件的行数或总行数;
count(*):*表示一个表或视图中的所有列。
4) inner join 是什么意思?作用是什么?写出基本语法结构
答:意思为内连接。作用:从表中查询所需要的数据,不符合条件的记录都要丢弃。
Select 列名
From 表名
Where 条件;
5) 左向外联接,右向外联接,全联接的关健字如何写?
答:分别为:Left outer join,Right outer join,full outer join
6) 子查询分为几类,说明相互之间的区别
答:子查询分为三类,分别是:含有IN的子查询,使用比较运算符的子查询,使用exists的子查询。
使用IN的子查询返回的查询结果是一列零值或更多值,子查询返回结果之后,外查询可以使用这些结果。
比较运算符的子查询可以认为是IN子查询的扩展,它使表达式的值与子查询的结果进行比较运算
使用exists的子查询实际上不产生任何数据,它只返回True和False.相当于存在测试。
7) 实现实体完整性,实现域完整性,实现参照完整性(引用完整性)分别使用什么手段?
答:通过设置主键来实现视图完整性;通过数据类型,CHECK约束,规则,DEFALUT定义和NOT NULL可以实现域完整性;通过定义主表的主键和从表的外键可以实现参照完整性。
8) 视图可以更新吗?会影响到实际表吗?
答:视图可以更新,但不是所有的视图都可以更新。
可更新视图需满足以下条件:
1. 创建的视图中Select语句的From子句内必须至少要包含一个基本表。
2. 创建的视图中没有聚合函数,且没有TOP,GROUP BY,UNION子句及DISTINCT关键字
3. 创建的视图的Select语句中不包含从基本表列通过计算所得的列。
通过更新视图(包括增,删,改)数据可以修改基本表数据。
9) 谈谈这样几个角色, dbo , Sysadmin public
ADO是微软公司开发的基于COM的数据库应用程序接口。通过ADO连接数据库,可以灵活地操作数据库中的数据。
Sysadmin
10) 何为动态游标?何为静态游标?
答:动态游标:关键字DYNAMIC指定游标为动态游标,能够反映对结果集中所做的更改。
静态游标:关键字STATIC指定的游标为静态游标,不能够反映对结果集所做的任何更改。
11) 什么是存储过程?为什么存储过程要比单纯的Sql 语句执行起来要快?
答:存储过程是SQL Server服务器上一组预先编译好的Transact-SQL语句,它可以接受参数,返回状态值和参数值。
因为存储过程是预编译的,在首次运行一个存储过程中,查询优化器对其进行分析优化,并给出最终被存在系统表中的执行计划;而单纯的SQL语句执行,在每次运行时都要进行编译和优化,因此速度相对要慢一些。
12) 什么是Inserted 表 ?什么是Deleted 表?
答:Inserted表:当向表中插入数据时,INSERT触发器触发执行,新的记录插入到触发器表和inserted表中。
Deleted表:用于保存已从表中删除的记录,当触发一个DELETE触发器时,被删除的记录存入deleted表中。