整理自博主本科《数据库系统原理》专业课自己完成的实验报告,以便各位学习数据库系统概论的小伙伴们参考、学习。
专业课本:
————
本次实验使用到的图形化工具:Heidisql
目录
1、创建数据库educ及其基本表(Student, Course, SC)
一、实验目的
1、熟练使用SQL语句建立数据库和表,掌握数据定义语句。
2、使用数据定义语句实现完整性约束的设置,加深对于完整性的理解。3、初步掌握数据更新语句。
二、实验内容及步骤
1、创建数据库educ及其基本表(Student, Course, SC)
提示:创建数据库,然后打开数据库,然后再开始创建表。
1) 建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成,是否允许为空,数据类型如下图所示。其中学号为主属性,Ssex默认为‘男’,Sname列的必须取唯一值即加unique约束。
SQL语句:
CREATE DATABASE educ;
USE educ;
SELECT DATABASE();
CREATE TABLE Student(
Sno CHAR(9) PRIMARY KEY ,
Sname CHAR(20) UNIQUE ,
Ssex CHAR(2) DEFAULT'男',
Sage SMALLINT,
Sdept CHAR(20)
);
执行结果:
2) 建立“课程”表Course,包括课程号Cno,课程名称Cname,先修课程Cpno,学分Ccredit,是否允许为空,数据类型如下图所示。要求Cno建立主键。按照Cpno建立外键,参照course表中的Cno。
SQL语句:
CREATE TABLE Course(
Cno CHAR(4) NOT NULL PRIMARY KEY ,
Cname CHAR(40) NOT NULL ,
Cpno CHAR(4) ,
Ccredit SMALLINT ,
FOREIGN KEY (Cpno) REFERENCES Course(Cno)
);
执行结果:
3) 建立“选课”表SC,包括学号sno,课程号cno,成绩grade,是否允许为空,数据类型如下图所示。要求sno+cno建立主键及与Student及Course表联接的外键。
SQL语句:
CREATE TABLE SC(
Sno CHAR(9) ,
Cno CHAR(4) ,
Grade SMALLINT ,
PRIMARY KEY (Sno,Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno),
FOREIGN KEY (Cno) REFERENCES Course(Cno)
);
执行结果:
2、基本表的修改
1) 在Student表中增加一列学生的地址Sloc char(80)
ALTER TABLE Student
ADD Sloc CHAR(80);
2) 删除Sloc这一列
ALTER TABLE Student
DROP COLUMN Sloc;
3) 将Student表的列Sname的长度由char(20)改为varchar(20)
ALTER TABLE Student
MODIFY COLUMN Sname VARCHAR(20);
4) 将Student表的Sname一列允许空值的属性更改成不允许为空
ALTER TABLE Student
MODIFY COLUMN Sname CHAR(20);
5) 把Student表中Sdept的默认值设置为 软件工程
ALTER TABLE Student
MODIFY COLUMN Sdept CHAR(20) DEFAULT '软件工程';
6) 创建一个新的表S1,自定义三个属性,创建时不要设置主键。再创建一个表s2,自定义两个属性,其中一个属性的类型和s1中的某个属性相同。
CREATE TABLE S1(
Teacher VARCHAR(4),
Class SMALLINT ,
Salary SMALLINT
);
CREATE TABLE S2(
Teacher VARCHAR(20),
Address CHAR(20)
);
7) 给表S1添加一个主键
ALTER TABLE S1
ADD PRIMARY KEY(Teacher);
8) 给表S2添加一个外键
ALTER TABLE S2
ADD FOREIGN KEY (Teacher) REFERENCES S1(Teacher);
3、删除表
1) 删除Student表
2)删除Course表
3)删除SC表
ALTER TABLE SC
DROP FOREIGN KEY sc_ibfk_1;
ALTER TABLE sc
DROP FOREIGN KEY sc_ibfk_2;
DROP TABLE Student;
DROP TABLE Course;
DROP TABLE SC;
三、实验结果总结
总结自己遇到的问题:
1、在运行添加外键的代码时,没有同时运行创建目标关系的代码,导致系统找不到目标关系,认为目标关系不存在。
2、在创建表时,在最后一行的属性创建后加了逗号“,”
3、在添加外码时输错了代码,把设置主键的一步写成了设置外键。
四、实验结果的运用
能不能应用到其他的数据库中,请自己举例子
答:
CREATE DATABASE spj;
USE spj;
SELECT DATABASE();
#创建4个表
CREATE TABLE S(
Sno CHAR(10) PRIMARY KEY ,
Sname CHAR(4) NOT NULL UNIQUE ,
Sstatus INT(40),
City VARCHAR(4)
);
CREATE TABLE P(
Pno CHAR(10) PRIMARY KEY ,
Pname CHAR(4) ,
Pcolor CHAR(2) DEFAULT'红',
Pweight INT(40)
);
CREATE TABLE J(
Jno CHAR(10) PRIMARY KEY ,
Jname CHAR(10),
City CHAR(5) NOT NULL
);
CREATE TABLE SPJ(
Sno CHAR(10),
Pno CHAR(10),
Jno CHAR(10),
Qty INT(10),
PRIMARY KEY(Sno,Pno,Jno),
FOREIGN KEY (Sno) REFERENCES S(Sno),
FOREIGN KEY (Pno) REFERENCES P(Pno),
FOREIGN KEY (Jno) REFERENCES J(Jno)
);
ALTER TABLE S
ADD address VARCHAR(40) NOT NULL ;
ALTER TABLE S
DROP COLUMN address;
ALTER TABLE P
MODIFY COLUMN Pname CHAR(10);
ALTER TABLE SPJ
MODIFY COLUMN Qty INT(10000) NOT NULL;
ALTER TABLE J
MODIFY COLUMN City CHAR(5);
ALTER TABLE J
MODIFY COLUMN Jname CHAR(10) DEFAULT 'Beijing';
CREATE TABLE extra1(
c1 SMALLINT ,
c2 INT
);
CREATE TABLE extra2(
c2 INT ,
c3 VARCHAR(10)
);
ALTER TABLE extra1
ADD PRIMARY KEY c1;
ALTER TABLE extra1
DROP PRIMARY KEY;
ALTER TABLE extra1
ADD PRIMARY KEY c2;
ALTER TABLE extra2
ADD FOREIGN KEY (c2) REFERENCES extra1(c2);