数据库系统原理Word文件下载.docx
《数据库系统原理Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据库系统原理Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
SELECT*
[例4]查全体学生的姓名及其出生年份。
SELECTSname,2000-Sage
[例5]查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名。
SELECTSname,'
YearofBirth:
'
,2000-Sage,LOWER(Sdept)
实验五数据查询操作
(二)SQL连接查询语句实验
一、.实验目的与要求:
标准SQL连接查询、嵌套查询,规则、形式较多,需要学生多记,多练,在练习中加强理解、记忆。
二、.实验内容:
需写实验报告
(2))
SQL连接查询、嵌套查询并写出查询结果。
SQL中连接查询的主要类型
广义笛卡尔积、等值连接(含自然连接)、非等值连接查询、自身连接查询、外连接查询、复合条件连接查询
1、广义笛卡尔积
不带连接谓词的连接很少使用
例:
SELECTStudent.*,SC.*
FROMStudent,SC
2、等值与非等值连接查询
等值连接、自然连接、非等值连接
[例1]查询每个学生及其选修课程的情况。
SELECTStudent.*,SC.*
FROMStudent,SC
WHEREStudent.Sno=SC.Sno;
自然连接
等值连接的一种特殊情况,把目标列中重复的属性列去掉。
[例2]对[例32]用自然连接完成。
SELECTStudent.Sno,Sname,Ssex,Sage,
Sdept,Cno,Grade
FROMStudent,SC
WHEREStudent.Sno=SC.Sno;
结果为:
3、自身连接
一个表与其自己进行连接,称为表的自身连接
需要给表起别名以示区别
由于所有属性名都是同名属性,因此必须使用别名前缀
[例3]查询每一门课的间接先修课(即先修课的先修课)
SELECTFIRST.Cno,SECOND.Cpno
FROMCourseFIRST,CourseSECOND
WHEREFIRST.Cpno=SECOND.Cno;
4、外连接(OuterJoin)
[例4]查询每个学生及其选修课程的情况包括没有选修课程的学生----用外连接操作
SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
WHEREStudent.Sno=SC.Sno(*);
在表名后面加外连接操作符(*)或(+)指定非主体表,非主体表有一“万能”的虚行,该行全部由空值组成,虚行可以和主体表中所有不满足连接条件的元组进行连接,由于虚行各列全部是空值,因此与虚行连接的结果中,来自非主体表的属性值全部是空值
左外连接:
外连接符出现在连接条件的左边
右外连接:
外连接符出现在连接条件的右边
5、复合条件连接
WHERE子句中含多个连接条件时,称为复合条件连接
[例6]查询每个学生的学号、姓名、选修的课程名及成绩。
SELECTStudent.Sno,Sname,Cname,Grade
FROMStudent,SC,Course
WHEREStudent.Sno=SC.Sno
andSC.Cno=Course.Cno;
嵌套查询
嵌套查询概述
一个SELECT-FROM-WHERE语句称为一个查询块
将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询
SELECTSname外层查询/父查询
FROMStudent
WHERESnoIN
(SELECTSno内层查询/子查询
FROMSC
whereCno=’2’);
查询结果为:
实验六数据更新操作——SQL数据更新语句实验
一、实验目的与要求:
二、实验内容:
需写实验报告(3))
update、delete、insert语句的练习并写出结果。
数据更新描述:
数据更新包括三种操作:
1.插入数据2.修改数据3.删除数据
1.插入数据
两种插入数据方式:
插入单个元组;
插入子查询结果
1).插入单个元组
语句格式
INSERT
INTO<
表名>
[(<
属性列1>
[,<
属性列2>
…])]
VALUES(<
常量1>
[,<
常量2>
]…)
功能
将新元组插入指定表中。
[例1]将一个新学生记录
(学号:
95020;
姓名:
陈冬;
性别:
男;
所在系:
IS;
年龄:
18岁)插入到Student表中。
INSERT
INTOStudent
VALUES('
95020'
,'
陈冬'
男'
,18,'
IS'
);
[例2]插入一条选课记录('
1'
)。
INTOSC(Sno,Cno)
95020'
1'
新插入的记录在Grade列上取空值
2).插入子查询结果
[例3]对每一个系,求学生的平均年龄,并把结果存入数据库。
第一步:
建表
CREATETABLEDeptage
(SdeptCHAR(15),/*系名*/
AvgageSMALLINT
/*学生平均年龄*/
第二步:
插入数据
INTODeptage(Sdept,Avgage)
SELECTSdept,AVG(Sage)
GROUPBYSdept;
2.修改数据
1.修改某一个元组的值
[例4]将学生95001的年龄改为22岁。
UPDATEStudent
SETSage=22
WHERESno='
95001'
;
2.修改多个元组的值
[例5]将所有学生的年龄增加1岁。
SETSage=Sage+1;
3.删除数据
1.删除某一个元组的值
[例8]删除学号为95019的学生记录。
DELETE
95019'
2.删除多个元组的值
[例9]删除2号课程的所有选课记录。
FROMSC;
WHERECno='
2'
3.带子查询的删除语句
[例11]删除计算机科学系所有学生的选课记录。
WHERE'
CS'
=
(SELETESdept
WHEREStudent.Sno=SC.Sno);
实验七数据库的安全性和数据库完整性
熟练掌握数据库的安全性和数据库完整性的功能和使用方法,掌握在开发环境下SQL语言中数据库的安全性和数据库完整性的语句操作。
需写实验报告(4))
1.数据库的安全性
(1).数据库的授权(GRANT)
GRANT语句的一般格式:
GRANT<
权限>
[,<
]...
[ON<
对象类型>
<
对象名>
]
TO<
用户>
]...
[WITHGRANTOPTION];
GRANT功能:
将对指定操作对象的指定操作权限授予指定的用户。
例1把查询Student表权限授给用户U1
GRANTSELECT
ONTABLEStudent
TOU1;
例2把对Student表和Course表的全部权限授予用户U2和U3
GRANTALLPRIVILIGES
ONTABLEStudent,Course
TOU2,U3;
例3把对表SC的查询权限授予所有用户
ONTABLESC
TOPUBLIC;
例4把查询Student表和修改学生学号的权限授给用户U4
GRANTUPDATE(Sno),SELECT
ONTABLEStudent
TOU4;
例5把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
GRANTINSERT
TOU5
WITHGRANTOPTION;
执行例5后,U5不仅拥有了对表SC的INSERT权限,
还可以传播此权限:
例6GRANTINSERTONTABLESCTOU6
同样,U6还可以将此权限授予U7:
例7GRANTINSERTONTABLESCTOU7;
但U7不能再传播此权限。
U5-->
U6-->
U7
(2).收回权限(REVOKE)
REVOKE语句的一般格式为:
REVOKE<
FROM<
]...;
功能:
从指定用户那里收回对指定对象的指定权限
例9收回所有用户对表SC的查询权限
REVOKESELECT
ONTABLESC
FROMPUBLIC;
例10把用户U5对SC表的INSERT权限收回
REVOKEINSERT
ONTABLESC
FROMU5;
2.数据库完整性
什么是数据库的完整性
数据的正确性和相容性
防止不合语义的数据进入数据库。
例:
学生的年龄必须是整数,取值范围为14--29;
学生的性别只能是男或女;
学生的学号一定是唯一的;
学生所在的系必须是学校开设的系;
完整性:
是否真实地反映现实世界
数据库的完整性分为实体完整性、参照完整性、用户定义的完整性。
例11.将student表中在Sno属性定定义为码。
CREATETABLEstudent
(Snochar(16)PRIMARYKEY,
Snamechar(10)NOTNULL,
Ssexchar
(2),
SageSMALLINT,
Sdeptchar(20)
);
例11.定义SC中的参照完整性。
CREATETABLESC
(Snochar(16)NOTNULL,
Cnochar(4)NOTNULL,
GradeSMALLINT,
PRIMARYKEY(Sno,Cno),
FOREIGNKEY(Sno)REFERENCESstudent(Sno),
FOREIGNKEY(Cno)REFERENCESCourse(Cno)
实验八数据库连接技术——客户端访问数据库实验
1、实验目的
1.学会利用ADO对象编写数据库访问程序
2.学会采用C/S模式开发数据库应用的方法
1、实验工具
数据库系统为SqlServer2000,开发工具选择VisualBasic(Delphi、C#或者PowerBuilder)等。
3、实验内容
系统结构说明:
通常,一个数据库应用系统是由前后3部分组合而成的:
前端程序、中间的数据库组件、后端的数据库。
如图所示:
目前多数的RAD工具都直接提供了数据库组件如VB中的ADO、VB.net中的ADO.net等,可以大大简化我们的开发工作。
本次实验要求完成以下内容:
1、设计一个窗体,显示employee数据库中的person表中指定部门号的员工记录,其中部门号通过文本框输入。
2、设计一个窗体,实现部门表的维护,包括部门的浏览,添加,修改,删除和更新等。
3、设计一个应用程序,实现工资数据的查询(要求:
通过指定员工姓名查询)、添加、删除和更新操作,工资数据的统计(要求:
能够按部门统计,按时间统计,按员工姓名统计)。
4、实验报告
1、实验各项内容实现的过程。
2、系统运行情况(系统运行的界面)
3、实验结果分析。