目录
实验内容
(一)创建数据库的操作
1. 使用SQL语句创建数据库Stu_Course。
T-SQL语句为:
CREATE DATABASE Stu_Course
2. 使用SQL语句选择Stu_Course为当前使用数据库。
T-SQL语句为:
USE Stu_course;
(二)表数据的操作
1.在数据库Stu_Course中创建表
(1)使用图形界面工具创建Student表
Student表结构及其约束为:
表1-1 Student表结构和约束
列名 | 数据类型 | 宽度 | 允许空值 | 缺省值 | 主键 | 说明 |
Sno | char | 9 | 否 | 是 | 学号 | |
Sname | char | 20 | 是 | 姓名 | ||
Ssex | char | 2 | 是 | 性别 | ||
Sage | smallint | 是 | 年龄 | |||
Sdept | char | 20 | 是 | 所在系 |
操作步骤如下:
右键Stu_Course->依次对于列名,数据类型,宽度,允许空值,缺省值,主键进行输入->右键点击添加字段->重复此类操作直至完毕->点击保存->输入表名为Student
(2)使用T-SQL语句创建表
1)创建Course表
Course表结构及其约束为:
表1-2 Course表结构和约束
列名 | 数据类型 | 宽度 | 允许空值 | 缺省值 | 主键 | 外键 | 说明 |
Cno | char | 4 | 否 | 是 | 课程号 | ||
Cname | char | 40 | 是 | 课程名 | |||
Cpno | char | 4 | 是 | 是 | 先行课 | ||
Ccredit | smallint | 是 | 学分 |
创建Course表T-SQL语句如下:
CREATE TABLE Course(Cno char(4) NOT NULL PRIMARY KEY,Cname char(40),Cpno char(4),Ccredit SMALLINT,FOREIGN KEY(Cpno)REFERENCES Course(Cno));
2)创建表SC表
SC表结构及其约束为:
表1-3 SC表结构和约束
列名 | 数据类型 | 宽度 | 允许空值 | 缺省值 | 主键 | 外键 | 说明 |
Sno | char | 9 | 否 | 是 | 是 | 学号 | |
Cno | char | 4 | 否 | 是 | 课程号 | ||
Grade | smallint | 是 | 成绩 |
其中成绩为百分制。
创建SC表T-SQL语句如下:
CREATE TABLE SC(Sno char(9)NOT NULL,Cno char(4)NOT NULL,Grade SMALLINT,PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno) REFERENCES student(Sno),FOREIGN KEY(Cno) REFERENCES Course(Cno));
2.管理表
(1)添加和删除列
给Course表增加一列,字段名为Ctype(课程类型),类型为char,长度为10,允许为空值。
1)使用图形界面工具进行。
操作步骤如下:
右键course->设计表->插入字段->在名中输入Ctype,在类型中输入char,在长度中输入10->点击保存
插入该列后,在图形界面工具中删除该列的操作步骤。
右键course->设计表->选中Ctype行->删除字段->点击保存
2)使用T-SQL语句进行。
添加Ctype字段的T-SQL语句。
ALTER TABLE Course ADD Ctype char(10);
删除Ctype字段的T-SQL语句。
ALTER TABLE Course DROP Ctype;
(2)表的重命名及删除
1)使用图形界面工具重命名及删除表。
重命名操作步骤:
(如将Course表重命名为Course1表)
右键Course->点击重命名->输入Course1->点击空白区域即可
删除Course1表的操作步骤:
右键course->点击删除表->在“我已了解此操作是永久性的且无法撤销”前面的框内打对号->点击删除
2)使用T-SQL语句实现
在查询命令窗口中,重建Course表。
重命名Course表为Course1表的T-SQL语句。(提示:MySQL使用命令rename table)
ALTER TABLE Course RENAME Course1;
删除Course1表的T-SQL语句。
注意:SC表的建立是在Course表之后的,且以Course表为依据,SC表中的Cno参照与Course中的Cno,因此仅仅使用DROP是无法删除重命名后的Course表的(即Course1),因为SC中外键的存在。将SC中的外键删除即可,外键的名称可通过右键SC表->设计表->外键步骤查看,可以发现此外键名为sc_ibfk_2,将其删除之后,就可正常删除Course1表了
ALTER TABLE sc DROP FOREIGN KEY sc_ibfk_2;DROP TABLE course1;
3.对表添加、修改、删除数据
(1)插入数据简单操作
1)使用图形界面工具向Student表中插入数据。
表1-4 Student表
Sno | Sname | Ssex | Sage | Sdept |
200215121 | 李勇 | 男 | 20 | CS |
200215122 | 刘晨 | 女 | 19 | CS |
200215123 | 王敏 | 女 | 18 | MA |
200215125 | 张立 | 男 | 19 | IS |
200215126 | 张红 | 女 | 19 | CS |
操作步骤:
依次对于每一行的数据进行输入->输入完毕点击左下角的对号保存->点击加号获取新的一行->重复进行直至数据输入完毕
其它数据可自行添加。
2)使用T-SQL语句向Course表中插入数据。
表1-5 Course表
Cno | Cname | Cpno | Ccredit |
1 | 数据库 | 5 | 4 |
2 | 数学 | 2 | |
3 | 信息系统 | 1 | 4 |
4 | 操作系统 | 6 | 3 |
5 | 数据结构 | 7 | 4 |
6 | 数据处理 | 2 | |
7 | PASCAL语言 | 6 | 4 |
在查询命令窗口中,运行重建Course表。
T-SQL命令为:
CREATE TABLE Course(Cno char(4) NOT NULL PRIMARY KEY,Cname char(40),Cpno char(4),Ccredit SMALLINT,FOREIGN KEY(Cpno)REFERENCES Course(Cno));INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES('6','数据处理',NULL,2),('7','PASCAL语言','6',4),('5','数据结构','7',4),('1','数据库','5',4),('4','操作系统','6',3),('2','数学',NULL,2),('3','信息系统','1',4);
注意:在Course中,Cpno为Cno的外键,因此Cpno相应的数据应在Cno数据存在之后插入
其它数据可自行添加。
3)使用T-SQL语句向SC表中插入数据。
表1-6 SC表
Sno | Cno | Grade |
200215121 | 1 | 92 |
200215121 | 2 | 85 |
200215121 | 3 | 88 |
200215122 | 2 | 90 |
200215122 | 3 | 80 |
T-SQL命令为:
INSERT INTO SC(Sno,Cno,Grade)VALUES('200215121','1',92),('200215121','2',85),('200215121','3',88),('200215122','2',90),('200215122','3',80);
其它数据可自行添加。
(完成以上操作后,保存所有命令文本sql文件,并将Stu_Course数据库备份,得到Stu_Course.sql备份文件,保存起来以备后面实验用)
(2)修改数据简单操作。
1)在图形界面工具中,将Student表中的学号为“200215125”的同学的姓名改为“李双”。
操作步骤:
双击student表->选择200212125的同学姓名->删除并改为李双->点击左下角对号保存
2)使用T-SQL语句,将Course表中的课程号为“2”的学分改为4。
T-SQL语句为:
UPDATE Course SET Ccredit = '4' WHERE Cno = '2';
3)使用T-SQL语句,将SC表中的选修了“2”课程的同学的成绩*80%。
T-SQL语句为:
UPDATE SC SET Grade = Grade * 0.8 WHERE Cno = '2';
(3)删除数据简单操作(请注意外键约束的限制)
1)假设学号为“200215123”的同学已离开学校,则需要删除该记录,请在图形界面工具中将Student表中将该记录删除。
操作步骤:
选中该列->右键删除记录->点击确定->点击左下角对号保存
2)删除选修了“信息系统”的学生选课记录。
T-SQL语句:
DELETE FROM SC WHERE Cno IN (SELECT Cno FROM CourseWHERE Cname = '信息系统');
3)使用T-SQL语句,删除所有的学生选课记录。
T-SQL语句:
DELETE FROM SC;
(三)数据库的备份与恢复
1. 使用mysqldump命令备份数据库Stu_Course的所有表,存于D:\下,文件名为all_tables.sql。写出执行代码并将结果界面截图粘贴。
cmd进入MySQL之后输入:
mysqldump -u root -h localhost -p stu_course > d:\all_tables.sql
2. 在MySQL服务器上创建数据库student1,使用mysql命令将备份文件all_tables.sql恢复到数据库student1中。写出执行代码并将结果界面截图粘贴。(提示:恢复数据库前要先创建数据库)
再在CMD命令提示符窗口中执行命令。
CREATE DATABASE student1;
cmd进入MySQL之后输入:
mysql -uroot -p student1 < d:\all_tables.sql
3. 使用mysqldump命令备份数据库Stu_Course中的指定表SC,存于D:\下,文件名为s_c.sql。写出执行代码并将结果界面截图粘贴。
cmd进入MySQL之后输入:
mysqldump -u root -p stu_course sc > d:\s_c.sql
4. 在MySQL服务器上创建数据库student2,使用mysql命令将备份文件s_c.sql恢复到数据库student2中。写出执行代码并将结果界面截图粘贴。(提示:恢复数据库前要先创建数据库)
CREATE DATABASE student2;
cmd进入MySQL之后输入:
mysql -uroot -p student2 < d:\s_c.sql
实验思考
1. 能通过一个CREATE DATABASE语句创建两个及以上的数据库吗?
不可以
2. 删除了的数据库还极可能恢复吗?
可以恢复,不过要提前对于数据库进行备份,并在之后创建一个新的数据库来导入原来备份的内容
3. 对于Stu_Course数据库的Student表而言,如果输入相同学号的记录将出现什么现象?为什么?
会出现报错无法正常保存的情况,因为Student表中的学号Sno为主键,其值能够唯一的确定某一个学生的信息,主键是用来唯一表示一条数据的值,不能重复的
4. 已经打开的表能删除吗?
能够删除
来源地址:https://blog.csdn.net/couchpotatoshy/article/details/130590016