文档库 最新最全的文档下载
当前位置:文档库 › sqlserver数据库实验代码

sqlserver数据库实验代码

sqlserver数据库实验代码
sqlserver数据库实验代码

重庆交通大学

学生实验报告

实验课程名称数据库应用与设计

开课实验室 xxxxxxxxx

学院 xxx 年级 2011 专业班 xxxx

学生姓名 xxxxxx 学号 xxxxxx

开课时间 2013 至 2014 学年第 2 学期

实验2 建立表和定义完整性约束

实验名称

建立模式、表和定义完整性约束

实验内容

实验目的

熟练掌握表的建立和数据完整性速描定义方法,实践DBMS提供的数据完整性功能,加深对数据完整性的理解。

实验方法

在实验一建立数据库的基础上用CREATE SCHEMA命令建立模式,用CREATE TABLE命令建立表并定义数据完整性约束,用ALTER TABLE命令修改表结构。

实验要求

1、用CREATE SCHEMA命令建立模式(自己命名模式名称)。

2、在定义的模式下参照图1和表1使用CREATE TABLE命令建立表并定义完整性约束。

3、使用ALTER TABLE命令按如下要求修改表结构:

a)为订购单增加一个新的字段“完成日期”,类型为日期时间型,默认是空值。

b)为订单明细表的“数量”字段重新定义约束:大于0、小于等于1000的正整数,不允许为空值。

c) 将供应商表的供应商名字段的类型修改为varchar(30)。

实验步骤

create table仓库

(仓库号nchar(6)primary key

check(仓库号like'[A-Z][A-Z][0-9][0-9][0-9][0-9]'),

城市nchar(10)not null unique,

面积float check(面积>=50));

create table职工

(职工号nchar(8)primary key check(职工号like'____[0-9][0-9]'),

仓库号as convert(nchar(6),substring(职工号,1,6))persisted not null foreign key references仓库(仓库号),

经理nchar(8)foreign key references职工(职工号),

工资money check(工资>=1000 and工资<=10000));

create table供应商

(供应商号nchar(4)primary key

check(供应商号like'S[0-9][0-9][0-9]'),

供应商名nchar(16),

地址nchar(30));

create table订购单

(职工号nchar(8)not null foreign key references职工(职工号),

供应商名nchar(16),订购单号nchar(6)primary key check(订购单号

like'OR[0-9][0-9][0-9][0-9]'),

订购日期datetime default getdate(),

金额money default null);

create table订购单明细

(订购单号nchar(6)not null foreign key references订购单(订购单号),

序号tinyint,

primary key(订购单号,序号),

产品名称nchar(20),

单价money default null check(单价>0),

数量int not null check(数量>0));

create trigger dgdmx on订购单明细

after insert

as begin

declare @订购单号nchar(6)select @订购单号=订购单号from inserted

update订购单set金额=(select sum(单价*数量)from订购单明细where订购单号=@订购单号)

where订购单号=@订购单号

end

实验3 数据操作和完整性约束的作用

实验名称

数据操作笔完整性约束的作用

实验内容

在实验二的基础上完成数据的插入操作,然后进行部分修改和删除操作,在这些操作中体会数据完整性约束的作用。

实验目的

熟练掌握SQL的INSERT,UPDATE和DELETE命令,深刻理解数据完整性约束的作用以及约束时机。

实验方法

在实验二的基础上首先用INSERT命令插入各个表的记录,然后使用UPDATE和DELETE 命令对部分记录进行修改和删除操作。

实验要求

1、自行设计各个表的记录,其中仓库表至少5条记录,职工表至少10条记录、供应商表至少5条记录,订购单表至少20条记录,订购单明细表至少50条记录。

2、使用INSERT命令完成记录的插入操作,要求分别设计若干违反实体完整性、参照完整性和用户定义完整性约束的插入操作,并分析原因。

3、设计若干删除操作,体会执行删除操作时检查参照完整性规则的效果(要求涉及拒绝删除、空值删除和级联删除等不同的处理方式)。

4、设计若干更新操作,体会执行更新操作时检查实体完整性规则、参照完整性规则和用户定义完整性规则的效果。

5、将x城市仓库的职工的工资提高10%。

6、用UPDATE语句完成订购单表金额字段的计算(提示:某张订购单的金额为该订购单所有订购项目(订购单明细)单价乘以数量的总和)。

7、设计2~3个删除操作,它需要另外一个表中的数据作为删除条件(例如,按指定的供应商名称删除订购单记录)。

8、在实验报告中给出具体的记录和设计的操作,并针对各种数据完整性检查,给出具体的分析和讨论。

实验步骤

insert into仓库(仓库号,城市,面积) values('GH1111','重庆',99);

insert into仓库(仓库号,城市,面积) values('GH2222','北京',199);

insert into仓库(仓库号,城市,面积) values('GH3333','上海',299);

insert into仓库(仓库号,城市,面积) values('GH4444','厦门',399);

insert into仓库(仓库号,城市,面积) values('GH5555','杭州',499);

insert into职工(职工号,经理,工资) values('GH111111','GH111111',9999); insert into职工(职工号,经理,工资) values('GH111122','GH111122',9999); insert into职工(职工号,经理,工资) values('GH222211','GH222211',9999); insert into职工(职工号,经理,工资) values('GH222222','GH222222',9999); insert into职工(职工号,经理,工资) values('GH333311','GH333311',9999); insert into职工(职工号,经理,工资) values('GH333322','GH333322',9999); insert into职工(职工号,经理,工资) values('GH444411','GH444411',9999); insert into职工(职工号,经理,工资)

values('GH444422','GH444422',9999);

insert into职工(职工号,经理,工资)

values('GH555511','GH555511',9999);

insert into职工(职工号,经理,工资)

values('GH555522','GH555522',9999);

insert into供应商(供应商号,供应商名,地址) values('S111','高回报','杭州');

insert into供应商(供应商号,供应商名,地址) values('S222','高回报','杭州');

insert into供应商(供应商号,供应商名,地址) values('S333','高回报','杭州');

insert into供应商(供应商号,供应商名,地址) values('S444','高回报','杭州');

insert into供应商(供应商号,供应商名,地址) values('S555','高回报','杭州');

insert into订购单(职工号,供应商号,订购单号) values('GH111111','S111','OR1111');

insert into订购单(职工号,供应商号,订购单号) values('GH111111','S111','OR1112');

insert into订购单(职工号,供应商号,订购单号) values('GH111122','S111','OR1113');

insert into订购单(职工号,供应商号,订购单号) values('GH111122','S111','OR1114');

insert into订购单(职工号,供应商号,订购单号) values('GH222211','S222','OR2222');

insert into订购单(职工号,供应商号,订购单号) values('GH222211','S222','OR2221');

insert into订购单(职工号,供应商号,订购单号) values('GH222222','S222','OR2223');

insert into订购单(职工号,供应商号,订购单号) values('GH222222','S222','OR2224');

insert into订购单(职工号,供应商号,订购单号) values('GH333311','S333','OR3333');

insert into订购单(职工号,供应商号,订购单号) values('GH333311','S333','OR3331');

insert into订购单(职工号,供应商号,订购单号) values('GH333322','S333','OR3332');

insert into订购单(职工号,供应商号,订购单号) values('GH333322','S333','OR3334');

insert into订购单(职工号,供应商号,订购单号) values('GH444411','S444','OR4444');

insert into订购单(职工号,供应商号,订购单号) values('GH444411','S444','OR4441');

insert into订购单(职工号,供应商号,订购单号) values('GH444422','S444','OR4442');

insert into订购单(职工号,供应商号,订购单号) values('GH444422','S444','OR4443');

insert into订购单(职工号,供应商号,订购单号) values('GH555511','S555','OR5555');

insert into订购单(职工号,供应商号,订购单号) values('GH555511','S555','OR5551');

insert into订购单(职工号,供应商号,订购单号) values('GH555522','S555','OR5552');

insert into订购单(职工号,供应商号,订购单号)

values('GH555522','S555','OR5553');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR1111','01','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR1111','02','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR1111','03','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR1111','04','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR1111','05','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR1111','06','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR1111','07','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR1111','08','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR1111','09','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR1111','10','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR2222','11','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR2222','12','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR2222','13','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR2222','14','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR2222','15','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR2222','16','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR2222','17','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR2222','18','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR2222','19','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR2222','20','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR3333','21','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR3333','22','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR3333','23','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR3333','24','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR3333','25','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR3333','26','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量)

values('OR3333','27','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR3333','28','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR3333','29','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR3333','30','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR4444','31','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR4444','32','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR4444','33','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR4444','34','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR4444','35','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR4444','36','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR4444','37','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR4444','38','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR4444','39','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量) values('OR4444','40','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量)

values('OR5555','41','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量)

values('OR5555','42','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量)

values('OR5555','43','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量)

values('OR5555','44','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量)

values('OR5555','45','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量)

values('OR5555','46','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量)

values('OR5555','47','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量)

values('OR5555','48','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量)

values('OR5555','49','哈根达斯','50','100');

insert into订购单明细(订购单号,序号,产品名称,单价,数量)

values('OR5555','50','哈根达斯','50','100');

update职工set工资=工资*(1+where substring(职工号,1,6)in(select仓库号from仓库where城市='北京');

实验4 数据查询

实验名称

使用SQL SELECT语句的数据查询操作。

实验内容

在实验二和实验三的基础上完成规定的查询操作。实验目的:熟练掌握SQL SELECT 命令。

实验方法

在实验二和实验三的基础上使用SQL SELECT命令完成实验要求中所规定的各种查询。实验要求

用SQL SELECT命令完成以下查询(1)~(12)是一般简单查询:

1. 职工表查询所有工资值(考虑去掉和不去掉重复值两种情况)。

2. 查询仓库表中全部信息。

3. 查询工资多于x元的职工号。

4. 查询哪些仓库有工资多于y元的职工。

5. 给出在仓库x或y(x,y是仓库号)工作,并且工资少于z元的职工号。

6. 查询工资在x~y元范围内的职工信息(x>y)。

7. 从供应商表中查询出全部公司的信息(不要工厂或其他供应商的信息,即供应商名最后两个汉字是“公司”的记录)。

8. 查询城市不是x的全部仓库信息。

9. 查询尚未确定供应商的订购单(即订购单的供应商号为空值的记录)。

10. 查询已经确定了供应商的订购单信息。

11. 按职工的工资值升序列出全部职工信息。

12. 先按仓库号升序,再按工资降序列出全部职工信息。

(13)~(21)使用连接查询:

13. 查询工资多于x元的职工号和他们所在的城市。

14. 查询工作在面积大于x的仓库的职工号以及这些职工工作所在的城市。

15. 根据职工表列出上一级经理及其职工(被其领导)的清单(即列出谁领导谁的清单)。

16. 列出仓库表和职工表的广义笛卡儿积的去处结果。

17. 根据仓库表和职工表的广义笛卡儿积得到仓库表和职工表进行自然连接的结果。

18. 查询供应商-订购单信息,查询结果中包括供应商号、供应商名、订购单号和订购日期

这4个字段。

19. 查询供应商-订购单信息,查询结果中包括供应商号、供应商名、订购单号和订购日期

这4个字段,要求结果中列出所有供应商信息(包括目前没有订购单的)。

20. 查询供应商-订购单信息,查询结果中包括供应商号、供应商名、订购单号和订购日期

这4个字段,要求结果中能够反映目前没有确定供应商的订购单情况。

21. 查询供应商-订购单信息,查询结果中包括供应商号、供应商名、订购单号和订购日期

这4个字段,要求结果即能反映目前没有订购半日的供应商信息,又能反映目前没有确定供应商的订购单情况。

(22)~(31)使用嵌套查询(注意使用ANY,ALL和EXISTS):

22. 查询哪些城市至少有一个仓库的职工的工资为x元。

23. 查询所有职工的工资都多于x元的仓库的信息。

24. 查询和职工x挣同样工资的所有职工信息。

25. 查询哪些城市的仓库向地址为x的供应商发出了订购单。

26. 查询地址为x的供应商目前有y城市仓库的订购单的供应商的名称(分别用嵌套查询和

连接查询完成,分析各自的效率)。

27. 查询有职工的工资大于或等于x仓库中任何一名职工的工资的仓库号。

28. 查询有职工的工资大于或等于x仓库中所有职工的工资的仓库号。

29. 列出每人职工经手的具有最高金额的订购单信息。

30. 查询目前还没有职工的仓库的信息。

31. 查询目前至少有一个职工的仓库的信息。

(32)~(42)汇总和分组查询:

32. 查询目前仓库所在城市的数目。

33. 查询目前需要支付的职工工资的总数。

34. 查询x和y两个城市的仓库职工的工资总和。

35. 查询所有职工的工资都多于x元的仓库的平均面积。

36. 查询工资大于x元的职工所经手的订购单的最高金额。

37. 查询每个仓库的职工的平均工资。

38. 查询每个仓库的订购单的最高金额、最低金额和平均金额。

39. 查询至少有5个订购项目的每张订购单的平均金额。

40. 列出职工全部记录并计算各仓库的平均工资和工资小计,最后给出全体职工的平均工资

和工资总和(使用COMPUTE…BY和COMPUTE)。

41. 列出全部订购单明细并计算各订购单的金额,最后给出所有订购单的平均金额和金额总

计(使用COMPUTE…BY和COMPUTE)。

42. 列出全部订购单记录并计算所有订购单的平均金额和金额总计(使用COMPUTE)。

实验步骤

工资from职工;

*from仓库;

职工号from职工where工资>9999;

仓库号from仓库where仓库号in(select仓库号from职工where工资>9999);

职工号from职工where工资<10000 and仓库号='GH1111'or仓库号='GH3333';

*from职工where工资>9000 and工资<10000;

*from供应商where供应商名like'%回报%';

*from仓库where城市!='重庆';

*from订购单where供应商号is NULL;

*from订购单where供应商号is not NULL;

*from职工order by工资asc;

*from职工order by仓库号asc;

select*from职工order by工资desc;

职工号,城市from职工join仓库on工资>10000;

职工号,城市from职工join仓库on面积>300;

经理,职工号from职工where经理='GH111111';

distinct*from职工,仓库;

distinct*from职工cross join仓库where substring(职工号,1,6)=仓库.仓库号;

供应商.供应商号,供应商名,订购单号,订购日期from供应商join订购单on供应商.供应商号=订购单.供应商号;

供应商.供应商号,供应商名,订购单号,订购日期from供应商left join订购单on供应商.供应商号=订购单.供应商号;

供应商.供应商号,供应商名,订购单号,订购日期from供应商right join订购单on供应商.供应商号=订购单.供应商号;

供应商.供应商号,供应商名,订购单号,订购日期from供应商full join订购单on供应商.供应商号=订购单.供应商号;

城市from仓库where仓库号in(select substring(职工号,1,6)from职工where工资

=9999);

*from仓库where not exists(select*from职工where工资<=9999 and仓库.仓库号

=substring(职工号,1,6));

*from职工where工资in(select工资from职工where职工号='GH222222');

城市from仓库where仓库号in(select substring(职工号,1,6)from订购单where供应商号in(select供应商号from供应商where地址='杭州'));

供应商名from供应商where地址='杭州'and供应商号in(select供应商号from订购单where substring(职工号,1,6)in(select仓库号from仓库where城市='重庆'));

select distinct供应商名from供应商join订购单on供应商.供应商号=订购单.供应商号join仓库on substring(订购单.职工号,1,6)=仓库.仓库号where供应商.地址='杭州'and仓

库.城市='重庆';

substring(职工号,1,6)from职工where职工.工资>=any(select工资from职工where substring(职工号,1,6)='GH1111');

substring(职工号,1,6)from职工where职工.工资>=all(select工资from职工where substring(职工号,1,6)='GH1111');

*from订购单where金额in(select max(金额)from订购单group by职工号);

*from仓库where仓库号not in(select substring(职工号,1,6)from职工);

*from仓库where仓库号in(select substring(职工号,1,6)from职工);

count(城市)from仓库;

sum(工资)from职工;

sum(工资)from职工where substring(职工号,1,6)in(select仓库号from仓库where城市='北京'or城市='上海');

avg(面积)from仓库where仓库号in(select substring(职工号,1,6)from职工where工资>10000);

max(金额)from订购单where职工号in(select职工号from职工where工资>10000);

avg(工资)from职工where substring(职工号,1,6)in(select仓库号from仓库);

max(金额)from订购单where substring(职工号,1,6)in(select仓库号from仓库);

select min(金额)from订购单where substring(职工号,1,6)in(select仓库号from仓库);

select avg(金额)from订购单where substring(职工号,1,6)in(select仓库号from仓库);

avg(单价*数量)from订购单明细group by订购单号having count(序号)>=5;

职工.职工号,经理,工资from职工join仓库on substring(职工号,1,6)=仓库.仓库号order by 仓库.仓库号

compute avg(工资),sum(工资)by仓库.仓库号

compute avg(工资),sum(工资);

订购单明细.订购单号,序号,产品名称,单价,数量,单价*数量from订购单明细join订购单on

订购单明细.订购单号=订购单.订购单号order by订购单.订购单号

compute sum(单价*数量)by订购单.订购单号

compute avg(单价*数量),sum(单价*数量);

订购单.职工号,供应商号,订购单号,订购日期,金额from订购单

compute avg(金额),sum(金额);

实验5 视图的应用

实验名称

视图的建立和应用。

实验内容

在实验三和实验三的基础上定义视图,并在视图上完成查询、插入、更新和删除操作。实验目的

掌握视图定义和应用的方法,体会视图和基本表的异同之处。

实验方法

在实验二和实验三的基础上用CREATE VIEW命令定义视图,然后使用SELECT命令完成查询,使用INSERT,UPDATE和DELETE命令分别完成插入、更新和删除操作。

实验要求

1、在实验二建立的基本表的基础上,按如下要求设计和建立视图:

a) 基于单个表按投影操作定义视图。

b) 基于单个表按选择操作定义视图。

c) 基于单个表按选择和投影操作定义视图。

d) 基于多个表根据连接操作定义视图。

e) 基于多个表根据嵌套查询定义视图。f) 定义含有虚字段的视图。

2、分别在定义的视图上设计一些查询(包括基于视图和基本表的连接或嵌套查询)。

3、在不同的视图上分别设计一些插入、更新和删除操作,分情况讨论哪些操作可以成功完

成,哪些操作不能完成,并分析原因。

4、在实验报告中要给出具体的视图定义要求和操作要求,并针对各种情况做出具体的分析

和讨论。

实验步骤

1.

create view view1

as

select职工号,工资from职工

2.

create view view2

as

select*from职工where工资>10000

3.

create view view3

as

select订购单号,金额from订购单where职工号='GH222222'

4.

create view view4

as

select仓库.仓库号,城市from仓库join职工on substring(职工号,1,6)=仓库.仓库号join 订购单on订购单.职工号=职工.职工号where面积>200

5.

create view view5

as

select城市from仓库where仓库.仓库号in(select职工.仓库号from职工where职工.职工

号in(select订购单.职工号from订购单where金额>10000))

view view6

as

select订购单号,sum(单价*数量)金额from订购单明细group by订购单号

select view1.职工号from view1 join view2 on view1.职工号=view2.职工号where view2.工资>10000

select view4.城市from view4 where view4.仓库号in(select view2.仓库号from view2 where view2.工资>10000)

insert into view1 values('GH555533','')

update view4 set城市='邯郸'where仓库号='GH3333'

delete view3 where订购单号='OR2223'

实验6 游标

实验名称

游标的设计和使用

实验内容

在SQL Server环境下使用T-SQL的游标功能完成指定的操作。

实验目的

理解和掌握游标的使用方法

实验方法

在SQL Server环境下使用游标完成指定的操作。

实验要求

1、定义一个游标,其内容是按单价升序列出的全部订购单及其明细信息。

2、逐一读出游标中的记录,并显示。

数据库实验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

数据库系统实验报告 实验三 数据控制(安全性)..

《数据库系统概论》实验报告 题目:实验三数据控制(安全性) 班级姓名学号日期2014年6月6日 一、实验目的 1.通过SQL对数据库进行安全性控制 2.完成教材中例题的上机练习 二、实验平台 微软SQL Server 2000或以上版本。 对于SQL Server 2000,使用查询分析器运行SQL语句,对于SQL Server 2005以上的版本,使用SQL Server Management Studio运行SQL语句。 三、实验内容和要求 使用SQL对数据进行安全性控制,包括授权和权力回收。 操作完成后,查看授权用户是否真正具有所授予的数据操作权利,在权力回收操作之后,用户是否确实丧失了所回收的数据操作权力。 在前几次实验中已经建立了实验数据库,继续在此数据库上进行实验所要求的各项操作。认真填写实验报告,记录所有的实验用例。 四、实验步骤 1.以管理员sa登录数据库,新建DB数据库,然后运行如下SQL语句,创建 我们前几次实验所建立的表。 CREATE TABLE course ( Cno char(4) NOT NULL, Cname char(40) DEFAULT NULL, Cpno char(4) DEFAULT NULL, Ccredit smallint DEFAULT NULL, PRIMARY KEY (Cno) ) ; -- -- 转存表中的数据'course' -- INSERT INTO course (Cno, Cname, Cpno, Ccredit) V ALUES ('1', '数据库', '5', 4); INSERT INTO course (Cno, Cname, Cpno, Ccredit) V ALUES ('2', '数学', NULL, 2);

数据库实验四-查询

华中科技大学 《数据库技术与应用》实验报告专业班级:学生姓名:学号: 实验地点:指导教师: 实验日期时间: 一、实验项目名称:数据查询 二、实验学时: 三、实验目的: 1.掌握使用Transact-SQL的SELECT语句进行基本查询的方法。 2.掌握使用SELECT语句进行条件查询的方法。 3.掌握嵌套查询的方法。 4.掌握多表查询的方法。 5.掌握SELECT语句的GROUP BY和ORDER BY子句的作业和使用方法。 四、实验工具或环境 一台装有SQL sever2008的计算机五、实验内容、步骤、代码和结果: 0. 创建studentsdb数据库及其相应表,并录入数据。 在SQL Server管理平台上,点击“新建查询”打开查询编辑器窗口,复制粘贴附件“创建数据库代码”中的代码到查询编辑器窗口,运行即可生成相关数据库和表,并有相应的数据。 1.在studentsdb数据库中,使用下列SQL语句将输出什么? (1)SELECT COUNT(*) FROM grade (2)SELECT SUBSTRING(姓名,1,2) FROM student_info (3)SELECT UPPER('kelly') (4)SELECT Replicate('kelly',3) (5)SELECT SQRT(分数) FROM grade WHERE 分数>=85

(6)SELECT 2,3,POWER(2,3) 选做 (7)SELECT YEAR(GETDATE()),MONTH(GETDATE()),DAY(GETDATE()) 2.在studentsdb数据库中使用SELECT语句进行基本查询。 (1)在student_info表中,查询每个学生的学号、姓名、出生日期信息。 (2)查询学号为0002的学生的姓名和家庭住址。 select姓名,家庭住址from student_info where学号 ='0002' (3)找出所有男同学的学号和姓名。 select姓名,家庭住址from student_info where性别='男' 3.使用SELECT语句进行条件查询 (1)在grade表中查找分数在80~90分为内的学生的学号和分数。 select学号,分数from grade where分数>='80'and分数<='90' (2)在grade表中查询课程编号为0003的学生的平均分。 select AVG(分数)as平均分from grade where课程编号='0003'

数据库实验题目和答案

按照如下方式重新定义四张表: 定义新的books表,其所拥有的属性与属性类型与原有的books表一致 以列级完整性的方式定义属性bookId为主码,同时在定义的时候必须提供约束名 定义属性category为”非空” ,同时在定义的时候必须提供约束名 create table Books( bookId number(9,0) constraint BooksKey primary key, title varchar(80), author varchar(40), year integer, category varchar(15) constraint B1 not null ); commit; 定义新的customers表,其所拥有的属性与属性类型与原有的customers表一致 以表级完整性的方式定义属性cid为主码 以列级完整性的方式定义属性cname为”唯一”,同时在定义的时候必须提供约束名 create table Customers ( cid number(9,0), cname char(40) constraint C1 unique, age integer, primary key(cid) ); commit; 定义新的purchases表,其所拥有的属性与属性类型与原有的purchases表一致 定义属性cid与bookId为主码,同时在定义的时候必须提供约束名 以列级完整性的方式定义属性bookId为外码,它参照Books表的主码,同时在定义的时候必须提供约束名。当删除Books表中的某一本书时,级联删 除与它相关的购买记录 以表级完整性的方式定义属性cid为外码,它参照customers表,同时在定义的时候必须提供约束名。当删除customers表中的某个顾客时,如果存在 与该客户相关的购买记录,拒绝删除。 create table Purchases( cid number(9,0), bookId number(9,0)

连接SQLServer2008数据库的方法

连接SQLServer2008数据库的方法 一、设置SQLServer2008: SQL server 2008 1433端口开启解决方案 查看电脑开放端口命令为:netstat -an SQL Server 2008一般默认的端口为 1433 ,但有时会遇到无法连接端口1433的问题,检查端口1433是否启用的方法为: 开始–>输入cmd –>回车–>telnet localhost 1433->回车出现黑屏,表示本机连接端口1433成功。 否则按照以下顺序进行配置: (1)关闭数据库引擎 打开配置管理器,找到 SQL Server(SQEXPRESS),右键单击,选择停止,即可停止数据库引擎

(2) .配置服务器端和客户端的TCP/IP协议: 在SQL Server网络配置中选择SQLEXPRESS的协议,选择TCP/IP ,右键单击,选择属性 选择IP 地址选项卡 把"IP1"和"IP2"中"TCP端口"为1433,"已启用"改为"是" 把“IP地址”下“IPALL”的端口改为“1433”。

(3)SQL Native Client 10.0 配置->客户端协议->TCP/IP (4).开启数据库引擎

这样就开启了1433的端口了 先停止SQLServer2008服务。 1.启用1433端口 S1:执行“配置工具”下的“SQL Server配置管理器”。打开如下窗口: S2:右击“SQL Server网络配置”右边的“TCP/IP”,从快捷菜单中选择“属性”,打开下图所示窗口

2.设置登录方式(使用SQL Server登录方式,而不是Windows方式) 打开“SQL Server Management Studio”,打开如下图所示快捷菜单,选择“属性”

数据库系统设计实验报告

数据库系统设计实验报告 ――教务管理系统 学院:计算机科学与技术 专业:软件工程 班级: 学号: 姓名: 指导老师:

一、概述 项目背景:数据库课程设计 系统名称:教务管理系统 开发环境:SQL Server 2008 二、需求分析 1、系统的概述 ?一个学校由很多个学院组成,每个学院有多个专业,每个专业有1个或 者多个班级。一个学生只属于1个班级,学生有姓名、学号、性别、身 份证号、入学时间等属性。 ?每个专业的每个年级都有对应的教学计划。教学计划指定了这个专业这 个年级的某门课程在那个学期上,学分、学时是多少。每个学院都设置 有1个教务秘书,这些信息都由教务秘书进行输入。每个院系的课程都 有自己的唯一编码,比如计算机系上的C语言,和电子系上的C语言, 虽然都是同一门课,但是编码是不同的。但是同一个院系中的相同的课 程,课程代码是唯一的。比如计算机学院的07计算机软件专业和计算机 学院的07计算机科学专业都有C语言课程,这两门课程的课程代码是相 同的。 ?教务秘书在每个学期的中间时刻,为下一个学期进行排课,排课的内容 根据教学计划,比如08计算机软件专业的学生,在2009-2010年第2 学期上的课程,可以通过教学计划得知要上什么课程,然后对这些课程 安排上课教师(比如陈越)、上课时间(比如星期2,第1-2节)和地点 (理工楼234),有的课程是单周上,有的双周,也有是每周都上的。 ?在每个学期期末,学生登录到网站上选择下一个学期需要上的课,选择 的时刻,可以选择是否需要教材,如果某门课程的人数选满了,则不能 给任何学生选择了。 ?学生根据选择的课程进行上课,参加考试。每个老师可以用自己的用户 名和密码登陆网站,选择这个学期自己所教的课程(一个老师可以上多 个班级的课程),输入这个班级的成绩,成绩分为期末考试成绩、期中考 试成绩、平时成绩、实验成绩以及总评成绩。这些成绩都需要进行存储。 ?为了保证安全性,老师输入的成绩并不是直接放到最终的成绩表中,而 是放在一个临时的表中,只有当教务秘书审核过后,才导入到最终的成 绩表中。

实验报告 数据库的基本查询'

一、实验目的: 通过该实验掌握应用SQL 查询数据库的基本方法,包括单表、多表查询。 二、实验原理 数据库查询是数据库的核心操作。SQL语言提供了SELECT语句进行数据库的查询。 SELECT[ALL|DISTINCT] <目标列表达式〉[,<目标列表达式〉]... FROM<表名或视图名〉[,<表名或视图名〉]... [WHERE<条件表达式>] [GROUP BY<列名1〉[HA VING<条件表达式>]] [ORDERBY<列名2〉[ASC|DESC]] 三、实验内容和方法 实验用的数据库:用实验二建立的数据库:School 1. 投影查询 (1) 查询SC表的sno的不重复记录。 使用SQL语句:“select distinct Sno from SC”,得出结果如下图所示: (2) 改变查询结果的标题名:sno为学号,sname为姓名,ssex 为性别,sdept 为系名。 使用SQL语句:“select Sno 学号,Sname 姓名,Ssex 性别,Sdept 系名from Student”,得出结果如下图所示:

(3) 查询STUDENT表的前3条记录(top 3)。 使用SQL语句:“select top 3 * from Student”,得出结果如下图所示: 3. 选择查询 (1) 查询成绩在60-80之间的姓名、系名和成绩。 使用SQL语句:“select Sname,Sdept,Grade from Student,SC where Grade>60 and Grade<80 and Student.Sno=SC.Sno”,结果如下图所示: 若使用SQL语句:“select Sname,Sdept,Grade from Student,SC where Grade between 60 and 80 and Student.Sno=SC.Sno”,则结果如下图所示: (2) 查询信息系和计算机系的姓名和成绩。 使用SQL语句:“select Sname,Grade from Student,SC where Sdept='IS' and Student.Sno=SC.Sno or Sdept='CS' and Student.Sno=SC.Sno”,结果如下图所示:

数据库实验五题目答案

实验五 实验5.1 数据查询 1)要求 以School数据库为例,在该数据库中存在四表格,分别为: ●表STUDENTS(sid, sname, email, grade); ●表TEACHERS(tid, tname, email, salary); ●表COURSES(cid, cname, hour); ●表CHOICES(no, sid, tid, cid, score) 在数据库中,存在这样的关系:学生可以选择课程,一个课程对应一个教师。在表CHOICES中保存学生的选课记录。 按以下要求对数据库进行查询操作: (1)查询年级为2001的所有学生的名称并按编号升序排列。 程序:Select sname from students where grade='2001' order by sid asc; (2)查询学生的选课成绩合格的课程成绩。 程序:Select score from choices where score>'59';

(3)查询课时是48或60的课程的名称。 程序:select cname from courses where hour='48'or hour='60'; (4)查询所有课程名称中含有data的课程编号。 程序:select cid from courses where cname like'%data%';

(5)查询所有选课记录的课程号(不重复显示)。 程序:select distinct cid from choices; (6)统计所有教师的平均工资。 程序:select avg(salary) from teachers;

数据库查询实验报告

应用数学学院_学院专业_1__班学号 姓名___ ___教师评定 实验题目数据库的查询 一、实验目的与要求 实验目的:使学生掌握SQL Server查询分析器的使用方法,加深对SQL 和Transact-SQL语言的查询语句的理解。熟练掌握简单表的数据查询、数据排序和数据联结查询的操作方法;嵌套查询语句;熟练掌握数据查询中的分组、统计、计算和组合的操作方法。 实验要求: 1、简单查询操作。该实验包括投影、选择条件表达,数据排序,使用临时表等; 2、连接查询操作; 3、嵌套查询。在SQL Server查询分析器中使用IN、比较符、ANY或ALL和EXISTS 操作符进行嵌套查询操作; 4、分组查询实验。包括分组条件表达、选择组条件的表达方法; 5、使用函数查询。包括统计函数和分组统计函数的使用方法; 6、组合查询实验; 二、实验方案 将查询需求用Transact-SQL语言表示;在SQL Server查询分析器的输入区中输入Transact-SQL查询语句;设置查询分析器的结果区为标准执行或网格执行方式;发布执行命令,并在结果区中查看结果; 三、实验结果和数据处理 1、学生选课库的各个表截图: (1)学生表

(2)课程表 (3)选课表 2、图书-读者库的各个表截图(1)图书表

(2)读者表 (3)借阅表 实验步骤: 1、简单查询: l)用Transact-SQL语句表示下列操作.在学生选课库中实现其数据查询操作.①求数学系学生的学号和姓名。 select 学号,姓名 from 学生 where 所在系='数学';

结果: ②求选修了课程的学生学号。 select distinct 学号 from 选课 结果: ③求选修A1课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。 select 学号,成绩 from 选课 where 课程号='A1' order by 成绩 desc,学号 asc 结果: ④获选修课程A1且成绩在80~90分之间的学生学号和成绩,并将成绩乘以系数0.8 输出。select 学号,成绩*0.8 from 选课 where 课程号='A1' and 成绩 between 80 and 90 结果: ⑤求数学系或计算机系姓张的学生的信息。 select * from 学生 where 所在系 in ('数学','计算机') and 姓名 like '张%'; 结果; ⑥求缺少了成绩的学生的学号和课程号。(本库中没有学生没有成绩) select 学号,课程号 from 选课 where 成绩 is null

数据库试验答案

计算机与信息学院 数据库实验报告 专业班级 学生姓名及学号 课程教学班号 任课教师 实验指导教师 实验地点 2012 ~2013 学年第二学期

实验1 使用向导创建和删除数据库 一、实验目的 1.熟悉SQL Server 中SQL Server Management Studio的环境 2.了解SQL Server 数据库的逻辑结构和物理结构 3.掌握使用向导创建和删除数据库的方法 二、实验要求 1.熟练使用SSMS进行数据库的创建和删除操作。 2.完成实验报告。 三、实验内容 设有一学籍管理系统,其数据库名为“EDUC”。 初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长; 日志文件初始为2MB,最大可增长到5MB,按1MB增长。 数据库的逻辑文件名为“student_data”, 物理文件名为“student_data.mdf,存放路径为“E:\sql_data”。 日志文件的逻辑文件名为“student_log”, 物理文件名为“student_log.ldf”,存放路径为“E:\sql_data”。 四、实验步骤

1.使用SQL Server Management Studio(简称SSMS)创建数据库。 (1)启动SSMS 在开始菜单中:所有程序-SQL Server 2005 -SQL Server Management Studio单击“连接”按钮,便可以进入【SQL Server Management Studio】窗口。如果身份验证选择的是“混合模式”,则要输入sa的密码。 (2)建立数据库 在“对象资源管理器”窗口,建立上述数据库EDUC。在数据库节点上右击选择新建。同时建立一个同样属性的数据库EDUC1。

数据库系统实验

实验指导书 班级:090402 姓名:郑锦坤

序言 数据库是数据管理的最新技术,是计算机科学的重要分支。通过学习重点让大家掌握数据库技术的程序设计思想和方法,学习开发管理系统的技术,并结合PB8.0以上版本和SQL SERVER 2000以上版本上机环境编程测试。 为了达到这个目的,这里安排五个实验单元。 实验报告的内容 1.题目 描述每个实验的内容是什么。 2.需求分析 用E-R图描述数据库的模式设计及每个关系模式的建立;描述数据字典及程序数据流;每个事件、函数或过程 的头和规格说明; 3.源程序清单和结果 源程序要加注释,要有测试数据及结果。

实验1:学习SQL 语句与SQL SERVER的数据库环境(4学时) 本次实验的主要目的在于学会使用SQL SERVER环境建 库的方法,学会SQL SERVER企业管理器和查询分析器的使用,通过数据库操纵环境,了解库的建立、表的建立、数据库 的查询实现方法。实验数据如下: Student SC

实验报告 1 日期: 一.SQL语句实验题目: 1.建立课程表 2.建立学生表 3.建立选课表 4.查询所有学生的详细信息

SELECT Student.SCLASS, Student.SNO,Student.SNAME, Student.SSEX, Student.SAGE , Student.SDEPT,https://www.wendangku.net/doc/9f2647687.html,O,SC.GRADE,https://www.wendangku.net/doc/9f2647687.html,AME,Course.CPNO,Course. CCREDIT FROM Course,Student,SC WHERE SC.SCLASS=Student.SCLASS AND SC.SNO=Student.SNO AND https://www.wendangku.net/doc/9f2647687.html,O=https://www.wendangku.net/doc/9f2647687.html,O 5.查询1班的学生号学及姓名 SELECT SNO,SNAME FROM Student WHERE SCLASS='1' 6.查询‘刘晨’的出生年 7.查询姓‘刘’的学生的详细情况

数据库实验四:SQL数据查询

数据库实验四:S Q L数 据查询

数据库实验四:SQL数据查询 一、实验目的与要求: 1.实验目的 熟练掌握SQL SELECT语句,能运用查询语句完成各种查询。 实验内容: 在实验三和实验四的基础上完成查询操作,将题目中的x, y等具体化: 1、一般简单查询 (1)不带条件的查询指定字段(考虑去掉和不去掉重复值两种情况)。 (2)查询某个表中的所有记录。 (3)使用单个条件的简单查询。 (4)使用多个条件(AND关系)的查询。 (5)使用多个条件(OR关系)的查询。 (6)使用多个条件(混合AND和OR关系)的查询。 (7)使用带NOT运算的查询。 (8)使用BETWEEN···AND···的查询。 (9)使用NOT···BETWEEN···AND···的查询。 (10)使用LIKE运算符的字符串匹配查询。 (11)使用LIKE运算符的模板匹配查询。 (12)查询空值和非空值的查询 (13)结果要求排序的查询 (14)查询结果按多列排序,并分别要求升序和降序的查询。 (15)使用TOP显示前若干记录的查询。 (16)使用TOP显示前若干记录的查询,如果有满足条件的并列记录一并显示。 2、连接查询 (17)两个关系的连接查询。 (18)带其他查询条件的两个关系的连接查询。 (19)多个关系(三个以上)的连接查询。 (20)两个关系的广义笛卡尔积运算结果。 (21)根据两个关系的广义笛卡尔积运算结果得到两个关系进行自然连接的结果。 (22)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段。 (23)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中列出所有教师信息(即包括不 是任何课程责任教师的教师信息)。 (24)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中能够反映目前没有确定责任教 师的课程信息。 (25)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中既能够反映目前不是责任教师

同济大学数据库实验5答案

create proc procA as select* from student exec proca create proc procB @_year char(4) as select* from student where year(birthday )=@_year declare @_year char(4) set @_year ='1994' exec procB@_year create proc procf @_Snum char(30) as select s.snum ,avg(score)as平均成绩,count(https://www.wendangku.net/doc/9f2647687.html,um)as选秀门数,sum(1-score/60)as不及格门数 from student s,course c,sc,sections st where s.snum =sc.snum and sc.secnum =st.secnum and https://www.wendangku.net/doc/9f2647687.html,um =https://www.wendangku.net/doc/9f2647687.html,um and S.Snum =@_Snum group by S.Snum DECLARE @_SUNM char(30) set @_SUNM ='s001' exec procf@_sunm CREATE PROC Procd @_snum char(4),@_avg int out,@_selected_course int out,@_failed_course int out AS SELECT @_avg=AVG(score),@_selected_course=COUNT(cnum),@_failed_course=sum(1-score/60) FROM sc JOIN sections ON sc.secnum =sections.secnum WHERE snum=@_snum

数据库系统原理及应用实验全套

数据库系统原理及应用实验指导书 (本科) 福建工程学院计算机与信息科学系计算机软件与理论教研室 浅诺制作 2012年5月

目录 实验一数据定义语言 (1) 实验二 SQL Sever中的单表查询 (5) 实验三 SQL Serve中的连接查询 (8) 实验四 SQL Serve的数据更新、视图 (12) 实验五数据控制(完整性与安全性) (17) 实验六语法元素与流程控制 (22) 实验七存储过程与用户自定义函数 (28) 实验八触发器 (34)

实验一数据定义语言 一、实验目的 1.熟悉SQL Server2000/2005查询分析器。 2.掌握SQL语言的DDL语言,在SQL Server2000/2005环境下采用Transact-SQL实现表 的定义、删除与修改,掌握索引的建立与删除方法。 3.掌握SQL Server2000/2005实现完整性的六种约束。 二、实验内容 1.启动SQL Server2000/2005查询分析器,并连接服务器。 2.创建数据库: (请先在D盘下创建DB文件夹) 1)在SQL Server2000中建立一个StuDB数据库: 有一个数据文件:逻辑名为StuData,文件名为“d:\db\”,文件初始大小为5MB,文件的最大大小不受限制,文件的增长率为2MB; 有一个日志文件,逻辑名为StuLog,文件名为“d:\db\”,文件初始大小为5MB,文件的最大大小为10MB,文件的增长率为10%

2)刷新管理器查看是否创建成功,右击StuDB查看它的属性。 3.设置StuDB为当前数据库。 4.在StuDB数据库中作如下操作: 设有如下关系表S: S(CLASS,SNO, NAME, SEX, AGE), 其中:CLASS为班号,char(5) ;SNO为座号,char(2);NAME为姓名,char(10),设姓名的取值唯一;SEX为性别,char(2) ;AGE为年龄,int,表中主码为班号+座号。 写出实现下列功能的SQL语句。 (1)创建表S; (2)刷新管理器查看表是否创建成功; (3)右击表S插入3个记录:95031班25号李明,男性,21岁; 95101班10号王丽,女性,20岁; 95031班座号为30,名为郑和的学生记录;

实验三 数据库的查询和视图

实验三数据库的查询和视图 T4.1 数据库的查询 1、目的和要求 (1)掌握SELECT语句的基本语法。 (2)掌握子查询的表示。 (3)掌握连接查询的表示。 (4)掌握SELECT语句的GROUP BY子句的作用和使用方法。 (5)掌握SELECT语句的ORDER BY子句的作用和使用方法。 2、实验准备 (1)了解SELECT语句的基本语法格式。 (2)了解SELECT语句的执行方法。 (3)了解子查询的表示方法。 (4)了解连接查询的表示。 (5)了解SELECT语句的GROUP BY子句的作用和使用方法。 (6)了解SELECT语句的ORDER BY子句的作用。 3、实验内容 (1)SELECT语句的基本使用。 ①对于实验二给出的数据库表结构,查询每个雇员的所有数据。 新建一个查询,在“查询分析器”窗口中输入如下语句并执行。 单击右键空白处,选择执行,在下方会出现所有结果。 【思考与练习】 用SELECT语句查询Departments表和Salary表中所有信息。

新建一个查询,在“查询分析器”窗口中输入如下语句并执行。 单击右键空白处,选择执行,在下方会出现所有结果。 在“消息”中会发现总共有60行受影响。 ② 用SECECT语句查询Employees表中每个雇员的地址和电话号码。 新建一个查询,在“查询分析器”窗口中输入如下代码并执行。 单击右键空白处,选择执行,在下方会出现所有结果。 在“消息”中会发现有12行记录受影响 【思考与练习】 A、用SELECT语句查询Departments表和Salary表的一列或若干行。

利用SELECT语句查询Departments表和Salary表中EmployeeID为000001的记录,在“查询分析器”中输入以下代码。 执行后在下方会出现所有EmployeeID=000001的记录 B、查询Employees表中部门号和性别,要求使用DISTINCT消除重复行。 对表只选择某些行时,可能会出现重复行。此时就需要使用DISTINCT关键字消除结果中的重复行。此时使用DISTINCT消除在Employees中查询到的部门号和性别的重复行,具体代码如下。 上面代码分别是使用了DISTINCT和没有使用DISTINCT关键字,下面就是两种的结果的对比。 可以从上面的执行结果中看出使用了DISTINCT关键字,结果集中的重复行就被消除了。 ③查询EmployeeID为000001的雇员的地址和电话。

数据库实验1-6参考答案

实验一SQL Server使用初步 一、实验目的 1、熟悉SQL Server2000的组成及基本功能。 2、掌握SQL Server2000的登录及注册。 3、掌握SQL Server2000企业管理器的使用方法。 4、熟悉查询分析器的基本使用。 二、实验预习 1、什么是数据库管理系统DBMS?你所知道的DBMS有哪些? 答:DBMS是位于用户和操作系统之间的一层数据管理软件。常见的DBMS主要有:Oracle、db2、SQL Server、MySQL、PostgreSQL、SQLite、Firebird等等。 2、SQL Server 2000(2005)的安装步骤? 答:以企业版安装为例,步骤为: 将企业版安装光盘插入光驱后,出现以下提示框。请选择“安装 SQL Server 2000 组件” 出现下面对话框后,选择 "安装数据库服务器" 。 选择 "下一步",然后选择 "本地计算机" 进行安装。 在 "安装选择" 窗口,选择 "创建新的SQL Server实例..."。对于初次安装的用户,应选用这一安装模式,不需要使用 "高级选项" 进行安装。 "高级选项" 中的内容均可在安装完成后进行调整。 在 "用户信息" 窗口,输入用户信息,并接受软件许可证协议。 在“安装定义”窗口,选择“服务器和客户端工具”选项进行安装。 在“实例名”窗口,选择“默认”的实例名称。 在“安装类型”窗口,选择“典型”安装选项,并指定“目的文件夹”。 在 "服务账号" 窗口,请选择 "对每个服务使用统一账户..." 的选项。 在 "身份验证模式" 窗口,选择 "混合模式..." 选项,并设置管理员"sa"账号的密码。 最后按“下一步”即可完成安装。 检测安装:如果安装成功,应该能成功启动SQL Server,并且能和SQL Server 客户端连接上。 可以通过服务管理器来进行启动。

数据库系统-实验3

实验九触发器的创建与使用 一、实验目的 本实验的目的是使学生进一步掌握SQL Server触发器的创建及使用方法,加深SQL触发器的理解。通过对数据的更新操作体会其触发器的作用。 二、实验准备 结合课堂教学内容,了解触发器的相关知识,掌握触发器的定义,理解触发器的使用方法及其特点。 三、实验要求 1. 掌握T-SQL创建触发器语句Create trigger的使用。 2. 完成所规定的触发器定义要求。 3. 通过数据查询检查触发器的使用效果。 4. 注意操作结果的截图与保存,供撰写实验报告使用。 四、实验内容 1. 在班级表class中增加班级人数(c_total)字段。 2. 为学生表(student)创建INSERT触发器t_inst_stu:新增一名学生时,若其班级编号非空,则将班级表(class)中相应班级的人数(c_total)自动加1。 3. 为学生表(student)创建DELETE触发器t_dele_stu:删除一名学生时,若其班级编号非空,则将班级表(class)中相应班级的人数(c_total)自动减1。 4. 为学生表(student)创建UPDATE触发器t_update_stu: 当某学生所在班号发生变化时(即调到另一班级后),将其原先所在班级的人数(c_total)减1,将新调入的班级班级的人数(c_total)加1。 5. 体会触发器的作用。 五、实验步骤 在查询分析器中完成实验内容。 1. 使用alter table语句在班级表class中增加班级人数(c_total)字段,默认值(DEFAULT)是0; 2. 为学生表(student)分别创建:

数据库实验04 查询

数据库实验04 查询 1)调出上个实验创建的三个表。方法:附加XSKC数据库或运行创建3个表的SQL语句。2)用SQL增加数据语句输入四个表中数据。其中学生表不得少于10个,课程注册表不得少于8个,学期成绩表不得少于30个。注意:输入数据时应先输入主表数据,再输入有外键的数据;同时注意各表已经定义约束条件。 学生表: 课程注册表: 学期成绩表:

3)设计查询语句并在查询编辑器中进行查询。 ①求选修了某门课程的学生姓名。 ②查询某个学生所选修的课程的课程号,课程名称以及成绩。

③查询参与了所有课程选修的学生姓名和学生所在的系别。 该条查询结果为空:④查询没有选修任何一个课程的学生姓名和所在系别。 ⑤查询课程没有学生选修的课程名称。

该条查询结果为空: ⑥查询选修了某个老师的所有课程的学号、姓名和所在系别。 ⑦列出每门课程的平均分、最高分、最低分。 ⑧对所有学生求出所选修课程的最高分、平均分。

⑨对某老师的授课的某课程的分数都增加5分。 查询操作续: 1、查询全体学生的学号、姓名、性别和年龄。 2、查询某专业且某班级的学生,列出学号、性别和出生日期。 由于所插入的表中没有写入班别信息,为显示结果,在此忽略班级限制,

3、查询姓“陈”的学生的学号、姓名和系别。 4、查询姓“陈”的且全名为两个字的学生的学号、姓名和系别。 5、查询查询姓“陈或姓“李”或姓“张”学生的学号、姓名和系别。 6、列出某课程编号的成绩在前三名的学生的学号、成绩。(如果第三名有多个学生都列出)。 7、统计各个系别的学生人数。 8、统计各门课程的平均分、最高分、最低分,结果集按平均分降序排列。

数据库实验答案

实验3 使用T-SQL语言完成单表查询 一、实验目的 掌握使用T-SQL语言完成单表查询 掌握常用谓词的用法 掌握where子句的用法 掌握order by 子句的用法 掌握group by 子句和having短语的用法 实验环境 Microsoft SQL Server 2000。 实验内容和要求 查询全体学生的详细信息。 查询所有课程的详细信息。 查询所有选课记录的详细信息,要结果表中的列名以中文的形式显示,分别为:学号,课程号,成绩。 查询已被学生选修了的课程的编号。 查询系别编号为“d002”的学生的姓名和性别。 查询年龄在19至21岁或者性别为“女”的学生的学号和所在系别编号。 查询系别编号为d001、d002和d003的学生的学号和姓名。 查询课程名为“C_”开头的课程名和学分。 某些学生入学后还没有确定所在的系,查询还没有确定系的学生的姓名。 查询成绩大于60分的学生的学号、课程号和成绩,并将查询结果按课程编号升序排列,同一课程的成绩按分数降序排列。 查询学校所开设的总的课程数。 计算2号课的学生成绩总和以及平均成绩,对应的列名分别为“总成绩”和“平均成绩”。 查询选修了3号课程的学生的最高分和最低分,对应的列名分别为“最高分”和“最低分”。 求各个系别的编号以及各系的人数。 查询选课人数大于等于2人的课程编号以及选课的人数。 查询学生2选修课程的总成绩对应的列名为“总成绩”,并显示出学号。 查询有2门以上课程是80分以上的学生的学号及课程数。 查询选修了1号课的学生的学号和成绩,结果按成绩降序、学号升序排列。 实验1 使用T-SQL语言建库、建表 实验2 向表中增、删、改数据 实验目的 掌握使用T-SQL建库、建表、修改表; 掌握使用T-SQL对表中数据进行插入、删除和修改。 实验环境 Microsoft SQL Server 2000。 实验内容和要求 建立数据库STDB 在数据库STDB中建立四个表:

SQLServer数据库入门学习总结

SQL Server数据库入门学习总结 经过一段时间的学习,也对数据库有了一些认识。 数据库基本是由表,关系,操作组成;对于初学者首先要学的: 1.数据库是如何存储数据的 表,约束,触发器 2.数据库是如何操作数据的 insert,update,delete T-sql 函数存储过程触发器 3.数据库是如何显示数据的 select SQLServer数据库学习总结 1.SQL基础 SQL Server2000安装、配置,服务器启动、停止,企业管理器、查询分析器 第一代数据库--网状数据库和层次数据库;第二代数据库--关系数据库 数据库(DB);数据库管理系统(DBMS);数据库系统(DBS) SQL Server 2000 提供了不同版本:企业版、标准版、个人版、开发版 SQL Server中的数据类型:整数:int,smallint,tinyint,bigint;浮点数:real,float,decimal;二进制:binary,varbinary;逻辑:bit;字符:char,nchar,varchar,nvarchar;文本和图形:text,ntext,image;日期和时间:datetime,smalldatetime;货币:money,smallmoney 数据库的创建和删除;数据库表的创建、修改和删除 数据完整性:实体完整性:Primary Key,Unique Key,Unique Index,Identity Column;域完整性:Default,Check,Foreign Key,Data type,Rule;参照完整性:Foreign Key,Check,Triggers,Procedure;用户定义完整性:Rule,Triggers,Procedure;Create Table中得全部列级和表级约束 SQL Server中有5种约束:主键约束(Primary Key Constraint)、默认约束(Default Constraint)、检查约束(Check Constraint)、唯一性约束(Unique Constraint)、外键约束(Foreign Key Constraint). 关系图 数据库设计的步骤:需求分析、概念结构设计、逻辑结构设计、数据库物理设计、数据库实施、数据库运行和维护 两个实体之间的联系:一对一(1:1)、一对多(1:n)、多对多(m:n) 实体关系模型-- E-R图

数据库系统原理实验

《数据库系统原理》实验指导 信息管理系 2010.9

背景知识介绍 学籍管理是学校管理中一项繁琐的工作,管理人员需要建立学生的学籍,汇总每学期没有拿到规定学分的学生以及这些学生的详细情况;学生完成一门课程的学习后,教师需要录入学生的考试成绩,计算平均成绩、汇总各分数段的人数,学生需要查询已结业的各门课程的成绩;班主任需要查询本班学生学习情况,包括各门课程的平均成绩和每个学生的考试通过情况,为此,设计一套实用的学籍管理系统就可以大大简化管理人员、班主任和任课教师的工作,方便学生查询自己的学习情况。该系统主要实现的功能如表1所示。 表1 学籍管理主要功能表 学籍管理基本情况:一个学院包含多个班级和多名教师,每个班级包括多名学生,根据学校规定,一个班级只有一个班主任,一个老师也只担任一个班级的班主任,一个学院有多名班主任,学院的属性有学院编号和学院名称,班级的属性有班级编号和班级名称,学生的属性有学号、姓名、性别和出生日期;每个学生可以选修多门课程,每门课程也可以被多个学生选修,学生选修课程后参加考试会有考试成绩,一个教师可以讲授多门课程,每一门课程也可以有多个教师讲授,教师授课要考虑授课地点以及授课的学期,一个教师可以受聘一种职称,一个职称可以聘任多个教师,每门课程属于一种课程类型,而每种课程类型可以包含很多门课程,每门课程最多只有一门先修课程。课程的属性包括课程编号、课程名称、课程介绍、开设学期、总学时、学分以及先修课程,教师的属性有教师编号、姓名、性别、出生日期、参加工作时间,职称的属性有职称编号和职称名称,课程类型的属性有课程类型编号和课程类型说明。

实验一学籍管理概念结构设计 1、实验目的 1)熟练掌握概念结构设计的方法 2)熟练掌握PowerDesigner进行CDM设计及检测CDM模型的方法 2、实验内容 PowerDesigner CDM可以描述概念结构,根据前面对学籍管理基本情况的描述,使用PowerDesigner进行学籍管理CDM设计。 3、实验步骤 1)选择file→new model→Conceptual Data Model,建立CDM模型(即概念数据模型)。 2)创建实体,在CDM的图形窗口中,单击设计元素面板上Entity工具(实体),再单击图形窗口的空白处,在单击的位置就出现一个实体符号。点击Pointer工具或右击鼠标,释放Entitiy工具。如图1-1所示。 图1-1 3)双击创建的实体符号,打开图1-2所示窗口,在此窗口“General”标签中可以输入实体的名称、代码、描述等信息。

相关文档
相关文档 最新文档