数据库实验1

数据库实验1

第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) references course(cno),tno char(4)references teacher(tno),gno char(7) references class(gno),term tinyint,classroom char(7));

alter table teaching add primary key(cno,tno,gno);

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

第6关:修改字段约束

实验要求

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

代码

---------- BEGIN ---------- 
alter table teacher alter column tname set not null;

alter table 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 column email varchar(6);

alter table teacher add column 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 表所需数据如下:

工号姓名性别职称出生日期
14李欣教授1969/7/25
78张云副教授1975/11/25
118王立高级工程师1985/4/28
193赵玲讲师1992/9/26
213杨梅副教授1986/6/7
30覃刚副教授1980/2/15

course 表所需数据如下:

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

class 表所需数据如下:

班级号班级名年级学院班级人数
211801软件18级1班18级软件37
211903软件19级3班19级软件35
211705软件17级5班17级软件38
131901机械19级1班19级机械37

teaching 表所需数据如下:

课程号工号班级号开学日期教室
G001782119031A101
G001781319011A101
R0031182118012S001
R0092132119032S002
S0231932118011S001
G012301319012B003

代码

---------- 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 ---------- 

实验收获:

  1. 掌握了关系数据库标准语言的基础部分。
  2. 掌握了数据库的创建和使用。
  3. 掌握了数据表的创建和使用。
  4. 掌握了数据操纵的一些基本方法。

心得体会:

  1. 通过学习第三章“关系数据库标准语言”的前面一部分内容,我完成了这次的实验报告,这次报告让我学会了创建数据库和数据表的一些基本方法,以及学会了如何去对数据进行增、删、改的操作。
  2. 在学习关系数据库标准语言的时候,我发现这个语言具有很强大的功能,在编写代码的时候,不需要考虑“怎么做”这个问题,只需要发出“做什么”的命令,在写完这次实验报告后,我对数据库的认识又深了一步。
  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一只大狸子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值