《2015年数据库实验指导书含解答.pdf》由会员分享,可在线阅读,更多相关《2015年数据库实验指导书含解答.pdf(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据摩实 龄 能 导目 录实验一 S Q L S E V E R 20 0 0 的系统工具及用户管理、使用交互方式建库、建表.3实验二 T S Q L 的简单查询、连接查询.1 5实验三子查询及组合.23实验四 数据库的更新、视图的定义及使用.26实验五数据导入/导出、数据备份和恢复.29实验六数据完整性和数据安全性.30实验七存储过程和触发器.34实验八 嵌入式S Q L.36实验一 S Q L S E V E R 20 0 0 的系统工具及用户管理、使用交互方式建库、建表一、实验目的:认识S Q L S E V E R 20 0 0 的服务管理器,了解客户端和数据库服务器的连接过程,初步掌
2、握和使用E nt e rpris e r M a na g e r以交互方式创建数据库、表、索引和修改表结构,熟练掌握使用E nt e rpris e r M a na g e r向数据库输入数据、修给数据和删除数据的操作。二、实验内容:1.启动数据库服务软件S Q L S e rv e r 20 0 0:在程序菜单中选择M ic ros of t S Q L S e rv e r,如图1-1 所示:AutoCAD R14 Dr.COM客 户 端 软 件 GlobalSCAPE 0ffice2000 编 程 软 件 附 件金 山 影 福 2003 MSXML 4.0 Microsoft Wor
3、dMicrosoft AccessMicrosoft ExcelMicrosoft FrontpageMicrosoft OutlookMicrosoft PowerPointKeil PK51-Eval UniScan V5.01 居 讯 QQ2003IIIbeta4去 广 告 显 IP 万 勇 修 改 版.301P USB Camera MSN Messenger 6.1打 字 之 星 X I.0FlashGet Microsoft SQL Server(3 Microsoft SQL Server 版 本 切 换y图 1-1再选中服务管理器,如图1-2所示:查询分析器嗓导入和导出数据F
4、0服务管理器旦鼠图徜等摘服务器网络实用工具客尸端网络实用工具联机丛书企业管理器事件探查器在IIS中配置SQL XML支持1-2点击服务管理器后,出现SQL Server服务管理器,如图1-3所示:图 1-3点击“开始/继续 按钮,启动SQL Server 2000数据库服务。启动成功后,在时钟旁边出现一个符号,如 图 1-4 所示。4睹 的 出15:00图 1-42.在 SQL Server 2000中建立数据库:在程序菜单中选择Microsoft SQL Server,如图1-5所示:启 AutoCAD R14忘 Dr.COM客户端软件忘 GlobalSCAPE忘 0ffice2000编程软
5、件宅附件忘 金 山 影 霸 2003忘 MSXML 4.0画 Microsoft Wordfi Microsoft Access图 Microsoft ExcelK S Microsoft Frontpage Microsoft Outlook|B|Microsoft PowerPoint电 Keil PK51-Eval忘 UniScan V5.01I忠 腾讯QQ2003IIIbeta4去广告显IP 万勇修改版电 30IP USB Camera、:MSN Messenger 6.1O 打字之星XI.0L兰 1 FlashGet目 Microsoft SQL Server1电 Microsoft
6、 SQL Server 版本切换图 1-5再选中企业管理器,如图1-6所示:7?蛰&.2.经国查询分析器导入和导出数据服务管理器服务器网络实用工具客户端网络实用工具联机丛书扁企业管理器事件探查器愉 在 115中配置SQL XML支持图 1-6点击企业管理器后,出现企业管理器的主界面,如图1-7所示:R 制 n(w)阳助(d)4X1OJ.i )T M tq JJ上 士 包 囱 园 i-r 4 陋 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _柯|(local)(WindowsNT)6小顼目iitt 控制台根目 M M krosofl SQL Servers
7、 SQL Server lfi(local)(Windows NT),径钥台根目录t)写 Mlcroscrft SQL Servers0 SQL Server jg(toed)(Windows Nfj口口 口口 口口口沿籍屋 数据利必服 首龙 复制 安全性 支挎服务 Meta Data务Services演开始1会3,耳.朝西|J J S Q L 2 0 0 0|fflu M lW H S.怆SQL Server 都93品;为(15:05图1-7点击左边树状控制栏的+/一号可以打开和关闭SQL Server组中的本地服务项目,在选中数据库服务项目后,单击鼠标右键,出现数据库的菜单,如图1-8所示
8、:口控制台报目录白 留 Microsoft SQL Servers曰9 SQL Server 组EE 库(local)(Windows NT)臼 曰篇建一-由.自-新1 M建M M数1 M据l库(由master由l j-i I由 后由 口由 一由 口 数 才鬲。管3?由。复 才由 口 安全t所有任务(总查看M从这里创建窗口(叨刷新导出列表(L)帮助电 口 支持服务由 口 Meta Data Services图 1-8点击新建数据库,出现新建数据库窗口,如图1-9所示:数 据 库 星 性 一 Test常规 1数据 文 件1事 务 日 志._r-j U 名称(to:|Test|数据库状态:(未 知
9、)所有者:(未 知)创建曰期:C未 知)大小:(未 知)可用空间:(未 知)用户数:(未 知)备份上次数据库备份:无上次事务曰志备份:无维护维护计划:无排序规则名称:1 (服务器默认设置)(确定|取消|帮助|图 1-9输入数据库名称:T est,点击数据文件选项卡,如图1-10所示:数 费 库 屋 性 一Test常规 数 据 文 件I事 务 日 志I数据库文件文件属性T7文件自动增长但)文件增长 按兆字节(1):按百分比回:最大文件大小6文件增长不受限制(U)r将文件增长限制为(MB)(R):确定取消 帮助图 1-10在数据文件中,你可以设定数据文件的名称,所在目录以及文件的大小等信息。完成后
10、点击事务日志选项卡,如图1-11所示:图 1-11事务日志中,你可以设定日志文件的名称,所在目录以及文件的大小等信息。接受系统的缺省值,点击确定按钮,完成数据库的新建,如图1-12所示。口控制台根目录白 到 Microsoft SQL ServersE 3 SQL Server 组B 命(local)(Windows NT)数据库由 昌master由 昌model由 酎msdbE (j Northwind Q Pubs3 (J tempdb d Test由Q数据转换服务由。管理A O复制由O安全性ffl U支持服务0 口 Meta Data Services图 1-123.在Test数据库上建
11、立表:点击数据库Test前面的+号,打开数据库的各种属性,如图1-13所示:O控 制 台 根 目 录mmBmBBm白 Microsoft SQL ServersH 日 SQL Server 组日 3 s (local)(Windows NT)e 口 数 据 库(J master(J modelmsdbE l Northwind日 pubsl_j tempdbU Test*关系图b国信视 图为 存 储 过 程i 用 户学 角 色h.-规 则Q默 认用 户 定 义 的 数 旎用 户 定 义 的 函 差由 口(s QjE QjE O由 口mo数 据 转 换 服 务管 理复 制安 全 性支 持 服 务
12、Meta Data Services图 1-13选中表的属性,单击鼠标右键,出现表的菜单,如图1-14所示:J IdJf数一目一式一曲一对一g一g一aLz s-:-l.)E:-0-:E):-日目bodsdmmspdt关网所5-图系司 sysfilegroups国 sysHes国 sysfilesl国 sysforeignkeys目 sysfulltextcatalogs国 sysfulltextnotify国 sysindexes同 sysindexkeys信1 sysmembers新建表(S)E据理制全一数管复安一SOS.0-:.0-.:E -国一右转帘月冬田富月月按性E所有任务查看M从这里
13、创建窗口(幽刷新导出列表仍帮助(由sionstiests冬I 1-14点击新建表按钮,出现新建表窗口,如图1-15所示:图 1-15输入列名,数据类型,长度等信息,点击如 图1-16所示:图标,出现选择表名窗口,图 1-16输入表名,点击确定按钮,将新建的表存盘。三、实验任务:1.用数据库SQL Server 2000的服务管理器启动数据库服务;2 .用 数 据 库SQL Server 2000的企业管理器建立一个数据文件名为Studentdata、日志文件名为Studentlog大 小25M的新数据库,该数据库名为Studento3.在数据库Student上,建立如下所示的表Student,
14、Course,SC的结构:Student:表1-1字段名类型长度含义S nov a rc h a r9学号S na mev a rc h a r20姓名S s e xv a rc h a r2性别S a g es n a l l i n t4年龄S d e ptva r c h a r1 0,2系Course:表1-2字段名类型长度含义C n ova r c h a r4课程号C n a m eva r c h a r4 0课程名C pn ova r c h a r4先行课C c r e d i ts m a l l i n t4学分SC:表1-3字段名类型长度含义S n ova r c h
15、a r9课程号C n ova r c h a r4成绩G r a d eva r c h a rs m a l l i n t根据以上表的结构,输入以下内容:Student:表 1-4学号Sno姓名Smane性别Ssex年龄Sage所在系Sdept200215121李勇男20CS200215122刘晨女19CS200215123王敏女18MA200215125张立男19ISCourse:表 1-5课程号Cno课程名Cname先行课Cpno学分Credit1数据库542数学23信息系统144操作系统635数据结构746数据处理27PASCAL语言64SC:表 1-6学号Cno课程号Cno成绩Gr
16、ade2002151211922002151212852002151213882002151222902002151223804.定义数据库Create D B 数据库名;5.定义模式CREATE SCHEM A 模式名 AUTHORIZATION 用户名6.定义基本表CREATE TABLE 表名(列名 数据类型 列级完整性约束条件,列名 数据类型 列级完整性约束条件 ,表级完整性约束条件);例 建 立 一 个“学生”表 Student。CREATE TABLE Student(Sno CHAR(9)PRIMARY KEY,Sname CHAR(20)UNIQUE,Ssex CHAR(2),
17、Sage SMALLINT,Sdept CHAR(20);例 建 立 一 个“课程”表 CourseoCREATE TABLE Course(Cno CHAR(9)PRIMARY KEY,Cname CHAR(40),Spno CHAR(4),Ccredit SMALLINT,FOREING KEY Cpno REFERENCES Course(Cno);例 建立学生选课表。CREATE TABLE SCSno CHAR(9),Cno CHAR(9),Grade SMALLINT,PRINARY KEY(Sno,Cno),FOREING KEY(Sno)REFERENCES Student(S
18、no),FOREING KEY(Cno)REFERENCES Course(Cno);实 验 二 TSQL的简单查询、连接查询一、实验目的:掌握SQL Server Query Analyze的使用方法,加深对SQL的语句,特别是对查询语句的理解。本次实验了解SQL Server 2000查询分析器的启动,熟悉如何在SQL Server2000查询分析器中建表、插入记录、查询记录。学会SQL Server 2000的查询分析器中建表、插入记录、查询记录。二、实验内容:1.启动数据库服务软件SQL Server 2000的查询分析器:在程序菜单中选择Microsoft SQL Server,如图
19、2-1所示:AutoCAD R14 D r.C O M客 户 端 软 件 启 GlobalSCAPE OfficeZOOO 电编 程 软 件 启陌 件 金 山 影 系2 003 C ffT)MSXML 4.0 tttd Microsoft W ordI夕I Microsoft AccessI M Microsoft ExcelI K 3I Microsoft Frontpage|Microsoft OutlookI回 Microsoft PowerPoint启 Keil PK51-Eval UniScan V5.01|启 腾 讯Q Q 2 0 0 3 IIIb e ta 4去 广 告 显IP万
20、 勇 修 改 版 301P USB Cam era 再选中查询分析器,如图2-2所示:电 查询分析器导入和导出数据服务管理器服务器网络实用工具客户端网络实用工具联机丛书企业管理需物探查器在H5中配置5Q LX M L支持图2-2点击查询分析器后,出现连接到SQL Server窗口,如 图2-3所示:图2-3点击按钮,出现选择服务器窗口,如 图2-4所示。图2-4选择本地服务(Local),点击确定按钮。再点击连接到SQL Server窗口的确定按钮。出现SQL查询分析器主界面,如图2-5所示。季 开 始|目,目我的|郢y 7|Q s:“.|阱 7 3 摘 S Q L.gsa二 忑 军 出 2)
21、妗%E H 1 6:5 1图 2-5选择查询菜单,点击更改数据库,如图2-6所示。查 询 工 具 窗口(处 帮助(由in更改数据库(由Ctrl+Uv分 析 Ctrl+F5执行(日F5 取消执行查询(0Alt+Break建显示估计的执行计划)Ctrl+L由索引优化向导Ctrl+Iuni文本显示结果(DCtrl+T展9以表格显不结果(Ctrl+D t结果保存为文件Shift+Ctrl+Fs显示执行计划Ctrl+K丽显示服务器跟踪(MShift+Ctrl+TB显示客户统计(DShift+Ctrl+S囱当前连接属性(8图2-6出现选择数据库窗口,如图2-7所示。图2-7选择在上次实验中建立的数据库T
22、est,点确定按钮。2.在查询分析器中建立表:在查询分析器的查询窗口中输入SQL语句,如图2-8所示。图2-8点击 按钮,执行该SQL语句,在查询窗口下部出现 个输出窗口,如图2-9所示。图2-9提示命令成功完成,或者报告出错信息。3.查询分析器中向表添加数据:在查询分析器的查询窗口中输入SQL语句,如图2-10所示。亍查 询 一 TEACHER331.TestJEACHER33nAdminMrator无 法 思 insert into Testi valuesC A A A A.20);|1 1图 2-10点击按钮,执行该SQ L语句,在查询窗口下部出现一个输出窗口,如图2-11所示。u 查
23、询一 TEACHER331.T&5t.TEACHER331Administrator 一 无既S h*-|n|xinsert into Testi v alu esAAAA,20);|11(所影响的行数为1 行)209.查询考试成绩有不及格的学生的学号 答:select distinct sno from sc wheregrade=(se l e c t a vg(g ra d e)f rom sc ywh e re y.sn o=x.sn o)4 查询其他系中比计算机科学系某一个学生年龄小的学生的姓名和年龄答:se l e c t sn a m e,sa g ef rom stud e n
24、 twh e re sa g e a n y(se l e c t sa g ef rom stud e n twh e re sd e pt=,c s,)a n d sd e ptO*c s,5 .查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄答:se l e c t sn a m e,sa g ef rom stud e n twh e re sa g e a l l(se l e c t sa g ef rom stud e n twh e re sd e pt=,c s)a n d sd e ptO*cs6 .查询所有选修了 1 号课程的学生姓名答:se l e c t s
25、n a m ef rom stud e n twh e re e xi sts(se l e c t*f rom scwh e re sn o=stud e n t.sn o a n d c n o=,T)7.查询没有选修1 号课程的学生姓名答:se l e c t sn a m ef rom stud e n twh e re n ot e xi sts(se l e c t*f rom scwh e re sn o=stud e n t.sn o a n d c n o=,1 )8 .查询选修了全部的学生姓名答:se l e c t sn a m ef rom stud e n twh e
26、 re n ot e xi sts(se l e c t*f rom c oursewh e re n ot e xi sts(se l e c t*f rom scwh e re sn o=stud e n t.sn oa n d c n o=c ourse.e n o)9 .查询至少选修了学生2 0 0 2 1 5 1 2 2 选修的全部课程的学生号码答:se l e c t d i sti n c t sn of rom sc se xwh e re n ot e xi sts(se l e c t*f rom sc sc ywh e re sc y.sno-2 0 0 2 1 5 1
27、2 2,a n dn ot e xi sts(se l e c t*f rom sc sc zwh e re sc z.sn o=sc x.sn o a n dsc z.c n o=sc y.e n o)1 0 查询计算机科学系的学生及年龄不大于1 9 岁的学生答:se l e c t*f rom stud e n twh e re sd e pt=,csun i onse l e c t*f rom stud e n twh e re sa g e =1 91 1 .查询选修了课程1 或者选修了课程2的学生答:se l e c t sn of rom scwh e re c n o=,1 u
28、n i onse l e c t sn of rom scwh e re c n o=,2 1 2 .查询计算机科学系的学生与年龄不大于1 9 岁的学生的交集答:se l e c t*f rom stud e n twh e re sd e pt=cs a n d sa g e 1 9实验四数据库的更新、视图的定义及使用一、实验目的:掌握SQL中的插入、修改和删除语句的用法;掌握视图创建语句和视图创建向导的使用方法,加深对视图作用的理解。二、实验内容:1.启动数据库服务软件SQL Server 20 0 0 的查询分析器,用如下语句对表进行操作,详细的语法格式参看课本相应章节:Insert i
29、n to表名 插入数据U pdate表 名Set修改数据Delete From表名删除数据Drop T a b le删除表Alter Table 更改表2.用如下语句对视图进行操作,详细的语法格式参看课本相应章节:Create View 建视图Drop View 删除视图三、实验任务1.打开数据库SQL Server 20 0 0 的查询分析器,根据实验一:所建立的数据库Student,在此库下所建立的三个表Student,SC,Course 完成如下的功能的实验:1.将一个新学生元组(学号:20 0 215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中答:
30、insert into student(sno,sname,ssex,sdept,sage)values C 20 0 215128*,*陈冬,男,is,18)2.将学生张成民的信息插入到Student表中答:insert into studentvalues C 20 0 215126,张成民,男,18,cs)3.插入一条选课记录(20 0 215128,T)答:insert into sc(sno,eno)values(20 0 215128/D4.对每一个系,求学生的平均年龄,并把结果存入数据库答:create table dept_age(sdept char(15),avg_age
31、smallint)insert into dept_age(sdept,avg_age)s e l e c t s d e p t,a v g(s a g e)f r o m s t u d e n tg r o u p b y s d e p t5 .将一个学生2 0 0 2 1 5 1 2 1 的年龄增加1 岁答:u p d a t e s t u d e n ts e t s a g e=s a g e+l6 .将计算机科学系全体学生的成绩置零答:u p d a t e s cs e t g r a d e=Ow h e r e c s =(s e l e c t s d e p tf
32、r o m s t u d e n tw h e r e s t u d e n t.s n o=s c.s n o)7 .删除学号为2 0 0 2 1 5 1 2 8 的学生的记录答;d e l e t ef r o m s t u d e n tw h e r e s n o=2 0 0 2 1 5 1 2 8,8 .删除所有的学生选课记录答:d e l e t ef r o m s c9 .删除计算机科学系所有学生的选课记答:d e l e t ef r o m s cw h e r e*c s =(s e l e c t s d e p tf r o m s t u d e n tw
33、h e r e s t u d e n t.s n o=s c.s n o)1 0 .建立信息系学生的视图答:c r e a t e v ie w IS _ S t u d e n ta ss e l e c t s n o,s n a me,s a g ef r o m s t u d e n tw h e r e s d e p t=IS 1 1 .建立信息系选修了 1 号课程的学生的视图答:c r e a t e v ie w IS _ S 1 (s n o,s n a me,g r a d e)a ss e l e c t s t u d e n t,s n o,s n a me,g
34、r a d ef r o m s t u d e n t,s cw h e r e s d e p t=IS a n ds t u d e n t.s n o=s c.s n o a n ds c.c n o=,r1 2 定义一个反映学生出生年份的视图答:c r e a t e v ie w B T _ S(s n o,s n a me,s b ir t h)a ss e l e c t s n o,s n a me,2 0 0 4-s a g efrom student13.将学生的学号及他的平均成绩定义为一个视图答:Creat view S_G(sno,Gavg)AsSelect sno,
35、avg(grade)From scGroup by sno14.将 Student表中所有女生记录定义为一个视图答:create view F_Student(F_sno,sname,ssex,sage,sdept)asselect*from studentwhere ssex=女 15.fflDrop View删除上述所建立的视图。答:drop view BT_S;drop view IS_S1 cascade16.在信息系学生的视图中找出年龄小于20岁的学生答:select sno,sagefrom IS_studentwhere sage “操作”-“所有任务”-备份数据库-选择要备份的
36、数据库-备份到添加按钮-文件名-单击确定。2 .还原数据库:操作步骤:选中数据库-操作-所有任务-选择从备份-选择设备-添加-文件名-还原数据库保存为S t u d e n t-显示数据库备份s t u d e n t-单击确定。三、实验任务:实验六数据完整性和数据安全性一、实验目的:通过实验使学生加深对数据安全性和完整性的理解,并掌握S Q L S e r v e r 中有关用户、角色及操作权限的管理方法,学会创建和使用规则、缺省。二、实验内容:1.使 用 S Q L 对数据进行安全性控制,包括:授权和权利回收,语法格式如下:G R A N T 系统特权组To 用户组|P U B L I C
37、P U B L I C 指数据库的所有用户。2.使用S Q L 对数据进行完整性控制(三类完整性,H EC K 短语,C O N S T R A I N T子句,触 发 器)。用实验证实,当操作违反了完整性约束条件时,系统是如何处理的,法格式如下:REVOKE 权限组|A L L P R I V I L EG ES O N 对象名 FROM 用户组名|P U B L I CON用于被回收特权的对象,A L L P R I V I L EG ES 指回收所有特权,P U B L I C 指数据库的所有用户。三、实验任务:1.为了完成数据库数据的完整性,利用S Q L S erv er 2 0 0
38、 0 的查询分析器,在实验一所建立的数据库S tu d en t中建立三张表,分别为S tu d en t 1,C o u rse 1,S c l;所建表的SQL命令:(1).CREATE TABLE Studentl(Sno CHAR(9)PRIMARY KEY,Sname CHAR(20)NOT NULL,Ssex CHAR(2),Sdept CHAR(20);(2).CREATE TABLE Coursel(Cno CHAR(4)PRIMARY KEY,Cname CHAR(40),Cpno CHAR(4),Ccredit SMALLINT,FOREIGN KEY Cpno REFERE
39、NCES Coursel(Cno);(3).CREATE TABLE SCI(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Studentl(Sno)FOREIGN KEY(Cno)REFERENCES Coursel(Cno);2.把查询Student表的权限授给用户UIExec sp_addlogin Alex,880816Exec sp_adduser Alex,ulGrant select on student to ul3.把对Student表和Course
40、表的全部操作权限授予用户U 2和U3Exec sp_addlogin iShally,880816,Exec sp_adduser ShaHy,u2Exec sp_addlogin Bill,,880816Exec sp_adduser 4Bill,u3,Grant all privileges on studentlTo u2Grant all privileges on studentlTo u3Grant all privileges on course 1To u3Grant all privileges on course 1To u24.把对表SC的查询权限授予所有用户Grant
41、all privileges on scTo public5.把查询Student表和修改学生学号的权限授给用户U4Exec sp_addlogin Stronger,bbExec sp_adduser,Stronger,/u4,Grant update(sno),select on student to u46.把对表SC的INSERT权限授予U5用户,并允许将此权限再授序其他用户Exec sp_addlogin GodJbbExec sp_adduser,God5u5,Grant insert on scTo u5With grant option7.把用户U4修改学生学号的权限收回Rev
42、oke update(sno)on student from u48.收回所有用户对表SC的查询权限Revoke select on sc from public9.把用户U5对 SC表的INSERT权限收回Revoke insert on sc from u510.(1)创建一个角色RIExec sp_addrole rl(2)然后使用GRANT语句,使角色R l拥有Student表的SELECT.UPDATEINSERT权限Grant select9update,insert on student to rl(3)将这个角色授予王平,张明。使他们具有R1所包含的全部权限Exec sp_ad
43、dlogin,vb,yy,Exec sp_adduservb王平Exec sp_addlogin,tb,yy,Exec sp_adduser,tbJ 张明Exec sp_addrolemember R I,王平Exec sp_addrolemember RL 张明实验七存储过程和触发器一、实验目的:通过实验使学生掌握SQL Server中建立存储过程和触发器的方法。二、实验内容:启动数据库服务软件SQL Server 2000的查询分析器,在 RDMBS中建立一个数据库,进行实验所要求的各种操作,所有的SQL操作均在此建立的新库里进行。1.CREATE PROCEDURE创建存储过程2.CRE
44、ATE TRIGGER创建触发器3.DROP TRIGGER删除触发器三、实验任务:1 .定义存储过程Create procedure owner.存储过程名As子查询2.定义触发器Create trigger on 表名 For eachRowlStatement when触发条件 触发动作体 例 1定义一个before行级触发器,为教师表Teacher定义完整性规则教授的工资不得低于4000元,如果低于4000元,自动改为4000元.Create trigger insert_update_salOn teacherAfter insert,updateAs declare job cha
45、r(8),sal numeric(7,2)Select job=job,sal=sal from insertedIf(job=,教授,and sal4000)Set sal=4000Update teacher set sal=salWhere job=job 例 2 定义After行级触发器,当教师表Teacher的工资发生变化后就自动在工资变化表salog中增加I 条相应记录.Create Table sal_log(Eno NUMERIC(4)REFERENCES teacher(Eno),Sal NUMERIC(7,2),Username char(10),DateTime TIME
46、STAMP);Create trigger insert_salAfter insert on teacherFor each rowAs beginInsert into sal_log values(New.Eno,new.sal,current_user,current_timestamp);End;Create trigger update_salAfter update on teacherFor each rowAs beginIf(new.saloold.sal)then insert into sal_log values(New.Eno,new.sal,current_use
47、r,current_timestamp);End if;End;实验八 嵌入式SQL(选做)一、实验目的:在C、VB或其他语言中访问数据库,使学生对使用嵌入式S Q L有初步了解。二、实验内容:熟悉RDBMS的预编译程序.通过嵌入式SQL编程访问数据库的基本步骤对学生-课程数据库中的表,完成下面功能:(你也可以自己给出功能要求)。1.查询某一门课程的信息.要查询的课程由用户在程序运行过程中指定,放在主变量中。2.查询选修某一门课程的选课信息要查询的课程由用户在程序运行过程中指定,放在主变量中,然后根据用户的要求修改某些记录的成绩字段。三、实验任务:上机实现如下实例(调试成功):依次检查某个系的
48、学生记录,交互式更新某些学生年龄。Exec SQL BEGIN DECLARE SECTION;Char deptname20;Char HSon9;Char HSname20;Char HSsex2;Int HSage;Int NEWAGE;EXEC SQL END DECLARE SECTION;Long SQLCODE;EXEC SQL INCLUDE sqlca;Int main(void)Int count=0;Char yn;Printf(uplease choose the department name(CS/MA/IS):);Scanf(u%s,&deptname);EXEC
49、 SQL CONNECT TO TESTlocalhost:54321 USER“SYSTEM”/“MANAGER”;EXEC SQL DECLARE SX CURSOR FORSELECT Sno,Sname,Ssex,SageFROM StudentWHERE SDept=:deptname;EXEC SQL OPEN SX;For(;)(EXEC SQL FETCH SX INTO:HSno,:HSname,:HSsex,:HSage;lf(sqlca.sqlcode!=0)Break;lf(count+=0)Print(4n%-10s%-20s%-10s%-10s%n”,“Sno”,”
50、Sname”,“Ssex”,”Sage)Print(“-10s%-20s%-10s%-10d%n”,HSno,HSname,HSsex,HSage);Printf(uUPDATE AGE(y/n)?”);Do(Scanf(“c”,&yn);while(yn!=,N,&yn!=,n,&yn!=,Y,&yn!=,y,);If(yn=yllyn=Y)Printf(uINPUT NEW AGE:”);Scanf(“d”,&NE WAGE);EXEC SQL UPDATE StudentSET Sage=:NEWAGEWHERE CURRENT OF SX;)EXEC SQL CLOSE SX;EXEC