实验一 数据库和表的管理

一、实验目的

1. 了解MySQL数据库的逻辑结构和物理结构的特点。

2. 学会使用SQL语句创建、选择、删除数据库。

3. 学会使用SQL语句创建、修改、删除表。

4. 学会使用SQL语句对表进行插入、修改和删除数据操作。

5. 了解MySQL的常用数据类型。

二、实验内容

1. 使用SQL语句创建数据库studentsdb。

2. 使用SQL语句选择studentsdb为当前使用数据库。

3. 使用SQL语句在studentsdb数据库创建数据表student_info、curriculum、grade,三个表的数据结构如表1-表3所示

表1 student_info表结构

列名

数据类型

允许NULL值

主键

学号

char(4)

姓名

char(8)

性别

char(2)

出生日期

date

家族住址

varchar(50)

表2 curriculum表结构

列名

数据类型

允许NULL值

主键

课程编号

char(4)

课程名称

varchar(50)

学分

int

表3 grade表结构

列名

数据类型

允许NULL值

主键

学号

char(4)

课程编号

char(4)

分数

int

4. 使用SQL语句INSERT向studentsdb数据库的student_info、curriculum、grade表插入数据,各表数据如表4-表6所示。

表4 student_info表的数据

学号

姓名

性别

出生日期

家族住址

0001

张青平

2000-10-01

衡阳市东风路77号

0002

刘东阳

1998-12-09

东阳市八一北路33号

0003

马晓夏

1995-05-12

长岭市五一路763号

0004

钱忠理

1994-09-23

滨海市洞庭大道279号

0005

孙海洋

1995-04-03

长岛市解放路27号

0006

郭小斌

1997-11-10

南山市红旗路113号

0007

肖月玲

1996-12-07

东方市南京路11号

0008

张玲珑

1997-12-24

滨江市新建路97号

表5 curriculum表的数据

课程编号

课程名称

学分

0001

计算机应用基础

2

0002

C语言程序设计

2

0003

数据库原理及应用

2

0004

英语

4

0005

高等数学

4

表6 grade表的数据

学号

课程编号

分数

0001

0001

80

0001

0002

91

0001

0003

88

0001

0004

85

0001

0005

77

0002

0001

73

0002

0002

68

0002

0003

80

0002

0004

79

0002

0005

73

0003

0001

84

0003

0003

0003

0003

0002

0003

0004

0005

92

81

82

75

5. 使用SQL语句ALTER TABLE修改curriculum表的“课程名称”列,类型不变,使之值为空。

6. 使用SQL语句ALTER TABLE修改grade表的“分数”列,使其数据类型为decimal(5,2)。

7. 使用SQL语句ALTER TABLE为student_info表添加一个名为“备注”的数据列,其数据类型为varchar(50)。

8. 使用SQL语句创建数据库studb,并在此数据库下创建表stu,表结构与数据与studentsdb的student_info表相同。

9. 使用SQL语句删除表stu中学号为0004的记录。

10.使用SQL语句更新表stud中学号为0002的家庭住址为“滨江市新建路96号”。

11.删除表stud的“备注”列。

12.删除表stud。

13.删除数据库studb。

#1. 使用SQL语句创建数据库studentsdb。
CREATE DATABASE studentsdb;

#2. 使用SQL语句选择studentsdb为当前使用数据库。
USE studentsdb;

#3. 使用SQL语句在studentsdb数据库创建数据表student_info、curriculum、grade
CREATE TABLE student_info
(
	学号	char(4) PRIMARY KEY,
	姓名	char(8) NOT NULL,
	性别	char(2),
	出生日期	date,
	家族住址	varchar(50)
);
DESC student_info; 

CREATE TABLE curriculum #课程表
(
	课程编号	char(4) PRIMARY KEY,
	课程名称	varchar(50),
	学分	int
);
DESC curriculum;

CREATE TABLE grade
(
	学号	char(4),
	课程编号	char(4),
	分数	int,
	PRIMARY KEY(学号,课程编号)    #联合主键
);
DESC grade;

#4. 使用SQL语句INSERT向studentsdb数据库的student_info、curriculum、grade表插入数据
INSERT INTO student_info(学号,姓名,性别,出生日期,家族住址)
	VALUES('0001','张青平','男','2000-10-01','衡阳市东风路77号'),
		  ('0002','刘东阳','男','1998-12-09','东阳市八一北路33号'),
		  ('0003','马晓夏','女','1995-05-12','长岭市五一路763号'),
		  ('0004','钱忠理','男','1994-09-23','滨海市洞庭大道279号'),
		  ('0005','孙海洋','男','1995-04-03','长岛市解放路27号'),
		  ('0006','郭小斌','男','1997-11-10','南山市红旗路113号'),
		  ('0007','肖月玲','女','1996-12-07','东方市南京路11号'),
		  ('0008','张玲珑','女','1997-12-24','滨江市新建路97号');
SELECT * FROM student_info;

INSERT INTO curriculum(课程编号,课程名称,学分)
	VALUES('0001','计算机应用基础',2),
		  ('0002','C语言程序设计',2),
		  ('0003','数据库原理及应用',2),
		  ('0004','英语',4),
		  ('0005','高等数学',4);
SELECT * FROM curriculum;

INSERT INTO grade(学号,课程编号,分数)
	VALUES('0001','0001',80),
		  ('0001','0002',91),
		  ('0001','0003',88),
		  ('0001','0004',85),
		  ('0001','0005',77),
		  ('0002','0001',73),
		  ('0002','0002',68),
		  ('0002','0003',80),
		  ('0002','0004',79),
		  ('0002','0005',73),
		  ('0003','0001',84),
		  ('0003','0002',92),
		  ('0003','0003',81),
		  ('0003','0004',82),
		  ('0003','0005',75);
SELECT * FROM grade;

#5.使用SQL语句ALTER TABLE修改curriculum表的“课程名称”列,使之非空。
ALTER TABLE curriculum
	MODIFY 课程名称	varchar(50) NOT NULL;
DESC curriculum;

#6. 使用SQL语句ALTER TABLE修改grade表的“分数”列,使其数据类型为decimal(5,2)。
ALTER TABLE grade
	MODIFY 分数 DECIMAL(5,2);
DESC grade;

#7. 使用SQL语句ALTER TABLE为student_info表添加一个名为“备注”的数据列,其数据类型为varchar(50)。
ALTER TABLE student_info
 ADD 备注 VARCHAR(50);
DESC student_info;

#8. 使用SQL语句创建数据库studb,并在此数据库下创建表stu,表结构与数据与studentsdb的student_info表相同。
CREATE DATABASE studb;
USE studb;
CREATE TABLE stu
AS SELECT * FROM studentsdb.student_info;
DESC stu;

#9. 使用SQL语句删除表stu中学号为0004的记录。
SET SQL_safe_updates=0;   #关闭安全模式,然后才能对表进行增删改操作
DELETE FROM stu WHERE 学号 = '0004';
SELECT * FROM stu;

#10.使用SQL语句更新表stud中学号为0002的家族住址为“滨江市新建路96号”。
UPDATE stu
	SET 家族住址 = '滨江市新建路96号' WHERE 学号 = '0002' ;
SELECT * FROM stu;

#11.删除表stud的“备注”列。
ALTER TABLE stu
	DROP COLUMN 备注;
SELECT * FROM stu;

#12.删除表stud。
DROP TABLE stu;

#13.删除数据库studb。
DROP DATABASE studb;

  • 15
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
交互式SQL的使用 环境:WINDOWS,Microsoft SQL Server 实验要求: 1,创建Student数据库,包括Students,Courses,SC表,表结构如下: Students(SNO,SNAME,SEX,BDATE,HEIGHT,DEPARTMENT) Courses(CNO,CNAME,LHOUR,CREDIT,SEMESTER) SC(SNO,CNO,GRADE) (注:下划线表示主键,斜体表示外键),并插入一定数据。 2.完成如下的查询要求及更新的要求。 (1)查询身高大于1.80m的男生的学号和姓名; (2)查询计算机系秋季所开课程的课程号和学分数; (3)查询选修计算机系秋季所开课程的男生的姓名、课程号、学分数、成绩; (4)查询至少选修一门电机系课程的女生的姓名(假设电机系课程的课程号以EE开头); (5)查询每位学生已选修课程的门数和总平均成绩; (6)查询每门课程选课的学生人数,最高成绩,最低成绩和平均成绩; (7)查询所有课程的成绩都在80分以上的学生的姓名、学号、且按学号升序排列; (8)查询缺成绩的学生的姓名,缺成绩的课程号及其学分数; (9)查询有一门以上(含一门)三个学分以上课程的成绩低于70分的学生的姓名; (10)查询1984年~1986年出生的学生的姓名,总平均成绩及已修学分数。 (11) 在STUDENT和SC关系中,删去SNO以’01’开关的所有记录。 (12)在STUDENT关系中增加以下记录: (13)将课程CS-221的学分数增为3,讲课时数增为60 3.补充题: (1) 统计各系的男生和女生的人数。 (2) 列出学习过‘编译原理’,‘数据库’或‘体系结构’课程,且这些课程的成绩之一在90分以上的学生的名字。 (3) 列出未修选‘电子技术’课程,但选修了‘数字电路’或‘数字逻辑’课程的学生数。 (4) 按课程排序列出所有学生的成绩,尚无学生选修的课程,也需要列出,相关的学生成绩用NULL表示。 (5) 列出平均成绩最高的学生名字和成绩。(SELECT句中不得使用TOP n子句) 4.选做题:对每门课增加“先修课程”的属性,用来表示某一门课程的先修课程,每门课程应可记录多于一门的先修课程。要求: 1) 修改表结构的定义,应尽量避免数据冗余,建立必要的主键,外键。 2) 设计并插入必要的测试数据,完成以下查询: 列出有资格选修数据库课程的所有学生。(该学生已经选修过数据库课程的所有先修课,并达到合格成绩。) 注意:须设计每个查询的测试数据,并在查询之前用INSERT语句插入表中。 提交作业形式: 1) 建立Student数据库的SQL脚本,插入所有数据项的SQL脚本(包括所有的测试数据)。 2) 完成查询要求的SQL语句脚本。 3) 选做题:须提交修改数据库表定义的SQL脚本,插入测试数据的SQL脚本以及用于查询的SQL语句。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值