sql综合测试三

sql综合测试三
sql综合测试三

1、在SQL中,下面不包括事务分类的是()(选择一项)

A、显示事务

B、回滚事务

C、隐式事务

D、自动提交事务

2、在SQL中,以下关于存储过程的说法错误的是()(选择一项)

A、存储过程就是一系列SQL语句的组合

B、存储过程是SQL查询语句与控制流语句的预编译集合

C、存储过程以特定的名称保存在数据库中

D、存储过程也是数据库对象

3、在SQL中,要指定存储过程的参数为输出参数正确的是()(选择二项)

A、output

B、in

C、on

D、out

4、在SQL中,关于存储过程的输入参数默认值的说法错误的是()(选择一项)

A、给参数指定默认值后,调用存储过程时,可以不提供参数

B、输入参数必须有默认值

C、在调用存储过程时,可以使用default代替参数

D、带默认值的输入参数,可以方便用户使用

5、在SQL中,关于存储过程中使用return关键字的作用有()(选择二项)

A、可以使用return关键字阻止存储过程的执行

B、可以使用return查询出数据

C、return可以返回数据

D、return语句只能在存储过程中使用

6、在SQL中,下面不属于创建事务的原则的是()(选择一项)

A、事务要尽可能简短

B、在事务中访问的数据要尽量减少

C、浏览数据时要尽量打开事务

D、在事务处理期间尽量不要请求用户输入

7、在SQL中,下面的语句不能在事务中使用的有()(选择二项)

A、insert

B、create database

C、drop database

D、delete

8、在SQL中,下面不属于事务的隔离级别的是()(选择一项)

A、read uncommitted

B、read committed

C、repeatable read

D、unqinue read

9、在SQL中,创建视图的命令正确的是()(选择一项)

A、create procedure

B、create trigger

C、create view

D、create database

10、在SQL中,下面不属于索引的类型的是()(选择一项)

A、主键索引

B、唯一索引

C、聚集索引

D、组合索引

11、在SQL中,下面创建索引不正确的是()(选择一项)

A、create fillfactor

B、create unique

C、create clustered

D、create nonclustered

12、在SQL中,下面关于触发器的说法不正确的是()(选择一项)

A、触发器是一种实施复杂的、完整性约束的特殊存储过程

B、触发器不像一般的存储过程,可以使用存储过程的名字来调用或执行

C、触发器一般用于加强数据库的某些使用规则

D、触发器有inserted和deleted表

13、在SQL中,下面关于inserted和deleted表的说法不正确的是()(选择一项)

A、inserted表用于存放insert或update语句执行所影响行的副本

B、deleted表存放delete或update语句执行所影响行的副本

C、当执行一条delete语句时,deleted表和触发器表会有相同的行

D、inserted和deleted表只能由创建它们的触发器引用

14、在SQL中,创建触发器的类型不包括()(选择一项)

A、insert触发器

B、update触发器

C、delete触发器

D、select触发器

15、在SQL中,触发器的优点不包括()(选择一项)

A、触发器不可以通过数据库中的相关表实现级联更改

B、触发器可以强制比用check约束定义的约束更为复杂的约束

C、与check约束不同,触发器可以引用其他表中的列

D、触发器可以评估数据修改前后的表状态,并根据其差异采取对策

16、在SQL中,下面对视图的说法不正确的是()(选择一项)

A、视图由字段和记录组成,是真实存在的

B、视图是包含一张表或多张表的列组成的数据集

C、视图是一张虚拟表

D、对表能进行的操作都可以用于视图

17、安装MS SQL Server时,系统自动建立几个数据库,其中有一个数据库被删除后,不影响系统的正常运行,这个数据库是()(选择一项)

A、master数据库

B、model数据库

C、tempdb数据库

D、pubs数据库

18、E-R模型用于数据库设计的哪一个阶段()(选择一项)

A、需求分析

B、概念结构设计

C、逻辑结构设计

D、物理结构设计

19、关于关系图下列哪一个是正确的()(选择一项)

A、关系图是在同一个表中不同字段之间建立关联

B、关系图是表与表之间建立关联,与字段无关

C、关系图是在不同表中的字段之间建立关联

D、关系图是在不同数据库之间建立关联

20、在SQL中,select distinct表示查询结果中()(选择一项)

A、属性名都不相同

B、去掉了重复的列

C、行都不相同

D、属性值都不相同

21、在T-SQL语言中,修改表结构时,应使用的命令是()(选择一项)

A、update

B、insert

C、alter

D、modify

22、在SQL数据库中,如果强制要求[grades]表中的学员必须是[Students]表中存在的学员,以下描述正确的是()(选择一项)

A、在[grades]表中创建外键约束

B、在[grades]表中创建检查约束

C、在[grades]表中创建唯一约束

D、在[grades]表中创建默认约束

23、下面哪项是一元运算符()(选择一项)

A、/

B、%

C、>

D、-

24、查询语句select stuff(‘he rld‘,3,1,’llo wo‘)结果为()(选择一项)

A、hello

B、world hello

C、hello world

D、world

25、select 职工号from 职工where 工资>1250 命令的功能是()(选择一项)

A、查询工资大于1250的记录

B、查询1250号记录后的记录

C、检索所有的职工号

D、从[职工]表中检索工资大于1250的职工号

26、在SQL中,关于以下程序段,正确的说法是()(选择一项)

create proc proc_test

@age int as

declare @error int set @error=0

begin tran update student set age=@age

@error=@error+@@error

if(@error<>0)rollback tran else commit tran go

A、创建了一个带事务处理的存储过程

B、此存储过程无法修改student表中的age

C、此存储过程无法创建

D、定义@error时出错

27、在SQL的系统存储过程中,()存储过程用于返回某个表列的信息(选择一项)

A、sp_help

B、sp_columns

C、sp_helpdb

D、sp_tables

28、在SQL中,对数据完整性描述正确的是()(选择二项)

A、数据的正确性和数据的相容性,它们共同保证数据在语义上的合理性和有效性

B、数据库中每一字段都必须要有数据

C、数据的类型限制,例如年龄字段是int,不能向数据表添加如20.02这样的数据

D、数据完整性的保证一般是由DBMS提供的机制来实现

29、在sql server2005中,为数据库表建立索引能够()(选择一项)

A、防止非法的删除操作

B、防止非法的插入操作

C、提高查询性能

D、节约数据库的磁盘空间

30、数据库中存放三个关系:学生(学号,姓名)和课程(课程号,课程名)和成绩(学号、课程号、成绩),为快速查出某位学生所学的课程名,应该()(选择一项)

A、在学生表上按学号建索引

B、在成绩表上按课程号建索引

C、在课程表上岸课程号建索引

D、在学生表上按姓名建索引

31、在[Student]表中基于StuName字段建立的索引属于()(选择一项)

A、唯一索引非聚集索引

B、非唯一索引非聚集索引

C、聚集索引非唯一索引

D、唯一索引聚集索引

32、sql server 2005中,使用t-sql编程时,下列()语句可以从while语句块中退出(选择一项)

A、continue

B、exit

C、break

D、close

33、在SQL中,下列涉及通配符的操作,范围最大的是()(选择一项)

A、name like ‘hgf#‘

B、name like ’hgf_%‘

C、name like ‘hgf%‘

D、name like ’h#%‘escape ’#‘

34、下面哪个是SQL列名的合法标识符()(选择一项)

A、a12

B、12a

C、@a12

D、#qq

35、查询毕业学校名称与“清华”有关的记录应该用()(选择一项)

A、select * from 学习经历where 毕业学校like ‘*清华*‘

B、select * from 学习经历where 毕业学校= ‘%清华%‘

C、select * from 学习经历where 毕业学校like ‘?清华?‘

D、select * from 学习经历where 毕业学校like ‘%清华%‘

36、已知员工和员工亲属两个关系,当员工调出时,应该从员工关系中删除该员工的元组,同时在员工亲属关系中删除对应的亲属元组,在SQL语言中利用触发器定义这个完整性约束的短语是()(选择一项)

A、instead of delete

B、instead of drop

C、after delete

D、after update

37、在SQL数据库中,以下对变量的定义错误的是()(选择一项)

A、declare @name varchar(8)

B、declare @error varchar(50)

C、declare @@name varchar(8)

D、declare @@error varchar(50)

38、SQL Server支持在线备份,但在备份过程中,不允许执行的操作是()(选择一项)(1)创建或删除数据库文件(2)创建索引(3)执行非日志操作

(4)自动或手动缩小数据库或数据库文件大小

A、(1)

B、(1)(2)

C、(1)(2)(3)

D、(1)(2)(3)(4)

39、在sql server2005中,根据以下表设计的代码,判断其设计方面的问题是()(选择一项)

create table member(

last_name char(20)null,

first_name varchar(30)not null,

address_line1 varchar(30)null,

address_line2 varchar(30)null,

address2_line1 varchar(30)not null,

address2_line2 char(30)null,

book_id int null)

A、应该把所有的null修改为not null,而且把not null修改为null

B、该表有进一步规范化的必要

C、把book_id设为主键

D、所有字段都应允许为空

40、数据库设计时,在做表规范化的时候一般规范到()就足够了(选择一项)

A、第一范式

B、第三范式

C、第四范式

D、第五范式

41、在sql server 2005中,给定如下的t-sql:

declare @abc int

declare @xyz int

set @abc=10

while @abc<=100

begin

set @xyz=

case floor(@abc/30)

when 0 then @abc*5

when 1 then @abc*10

else @abc*20

end

set @abc=@xyz

end

print @xyz

程序最后输出的结果是()(选择一项)

A、50

B、500

C、100

D、以上都不对

42、sql server数据库中,包含两个表:order订单表,item订单子项目表。

当一个新定单被加入时,数据要分别保存到order和item表中,要保证数据完整性,可以使用以下()语句(选择一项)

A、begin transaction

insert into order values (此处省略)

insert into item values (此处省略)

end transaction

B、begin transaction

insert into order values (此处省略)

insert into item values (此处省略)

if (@@error = 0)

commit transaction

else

rollback transaction

C、begin transaction

insert into order values (此处省略)

if (@@error = 0)

begin

insert into item values (此处省略)

if (@@error = 0)

commit transaction

else

rollback transaction

end

else

rollback transaction

D、begin transaction

insert into order values (此处省略)

insert into item values (此处省略)

if (@@error <> 0)

rollback transaction

43、现有一个学生信息表student,包含主键studentid (学生编号)。

又有分数表scores,包含studentid(学生编号)、以及score(考试分数)。

已知student表中共有50个学生,有45人参加了考试(分数存在scores表中),其中10人不及格。执行以下sql语句:

select * from student where exists (select studentid from score where score<60)

可返回()条记录(选择一项)

A、50

B、45

C、10

D、0

44、create table student

(

id int identity(1,1),

name varchar(20)

)

alter table student add constraint uq_name unique(name)

insert into student values(null)

insert into student values(null)

insert into student values(‘jack’)

insert into student values(‘jack’)

依次执行以上sql语句后,student表中存在()行记录(选择一项)

A、1

B、2

C、3

D、4

45、在sql server2005的查询分析器中运行以下的t-sql:(选择一项)

select distinct t1.type from titles t1 where t1.type in

(select type from titles where t1.pub_id<>pub_id)

A、查询成功,但是将查询不到任何数据行

B、查询成功,可能能够查询到一行或者多行数据

C、查询失败,因为在同一张表中进行查询和子查询必须使用表的别名

D、查询失败,因为不能同时在一张表中执行多次查询

46、在sql server2005中,可以使用全局变量()来获得最后一次插入的标识值(选择一项)

A、@@datefirst

B、@@identity

C、@@transcount

D、@@rowcount

47、sql server 2005中,在查询分析器中调用()系统存储过程可以修改数据库的名称(选择一项)

A、sp_databases

B、sp_renamedb

C、sp_tables

D、sp_rename

48、在sql server2005中,以下是表autos的定义:

create table autos(make varchar(20)not null,model varchar(20)not null,

acquisition_cost money null,acquisition_date datetime null)

创建该表后再执行以下语句:

truncate table autos

begin tran

insert autos(make,model) values('tucker','torpedo')

if exists (select * from autos)

rollback tran

else

commit tran

执行结果是()(选择一项)

A、该批处理将失败,因为begin tran…commit tran没有正确嵌套

B、该批处理结束后,表内没有数据行

C、该批处理结束后,表内有一行数据

D、插入数据行的语句将失败,并且提示错误信息

49、已知有student表,studentid为主键,现在表中共有10行记录,studentid列值从1 到10。创建视图:create view dbo.view_student as select * from dbo.student 接着执行如下命令:delete from view_student where (studentid = 8);然后执行查询命令:select * from student;select * from view_student;假定上述命令全部执行成功,将各自返回()()行记录(选择一项)

A、10,10

B、10,9

C、9,10

D、9,9

50、sql server 2005中,使用t-sql编程时,输出结果有两种方式:()或()语句(选择一项)

A、set select

B、print select

C、set make

D、print set

数据库实验3答案

实验三:交互式SQL语句的使用 1、实验目的 (1)掌握数据库对象的操作过程,包括创建、修改、删除 (2)熟悉表的各种操作,包括插入、修改、删除、查询 (3)熟练掌握常用SQL语句的基本语法 2、实验平台 使用SQL Server提供的Microsoft SQL Server Management Studio工具,交互式使用SQL语句。 3 实验容及要求 选择如下一个应用背景之一: ●学生选课系统 ●习题3、4、和5中使用的数据库 ●其它你熟悉的应用 (1)建立一个数据库和相关的表、索引、视图等数据库对象,练习对表、索引和视图的各种操作。 (2)要求认真进行实验,记录各实验用例及执行结果。 (3)深入了解各个操作的功能。 实验要求包括如下方面的容: 3.1 数据定义 1.基本表的创建、修改及删除 2.索引的创建 3.视图的创建 3.2 数据操作 完成各类更新操作包括: 1.插入数据

2.修改数据 3. 删除数据 3.3 数据查询操作 完成各类查询操作 1.单表查询 2.分组统计 3. 连接查询 4. 嵌套查询 5. 集合查询 3.4 数据操作 1.创建视图 2.视图查询 参考示例: 建立一个学生选课数据库,练习对表、视图和索引等数据库对象的各种操作。 一、数据定义 创建学生选课数据库ST,包括三个基本表,其中Student表保存学生基本信息,Course表保存课程信息,SC表保存学生选课信息,其结构如下表: 表1. Student表结构 表2. Course表结构

表3. SC表结构 1.创建、修改及删除基本表 (1)创建Student表 CREATE TABLE Student (Sno CHAR(8)PRIMARY KEY, Sname CHAR(8), Ssex CHAR(2)NOT NULL, Sage INT, Sdept CHAR(20) ); (2)创建Course表 CREATE TABLE Course (Cno CHAR(4)PRIMARY KEY, Cname CHAR(40)NOT NULL, Cpno CHAR(4), Ccredit SMALLINT, ); (3)创建SC表 CREATE TABLE SC (Sno CHAR(8)FOREIGN KEY (Sno)REFERENCES Student(Sno), Cno CHAR(4), Grade SMALLINT, ); (4)创建员工表Employee

sql实验5(一)

实验报告专用纸 实验5 索引和视图 三、实验内容 1.分别使用企业管理器和Transact-SQL语句为studentsdb数据库的student_info和curriculum创建主键索引。 ①、使用企业管理器为studentsdb数据库的student_info创建主键索引。 ②使用企业管理器为studentsdb数据库的curriculum创建主键索引。(将课程表的课程编号属性设为主键,系统将自动创建主键索引) ③使用Transact-SQL语句为studentsdb数据库的student_info创建主键索引。(将先前创建好的主键移除) create clustered index student_info_idx on student_info(学号)

④使用Transact-SQL语句为studentsdb数据库的curriculum创建主键索引。(将先前创建好的主键移除) create clustered index curriculum_idx on curriculum(课程编号) 2.使用企业管理器按curriculum的课程编号列创建唯一性索引。

3.分别使用企业管理器和Transact-SQL语句为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引,命名为grade_index

①使用企业管理器为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引。 ②使用Transact-SQL语句为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引。(删除之前所创建的索引)

实验3 SQL基本操作

实验3 SQL概述 一、实验目的 1.掌握使用企业管理器创建数据库、定义表结构、修改表、删除表的操作 2.创建视图,修改、删除视图。 二、实验内容 1.使用企业管理器创建数据库CPXS; 2.修改数据库、删除数据库; 3.在数据库CPXS中创建表; 4.创建查询产品库存量和销售时间的视图; 5.删除视图,修改视图。 三、实验步骤 1.使用企业管理器创建数据库 (1)进入企业管理器主界面,右击“数据库”文件夹,在弹出的快捷菜单中选择“新建数据库”命令。 (2)弹出“数据库属性”对话框,其中有“常规”、“数据文件”、“事务日志”3个选项卡。 (3)在“常规”选项卡中的“名称”对话框中输入要建立的数据库名称,这里只能输入字母不能输入汉字,如要建立产品销售数据库,可以输入“CPXS”。如图1所示。

图1 输入数据库名称cpxs (4)选择“数据文件”选项卡,对数据文件的逻辑名称、存储位置、容量大小、所属文件组名称和文件属性进行设置。例如,设置数据库的数据文件的逻辑名为cpxs_data,开始大小为1MB,所属文件组为Primary,文件按15%的比例自动增长,文件最大增长到15MB。

图2 设置cpxs属性 (5)选择“事务日志”选项卡,对事务日志文件的物理存储进行设置,可以输入事务日志文件的名称、存储位置、初始大小和文件属性等信息。如设置cpxs数据库的事务日志文件名是cpxs_Log,初始大小为 1MB,文件按5%的比例自动增长,文件最大增长到5MB。 (6)单击“确定”按钮,完成数据库的创建后,会在“数据库”文件夹内出现新建的cpxs的数据库。 2.修改数据库 (1)在企业管理器中右击cpxs,从弹出的快捷菜单中选择“属性”命令。 (2)弹出该数据库的属性对话框,在其中可以对常规、数据文件、事务日志、文件组、选项和权限6个选项进行设置,单击“确定”按钮,即可完成对选定数据库的修改。 3.删除数据库

实验3PLSQL编程

实验三PL/SQL编程 1.PL/SQL块处理 定义一个包含声明、执行和异常处理的块 查询EMP表中职工号7788的工资,输出工资的值并且如果工资小于3000那么把工资更改为3000,异常部分对NO_DATA_FOUND异常进行处理,输出没有该员工。 如果想运行缓冲区的内容,那么可以用RUN命令或者/命令;serveroutput需要设置为on 2.记录类型的使用 创建一个记录类型v_record,类型包含name,salary,job,deptno等分量,要求记录类型的分量的数据类型和emp表中列的数据类型一致(%type实现)。创建一个变量,变量类型为v_ record,读取EMP表中职工号为7788的ename,sal,job,deptno为该变量赋值,输出变量的分量。 3.条件语句的使用 分别用IF语句和CASE语句实现以下要求:输入一个员工号,修改该员工的工资,如果该员工职位是CLERK,工资增加100;若为SALESMAN,工资增加160;若为ANALYST,工资增加200;否则增加300。 4. 循环和显示游标的使用 分别用简单循环、WHILE循环、FOR循环以及显示游标统计并输出各个部门的人数以及平均工资 5.用隐式游标实现以下要求:修改部门号为50的部门地址为‘BEIJING’。如果该部门不存在,则向dept表中插入一个部门号为50,地址为‘BEIJING’的记录。 6.创建一个显示雇员总人数的存储过程emp_count,并执行该存储过程 7. 编写显示雇员信息的存储过程EMP_LIST,并引用EMP_COUNT存储过程 8. 创建函数,实现功能为:在scott.emp表和scott.dept表中查询出任意给定职工号的职工姓名及职工所在部门的名称。 9. 创建触发器,实现更新dept表中的deptno值,级联更新emp表中相应值。 10. 对存储过程、函数及触发器实现查看、修改、删除等基本操作。 主要算法和程序清单: 1. DECLARE v_empno emp.empno%TYPE:=7788; v_sal emp.sal%TYPE; v_add emp.sal%TYPE; BEGIN SELECT sal INTO v_sal FROM emp WHERE empno=v_empno; IF v_sal<3000 THEN v_add:=3000;

数据库SQL语句实验报告

《数据库原理及应用》实验报告 SQL语句部分 总成绩:

实验一熟悉SQL SERVER,数据定义实验 实验一成绩: 一、实验目的 1、利用查询分析器创建数据库 2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作 二、实验步骤及内容 在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。 1.创建学生课程数据库 3.创建课程关系表C : 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 7、删除表S的“年龄”属性列。 8、删除S姓名列的唯一值约束。 9、修改SC表成绩属性列为精确数字型。 10、在表S上,按“Sno”属性列的唯一值方式建立索引。 11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。 12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。 三、实验结果: 1.创建学生课程数据库 create database Studend; create table S ( Sno CHAR(9)PRIMARY KEY, Sname CHAR(20)UNIQUE, Ssex CHAR(2), Sage smallint, Sdept char(20), );

3.创建课程关系表C : 课程号课程名先行课学分 Cno Cname Cpno ccredit create table C ( Cno char(4)primary key, Cname CHAR(40), Cpno char(4), Ccredit SMALLINT, ); 4.创建课程关系表SC : 学号课程号成绩 Sno Cno grade create table SC ( Sno char(9), Cno char(4), Grade smallint, ); 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 alter table S add Sbirthday datetime; 7、删除表S的“年龄”属性列。 alter table S drop column Sage;

SQL实验三数据的更新操作和视图实验报告

实验三数据的更新操作和视图 本实验需要2学时。 一、实验目的 1、掌握视图的创建、修改和删除操作。 2、掌握数据库数据更新(增加、修改、删除)操作。 二、实验内容和步骤 1、视图 (1)建立名为UV_SC的视图。该视图可以让我们看到每个学生的姓名、选修课程名和成绩。(2)利用UV_SC视图,查看平均成绩在80分以上的学生姓名。 (3)建立名为UV_Course的视图,该视图显示每门课的课程名和选修该课程的学生人数。(4)修改视图UV_Course,在视图中增加一列,显示选修该课程所有学生的平均成绩。 (5)建立名为UV_IS_Depart的视图。该视图可以用来查看“信息系”的学生的学号、姓名、年龄和系名。并保证对该视图的修改满足系名为信息系的条件。 (6)建立名为UV_Student的加密视图。该视图可以用来查看每个学生选修的课程门数和平均成绩。 (7)利用UV_Student视图,查询平均成绩在80分以上的学生学号。 (8)能否利用视图UV_Student,修改某个学生的平均成绩? (9)删除视图UV_Student。 2、数据更新 (1)向STUDENT表增加如下记录: (2)将学号'95011',成绩80,以及课程表中的所有课程号插入到SC表中。 (3)建立与表STUDENT同结构的空表STUD。然后利用INSERT命令把表STUDENT中年龄大于19的学生记录添加到表STUD。(注意:可以使用select into语句实现同结构空表的创建,再使用insert命令插入记录;或者使用单条select into语句实现等同的功能) (4)为“95002”的学生增加选修“操作系统”和“数据结构”这两门课的选课记录。 (5)把课程名为“操作系统”的成绩从成绩表SC中删除。(试用三种方式完成)(6)将女生的成绩提高10%。(试用三种方式完成) (7)如果学生“张三”的数据结构的成绩低于65,则加上10分。 (8)将成绩最低的学生的成绩加上10分。 (9)将前3名成绩最高的学生的成绩减去10分。 (10)为没有选课的学生自动增加选修“01”课程的选课记录。 (11)把选修“数学”不及格的成绩全部改成空值。 (12)删除成绩低于总平均成绩的女生的选课记录。 三、实验环境 四、调试过程

sql 数据库 实验3答案

实验三:创建及管理数据表 1、创建表 依据数据表的结构创建相对应的数据表,表结构如下所示; 学生信息表(student ) CREATE (sno char (9) PRIMARY KEY , sname char (8) NOT NULL, ssex char (2), sage int , sdept varchar (20) ) 课程信息表(course ) CREATE (cno char (4) PRIMARY KEY , cname varchar (20) NOT NULL, cpno char (4), ccredit int ) 选课信息表(sc )

CREATE TABLE sc (sno char(9), cno char(4), grade int, Constraint PK_sno PRIMARY KEY(sno,cno)) 2.修改表结构 1)在表student中增加新字段“班级名称(sclass)”字符类型为varchar(10); use student ALTER TABLE student Add sclass nvarchar(10) 2)在表student中删除字段“班级名称(sclass)”; use student ALTER TABLE student Drop column sclass 3)修改表student中字段名为“sname”的字段长度由原来的6改为8; use student ALTER TABLE student ALTER COLUMN sname char(8) 4)修改表student中ssex字段默认值为‘男’; use student ALTER TABLE student add default'男'for ssex 5)修改表course中cname字段为强制唯一性字段; use student ALTER TABLE course Add constraint ix_course unique (cname) 6)修改表sc中grade字段的值域为0-100; use student ALTER TABLE sc Add constraint CK_grade CHECK(grade between 0 and 100) 7)删除数据表course的唯一性约束; use student ALTER TABLE course drop ix_course

数据库 实验三答案

实验3 SQL语言 一、实验目的 1、掌握SQL中运算符和表达式的使用。 2、掌握实用SQL语言查询数据库。 二、实验要求 1、所有的实验过程请严格按照实验内容的步骤进行。 2、对关键步骤截屏并复制到实验报告的相应位置。 三、实验设备、环境 设备:计算机 环境:WINDOWS XP、SQL SERVER 2000中文版 四、实验原理、方法 上机操作 五、实验内容 准备工作:还原学生成绩管理数据库; 注意:写SQL语句时,注意学生成绩管理数据库中表名称和字段名称的对应。 1、使用SQL查询分析器,对学生成绩管理数据库完成如下查询操作: 1)简单查询 (1)求数学系学生的学号和姓名。 (2)求选修了课程的学生学号。

(3)求选修C1课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。 (4)求选修课程0001且成绩在80~90之间的学生学号和成绩,并将成绩乘以系数0.8输出。 (5)求数学系或计算机应用系姓王的学生的信息。 (6)求缺少了成绩的学生的学号和课程号。

2)连接查询 (1)查询每个学生的情况以及他(她)所选修的课程。 (2)求学生的学号、姓名、选修的课程名及成绩。 (3)求选修0001课程且成绩为90分以上的学生学号、姓名及成绩。

3)嵌套查询 (1)求选修了0003的学生学号和姓名。 (2)求0001课程的成绩高于王军的学生的学号和成绩。

(3)求其他系中比计算机系某一学生年龄小的学生。 4)使用分组和函数查询 (1)求学生的总人数。 (2)求选修了课程的学生人数。

(3)求课程和选修0001的人数。 (4)求选修课超过3门课的学生学号。

实验三数据库SQL 基本表查询

数据库原理及应用实验报告 实验三 SQL 基本表查询

实验报告 实验类型__综合设计__实验室_软件实验室一__ SQL基本表查询 1.实验项目的目的和任务:熟练掌握查询语句的一般格式,熟练掌握连接、嵌套和集合查询的使用。 2.程序代码(部分) select * from student where s# in ( select s# from sc where c#!='c2') //查询没有选修了2号课程的学生名单 select s#,avg(grade) from sc group by s#; //查询每个学生的平均成绩 select c#,avg(grade) from sc group by c#; //查询每门课的平均成绩 select * from student where s# in (select s# from sc where c#='c2') //嵌套查询 select sname from student where not exists (select * from c where not exists (select * from sc where s#=student.s# and c#=c.c#)) // 查询选修了全部课程的学生姓名 3运行结果如图所示

4实验总结 通过具体的上机实践操作,掌握了SQL基本表查询。 (1)确定集合(利用“IN”操作可以查询属性值属于指定集合的元组。利用“NOT IN”可以查询指定集合外的元组。 (2)GROUP BY 子句可以将查询结果按属性列或属性列组合在行的方向上进行分组,每组在属性列或属性列组合上具有相同的值。 (3)在where子句中包含一个形如select-from-where的查询块,此查询块称为子查询或嵌套查询,包含子查询的语句称为父查询或外部查询。嵌套查询可以将一系列简单查询构成复杂查询,增强查询能力。子查询的嵌套层次最多可达到255层,以层层嵌套的方式构造查询充分体现了SQL结构化的特点。嵌套查询在执行时由里向外处理,每个子查询是在上一级外部查询处理之前完成的,父查询要用到子查询的结果。 (4)Exists是表示存在的量词,where与exists之间没有属性列。

SQL实验三数据的更新操作和视图实验报告

S Q L实验三数据的更新操作和视图实验报告 集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]

实验三数据的更新操作和视图 本实验需要2学时。 一、实验目的 1、掌握视图的创建、修改和删除操作。 2、掌握数据库数据更新(增加、修改、删除)操作。 二、实验内容和步骤 1、视图 (1)建立名为UV_SC的视图。该视图可以让我们看到每个学生的姓名、选修课程名和成绩。 (2)利用UV_SC视图,查看平均成绩在80分以上的学生姓名。 (3)建立名为UV_Course的视图,该视图显示每门课的课程名和选修该课程的学生人数。 (4)修改视图UV_Course,在视图中增加一列,显示选修该课程所有学生的平均成绩。 (5)建立名为UV_IS_Depart的视图。该视图可以用来查看“信息系”的学生的学号、姓名、年龄和系名。并保证对该视图的修改满足系名为信息系的条件。

(6)建立名为UV_Student的加密视图。该视图可以用来查看每个学生选修的课程门数和平均成绩。 (7)利用UV_Student视图,查询平均成绩在80分以上的学生学号。 (8)能否利用视图UV_Student,修改某个学生的平均成绩 (9)删除视图UV_Student。 2、数据更新 (1)向STUDENT表增加如下记录: (2)将学号’95011’,成绩80,以及课程表中的所有课程号插入到SC表中。 (3)建立与表STUDENT同结构的空表STUD。然后利用INSERT命令把表STUDENT中年龄大于19的学生记录添加到表STUD。(注意:可以使用select into语句实现同结构空表的创建,再使用insert命令插入记录;或者使用单条select into语句实现等同的功能) (4)为“95002”的学生增加选修“操作系统”和“数据结构”这两门课的选课记录。

SQL实验三

实验三嵌套查询和统计查询 一、实验目的 要求学生熟练使用T-SQL语句进行数据查询,掌握SELECT语句的基本结构和多表连接查询、子查询、分组查询、查询结果的排序等操作。 二、实验内容 .利用SELECT查询语句进行单表、多表查询设计。 .利用SELECT语句进行子查询和外连接查询。 .设计ORDER BY查询子句以及带有GROUP BY的查询子句。 三.实验环境 实验室名称:11#211 软件环境:操作系统:windows 10;SQL 2008 硬件环境:安装内存(RAM):4.00GB(3.13GB可用) 处理器:Intel Core(TM) i5-4200H CPU@2.80GHz 2.79GHz 硬盘:1TB 四、实验步骤 1. 嵌套查询 用TransacTransact-SQL语句表示,在学生选课库中实现其数据嵌套查询操作: (l) 查询选修了“线性代数”的学生学号和姓名。 use JXGL go select sno,sname from S where sno in (select sno from sc where cno= (select cno from c where cname='线性代数')); Go

图c1 实验3.1.1实验结果 (2)查询“c1”课程的成绩高于张苏皖的学生学号和成绩。 Use jxgl go select sno,grade from sc where cno='c1'and grade> ( select grade from sc where cno='c1'and sno=(select sno From s

经典sql-高级-实验三

实验三、 1.建立一个表(表名自定),表结构与EMP相同,没有任何记录。 create table my_emp as select * from emp; 2.用Insert语句输入5条记录,并提交。 3.扩大该表的记录数到约40条,并使雇员号不重复;每个雇员都有所属部门,雇员在同一部门的经理是同一人。 insert…. update… commit 4.建立一个与DEPT表结构和记录完全相同的新表,并与前项新表建立参照完整性约束。 alter table my_dept add( constraint s1 primary key(deptno)); alter table my_emp add(constraint s2 foreign key(deptno) references dept(deptno)); 5.对在‘NEW YORK’工作的雇员加工资,每人加200。 6. *如果雇员姓名与部门名称中有一个或一个以上相同的字母,则该雇员的COMM增加500。 update my_emp a set comm=NVL(comm,0)+500 where a.ename<>( select translate(a.ename,b.dname,CHR(27)) from my_dept b where b.deptno=a.deptno ); --a.deptno与b.deptno必须有主外键连接,否则可能出错,为什么?commit; 7.删除部门号为30的记录,并删除该部门的所有成员。 delete from emp where deptno=30; delete from dept where deptno=30; commit 8.新增列性别SEX,字符型。 alter table emp add(sex char(2)); 9.修改新雇员表中的MGR列,为字符型。 该列数据必须为空 alter table emp modify(mgr varchar2(20)); 10.试着去删除新表中的一个列。 alter table my_emp drop (comm); 实验四、 1.查询部门号为30的所有人员的管理层次图。 select level,ename from emp connect by mgr=prior empno

实验三SQL3查询(子查询、分组查询)学生

实验三SQL查询3 (子查询、分组查询) 一、实验目的 使用SQL语言完成数据定义、数据查询、数据更新等功能。 二、实验要求 1. 掌握使用SQL定义、删除和修改基本表。 2. 掌握使用SQL完成单表查询、多表查询。 3. 掌握连接查询和嵌套查询。 4. 掌握使用SQL完成数据插入、数据修改、数据删除等功能。 三、实验内容 在“FLY飞翔公司数据库”数据库中,完成以下SQL查询实验。(以下的SQL查询实验可能会多种SQL命令描述方式,建议同学多思考、多尝试) 实验1使用SQL命令,查询公司机构C1和C2中基本工资低于3000的员工信息。 提示:使用两个IN函数,其中一个IN函数是IN(“C1”, “C2”),另外一个IN函数是嵌套SELECT语句 实验2使用SQL命令,查询公司机构C1和C2中基本工资低于3000的员工信息。 实验3使用SQL命令,查询显示基本工资大于2000,且不超过3000元的员工编号及其所在公司名称。 实验4使用SQL命令,查询显示查询供应商“兆海公司”未供应的商品类型名称。 提示:使用NOT IN 函数实现 实验5使用SQL命令,查询显示员工的姓名,所属公司名称和工资收入(工资收入=基本工资+任务工资+奖金-住房公积金-扣款)。 提示:产生新字段要使用As 实验6使用SQL命令,分组统计供应了商品的供应商所提供的商品种类数量,显示供应商名称和商品种类数量。 提示:使用COUNT函数

实验7使用SQL命令,分组统计每笔订单的净收益,显示订单编号和金额为200到500之间的净收益。(净收益=(销售价格-购入价格)*数量*折扣)。 提示:group by是分组,having是判断,同学选做。 实验8使用SQL命令,查询与员工王芳签订过订单的零售商名称和订单编号,并将结果存在一个新表New_temp中。 提示: Select 零售商名称, 订单编号 Into New_temp 是将所选字段存入新表New_temp中。 实验9使用SQL命令,查询未与员工E3签订过订单的零售商名称和所在城市。 提示:使用Not IN函数 实验10自己设计一个查询,并用SQL命令实现(要求:对设计要有合理的解释,且最好有新意)。

sql实验报告

SQL实验报告 软件一班 范章鹏 201322450332

实验一创建和删除数据库数据表 实验目的 1.熟悉SQL Server 2008 中SQL Server Management Studio的环境 2.了解SQL Server 2008数据库的逻辑结构和物理结构 3.掌握使用向导方式和SQL方式来创建和删除数据库及数据表的方法 实验准备 1.装有SQL Server 2008的PC机。 2.明确能够创建数据库的用户必须是系统管理员。 实验要求 1.熟练使用SQL Server Management Studio(简称SSMS)中的进行数据库的创建 和删除操作,以及数据表的创建和删除操作。 2.熟练使用SQL语句创建和删除数据库数据表。 3.学会分离和附加数据库。 4.完成建立和删除数据库数据表的实验报告。 实验内容 设有一学籍管理系统,其数据库名为“EDUC”,初始大小为 10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。数据库的逻辑文件名为“student_data”(如不修改则默认为数据库名EDUC_data),存放路径为“E:\sql_data”(可自己选择存放路径), 物理文件名为“student_data.mdf(自动生成,无需设置),创建完成后可在存放路径下查看物理文件。日志文件的逻辑文件名为“student_log”,存放路径为“E:\sql_data”(可自己选择存放路径),物理文件名为“student_log.ldf”,(自动生成,无需设置),创建完成后可在存放路径下查看物理文件。 (1) 分别使用向导和SQL语句两种方式创建上述描述的数据库EDUC。 使用SQL Server Management Studio(简称SSMS)创建数据库。 1)启动SSMS

SQL实验报告三

实验三视图、索引及数据更新 一、实验目的: 熟练掌握索引的建立与删除的方法,熟练掌握SQL的应用,熟练掌握数据插入、修改和删除的使用,为后继学习作准备。 二、实验属性 验证性 三、实验要求 1.预习教材第三章,熟悉SQL语句。 2.熟悉SQL Server环境。 3.掌握建立索引的两种方法,即在基本表中建立和用命令方式建立。 4.掌握删除索引的方法。 5.掌握sql视图建立、修改和删除; 6.掌握sql视图查询。 7.掌握sql数据插入、修改和删除语句的一般格式及使用方法。 四、实验原理 SQL语言应用。 五、实验步骤: 1 建立索引 例3.1为学生选课数据库中的Students,Courses,Reports三个表建立索引。其中Students 表按Sno(学号)升序建唯一索引,Courses表按Cno(课程号)升序建唯一索引,Reports表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。命令: CREA TE UNIQUE INDEX Stusno ON Student(Sno); CREA TE UNIQUE INDEX Coucno ON Course(Cno); CREA TE UNIQUE INDEX SCno ON SC(SnoASC,Cno DESC); 例 3.2 在基本表Students的Sname(姓名)和Sno(学号)列上建立一个聚簇索引,而且Students中的物理记录将按照Sname值和Sno值的升序存放。命令: CREA TE CLUSTERED INDEX Stu_snamesno ON Student(Sname,Sno); 2删除索引 例3.3删除基本表Reports上的索引。命令:DROP INDEX SC.SCno 3 建立视图 例3.4建立数学系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。命令: CREA TE VIEW Smath AS SELECT Sno,Sname,Sage,Sdept FROM Student WHERE Sdept='数学' 例3.5建立学生的学号(Sno)、姓名(Sname)、选修课程名(Cname)及成绩(Grade)的视图。命令: CREA TE VIEW SSCG AS SELECT Student.Sno,Student.Sname,https://www.360docs.net/doc/0113151529.html,ame,SC.Grade FROM Student,SC,Course WHERE Student.Sno=SC.Sno AND https://www.360docs.net/doc/0113151529.html,o=https://www.360docs.net/doc/0113151529.html,o

数据库-SQL语言的实验

北华航天工业学院《数据库原理与应用》 实验报告 报告题目:SQL语言 作者所在系部:计算机系 作者所在专业:网络工程 作者学号:20114052233 作者姓名:张旭刚 指导教师姓名:李建义 完成时间:2013 4.24 北华航天工业学院教务处制

SQL语言 一、实验目的 1、理解数据库以及数据表的设计; 2、熟悉SQL Server2005中的数据类型; 3、熟悉使用SQL语句创建和删除模式和索引; 4、掌握使用SQL语句创建、修改和删除数据表; 5、掌握使用SQL语句查询表中的数据; 6、掌握使用SQL语句插入、修改和删除数据表中的数据; 7、掌握使用SQL语句创建、删除、查询和更新视图。 二、实验内容 (一)创建数据库和模式 1、通过SQL语句创建图书信息管理数据库,命名为“db_Library”,数据文件和日志文件放在D盘下以自己学号和姓名命名的文件夹中,数据文件的逻辑名为db_Library_data,数据文件的操作系统名为db_Library_data.mdf,文件初始大小为10MB,最大可增加至300MB,增幅为10%;日志文件的逻辑名为db_Library_log,日志文件的操作系统名为db_Library_data.ldf,文件初始大小为5MB,最大可增加至200MB,增幅为2MB。 2、通过SQL语句在该数据库中创建模式L-C。 (二)创建和管理数据表 要求为各数据表的字段选择合适的数据类型及名称;为各数据表设置相应的完整性约束条件。 1、通过SQL语句将以下数据表创建在L-C模式下: 课程信息表(tb_course)——课程编号、课程名、先修课、学分 2、通过SQL语句将以下数据表创建在该数据库的默认模式dbo下: 图书类别信息表(tb_booktype)——类别编号、类别名称 图书信息表(tb_book)——图书编号、类别编号、书名、作者、出版社、定价、库存数 读者信息表(tb_reader)——读者编号、姓名、性别、学号、班级、系部 借阅信息表(tb_borrow)——图书编号、读者编号、借阅日期、归还日期 3、通过SQL语句对读者信息表进行修改:删除系部字段、添加所在系字段。 4、通过SQL语句对图书信息表进行修改:将定价的数据类型改为REAL。 5、通过SQL语句删除课程信息表。 (三)创建和删除索引 1、使用SQL语句在图书信息表上创建一个非聚簇索引IX_S_QUANTITY,要求按照该表中库存数字段的降序创建。 2、使用SQL语句在读者信息表上创建一个唯一的非聚簇索引IX_S_NAME,要求按照该表中的姓名字段的升序创建。 3、使用SQL语句删除之前创建的两个索引。 (四)数据库及数据表设计 根据周围的实际应用情况,自选一个小型的数据库应用项目进行研究,完成该系统的设计。要求2人一组,通过需求分析,列出系统的主要功能,并完成该系统数据库的逻辑结构设计。例如可选择学籍管理系统、企业进销存管理系统、人事管理系统或在线考试系统等。

SQL Server数据库实验三

实验三数据完整性、存储过程与触发器、 数据库备份与恢复 1、数据完整性 (1)实体完整性 在数据库中建立表S,进行主键约束,在没有违反实体完整性的前提下插入并更新一条记录。 CREATE TABLE S (Sno CHAR(8) NOT NULL UNIQUE, Sname CHAR(8), Ssex CHAR(1), Sage INT, Sdept CHAR(20), CONSTRAINT PK_S PRIMARY KEY(Sno)); INSERT S V ALUES('S01','王兵','M',23,'CS'); SELECT * FROM S; 【练习1】执行下列语句,会发生什么?为什么?给出答案。 INSERT S V ALUES ('S01','黄山','M',23,'CS') 违反了PRIMARY KEY 约束'PK_S1'。不能在对象'dbo.S1' 中插入重复键。 Sno 是主键不能有俩个重复值 【练习2】执行下列语句,会发生什么?为什么?给出答案。 UPDATE S SET Sno=NULL WHERE Sno='S02'; 0行受影响 无S02 (2)参照完整性 建立表C,令Cno为其主键,并在表S中插入两条记录。 CREATE TABLE C (Cno CHAR(4) NOT NULL UNIQUE, Cname VARCHAR(50) NOT NULL,

Cpoints INT, CONSTRAINT PK PRIMARY KEY(Cno)); INSERT C VALUES('C01','ComputerNetworks',2); INSERT C VALUES('C02','ArtificialIntelligence',3); 建立表SC,令Sno和Cno分别为参照S表以及C表的外键,设定为“级联删除”,并令(Sno,Cno)为其主键。在不违反参照完整性的前提下,插入4条选课记录。 CREATE Table SC (Sno CHAR(8), Cno CHAR(4), Scredit INT, CONSTRAINT PK_SC PRIMARY KEY(Sno,Cno), CONSTRAINT FK_SC_Sno FOREIGN KEY(Sno) REFERENCES S (Sno) ON DELETE CASCADE, CONSTRAINT FK_SC_Cno FOREIGN KEY(Cno) REFERENCES C(Cno) ON DELETE CASCADE); INSERT INTO SC V ALUES('S02','C01',2); INSERT INTO SC V ALUES ('S02','C02',2); INSERT INTO SC V ALUES ('S01','C01',2); INSERT INTO SC V ALUES ('S01','C02',2); SELECT * FROM SC; 【练习3】执行下列语句,会发生什么?为什么?给出答案。 INSERT INTO SC VALUES('S99','C99',2); 插不进去 S与c表中无s99与c99 【练习4】用SQL命令在S中删除Sno='S01'的学生记录,并查看SC表中数据,看看发生了什么变化?为什么?给出答案。 Sc中关于s01信息都删除啦 因为级联删除 (3)用户自定义完整性 【练习5】创建Teacher表,并自定义2个约束U1以及U2,其中U1规定Tname字段值唯一,U2规定Tage (级别)字段的上限是28。给出代码截屏。 CREATE TABLE Teacher (Tno CHAR(5), Tname CHAR(8) CONSTRAINT U1 UNIQUE, Tsex CHAR(1), Tage INT CONSTRAINT U2 CHECK (Tage<=28),

SQL实验三_数据查询

实验三、SQL的数据查询 1、实验目的 熟悉SQL语句的数据查询语言,能够SQL语句对数据库进行单表查询、连接查询、嵌套查询、集合查询和统计查询。 2、实验内容 实验内容主要是对数据库进行查询操作,包括如下四类查询方式: (1)单表查询 ●查询的目标表达式为所有列、指定的列或指定的列的运算三种不同。 ●使用DISTINCT保留字消除重复行。 ●对查询结果排序和分组。 ●集合分组使用集函数进行各项统计。 (2)连接查询 ●笛卡儿连接和等值连接。 ●自连接。 ●外连接 ●复合条件连接。 ●多表连接。 (3)嵌套查询 ●通过实验验证对子查询的两个限制条件。 ●体会相关子查询和不相关子查询的不同。 ●考察四类谓词的用法,包括: 第一类,IN、NOT IN; 第二类,带有比较运算符的子查询; 第三类,SOME、ANY或ALL谓词的子查询,查询最大值和最小值; 第四类,带有EXISTS谓词的子查询,实现“所有”等情况(如王 宏的“所有”课程,“所有”女生选修的课程) (4)集合运算 ●使用保留字UNION进行集合或运算。 ●采用逻辑运算符AND或OR来实现集合交和减运算。 3、实验步骤 以University_Mis数据库为例,该数据库中有四张如实验一,其中Score 是每门课的考试成绩,Scredit是学生所有考试合格课程所获得的积分总数,Ccredit每门课程的学分数。 在数据库中,存在这样的联系:学生可以选择课程,一个课程对应一个教师。在表Reports中保存学生的选课记录和考试成绩。

请先输入如下元组,再对数据库进行有关的查询操作: 图1.1、Students表 图1.2、T eachers表 图1.3、Courses表 图1.4、Reports表

数据库实验3

《数据库原理与技术》实验三SQL语言的DDL 一、实验目的:命令语句方式完成数据库与数据表的设计与实现。 二、实验任务 1.打开数据库SQL Server 2008的查询分析器,用Create Table建表Student,course,sc。数据库的名称为“学生选课”,各个表结构如教材P85页所示。 以下要求用T-SQL来实现: CREATE DATABASE学生选课 ON (NAME='学生选课_dat', FILENAME='D:\data\学生选课_dat.mdf') LOG ON (NAME='学生选课_Log', FILENAME='D:\data\学生选课_Log.ldf ') USE学生选课 CREATE TABLE Student( Sno CHAR(9)PRIMARY KEY, Sname CHAR(20)UNIQUE, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) ); CREATE TABLE Course (Cno CHAR(4)PRIMARY KEY, Cname CHAR(40), Cpno CHAR(4), Ccredit SMALLINT, FOREIGN KEY (Cpno)REFERENCES Course(Cno) ); CREATE TABLE SC (SNo CHAR(9), CNo CHAR(4), Grade SMALLINT, PRIMARY KEY (SNo,CNo), FOREIGN KEY (Sno)REFERENCES Student(Sno), FOREIGN KEY (Cno)REFERENCES Course(Cno));

相关主题
相关文档
最新文档