一、实训目的
1、了解数据库的逻辑结构、物理结构及其特点 2、学会利用企业管理器对数据库进行操作 3、学会利用Transact-SQL语句对数据库进行操作 二、实训任务
1、建立数据库,删除该数据库 2、建立新数据库 3、更改数据库属性 4、设计表结构 5、建立表,删除表 6、更改表
7、向表中插入数据,删除表中的数据,更改表中的数据 三、实训要求
1、数据库、表的创建、更改和删除要求用SQL命令和企业管理器两种方式完成
2、要求数据库中至少包含两个文件组,主文件组中至少包含两个数据文件,明确规定数据库存放的物理路径,文件大小,增长方式等属性。
3、建立四张以上的用户表,字段类型要求合理、合法,为空性要求要合理。
4、每张表给出至少三十条以上记录作为后续实训数据,实验数据要求合理
5、表结构要用表格的形式给出,并添加到实训内容中 6、将涉及到的SQL命令拷贝到“实训内容及步骤”中
7、将实训过程、结果通过截屏的方式添加到“实训内容及步骤”中,并用适当的文字进行说明 四、实训内容及步骤
1
一 1.界面方式创建数据库pxscj:
2.SQL命令创建数据库pxscj:
具体的T-SQL命令:
create database pxscj on (
name='pxscj_data', filename='c:\\Program Server\\pxscj.mdf', size=3MB,
filegrowth=1MB )
log on (
name='pxscj_log', filename='c:\\Program Server\\pxscj.ldf', size=1MB,
Files\\Microsoft SQL
Files\\Microsoft SQL
2
filegrowth=10% ) GO
3.删除数据库:
drop database pxscj1 GO
4.在数据库pxscj中增加一个名为FGroup的文件组。
5.向pxscj数据库中增加数据文件pxscj2,其属性均取系统默认值:
6.更改数据可属性,将主数据文件的最大大小改为100MB,增长方式按每次5MB增长。 具体的T-SQL命令: alter database pxscj modify file (
name=pxscj_data1, maxsize=100MB, filegrowth=5MB ) GO
二.设计表结构: 1.设计XSB:
3
SQL命令:
CREATE TABLE XSB (
学号char (6) NOT NULL, 姓名char(8) NOT NULL, 性别bit NULL,
出生时间datetime NULL, 专业char(12) NULL, 总学分int NULL,
备注varchar(500) NULL )
2.设计KCB:
SQL命令:
CREATE TABLE KCB (
课程号 char(3) NOT NULL, 课程名 char(16) NOT NULL, 开课学期 tinyint NULL, 学时 tinyint NULL, 学分 tinyint NOT NULL
4
)
2.设计CJB:
SQL命令:
CREATE TABLE CJB (
学号 char(6) NOT NULL, 课程号 char(3) NOT NULL, 成绩 int NULL )
三 删除表:
1.选择要删除的表,右键单击,选择“删除”命令:
SQL命令删除表: drop table XSB 2.向表中插入数据: 直接就可以输入数据:
5
SQL命令:
insert into CJB
values('081202','302','80')
3.删除表中的数据:
SQL命令:
delete from XSB where 备注 is null
4.更改表中的数据:
可以直接在表格中修改数据:
SQL命令: update XSB
set 备注='三好生' where 学号='081102' 五、遇到的问题及解决办法
6
第2单元 数据库查询及T-SQL语言
一、实训目的
1、掌握使用SQL语句进行查询的基本方法 2、掌握视图创建更改删除。 3、掌握游标创建更改删除 4、掌握T-SQL语言 二、实训任务
1、写一个SQL语句,实现查询,实现选择一个表中指定的列,修改查询结果中的列标题
2、写一个SQL语句,实现查询,要求消除结果集中的重复行、限制结果集返回行数
3、查询数据库表中某字段值大于等于一定值的记录 4、用LIKE谓词查询指定字段中包含指定字符串的记录 5、写一个SQL语句,实现查询,要求查询条件中使用BETWEEN AND关键字
6、用IN实现子查询、用JOIN关键字实现跨表查询 7、对某字段进行汇总
8、利用GROUP BY子句对查询结果分组 9、对查询结果按某字段排序 10、创建、修改、删除游标 11、从游标中读取数据 12、创建视图 13、查询视图
14、用循环语句实现查找某字段中最小值 15、利用内置函数得到某字段的最大值
16、建立一个用户自定义函数实现求某字段平均值 17、删除用户自定义函数 三、实训要求
1、视图的创建、更改和删除要求用SQL命令和企业管理器两种方式完成
7
2、将涉及到的SQL命令拷贝到“实训内容及步骤”中
3、将实训过程、结果通过截屏的方式添加到“实训内容及步骤”中
4、在需要的时候对实训过程进行一定的文字说明 四、实训内容及步骤
1、写一个SQL语句,实现查询,实现选择一个表中指定的列,修改查询结果中的列标题。 select 姓名from XSB go
select 姓名as name from XSB where 专业='计算机' go
2、写一个SQL语句,实现查询,要求消除结果集中的重复行、限制结果集返回行数
select 专业,性别,count(*) as 人数 from XSB
group by 专业,性别 with rollup
8
3、查询数据库表中某成绩大于85分的学生记录 select *
from CJB,XSB
where CJB.学号=XSB.学号and 成绩>85
4.用LIKE谓词查询XSB中姓“王”的学生情况 select 学号,姓名,专业 from XSB
where 姓名like '王%'
9
5、写一个SQL语句,实现查询,要求查询条件中使用BETWEEN AND关键字
select 学号,成绩 from CJB
where 成绩between 75 and 80
6、用IN实现子查询、用JOIN关键字实现跨表查询 select 成绩 from CJB
where 学号in (
select 学号 from XSB
where 姓名like '王%' )
select 姓名,成绩 from XSB join CJB on XSB.学号= CJB.学号
10
where 课程号='206' AND 成绩>80
7、对某字段进行汇总,利用GROUP BY子句对查询结果分组 select 专业, count(*) as '学生数' from XSB
group by 专业
8、对查询结果按某字段排序 select * from XSB
where 专业='计算机' order by 出生时间
9 创建、修改、删除游标
创建游标:
11
DECLARE XS_CUR1 CURSOR FOR
SELECT 学号,姓名,性别,出生时间,总学分 FROM XSB
WHERE 专业= '计算机' FOR READ ONLY
打开游标,并提取数据: open XS_CUR1
FETCH NEXT FROM XS_CUR1
删除游标:
DEALLOCATE XS_CUR1 10、创建视图
使用CREATE VIEW语句创建视图 CREATE VIEW CS_XSB AS
SELECT * FROM XSB
WHERE 专业= '计算机'
使用界面方式创建视图:
11、查询视图
12
SELECT *
FROM CS_CJB WHERE 成绩>80
12、利用内置函数得到某字段的最大值 SELECT max(成绩)as'最高分' FROM CJB
WHERE 课程号='101'
13、建立一个用户自定义函数实现求某字段平均值
创建用户定义函数,实现计算全体学生某门功课的平均成绩的功能。
CREATE FUNCTION average(@cnum char(20)) RETURNS int AS BEGIN
DECLARE @aver int SELECT @aver= (
SELECT avg(成绩) FROM CJB
WHERE 课程号=@cnum GROUP BY 课程号 )
RETURN @aver END
13
调用函数average:
DECLARE @course1 char(20) DECLARE @aver1 int SELECT @course1 = '101'
SELECT @aver1=dbo.average(@course1) SELECT @aver1 AS '101课程的平均成绩'
14、删除用户自定义函数:
删除函数:DROP FUNCTION average 删除函数:
图2-20 五、遇到的问题及解决办法
14
第3单元 数据完整性、存储过程和触发器
一、实训目的
1、掌握数据完整性、索引的含义及其用法
2、掌握存储过程、触发器定义、修改、删除,存储过程的调用 二、实训任务
1、在某张表上建立索引 2、删除创建的索引 3、创建默认值约束 4、帮定默认值约束 5、删除默认值约束 6、创建check约束 7、删除check约束 8、创建规则
9、帮定规则、解除帮定规则 10、删除规则
11、创建、删除PRIMARY KEY约束、UNIQUE约束 12、实现参照完整性
13、分别创建带参数的、带output参数的存储过程、修改存储过程
14、执行存储过程 15、删除存储过程
16、创建、修改、删除触发器 三、实训要求
1、各种操作要求用SQL命令和企业管理器两种方式完成 2、删除创建的索引 3、创建默认值约束 4、帮定默认值约束 5、删除默认值约束 6、创建check约束 7、删除check约束
15
8、创建规则
9、帮定规则、解除帮定规则 10、删除规则
11、创建、删除PRIMARY KEY约束、UNIQUE约束 12、实现参照完整性
13、分别创建带参数的、带output参数的存储过程、修改存储过程
14、执行存储过程
15、删除存储过程
16、创建、修改、删除触发器 四、实训内容及步骤 1、在某张表上建立索引
界面方式建立XSB的索引PX_XSB:
使用CREATE INDEX命令可以为表创建索引 CREATE INDEX PX_KCB ON KCB(课程名) 2、删除创建的索引 界面方式删除创建的索引:
16
通过SQL命令删除索引: drop index KCB.PX_KCB 3、创建默认值约束 界面方式创建默认值约束
通过SQL命令创建默认值约束 ALTER TABLE XSB
ADD AddDate datetime NULL
CONSTRAINT AddDateDflt DEFAULT getdate() WITH VALUES
4、绑定默认值约束 CREATE TABLE book (
book_id char(6),
name varchar(20) NOT NULL, hire_date datetime NOT NULL ) GO
CREATE DEFAULT today AS getdate() GO
17
EXEC sp_bindefault 'today', 'book.hire_date' 5、删除默认值约束 界面方式删除默认值约束
通过SQL命令删除默认值约束 ALTER TABLE XSB DROP CONSTRAINT AddDateDflt
6、创建check约束
通过“图形向导方式”创建check约束:
利用SQL语句在创建表时创建CHECK约束: CREATE TABLE student (
学号char(6) NOT NULL,
性别char(1) NOT NULL CHECK(性别IN ('男', '女'))
18
)
7、删除check约束
通过“图形向导方式”删除check约束
利用SQL语句删除CHECK约束: ALTER TABLE student
DROP CONSTRAINT 性别IN ('男', '女') 8、创建规则
CREATE RULE kc_rule
AS @range like '[1-5][0-9][0-9]' go
EXEC sp_bindrule 'kc_rule', 'KCB.课程号' GO
9、绑定规则
EXEC sp_addtype 'course_num', 'char(3)', 'not null' EXEC sp_bindrule 'kc_rule', 'course_num' GO
CREATE TABLE KCB1 (
课程号course_num, 课程名char(16) NOT NULL, 开课学期tinyint , 学时tinyint, 学分tinyint )
10、解除规则kc_rule并删除规则对象kc_rule。 EXEC sp_unbindrule 'KCB.课程号'
19
EXEC sp_unbindrule 'course_num' GO
DROP RULE kc_rule
11、创建、删除PRIMARY KEY约束、UNIQUE约束 利用“图形向导方式”创建PRIMARY KEY约束
利用“图形向导方式”删除PRIMARY KEY约束,右键单击,选择“移除主键”。
用SQL命令创建PRIMARY KEY约束 CREATE TABLE XSB (
学号char(6) NOT NULL PRIMARY KEY, 姓名char(8) NOT NULL, 性别bit NULL DEFAULT 1, 出生时间datetime NULL, 专业char(12) NULL, 总学分int NULL,
备注varchar(500) NULL )
利用“图形向导方式”创建和删除UNIQUE约束
20
用“T-SQL命令”创建及删除PRIMARY KEY约束或UNIQUE约束 ALTER TABLE XSB
DROP CONSTRAINT XH_PK, XM_UK 12、实现参照完整性
利用“图形向导方式”定义表间的参照关系
利用图形向导方式删除表间的参照关系
利用“T-SQL命令”删除表间的参照关系 ALTER TABLE CJB
DROP CONSTRAINT kc_foreign
13、分别创建带参数的、带output参数的存储过程、修改存储过程
21
1)带参数的存储过程。
CREATE PROCEDURE student_info1 @name char (8), @cname char(16) AS
SELECT a.学号, 姓名, 课程名, 成绩, t.学分 FROM XSB a INNER JOIN CJB b
ON a.学号= b.学号INNER JOIN KCB t ON b.课程号= t.课程号
WHERE a.姓名=@name and t.课程名=@cname 2)存储过程定义后,执行存储过程student_info1:
EXECUTE student_info1 '王林', '计算机基础
3)使用OUTPUT游标参数的存储过程
CREATE PROCEDURE st_cursor @st_cursor cursor VARYING OUTPUT AS
SET @st_cursor = CURSOR FORWARD_ONLY STATIC FOR SELECT * FROM XSB OPEN @st_cursor
4)使用ALTER PROCEDURE命令可修改已存在的存储过程 ALTER PROCEDURE student_info1
@number char(6),@cname char(16) AS
SELECT 学号, 课程名, 成绩 FROM CJB, KCB
WHERE CJB.学号=@number AND KCB.课程名=@cname 5)删除存储过程:
DROP PROCEDURE student_info1 6)界面方式操作存储过程:
22
14、创建、修改、删除触发器
1)创建触发器,当修改XSB表中的学号时,同时也要将CJB表中的学号修改成相应的学号(假设XSB表和CJB表之间没有定义外键约束)。
CREATE TRIGGER xsb_update ON XSB AFTER UPDATE AS BEGIN
DECLARE @old_num char(6), @new_num char(6) SELECT @old_num=学号FROM deleted SELECT @new_num=学号FROM inserted
UPDATE CJB SET 学号=@new_num WHERE 学号=@old_num END
2)接着修改XSB表中的一行数据,并查看触发器执行结果: UPDATE XSB SET 学号='081120' WHERE 学号='081102' SELECT * FROM CJB WHERE 学号='081120'
3)修改触发器:
ALTER TRIGGER xsb_delete ON XSB FOR UPDATE AS
PRINT '执行的操作是修改' 4)删除触发器xsb_delete:
23
DROP TRIGGER xsb_delete 5)界面方式操作触发器:
五、遇到的问题及解决办法
24
第4单元 备份恢复导入导出及系统安全管理
一、实训目的
1、了解数据库备份恢复 2、了解导入导出的概念及用法 3、掌握数据库安全管理基本知识 二、实训任务 1、创建备份设备 2、备份数据库 3、备份事务日志 4、恢复备份内容 5、从表中导出数据 6、向表中导入数据 7、创建、删除登陆帐号
8、添加和删除固定服务器角色成员 9、创建数据库角色
10、将一个登录账号添加为某个数据库的用户 11、给数据库角色添加成员
12、数据库用户、角色操作权限的授予、拒绝和收回 13、数据库用户、角色的删除 三、实训要求
1、各种操作要求用SQL命令和企业管理器两种方式完成 2、将涉及到的SQL命令拷贝到“实训内容及步骤”中
3、将实训过程、结果通过截屏的方式添加到“实训内容及步骤”中
4、在需要的时候对实训过程进行一定的文字说明 四、实训内容及步骤 SQL命令操作方式: 1、创建备份设备 USE master GO
25
EXEC sp_addumpdevice 'disk', 'mybackupfile', 'E:\\mybackupfile.bak'
界面方式创建备份:
2、备份数据库 USE master GO
EXEC sp_addumpdevice 'disk' , 'test1', 'E:\est1.bak' BACKUP DATABASE PXSCJ TO test1 界面方式备份数据库
26
3、备份事务日志 USE master GO EXEC
sp_addumpdevice
'disk'
,
'PXSCJLOGBK'
'E:\estlog.bak'
BACKUP LOG PXSCJ TO PXSCJLOGBK 界面方式备份事务日志
4、恢复备份内容 RESTORE DATABASE PXSCJ FROM PXSCJBK1
WITH FILE=1, REPLACE
界面方式恢复备份内容
,
27
5、从表中导出数据,向表中导入数据
从XSB表中导入,导出数据过程基本一样,所以给出导入过程
28
29
7、创建、删除登陆帐号 USE master GO
CREATE LOGIN [Liaoyu-pc\\Liao] FROM WINDOWS
WITH DEFAULT_DATABASE= PXSCJ
CREATE LOGIN sql_Liao
WITH PASSWORD='123456',
DEFAULT_DATABASE=PXSCJ
DROP LOGIN [Liaoyu-pc\\Liao] DROP LOGIN sql_Liao 界面方式创建、删除登陆帐号
8、添加和删除固定服务器角色成员 USE PXSCJ
30
GO
EXEC sp_addrolemember 'db_owner', 'Liao' USE PXSCJ GO
EXEC sp_droprolemember 'db_owner', 'Liao' 界面方式添加和删除固定服务器角色成员
9 创建数据库角色 USE PXSCJ GO
CREATE ROLE ROLE2
AUTHORIZATION dbo 界面方式创建数据库角色
31
9、将一个登录账号添加为某个数据库的用户 USE PXSCJ GO
CREATE USER [0BD7E57C949A420\\liu] GO
EXEC sp_addrolemember 'ROLE1', '0BD7E57C949A420\\liu' 界面方式将一个登录账号添加为某个数据库的用户
FROM LOGIN [0BD7E57C949A420\\liu]
10、给数据库角色添加成员 USE PXSCJ GO
EXEC sp_addrolemember 'ROLE1','ROLE2' 界面方式给数据库角色添加成员
32
11、数据库用户、角色操作权限的授予、拒绝和收回 USE PXSCJ GO
GRANT CREATE TABLE TO david, wang
GO USE PXSCJ GO
GRANT SELECT ON XSB
TO public GO USE PXSCJ GO
DENY SELECT, INSERT, UPDATE, DELETE ON XSB TO li, huang, [0BD7E57C949A420\\liu]
GO
DENY CREATE TABLE TO ROLE2
GO
REVOKE CREATE TABLE FROM wang GO USE PXSCJ GO
REVOKE SELECT ON XSB TO huang
AS ROLE2 界面方式对数据库用户、角色操作权限的授予、拒绝和收回
33
13、数据库用户、角色的删除
EXEC sp_droprolemember 'db_owner', 'david' DROP ROLE ROLE2
界面方式对数据库用户、角色的删除
五、遇到的问题及解决办法
34
第5单元 编程实现数据库操作
一、实训目的
1、了解数据库应用程序的开发过程
2、能够使用编程语言对数据库进行增、删、改、查等操作 二、实训任务 1、建立应用程序
2、实现对数据库中各表的增删改查操作 三、实训要求
1、将主要代码拷贝到实训内容及步骤中去
3、将实训过程、结果通过截屏的方式添加到“实训内容及步骤”中
四、实训内容及步骤
创建学生成绩查询及添加等界面。
35
添加模块如图
连接数据库及查询代码: namespace DBXS {
public class DBXS {
public const string
XS_CONNSTR=@\"database=PXSCJ;user id=sa;password=123456\"; public const string XS_SQLSTR = @\"select * from (select row_number() over(order by 学号?) as 'rownum', * from XSB) as temp where rownum between 1 and 10\";
public DBXS() { }
public string XS_CONN_STR { get
{ return XS_CONNSTR;} }
public string XS_SQL_STR
36
{ get
{ return XS_SQLSTR } } } }
显示查询结果:
删除一条记录:
其他功能如”上一条”,”下一条”等在该程序中均有体现,连接数据库的时候应注意数据库的名字应相一致。
五、遇到的问题及解决办法
37
因篇幅问题不能全部显示,请点此查看更多更全内容