MySQL 数据库实验二

课题 :实验二 数据库和表的管理*

目的要求 :
1. 了解MySQL数据库的逻辑结构和物理结构的特点。
2. 学会使用SQL语句创建、选择、删除数据库。
3. 学会使用SQL语句创建、修改、删除表。
4. 学会使用SQL语句对表进行插入、修改和删除数据操作。
5. 了解MySQL的常用数据类型。
教学内容:

  1. SQL语句创建、选择、删除数据库。
  2. SQL语句创建、修改、删除表。
  3. SQL语句对表进行插入、修改和删除数据操作。
    重点难点 建库、建表、插入、删除、修改数据的SQL语句。

一、上机内容

  1. 使用SQL语句创建数据库studentsdb。
CREATE DATABASE studentsdb;
use studentsdb;
  1. 使用SQL语句选择studentsdb为当前使用数据库。
use studentsdb;

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

CREATE TABLE student_info(
sno char(4) PRIMARY KEY,
sname VARCHAR(8) not null,
ssex char(2) not null DEFAULT '男' CHECK (ssex in('男','女')),
sdept VARCHAR(20),
sbirth date,
snative VARCHAR(50)
)DEFAULT CHARSET=utf8;

CREATE TABLE curriculum(
cno char(4) PRIMARY KEY,
cname VARCHAR(50),
credit int CHECK(credit BETWEEN 1 and 6),
pno char(4));

CREATE TABLE grade(
sno CHAR(4),
cno char(4),
score int CHECK(score BETWEEN 0 AND 100),
PRIMARY KEY(sno,cno));

表一
列名 数据类型 允许NULL值 主键 约束 sno char(4) 否 是
sname varchar (8) 否 否
ssex char(2) 是 否 Check 约束‘男’‘女’默认值‘男’
sdept varchar(20) 是 否
sbirth date 是 否
snative varchar(50) 是 否

表2 course表结构
列名 数据类型 允许NULL值 主键 约束
课程编号cno char(4) 否 是
课程名称cname varchar(50) 是 否
学分credit int 是 否 在1-6之间
先修课pno char(4) 是 否

表3 grade表结构
列名 数据类型 允许NULL值 主键
学号sno char(4) 否 是
课程编号cno char(4) 否 是
分数score int 是 否 在0-100之间

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


insert into student_info (sno,sname,ssex,sdept,sbirth,snative) VALUES
("0001","张青平","男","计算机",'2000-10-01',"衡阳市东风路77号");
Insert into student_info (sno,sname,ssex,sdept,sbirth,snative) values 
("0002","刘东阳","男","软件",'1998-12-09',"东阳市八一北路33号");
Insert into student_info (sno,sname,ssex,sdept,sbirth,snative) values 
("0003","马晓夏","女","英语",'1995-05-12',"长岭市五一路763号");
Insert into student_info (sno,sname,ssex,sdept,sbirth,snative) values 
("0004","钱忠理","男","经管",'1994-09-23',"滨海市洞庭大道279号");
Insert into student_info (sno,sname,ssex,sdept,sbirth,snative) values 
("0005","孙海洋","男","计算机",'1995-04-03',"长岛市解放路27号");
Insert into student_info (sno,sname,ssex,sdept,sbirth,snative) values 
("0006","郭小斌","男","计算机",'1997-11-10',"南山市红旗路113号");
Insert into student_info (sno,sname,ssex,sdept,sbirth,snative) values 
("0007","肖月玲","男","软件",'1996-12-07',"东方市南京路11号");
Insert into student_info (sno,sname,ssex,sdept,sbirth,snative) values 
("0008","张玲珑","女","艺术",'1997-12-24',"滨江市新建路97号");


insert into curriculum (cno,cname,credit,pno) VALUES
("0001","计算机应用基础","2"," ");
insert into curriculum (cno,cname,credit,pno) VALUES
("0002","C语言程序设计","4"," ");
insert into curriculum (cno,cname,credit,pno) VALUES
("0003","数据库原理及应用","4"," ");
insert into curriculum (cno,cname,credit,pno) VALUES
("0004","英语","4"," ");
insert into curriculum (cno,cname,credit,pno) VALUES
("0005","高等数学","4"," ");


insert into grade (sno,cno,score) VALUES
("0001","0001",80);
insert into grade (sno,cno,score) VALUES
("0001","0002",91);
insert into grade (sno,cno,score) VALUES
("0001","0003",88);
insert into grade (sno,cno,score) VALUES
("0001","0004",85);
insert into grade (sno,cno,score) VALUES
("0001","0005",77);
insert into grade (sno,cno,score) VALUES
("0002","0001",73);
insert into grade (sno,cno,score) VALUES
("0002","0002",68);
insert into grade (sno,cno,score) VALUES
("0002","0003",80);
insert into grade (sno,cno,score) VALUES
("0002","0004",79);
insert into grade (sno,cno,score) VALUES
("0002","0005",73);
insert into grade (sno,cno,score) VALUES
("0003","0001",84);
insert into grade (sno,cno,score) VALUES
("0003","0002",92);
insert into grade (sno,cno,score) VALUES
("0003","0003",81);
insert into grade (sno,cno,score) VALUES
("0003","0004",82);
insert into grade (sno,cno,score) VALUES
("0003","0005",75);



表4 student表的数据
学号 姓名
sname 性别
ssex 出生日期sbirth 家族住址snative Sdept
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 course表的数据
课程编号 课程名称 学分
0001 计算机应用基础 2
0002 C语言程序设计 4
0003 数据库原理及应用 4
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 0002 92
0003 0003 81
0003 0004 82
0003 0005 75

  1. 使用SQL语句ALTER TABLE修改course表的“课程名称”列cname,使之为空。
alter table curriculum modify cname varchar(50) null;
update curriculum set cname=null;

  1. 使用SQL语句ALTER TABLE修改grade表的“分数”列score,使其数据类型为decimal(5,2)。
Alter table grade MODIFY score DECIMAL(5,2);
  1. 使用SQL语句ALTER TABLE为student表添加一个名为“备注”的数据列,其数据类型为varchar(50)。
Alter table student_info add(“备注” varchar(50));
  1. 使用SQL语句创建数据库studb,并在此数据库下创建表stu,表结构与数据与studentsdb的student表相同。
Create database studb;
Use studb;
Create table stu as select *
from studentsdb.student_info 
where 1=2;
INSERT INTO stu SELECT * FROM studentsdb.student_info;

  1. 使用SQL语句删除表stu中学号为0004的记录。
Delete from stu where sno = '0004';

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

update stu set snative = "滨江市新建路96号" where sno=0002;

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

Alter table stu 
drop column “备注”;

12.删除表stud。

Drop table stu;

13.删除数据库studb。

Drop database studb;

二、实验思考
1.能通过一个CREATE DATABASE语句创建两个及以上的数据库吗?
不能
2.删除了的数据库还极可能恢复吗?
有可能,要是数据库自动备份过可以通过备份恢复
3.对于studentsdb数据库的student_info表而言,如果输入相同学号的记录将出现什么现象?为什么?
报错,因为学号是主键,不允许有重复;
4.已经打开的表能删除吗?
不能

上一篇:实验六:表的查询


下一篇:sql