Salary Birth Postalcode Book表 字段名称 Book_id Book_name Author Price Class表 字段名称 Class_id Monitor Class_course表 字段名称 Class_id Course_id Department表 字段名称 Department_id Numeric Smalldatetime Numeric 数据类型 Char Varchar nvarchar Numeric 数据类型 Char Varchar 7.2 6,0 长度 13 30 50 8 5.2 长度 6 8 是 否 是 允许空 否 否 否 是 是 允许空 否 是 工资 出生日期 邮编 说明 书号 书名 出版社 作者 价格 说明 班级号 班主任姓名 Publish_company Varchar 数据类型 Char char 长度 6 10 允许空 否 否 说明 班级号 课程号 数据类型 Char 长度 6 20
允许空 否 否 说明 系编号 系名称 Department_name nvarchar 附录2:ISNULL函数
? 作用:使用指定的替换值替换 NULL
语法:ISNULL ( check_expression , replacement_value ) ? 参数:
1. check_expression 将被检查是否为 NULL 的表达式。 check_expression 可以为任何
类型。
2. replacement_value 当 check_expression 为 NULL 时要返回的表达式。
replacement_value 必须是可以隐式转换为 check_expresssion 类型的类型。 ? 返回类型:
返回与 check_expression 相同的类型。 如果文字 NULL 作为 check_expression 提供,则返回 replacement_value 的数据类型。 如果文字 NULL 作为 check_expression 提供并且未提供 replacement_value,则返回 int。
4
实验二 数据更新
课程名称: 实验名称
数据库原理 数据更新
实验类型: 学时
验证型 2学时
一.实验目的和要求:
掌握用SQL语句实现数据的插入、修改和删除。
二.实验内容:
1.将一个新学生记录(student_id:g9940305、student_name:张红、sex:女、birth:1985-02-08、class_id:g99403,department_id:Dep_01,home_addr:沈阳皇浦区34号)插入到student表中 2.对每一个班,求学生的平均年龄,并把结果存入数据库。(提示:先建立新表“age_avg”,其中一列存放班级,另一列存放相应的学生平均年龄,然后将所需数据存入age_avg) 3.将学号为g9940201的学生的姓名改为张宏,年龄改为18 4.student表中的所有系别(department_id)均改为“dep_03” 5.将班级号(class_id)为g99402的全体学生的笔试成绩加10分 6.删除所有选修了课程号(course_id)为dep04_b001的学生
三.实验报告:
1. 实验各项内容实现的过程。 2. 实验结果分析。
5
实验三 视图和索引
课程名称: 实验名称
数据库原理 视图和索引
实验类型: 学时
验证型 2学时
实验目的:
(1) 掌握视图的定义、查询和更新; (2) 掌握索引的定义;
(3) 掌握利用索引优化查询效率; 实验原理:
1.视图
? 定义视图
CREATE VIEW <视图名> [(<列名> [,<列名>]?)] AS <子查询>
[WITH CHECK OPTION]; ? 删除视图
DROP VIEW <视图名>
2.索引(注意:索引不能修改) ? 定义索引
CREATE [UNIQUE][CLUSTER] INDEX <索引名>
ON <表名> (<列名>[<次序>][,<列名>[<次序>]]?); ? 删除索引
DROP INDEX <索引名> 实验方法:
将查询需求用T-SQL语言表示;在SQL Server Query Analyzer的输入区中输入T-SQL查询语句;设置 Query Analyzer的结果区为Standard Execute(标准执行)或Execute to Grid(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。 实验内容:
在实验1中用到的教务管理数据库jwgl中完成如下问题:
(1) 创建一个名为stud_query_viewl的视图,从数据库JWGL的student表中查询出性别为“男”的所有学生的资料;
(2) 创建一个名为stud_query_view2的视图,从数据库JWGL的student表中查询出性别为“男”的所有学生的学号,姓名,性别,班级,家庭住址,年龄;
(3) 创建一个名为“stud_query__view3”的视图,它是由表course、book及class_course创建的一个显示“g99402”班所开课程的课程名、所用教材的教材名、出版社及作者的视图;
(4) 创建一个从视图stud_query_viewl中查询出班级名为g99402的所有学生的信息; (5) 从视图stud_query_view2中查询出班级为“g99402”、姓名为“张华”的信息;
(6) 向视图stud_query_View2中插入一行数据。学号:g9940209,姓名:赵青,班级:g99402,性别:男,家庭住址:南京中山北路10号,年龄17岁;
(7) 修改视图stud_query_view2中的数据。将stud_query_view2中姓名为“林红”的家庭地址改为“扬州市南京路8号”;
(8) 从视图中stud_query_view2将姓名为“林红”的同学删除;
6
(9) 为表teacher创建一个索引名为teacher_index的惟一性非聚簇索引,索引关键字为teacher_id,升序;
(10) 为表class_course上创建一个名为class_course_index的非聚簇复合索引,索引关键字为class_id,course_id,升序
(11) 假设第(6)小题在插入赵青信息时,希望将赵青所在系“dep_03”也同时插入到数据表中,该如何处理。本题目留作思考题,可自行查找资料完成。
实验报告:
1. 实验各项内容实现的过程。 2. 实验结果分析。
7
实验四 数据库保护
课程名称: 实验名称
数据库原理 数据库保护
实验类型: 学时
设计型 4学时
实验目的:
(1) 使学生掌握E_R图的设计方法,并能将E_R图转换成关系模式; (2) 熟悉SQL DDL和DML语言,能够完成基本的表结构的定义、修改; (3) 掌握数据库完整性约束定义 (4) 掌握数据库安全授权 实验原理:
1. 将E_R图转换为关系的方法:
? 一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的码
就是关系的码
? 一个1:1联系可以转换为一个独立的关系模式,也可以与任意对应的关
系模式合并
? 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关
系模式合并
? 一个m:n联系转换为一个关系模式
? 三个或三个以上实体间的一个多元联系可以转换为一个关系模式 2. 定义库:
Create DATABASE <数据库名> 3. 表
? 定义表
CREATE TABLE <表名>(<列名><数据类型>[列级完整性约束] [,<列名><数据类型>[列级完整性约束]][,<表级完整性约束>]); ? 添加列
ALTER TABLE <表名> ADD <列名> <类型>[列级完整性约束] ? 修改列
ALTER TABLE <表名> ALTER COLUMN <列名> <类型>[列级完整性约束] ? 删除列
ALTER TABLE <表名> DROP COLUMN <列名> 4.安全授权 ? 创建登录名
CREATE LOGIN <登录名> WITH PASSWORD=<密码> ? 为当前数据库创建用户
CREATE USER <用户名> FOR LOGIN <登录名> ? 授权
GRANT< 权限>[,<权限>]? [ ON <对象名>]
TO <用户 >[,<用户>]?
8