SQL简答题
1.什么是数据库管理系统?它的主要功能是什么?
答:DBMS是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。数据库管理系统是数据库系统的一个重要组成部分,它的功能包括数据定义功能、数据操纵功能、数据库的管理、控制和维护功能。 2.什么是关系?其主要特点是什么?
答:关系模型是由一组关系组成,每个关系的数据结构是一张规范化的二维表,它由行和列组成。关系模型中的关系有如下特点:
(1)关系中的每一属性都是不可再分的基本数据项。 (2)每个属性的名字不能相同。 (3)行和列的顺序无关紧要。
(4)关系中不能存在完全相同的行。
3.SQL Server 2008中有多少种约束?其作用分别是什么?
答:数据库中的约束包括以下五种: (1)主键约束。唯一地标识一行数据。
(2)外键约束。主要用来维护两个表之间的一致性。
(3)检查约束。通过检查输入表列数据的值来维护值域的完整性。
(4)唯一性约束。确保在非主键列中不输入重复的值。
(5)默认约。指在输入操作中没有提供输入值时,系统将自动提供给某列的值。 4. 哪些列适合创建索引?哪些列不适合创建索引?
答:适合创建索引的列:1.主键2.连接中频繁使用的列3.在某一范围内频繁搜索的列和按排序顺序频繁检索的列。
不适合创建索引的列:1.很少或从来不在查询中使用的列。 2.只有两个或很少几个值的列。3.以bit、text、image数据类型定义的列。4.数据行数很少的小表一般也不用创建索引。
5.简述备份数据的重要性。
答:对于一个实际应用的系统来说,数据是至关重要的资源,一旦丢失数据,不仅影响正常的业务活动,严重的会引起全部业务的瘫痪。数据存放在计算机上,即使是最可靠的硬件和软件也会出现系统故障或产品损坏。所以,数据库的安全性是至关重要的,应该在意外发生之前做好充分的准备工作,以便在意外发生之后有相应的措施来快速恢复数据库,并使丢失的数据减少到最少。
操作题 第一部分答案
现有关系数据库如下:
数据库名: teacher
JS (编号,姓名,性别,民族,职称,电话)
KC(课号,课程名称)
RK(教师编号,课号,课时数)
注:JS-----教师表 KC-----课程表 RK--------任课表
写出用SQL语言实现下列功能的sql语句代码:
1、建立teacher数据库。 1、Create database teacher
2、Create table js
(编号Char(5) not null primary key, 姓名Char(8) not null,
性别Char(2) not null check(性别=’ 男’or性别=’ 女’), 民族Char(10) not null, 职称Char(10) null)
3、在“JS”表中增加一条记录:
01004,李明玉, 女,回族,讲师
3、insert js values(‘01004’,’李明玉’, ‘女’,’回族’,’讲师’)
4、将JS表中“李明玉”的名字改为“李明宝”,性别改为“男”。 4、Update js set姓名=’李明宝’, 性别=’男’ where姓名=’李明玉’
5、删除01008号教师的任课记录 5、delete rk where 教师编号=’01008’
6、查询教师的任课情况,结果按教师编号升序排列 6、select * from RK order by 教师编号
7、查询男教授的基本信息,并将结果保存到njs表中
7、select * into njs from JS where 性别=’ 男’ and 职称=’ 教授’
8、查询少数民族女教师的姓名,民族,职称信息
8、select 姓名,民族,职称 from js where民族 ’汉族’
9、查询姓名中有“玉”字的女教师信息
9、select * from js where 姓名 like ‘%玉%’ and 性别=’女’
10、按职称统计教师人数,只显示人数在6人以上的信息。
10、Select 职称,count(职称) as 人数 from js group by 职称 having count(职称)>=6
11、查询任教“数据库”课程的所有教师的姓名,性别,职称,课时数
11、select 姓名,性别,职称,课时数 from js,rk,kc where js. 编号=rk. 教师编号 and
rk. 课号=kc. 课号 and 课程名称='数据库’
12、查询课时数最高的教师任课信息。
12、Select * from rk where 课时数=(select max(课时数) from rk)
13、查询课时数大于平均课时数的教师编号,课程名称及课时数。
13、Select 教师编号,课程名称,课时数 from kc,rk where rk.. 课号=kc. 课号 and 课时数>(select avg(课时数) from rk)
14、删除李明宝教师的任课记录
14、delete rk where 教师编号=(select 编号 from js where 姓名=’李明宝’)
15、创建一个视图JSST,显示姓李的教师的编号,姓名,课程名称,课时数信息。 15、Use teacher
Go
create view JSST as
select 编号,姓名,课程名称,课时数 from from js,rk,kc where js. 编号=rk. 教师编号 and rk. 课号=kc. 课号 and 姓名 like ‘李%’
16、为表kc的“课程名称”字段创建一个非惟一非聚集索引mc_ix。 16、Create nonclustered index mc_ix on kc(课程名称)
17、建立一个存储过程pro_ks,,根据指定的教师编号来查找教师的任课信息,如果找到,删除此教师的任课信息,如果未找到,显示“此教师未上课!”信息。 17、Use teacher
Go
create procedure pro_ks @jsbh char(8) as
If exists(select * from rk where 教师编号=@jsbh) Delete rk where教师编号=@jsbh Else
Print ’此教师未上课!’
18、创建一个触发器check_insert,当向RK表中插入一条记录时,检查该记录的教师编号是否在JS表中存在,检查课号是否在KC表中存在,如果有其中一项不存在,则拒绝插入。 18、CREATE TRIGGER check_insert ON RK
AFTER insert AS
Declare @xh char(10),@kch char(8)
SELECT @xh=教师编号,@kch=课号 FROM inserted
If exists(select * from JS where 编号=@xh) and exists(select * from KC where 课号=@kch) Print '插入成功!' Else begin
Print '不允许插入!' Rollback tran end
19、创建一个名为T_login的登录账户,并指定其登录密码为‘8888’,然后在teacher数据库中添加一个用户,名称为T_user,映射的登录名为T_login。并给该用户授予能够检索teacher数据库中任何表的所有数据。 19、USE TEACHER
GO
exec sp_addlogin 'T_LOGIN ', '888',
exec sp_grantdbaccess ' T_LOGIN ', 'T_USER ' exec sp_addrolemember 'db_datareader', 'T_USER '
SQL简答题
1.什么是数据库管理系统?它的主要功能是什么?
答:DBMS是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。数据库管理系统是数据库系统的一个重要组成部分,它的功能包括数据定义功能、数据操纵功能、数据库的管理、控制和维护功能。 2.什么是关系?其主要特点是什么?
答:关系模型是由一组关系组成,每个关系的数据结构是一张规范化的二维表,它由行和列组成。关系模型中的关系有如下特点:
(1)关系中的每一属性都是不可再分的基本数据项。 (2)每个属性的名字不能相同。 (3)行和列的顺序无关紧要。
(4)关系中不能存在完全相同的行。
3.SQL Server 2008中有多少种约束?其作用分别是什么?
答:数据库中的约束包括以下五种: (1)主键约束。唯一地标识一行数据。
(2)外键约束。主要用来维护两个表之间的一致性。
(3)检查约束。通过检查输入表列数据的值来维护值域的完整性。
(4)唯一性约束。确保在非主键列中不输入重复的值。
(5)默认约。指在输入操作中没有提供输入值时,系统将自动提供给某列的值。 4. 哪些列适合创建索引?哪些列不适合创建索引?
答:适合创建索引的列:1.主键2.连接中频繁使用的列3.在某一范围内频繁搜索的列和按排序顺序频繁检索的列。
不适合创建索引的列:1.很少或从来不在查询中使用的列。 2.只有两个或很少几个值的列。3.以bit、text、image数据类型定义的列。4.数据行数很少的小表一般也不用创建索引。
5.简述备份数据的重要性。
答:对于一个实际应用的系统来说,数据是至关重要的资源,一旦丢失数据,不仅影响正常的业务活动,严重的会引起全部业务的瘫痪。数据存放在计算机上,即使是最可靠的硬件和软件也会出现系统故障或产品损坏。所以,数据库的安全性是至关重要的,应该在意外发生之前做好充分的准备工作,以便在意外发生之后有相应的措施来快速恢复数据库,并使丢失的数据减少到最少。
操作题 第一部分答案
现有关系数据库如下:
数据库名: teacher
JS (编号,姓名,性别,民族,职称,电话)
KC(课号,课程名称)
RK(教师编号,课号,课时数)
注:JS-----教师表 KC-----课程表 RK--------任课表
写出用SQL语言实现下列功能的sql语句代码:
1、建立teacher数据库。 1、Create database teacher
2、Create table js
(编号Char(5) not null primary key, 姓名Char(8) not null,
性别Char(2) not null check(性别=’ 男’or性别=’ 女’), 民族Char(10) not null, 职称Char(10) null)
3、在“JS”表中增加一条记录:
01004,李明玉, 女,回族,讲师
3、insert js values(‘01004’,’李明玉’, ‘女’,’回族’,’讲师’)
4、将JS表中“李明玉”的名字改为“李明宝”,性别改为“男”。 4、Update js set姓名=’李明宝’, 性别=’男’ where姓名=’李明玉’
5、删除01008号教师的任课记录 5、delete rk where 教师编号=’01008’
6、查询教师的任课情况,结果按教师编号升序排列 6、select * from RK order by 教师编号
7、查询男教授的基本信息,并将结果保存到njs表中
7、select * into njs from JS where 性别=’ 男’ and 职称=’ 教授’
8、查询少数民族女教师的姓名,民族,职称信息
8、select 姓名,民族,职称 from js where民族 ’汉族’
9、查询姓名中有“玉”字的女教师信息
9、select * from js where 姓名 like ‘%玉%’ and 性别=’女’
10、按职称统计教师人数,只显示人数在6人以上的信息。
10、Select 职称,count(职称) as 人数 from js group by 职称 having count(职称)>=6
11、查询任教“数据库”课程的所有教师的姓名,性别,职称,课时数
11、select 姓名,性别,职称,课时数 from js,rk,kc where js. 编号=rk. 教师编号 and
rk. 课号=kc. 课号 and 课程名称='数据库’
12、查询课时数最高的教师任课信息。
12、Select * from rk where 课时数=(select max(课时数) from rk)
13、查询课时数大于平均课时数的教师编号,课程名称及课时数。
13、Select 教师编号,课程名称,课时数 from kc,rk where rk.. 课号=kc. 课号 and 课时数>(select avg(课时数) from rk)
14、删除李明宝教师的任课记录
14、delete rk where 教师编号=(select 编号 from js where 姓名=’李明宝’)
15、创建一个视图JSST,显示姓李的教师的编号,姓名,课程名称,课时数信息。 15、Use teacher
Go
create view JSST as
select 编号,姓名,课程名称,课时数 from from js,rk,kc where js. 编号=rk. 教师编号 and rk. 课号=kc. 课号 and 姓名 like ‘李%’
16、为表kc的“课程名称”字段创建一个非惟一非聚集索引mc_ix。 16、Create nonclustered index mc_ix on kc(课程名称)
17、建立一个存储过程pro_ks,,根据指定的教师编号来查找教师的任课信息,如果找到,删除此教师的任课信息,如果未找到,显示“此教师未上课!”信息。 17、Use teacher
Go
create procedure pro_ks @jsbh char(8) as
If exists(select * from rk where 教师编号=@jsbh) Delete rk where教师编号=@jsbh Else
Print ’此教师未上课!’
18、创建一个触发器check_insert,当向RK表中插入一条记录时,检查该记录的教师编号是否在JS表中存在,检查课号是否在KC表中存在,如果有其中一项不存在,则拒绝插入。 18、CREATE TRIGGER check_insert ON RK
AFTER insert AS
Declare @xh char(10),@kch char(8)
SELECT @xh=教师编号,@kch=课号 FROM inserted
If exists(select * from JS where 编号=@xh) and exists(select * from KC where 课号=@kch) Print '插入成功!' Else begin
Print '不允许插入!' Rollback tran end
19、创建一个名为T_login的登录账户,并指定其登录密码为‘8888’,然后在teacher数据库中添加一个用户,名称为T_user,映射的登录名为T_login。并给该用户授予能够检索teacher数据库中任何表的所有数据。 19、USE TEACHER
GO
exec sp_addlogin 'T_LOGIN ', '888',
exec sp_grantdbaccess ' T_LOGIN ', 'T_USER ' exec sp_addrolemember 'db_datareader', 'T_USER '