admin管理员组

文章数量:1530845

2024年7月26日发(作者:)

SQL实验一

I.

范例

我们也可用SQL语言来处理学生选课系统,为有别于前面所建立的数据库文件,我们可建立数据库

文件,类似地,中有三个表:S,C,SC

1. 在student中用SQL语句创建S、C和SC表

create table S(Sno char(6) Primary key,

Sname char(8) not null,

Ssex char(2),

Sage char(2),

Phone char(8)

);

create table C(Cno char(6) primary key,

Cname char(8) not null unique,

Cpno char(6) references c(cno),

Ctime smallint,

Ccredit smallint

);

create table SC (Sno char(6)not null references s(sno),

Cno char(6) not null references c(cno),

Grade smallint,

Primary key (Sno,Cno)

);

2. 用如下的SQL命令修改表结构,将S表中的sage字段的数据类型改为短整数型;给s表添加一

个长度为10的文本型字段sdept;删除s 表的电话号码列。

命令分别为:

alter table S alter Sage smallint:

alter table S add Sdept char(10);

alter table S drop Phone;

II.

实验内容

一、新建一个空的数据库,该数据库文件的主名为“四级考试+教学班代码(三位数)+学生在该班

内的序号(三位数)”

二、该数据库中有数据表STUD和EXAM,分别存放学生情况和学生参加英语四级考试的情况。并

且:

1. 每位学生的身份证号不能为空且各不相同,不同学校的学生学号可能相同(姓名更可能相同),

但同一所学校的学生学号不会相同;

2. 每年在1月和7月举行两次考试,每次考试分听力、语法和写作三个部分,各部分满分分别为

40分、30分和30分;一次考试成绩总分>=60分,且三个部分的成绩均不低于相应满分的一半时,

该次考试为合格;

3. 同一个学生在校期间可多次参加四级考试,直至合格为止;但同一位学生不会在同一次考试中

有多于一条的记录

三、考虑两数据表的结构如下:

表STUD的结构为:Sno(学号) 文本型 6个字符

Sname(姓名)

Ssex(性别)

Syear(年级)

SUniName(校名)

SID(身份证号)

且不能为空)

表EXAM的结构为:SID(身份证号)

文本型

文本型

短整型

文本型

文本型

文本型

6个字符

2个字符

8个字符

9个字符(每位学生的身份证号各不相同,

9个字符(非空,仅在表STUD中的学生才

能参加四级考试)

Eyear(考试年份) 文本型 4个字符(非空)

Emonth(考试月份) 文本型 1个字符(非空)

Elisten(听力成绩) 短整型

Egrammar(语法成绩) 短整型

Ewrite(写作成绩) 短整型

同一位学生不能多次参加同一场考试

在实际建表前先分析:

实体完整性约束条件以决定两表的主键及两表之间的参照完整性约束条件

显然STUD表的主键为SID,故在创建表STUD结构的SQL语句中应有短语“SID CHAR(9) Primary

key,”;那么,EXAM表的主健是什么呢?在创建表EXAM结构的SQL语句中又应如何书写呢?

用SQL语句创建两表的结构,包括定义实体完整性和参照完整性

创建STUD表命令为:

create table STUD(Sno char(6),Sname char(6),Ssex char(2),Syear short,SUniName char(8),SID char(9)

primary key)

保存此数据定义查询为“建表STUD命令”

创建EXAM表命令为:

create table EXAM(SID char(9) NOT NULL references STUD(SID),Eyear char(4) NOT NULL,Emonth

char(1) NOT NULL,

Elisten short,Egrammar short,Ewrite short,Primary Key(SID,Eyear,Emonth))

保存此数据定义查询为“建表EXAM命令”

四、用SQL语句修改数据表的结构

1. 删除表STUD中的Syear字段,将该SQL语句保存为“删除字段命令”

alter table STUD DROP Syear

2. 修改表STUD中的Ssex字段的类型为1个字符,将该SQL语句保存为“修改字段命令”

alter table STUD alter Ssex char(1)

3. 在表EXAM表中增加Ssum(总分)字段,其类型为短整型,将该SQL语句保存为“增加字段

命令”

alter table EXAM ADD Ssum short

五、用INSERT命令数据表追加记录

1. 向表STUD追加一条如下的记录:

Sno

02005

Sname

程忠

Ssex

SUniName

上海理工

SID

850310123

将该SQL语句保存为“追加具有全部字段值记录命令”

INSERT INTO STUD VALUES ('02005', '程忠', '男', '上海理工', '850310123');

2. 向表EXAM追加一条如下的记录:

SID

850310123

Eyear

2007

Emonth

7

Elisten

10

Egrammar Ewrite

25 15

将该SQL语句保存为“追加具有部分字段值记录命令”

INSERT INTO EXAM ( SID, Eyear, Emonth, Elisten, Egrammar, Ewrite )

VALUES ('850310123', "2007", "7", 10, 25, 15);

六、用导入方法将位于文件“四级考试.xls”中的记录导入到相应的数据表中

七、数据表的记录的编辑

1. 在表STUD中将SID字段值为“871221226”的性别改为女,并将该命令保存为“修改字段

值命令1”。

UPDATE STUD SET Ssex = '女' WHERE SID='871221226';

2. 在表STUD中将学校名称为“上海大学”的记录的学校名称一律改为“上海政法学院”,并

将该命令保存为“修改字段值命令2”。

UPDATE STUD SET Suniname = '上海政法学院' WHERE Suniname = '上海大学';

3. 在表STUD中将SID字段值为“860501236”的记录删除,并将该命令保存为“删除记录命

令”。

DELETE * FROM STUD WHERE SID="860501236";

4. 计算每位考生每次考试的总成绩,并填入总分字段Ssum中,并将该命令保存为“计算总分

字段值命令”。

UPDATE EXAM SET Ssum = Elisten+Egrammar+Ewrite;

本文标签: 考试学生命令