#1.创建数据库studentsdb。
CREATE DATABASE studentsdb;
ALTER DATABASE studentsdb CHARACTER SET GBK;
#2,选择studentsdb为当前使用数据库
USE studentsdb;
#3. 使用SQL语句在studentsdb数据库创建数据表student_info、curriculum、grade,
create table student_info(
学号 char(4) not null primary key,
姓名 char(8) not null ,
性别 char(2) default null,
出生日期 date default null,
家族住址 varchar(50) default null
)engine = InnoDB default charset = utf8 collate=utf8_unicode_ci;
show create table student_info;
create table curriculum(
课程编号 char(4) not null primary key,
课程名称 varchar(60) default null,
学分 int default null
)engine = InnoDB default charset = utf8 collate=utf8_unicode_ci;
create table grade(
学号 char(4) not null,
课程编号 char(4) not null,
分数 int default null,
primary key(学号,课程编号)
)engine = InnoDB default charset = utf8 collate=utf8_unicode_ci;,
#使用SQL语句INSERT向studentsdb数据库的student_info、curriculum、grade表插入数据
# 4.1 student_info
I insert into student_info(学号,姓名,性别,出生日期,家族住址) values('0001','张青平','男','2000-10-01','衡阳市东风路77号');
insert into student_info(学号,姓名,性别,出生日期,家族住址) values('0002','刘东阳','男','1998-12-09','东阳市八一北路33号');
insert into student_info(学号,姓名,性别,出生日期,家族住址) values('0003','马晓夏','女','1995-05-12','长岭市五一路763号');
insert into student_info(学号,姓名,性别,出生日期,家族住址) values('0004','钱忠理','男','1994-09-23','滨海市洞庭大道279号');
insert into student_info(学号,姓名,性别,出生日期,家族住址) values('0005','孙海洋','男','1995-04-03','长岛市解放路27号');
insert into student_info(学号,姓名,性别,出生日期,家族住址) values('0006','郭小斌','男','1997-11-10','南山市红旗路113号');
insert into student_info(学号,姓名,性别,出生日期,家族住址) values('0007','肖月玲','女','1996-12-07','东方市南京路11号');
insert into student_info(学号,姓名,性别,出生日期,家族住址) values('0008','张玲珑','女','1997-12-24','滨江市新建路97号');
#4.2 curriculum
INSERT INTO curriculum
VALUES('0001','计算机应用基础',2),
('0002','C语言程序设计',2),
('0003','数据库原理及应用',2),
('0004','英语',4),
('0005','高等数学',4);
#4.3 grade
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);
第5,6题代码
#5. 使用SQL语句ALTER TABLE修改curriculum表的“课程名称”列,使之为非空。
ALTER TABLE curriculum MODIFY 课程名称 VARCHAR(50) NOT NULL;
#6. 使用SQL语句ALTER TABLE修改grade表的“分数”列,使其数据类型为decimal(5,2)
ALTER TABLE grade MODIFY 分数 DECIMAL(5,2) NULL;
#7. 使用SQL语句ALTER TABLE为student_info表添加一个名为“备注”的数据列,其数据类型为varchar(50)
ALTER TABLE student_info ADD 备注 VARCHAR(50) NULL;
#8. 使用SQL语句创建数据库studb,并在此数据库下创建表stu,表结构与数据与studentsdb的student_info表相同。
CREATE DATABASE studb;
ALTER DATABASE studb CHARACTER SET GBK;
USE studb;
CREATE TABLE stu SELECT * FROM studentsdb.student_info;
#9. 使用SQL语句删除表stu中学号为0004的记录。
DELETE FROM studb.stu WHERE 学号 = '0004';
#10. 使用SQL语句更新表stu中学号为0002的家庭住址为“滨江市新建路96号”。
UPDATE studb.stu SET 家庭住址 = '滨江市新建路96号' WHERE 学号 = '0002';
#11. 删除表stud的“备注”列。
ALTER TABLE studb.stu DROP COLUMN 备注;
#12. 删除表stu。
DROP TABLE studb.stu;
#13. 删除数据库studb。
DROP DATABASE studb;
二、实验思考
能通过一个CREATE DATABASE语句创建两个及以上的数据库吗?
不能,create database只能一次创建一个数据库,若想创建多个数据库,也只能多创建几次。
删除了的数据库还极可能恢复吗?
可能恢复,方法一:可利用备份的数据文件以及增量的文件进行数据恢复。
方法二:若曾经备份过可以直接进行恢复,
对于studentsdb数据库的student_info表而言,如果输入相同学号的记录将出现什么现象?为什么?
会报错,因为学号为主键,是不允许有重复的。按照正常的逻辑来说,学号不可能会出现两个相同的。
已经打开的表能删除吗?
不能。