一、实验目的
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;