数据库系统原理实验报告3 | 数据定义

整理自博主本科《数据库系统原理》专业课自己完成的实验报告,以便各位学习数据库系统概论的小伙伴们参考、学习。

专业课本:

————

本次实验使用到的图形化工具:Heidisql

目录

一、实验目的

二、实验内容及步骤

1、创建数据库educ及其基本表(Student, Course, SC)

2、基本表的修改

3、删除表

三、实验结果总结

总结自己遇到的问题:

四、实验结果的运用

能不能应用到其他的数据库中,请自己举例子


一、实验目的

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

1、 Find the name, loan number and loan amount of all customers; rename the column name loan_number as loan_id. 2、 Find the names of all customers whose street includes the substring “Main”. 3、Find all customers who have a loan, an account, or both: 4、Find all customers who have both a loan and an account. 5、Find all customers who have an account but no loan. 6、Find the average account balance at the Perryridge branch. 7、 Find the number of tuples in the customer relation. 8、 Find the number of depositors in the bank. 9、 Find the number of depositors for each branch. 10、Find the names of all branches where the average account balance is more than $1,200. 11、Find all loan number which appear in the loan relation with null values for amount. 12、Find all customers who have both an account and a loan at the bank. 13、Find all customers who have a loan at the bank but do not have an account at the bank 14、Find all customers who have both an account and a loan at the Perryridge branch 15、Find all branches that have greater assets than some branch located in Brooklyn. 16、Find the names of all branches that have greater assets than all branches located in 1、创建一个School数据库,该数据库的主数据文件逻辑名称为SCHOOL_data,物理文件名为School.mdf,初始大小为10MB,最大尺寸为无限大,增长速度为10%;数据库的日志文件逻辑名称为School_log,物理文件名为School.ldf,初始大小为1MB,最大尺寸为5MB,增长速度为1MB。 2、用SQL语句建立上述表,自定义主键和外键,对于student表建立约束条件:ssex仅能取male或female;sage在18和22之间。并完成下面的查询语句。 1、查询所有选修过“Bibliometrics”课的学生的姓名和成绩; 2、查询考试成绩不及格的学生的个数; 3、查询名字中至少含有一个“z”字符的学生的姓名、学号和性别; 4、查询选修了“Introduction to the Internet”课程的学生的学号及其成绩,查询结果按分数的降序排列; 5、查询“Zuo li”同学选修课程的总学时(time)数 6、查询年龄不大于20岁的学生的平均考试成绩; 7、查询 “computer science”专业学生选修 “Database System”的人数; 8、查询同时选修课程“Database System”和“Introduction to the Internet”的学生姓名; 9、查询选修的课程中含有“Wang gang”同学所有选修课程的学生姓名。 10、查询“Information Technology for Information Management”考试成绩为空的学生姓名及专业名称。 11、查询“computer science”专业学生每个人的选修课总学分。 12、查询个人考试平均成绩高于专业平均成绩的学生姓名 13、查询个人考试平均成绩高于女生平均成绩的男生姓名 14、查询比“computer science”专业所有学生年龄都大的学生姓名。 15、查询考试成绩仅有一科不及格学生姓名
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值