haue数据库原理第一次实验
🌈C++专栏: 南桥谈C++
🌈C语言专栏: C语言学习系列
🌈Linux学习专栏: 南桥谈Linux
🌈数据结构学习专栏: 数据结构杂谈
🌈数据库学习专栏: 南桥谈MySQL
🌈Qt学习专栏: 南桥谈Qt
🌈菜鸡代码练习: 练习随想记录
🌈git学习: 南桥谈Git
一、实验学时
2学时
二、实验目的
(1)学会使用MySQL 图形界面工具进行数据库相关操作。
(2)掌握使用SQL语句创建、选择、删除数据库。
(3)掌握使用SQL语句创建、修改、删除表。
(4)掌握使用SQL语句对表进行插入、修改和删除数据操作。
(5)学会使用SQL命令进行数据库备份的操作方法。
(6)学会使用SQL命令进行数据库恢复的操作方法。
三、实验内容
(一)创建数据库的操作(共10分,每小题5分)
- 使用SQL语句创建数据库Stu_Course。
SQL语句为:
mysql> create database Stu_Course;
- 使用SQL语句选择Stu_Course为当前使用数据库。
SQL语句为:
use stu_course;
(二)表数据的操作(共80分)
1.在数据库Stu_Course中创建表
(1)使用图形界面工具创建Student表(5分)
Student表结构及其约束为:
操作步骤如下:
CREATE TABLE Student (
Sno CHAR(8) PRIMARY KEY COMMENT '学号',
Sname VARCHAR(20) NOT NULL UNIQUE COMMENT '姓名',
Ssex CHAR(6) NOT NULL COMMENT '性别',
Sbrithdate DATE NOT NULL COMMENT '出生日期',
Smajor VARCHAR(40) NOT NULL COMMENT '主修主修专业'
);
(2)使用SQL语句创建表(10分)
1)创建Course表
Course表结构及其约束为:
创建Course表SQL语句如下:
CREATE TABLE Course (
Cno CHAR(5) PRIMARY KEY COMMENT '课程号',
Cname VARCHAR(40) COMMENT '课程名',
Ccredit SMALLINT NOT NULL COMMENT '学分',
Cpno CHAR(5) NOT NULL COMMENT '先修课',
FOREIGN KEY (Cpno) REFERENCES Course(Cno)
2)创建表SC表
SC表结构及其约束为:
其中成绩为百分制。
创建SC表SQL语句如下:
CREATE TABLE SC (
Sno CHAR(8) COMMENT '学号',
Cno CHAR(5) COMMENT '课程号',
Grade SMALLINT NOT NULL COMMENT '成绩',
Semester CHAR(5) COMMENT '开课学期',
Teachingclass CHAR(8) COMMENT '教学班',
PRIMARY KEY (Sno,Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno),
FOREIGN KEY (Cno) REFERENCES Course(Cno)
);
2.管理表
(1)添加和删除列(10分)
给Course表增加一列,字段名为Ctype(课程类型),类型为char,长度为10,允许为空值。
1)使用图形界面工具进行。
操作步骤如下:
右键course->设计表->插入字段->在名中输入Ctype,在类型中输入char,在长度中输入10->点击保存
插入该列后,在图形界面工具中删除该列的操作步骤。
右键course->设计表->选中Ctype行->删除字段->点击保存
2)使用SQL语句进行。
添加Ctype字段的SQL语句。
ALTER TABLE Course ADD COLUMN Ctype CHAR(10) DEFAULT NULL;
删除Ctype字段的SQL语句。
ALTER TABLE Course ADD COLUMN Ctype CHAR(10) DEFAULT NULL;
(2)表的重命名及删除(10分)
1)使用图形界面工具重命名及删除表。
重命名操作步骤:
(如将Course表重命名为Course1表)
右击Course->重命名->输入Course1
删除Course1表的操作步骤:
右键course->点击删除表->在“我已了解此操作是永久性的且无法撤销”前面的框内打对号->点击删除
2)使用SQL语句实现
在查询命令窗口中,重建Course表。
重命名Course表为Course1表的SQL语句。(提示:MySQL使用命令rename table)
RENAME TABLE Course TO Course1;
删除Course1表的SQL语句。
ALTER TABLE sc DROP FOREIGN KEY sc_ibfk_2;
DROP TABLE course1;
在查询命令窗口中,重建Course表。
3.对表添加、修改、删除数据
(1)插入数据简单操作(15分)
1)使用图形界面工具向Student表中插入数据。
其它数据可自行添加。
重要操作步骤:
依次对于每一行的数据进行输入->输入完毕点击左下角的对号保存->点击加号获取新的一行->重复进行直至数据输入完毕
2)使用SQL语句向Course表中插入数据。
INSERT INTO Course(Cno,Cname,Ccredit,Cpno) VALUES
('81001','程序设计基础与C语言','4',NULL),
('81002','数据结构','4',81001),
('81003','数据库系统概论','4',81002),
('81004','信息系统概论','4',81003),
('81005','操作系统','4',81001),
('81006','Python语言','3',81002),
('81007','离散数学','4',NULL),
('81008','大数据技术概论','4',81003);
SQL命令为:
3)使用SQL语句向SC表中插入数据。
其它数据可自行添加。
SQL命令为:
INSERT INTO SC(Sno,Cno,Grade,Semester,Teachingclass)VALUES
('20180001', '81001', 85, '20192', '81001-01'),
('20180001', '81002', 96, '20201', '81002-01'),
('20180001', '81003', 87, '20202', '81003-01'),
('20180002', '81001', 80, '20192', '81001-02'),
('20180002', '81002', 98, '20201', '81002-01'),
('20180002', '81003', 71, '20202', '81003-02'),
('20180003', '81001', 81, '20192', '81001-01'),
('20180003', '81002', 76, '20201', '81002-02'),
('20180004', '81001', 56, '20192', '81001-02'),
('20180004', '81002', 97, '20201', '81002-02'),
('20180005', '81003', 68, '20202', '81003-01');
(2)修改数据简单操作。(15分)
1)在图形界面工具中,将Student表中的学号为“20180001”的同学的姓名改为“李双”。
操作步骤:
2)使用SQL语句,将Course表中的课程号为“81003”的学分改为3。
SQL语句为:
UPDATE Course SET Ccredit = '81003' WHERE Cno = '3';
3)使用SQL语句,将SC表中的选修了“81003”课程的同学的成绩*80%。
SQL语句为:
UPDATE SC SET Grade = Grade * 0.8 WHERE Cno = '81003';```
(3)删除数据简单操作(请注意外键约束的限制)(15分)
1)假设学号为“20180003”的同学已离开学校,则需要删除该记录,请在图形界面工具中将Student表中将该记录删除。
操作步骤:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dc6a8bb831f14f8597b25541b3184540.png)
2)删除选修了“数据库系统概论”的学生选课记录。
SQL语句:
```sql
DELETE FROM SC
WHERE Cno IN
(
SELECT Cno FROM Course
WHERE Cname = '数据库系统概论'
);
3)使用SQL语句,删除所有的学生选课记录。
SQL语句:
DELETE FROM SC;
(三)数据库的备份与恢复(共10分,每小题5分)
-
使用mysqldump命令备份数据库Stu_Course的所有表,存于D:\下,文件名为all_tables.sql。写出执行代码并将结果界面截图粘贴。
-
在MySQL服务器上创建数据库student1,使用mysql命令将备份文件all_tables.sql恢复到数据库student1中。写出执行代码并将结果界面截图粘贴。(提示:恢复数据库前要先创建数据库)
四、实验思考(前面回答有误,此部分根据回答情况最多加9分,报告总分不超过100分)
-
能通过一个CREATE DATABASE语句创建两个及以上的数据库吗?
不可以 -
对于Stu_Course数据库的Student表而言,如果输入相同学号的记录将出现什么现象?为什么?
如果Student表中的学号字段被定义为唯一键(Unique Key)或主键(Primary Key),那么尝试插入具有相同学号的记录将导致违反唯一性约束。数据库会拒绝这种插入操作,并返回一个错误,通常是“违反唯一性约束”或“主键冲突”的错误消息。这是因为唯一键或主键的目的是确保表中的每一行都有一个唯一的标识符。 -
已经打开的表能删除吗?
可以删除