(头歌)数据库原理与技术—实验报告一

第1关:创建数据库

实验要求

创建名为 TESTDB 的数据库。

---------- BEGIN ---------- 
CREATE DATABASE TESTDB

---------- END ---------- 

第2关:创建简单的数据表 

实验要求

TESTDB 的数据库中创建教师(teacher)表,表结构如下:

字段名数据类型(长度)备注
tnoCHAR(4)工号
tnameVARCHAR(12)姓名
sexCHAR(3)性别
titleVARCHAR(15)职称
birthdayDATE出生日期
---------- BEGIN ---------- 
CREATE TABLE teacher(
    tno CHAR(4),
    tname VARCHAR(12),
    sex CHAR(3),
    title VARCHAR(15),
    birthday DATE
);
---------- END ---------- 

 第3关:创建带约束的数据表

实验要求

TESTDB 数据库中创建课程表(course)和班级表(class),表结构如下:

course 表结构

字段名数据类型(长度)完整性约束说明备注
cnoCHAR(4)主键课程号
cnameVARCHAR(30)非空课程名
creditTINYINT约束取值范围为1~10学分
hoursINTEGER……学时
examinationCHAR(6)……考核方式

class 表结构

字段名数据类型(长度)完整性约束说明备注
gnoCHAR(7)主键班级号
gnameVARCHAR(21)唯一键班级名
gradeCHAR(5)……年级
deptVARCHAR(12)……学院
gnumTINYINT约束取值范围为15~40

班级人数

---------- BEGIN ---------- 
CREATE TABLE course(
    cno CHAR(4) PRIMARY KEY,
    cname VARCHAR(30) NOT NULL,
    credit TINYINT CHECK (credit>=1 AND credit<=10),
    hours INTEGER,
    examination CHAR(6)
);
CREATE TABLE class(
    gno CHAR(7) PRIMARY KEY,
    gname VARCHAR(21) UNIQUE,
    grade CHAR(5),
    dept VARCHAR(12),
    gnum TINYINT CHECK(gnum>=15 AND gnum<=40)
);
---------- END ---------- 

第4关:给教师表添加约束

实验要求

TESTDB 数据库中给教师表(teacher)添加主键约束,工号(tno)作为主键,给教师表姓名(tname)列添加唯一约束。

---------- BEGIN ---------- 
ALTER TABLE teacher ADD PRIMARY KEY(tno);
ALTER TABLE teacher ADD UNIQUE(tname);
---------- END ---------- 

第5关:在 TESTDB 中创建教师授课表

实验要求

TESTDB 数据库中创建教师授课表 teaching,及其对应的约束条件,表结构如下:

字段名数据类型(长度)完整性约束说明备注
cnoCHAR(4)外键,主键(cno+tno+gno)课程号
tnoCHAR(4)外键,主键(cno+tno+gno)工号
gnoCHAR(7)外键,主键(cno+tno+gno)班级号
termTINYINT……开课学期
classroomCHAR(7)……教室
---------- BEGIN ---------- 
create table teaching(
    cno char(4),
    tno char(4),
    gno char(7),
    term tinyint,
    classroom char(7),
    PRIMARY KEY(cno,tno,gno),
    foreign KEY(cno) references course(cno),
    foreign KEY(tno) references teacher(tno),
    foreign KEY(gno) references class(gno)
);
---------- END ---------- 

第6关:修改字段约束

实验要求

TESTDB 数据库中修改教师表(teacher)姓名列(tname)的空/非空约束,改为非空,修改教师表性别列(sex)的默认值约束,默认值改为“男”。

---------- BEGIN ---------- 
ALTER table public.teacher
ALTER
column tname set NOT NULL;

ALTER table public.teacher
ALTER
column sex set default '男';
---------- END ---------- 

第7关:删除约束

实验要求

TESTDB 数据库中删除教师表(teacher)姓名列的唯一约束(约束名:TEACHER_TNAME_KEY)。

---------- BEGIN ---------- 
ALTER TABLE teacher drop constraint TEACHER_TNAME_KEY;
---------- END ---------- 

第8关:添加字段

实验要求

TESTDB 数据库的教师表(teacher)中添加教师的电子邮箱(email,VARCHAR(6))和办公地点(address,VARCHAR(20))两列。

---------- BEGIN ---------- 
ALTER TABLE teacher add email VARCHAR(6);
ALTER TABLE teacher add address VARCHAR(20);
---------- END ---------- 

第9关:修改字段

实验要求

TESTDB 数据库中将教师表(teacher)中办公地点(address)的列名改为 office,电子邮箱(email)的数据类型改为VARCHAR(20)

---------- BEGIN ---------- 
ALTER TABLE teacher rename column address to office;
ALTER TABLE teacher ALTER column email type VARCHAR(20);
---------- END ---------- 

第10关:删除字段

实验要求

TESTDB 数据库中删除教师表(teacher)中的办公地点(office)和电子邮箱(email)两个列。

---------- BEGIN ---------- 
ALTER TABLE teacher drop column office;
ALTER TABLE teacher drop column email;
---------- END ---------- 

第11关:添加单条记录

实验要求

TESTDB 数据库中给班级表(class)添加一条记录,班级号为 '0051807',班级名为'电气18级7班',年级为 '18 级',学院为'电气',班级人数为 '38'

---------- BEGIN ---------- 
INSERT INTO class VALUES ('0051807','电气18级7班','18级','电气','38');
---------- END ---------- 

第12关:添加部分数据

实验要求

TESTDB 数据库中给教师表(teacher)中,添加一条教师记录,其中教师工号为'0250',姓名为'任远',性别为'男'

---------- BEGIN ---------- 
INSERT INTO teacher (tno,tname,sex) VALUES ('0250','任远','男');
---------- END ---------- 

第13关:添加多条记录

实验要求

TESTDB 数据库中分别给教师表(teacher),班级表(class),课程表(course),教师授课表(teaching)中添加多条记录。

teacher 表所需数据如下:

工号姓名性别职称出生日期
0014李欣教授1969-07-25
0078张云副教授1975-11-25
0118王立高级工程师1985-04-28
0193赵玲讲师1992-09-26
0213杨梅副教授1986-06-07
0030覃刚副教授1980-02-15

course 表所需数据如下:

课程号课程名学分学时考核方式
G001线性代数348考试
R003数据结构348考试
R009离散数学348考试
S023嵌入式系统与编程实验132考察
G012大学物理464考试

class 表所需数据如下:

班级号班级名年级学院班级人数
0211801软件18级1班18级软件37
0211903软件19级3班19级软件35
0211705软件17级5班17级软件38
0131901机械19级1班19级机械37

teaching 表所需数据如下:

课程号工号班级号开学日期教室
G001007802119031A101
G001007801319011A101
R003011802118012S001
R009021302119032S002
S023019302118011S001
G012003001319012B003
---------- BEGIN ---------- 
INSERT INTO teacher VALUES
('0014','李欣','男','教授','1969-07-25'),
('0078','张云','女','副教授','1975-11-25'),
('0118','王立','男','高级工程师','1985-04-28'),        
('0193','赵玲','女','讲师','1992-09-26'), 
('0213','杨梅','女','副教授','1986-06-07'),
('0030','覃刚','男','副教授','1980-02-15');

INSERT INTO course VALUES
('G001','线性代数','3','48','考试'),
('R003','数据结构','3','48','考试'),
('R009','离散数学','3','48','考试'),        
('S023','嵌入式系统与编程实验','1','32','考察'), 
('G012','大学物理','4','64','考试');

INSERT INTO class VALUES
('0211801','软件18级1班','18级','软件','37'),
('0211903','软件19级3班','19级','软件','35'),
('0211705','软件17级5班','17级','软件','38'),
('0131901','机械19级1班','19级','机械','37');

INSERT INTO teaching VALUES
('G001','0078', '0211903','1','A101'),
('G001','0078', '0131901','1','A101'),
('R003','0118', '0211801','2','S001'),
('R009','0213', '0211903','2','S002'),
('S023','0193', '0211801','1','S001'),
('G012','0030', '0131901','2','B003');
---------- END ---------- 

第14关:修改数据

实验要求

  1. 大学物理课程的考核方式发生了改变,从原先“考试”改为“考察”,请修改课程表(course)中对应的数据。
  2. 新学年开始,有 3 名同学转专业进入 软件19级3班,更新班级表(class)中班级人数。
---------- BEGIN ---------- 
UPDATE course
SET examination = '考察'
WHERE cname = '大学物理';

UPDATE class
SET gnum = '38'
WHERE gname = '软件19级3班';
---------- END ---------- 

第15关:删除数据

实验要求

新学年开始,17级班级已毕业,从班级表(class)中删除17级班级的信息。

---------- BEGIN ---------- 
DELETE FROM class WHERE grade = '17级';
---------- END ---------- 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库系统原理上机实验 实验1数据库系统及数据库基础操作 1、实验目的 1) 熟练掌握SQL Server的使用方法。 2) 理解和掌握数据库DDL语言,能够熟练地使用SQL DDL语句创建、修改和删除数据库、模式和基本。 2、实验主要内容 1) 安装SQL Server集成环境。 2) 理解和掌握SQL DDL语句的语法,特别是各种参数的具体含义和使用方法;使用SQL语句创建、 修改和删除数据库基本。掌握SQL语句常见语法错误的调试方法。 3、设备要求 1) PC一台 实验2 SQL语言—SELECT查询操作 1、实验目的要求 1) 掌握SQL程序设计基本规范,熟练运用SQL语言实现数据基本查询,包括单查询 、分组统计查询和连接查询。 2) 掌握SQL嵌套查询和集合查询等各种高级查询的设计方法等。 2、实验主要内容 1) 针对SQL Server数据库设计各种单查询语句、分组统计查询语句;设计单个针对自 身的连接查询,设计多个的连接查询。理解和掌握SQL查询语句各个子句的 特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。 2) 针对SQL Server数据库,正确分析用户查询要求,设计各种嵌套查询和集合查询。 3、实验仪器设备 1) 学生每个一台PC机 2) 已安装SQL Server环境 实验3 SQL语言—更新操作、视图、索引等操作 1、实验目的要求 1) 熟悉数据库的数据更新操作,能够使用SQL语句对数据库进行数据的插入、修改 、删除操作。 2) 熟悉SQL语言有关视图的操作,能够熟练使用SQL语句来创建需要的视图,定义数 据库外模式,并能使用所创建的视图实现数据管理。 3) 掌握索引设计原则和技巧,能够创建合适的索引以提高数据库查询。 2、实验主要内容 1) 针对SQL Server数据库设计单元组插入、批量数据插入、修改数据和删除数据等SQL语 句。理解和掌握INSERT、UPDATE和DELETE语法结构的各个组成成分,结合嵌套 SQL子查询,分别设计几种不同形式的插入、修改和删除数据的语句,并调试 成功。 2) 针对给定的数据库模式,以及相应的应用需求,创建视图、创建带WITH CHECK OPTION的视图,并验证视图WITH CHECK OPTION选项的有效性。理解和掌握视图消解执行原理,掌握可更新视图和不可 更新视图的区别 对视图的操作: a) 创建由地点在上海的供应商组成的可更新视图SS_View; b) 创建一个包括各个工程项目及其使用的各种零件总数量的不可更新视图JP Num_View; c) 利用SQL语句对上述a)视图进行更新操作; d) 利用SQL语句对上述a)、b)视图进行更新操作; e) 利用Management Studio创建和删除视图。 对索引的操作: 同上 3) 针对给定的数据库模式和具体应用需求,创建唯一索引、函数索引、复合索引等 ;修改索引;删除索引。设计相应的SQL查询验证索引有效性。 3、实验仪器设备 1) 学生每个一台PC机 2) 已安装SQL Server环境 实验4数据库的安全性、完整性 1、实验目的要求 1) 掌握自主存取控制权限的定义和维护方法; 2) 掌握实体完整性的定义和维护方法; 3) 掌握参照完整性的定义和维护方法; 4) 掌握用户自定义完整性的定义和维护方法。 2、实验主要内容 1) 定义用户、角色,分配权限给用户、角色,回收权限,以相应的用户名登录数据 库验证权限分配是否正确。选择一个应用场景,使用自主存取控制机制设计权 限分配。可以采用两种方案。方案一:采用sa超级用户登录数据库,完成所有 权限分配工作,然后用相应用户名登陆数据库以验证权限分配正确性;方案二 :采用sa用户登陆数据库创建三个部门经理用户,并分配相应的权限,然后分 别用三个经理用户名登陆数据库,创建相应部门的USER, ROLE,并分配相应权限。验证权限分配之前,请备份好数据库;针对不同用户 所具有的权限,分别设计相应的SQL语句加以验证。 2) 定义实体完整性,删除实体完整性。能够写出两种方式定义实体完整性的SQL语 句:创建时定义实体完整性、创建后定义实体完整性。设计SQL语句验证 完整性约束是否起作用。 3) 定义参照完整性,定义参照完整性的违约处理,删除参照完整性。写出两种方式 定义参照完整性的SQL语句:创建时定义参照完整性、创建后定义参照完 整性。 4) 针对具体应用语义,选择NULL/NOT NULL、DEFAULT,UNIQUE、CHECK等,定义属性上的约束条件。 3、实验仪器设备 1) 学生每个一台PC机 2) 已安装SQL Server环境 实验5数据库设计与应用开发大作业 1、实验目的要求 1) 掌握数据库设计
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值