数据库原理笔记(1)

数据库原理上机作业一

  1. 使用SQL语句创建数据库studentsdb。
  2. 使用SQL语句选择studentsdb为当前使用数据库。
  3. 使用SQL语句在studentsdb数据库创建数据表student_info、curriculum、grade,三个表的数据结构如表1-表3所示。
    数据库原理笔记(1)_第1张图片
#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;,
  1. 使用SQL语句INSERT向studentsdb数据库的student_info、curriculum、grade表插入数据,各表数据如表4-表6所示。
    数据库原理笔记(1)_第2张图片
    数据库原理笔记(1)_第3张图片
#使用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;
  1. 使用SQL语句ALTER TABLE为student_info表添加一个名为“备注”的数据列,其数据类型为varchar(50)。
  2. 使用SQL语句创建数据库studb,并在此数据库下创建表stu,表结构与数据与studentsdb的student_info表相同。
  3. 使用SQL语句删除表stu中学号为0004的记录。
  4. 使用SQL语句更新表stud中学号为0002的家庭住址为“滨江市新建路96号”。
  5. 删除表stud的“备注”列。
  6. 删除表stud。
  7. 删除数据库studb。
#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;

二、实验思考

  1. 能通过一个CREATE DATABASE语句创建两个及以上的数据库吗?
    不能,create database只能一次创建一个数据库,若想创建多个数据库,也只能多创建几次。

  2. 删除了的数据库还极可能恢复吗?
    可能恢复,方法一:可利用备份的数据文件以及增量的文件进行数据恢复。
    方法二:若曾经备份过可以直接进行恢复,

  3. 对于studentsdb数据库的student_info表而言,如果输入相同学号的记录将出现什么现象?为什么?
    会报错,因为学号为主键,是不允许有重复的。按照正常的逻辑来说,学号不可能会出现两个相同的。

  4. 已经打开的表能删除吗?
    不能。

你可能感兴趣的:(笔记,big,data,数据库,sql)