一、 创建数据库STUxxxx(其中xxxx为自己的姓名)。 create database STUliuxinlei;
use STUliuxinlei;
二、 在STUxxxx数据库中使用SQL语句创建如下的表结构: 1.学生情况表(XS)结构 列名 数据类型 长度 可否为空 默认值 说明 序号 Int 否 自增字段,主键 学号 Char 7 否 无 唯一键 姓名 Char 8 否 无 性别 否 男 只能为男或女 出生日期 datetime 否 无 班级 Char 5 是 ‘41021’ 总学分 Tinyint 是 0 是否团员 char 1 是 身份证号码 char 18 是 备注 Text 是 无
2.课程表(KC)结构 列名 数据类型 长度 可否为空 默认值 说明 序号 Int 否 自增字段,初始值为5,主键 课程号 Char 3 否 无 课程名 Char 20 否 无 开课学期 否 1 只能为1~8 学时 Tinyint 否 无 学分 Tinyint 否 0
3.学生与课程表(XS_KC)结构 列名 数据类型 长度 可否为空 默认值 说明 学号 Char 7 否 无 学号与课程号的组合为主键 课程号 Char 3 否 无 成绩 Tinyint 是 0
create table XS( 序号 int primary key auto_increment, 学号 char(7) not null unique key, 姓名 char(8) not null , 性别 enum('男','女') not null default '男', 出生日期 datetime not null, 班级 char(5) default '41021', 总学分 tinyint default 0, 是否团员 char(1) , 身份证号码 char(18) , 备注 text )
create table KC( 序号 int primary key auto_increment, 课程号 char(3) not null , 课程名 char(20) not null, 开课学期 enum('1','2','3','4','5','6','7','8') not null default '1', 学时 tinyint not null , 学分 tinyint not null default 0 )auto_increment=5
create table XS_KC( 学号 char(7) , 课程号 char(3), 成绩 tinyint default 0, primary key (学号,课程号) )
三、 使用语句对以上的表结构进行修改 1.修改学生情况表(XS)的“姓名”字段,使其数据类型改为varchar(10),且允许为空。
alter table XS modify 姓名 varchar(10)
2.删除学生与课程表(XS_KC)中的“学分”字段。
alter table XS_KC drop 学分
3.修改学生情况表(XS),删除“班级”字段。
alter table XS drop 班级
4.修改学生情况表(XS),增加一“专业”字段(varchar(20), 默认值为“计算机”)。
alter table XS add 专业 varchar(20) default '计算机'
5.修改课程表(KC),把字段“学时”的名称改为“总学时”。
alter table KC change 学时 总学时 tinyint default 0
四、 用insert语句向数据库STUxxxx的XS表、KC表和XS_KC表中插入如下数据:
学生情况表(XS) 学号 姓名 性别 出生日期 专业 总学分 是否团员 身份证号码 备注 4102101 王林 男 1983-1-23 计算机 null 1 null NULL 4102102 吴荣华 女 1984-3-28 计算机 null 0 null NULL 4202103 张强 男 1981-11-19 电子 NULL 1 null NULL 4202110 王向荣 男 1980-12-9 电子 null 0 111111111 111111111 NULL 4202221 李丽 女 1982-7-30 电子 NULL 1 null NULL 4302101 刘明 男 1982-10-18 自控 null 1 null NULL 4402130 叶凡 男 1983-11-18 数学 null 1 null 转专业学习
insert into XS (学号,姓名,性别,出生日期,专业,是否团员,身份证号码,备注) values (4102101,'王林','男','1983-1-23','计算机','1','',''), (4102102,'吴荣华','女','1984-3-28','计算机','0','',''), (4202103,'张强','男','1981-11-19','电子','1','',''), (4202110,'王向荣','男','1980-12-9','电子','0','111111111111111111',''), (4202221,'李丽','女','1982-7-30','电子','1','',''), (4302101,'刘明','男','1982-10-18','自控','1','',''), (4402130,'叶凡','男','1982-11-18','数学','1','','转专业学习')
课程表(KC) 课程号 课程名 开课学期 学时 学分 101 计算机基础 1 48 3 102 C语言 2 80 5 103 数据库 4 64 4 201 离散数学 6 64 4 202 计算机网络 7 64 4 301 软件工程 6 64 4
insert into KC (课程号,课程名,开课学期,学时,学分) VALUES ('101','计算机基础','1',48,3), ('102','C语言','2',80,5), ('103','数据库','4',64,4), ('201','离散数学','6',64,4), ('202','计算机网络','7',64,4), ('301','软件工程','6',64,4)
学生与课程表(XS_KC) 学号 课程号 成绩 4102101 101 80 4102101 102 89 4102101 103 78 4102102 101 57 4102102 102 67 4202103 103 90 4202110 101 85 4202110 102 91 4202221 101 69 4402130 101 78 4402130 103 74
insert into XS_KC (学号,课程号,成绩) values ('4102101','101',80), ('4102101','102',89), ('4102101','103',78), ('4102102','101',57), ('4102102','102',67), ('4202103','103',90), ('4202110','101',85), ('4202110','102',91), ('4202221','101',69), ('4402130','101',78), ('4402130','103',74)
五、 数据的插入、删除和修改 1. 将KC表中总学时超过60的课程对应的学分增加1分。
update KC set 总学时=总学时+1 where 总学时>60
2. 将XS表中学号为“4102101”的同学的总学分增加4分,备注改为“提前修完一门课程”。
update XS set 总学分 = 总学分+4,备注='提前修完一门课程' where 学号='4102101'
3. 将XS_KC表中学号为“4102101”的同学的“计算机基础”课程的成绩增加10分。
update XS_KC set 成绩 =成绩+10 where 学号='4102101' and 课程号= ( SELECT 课程号 from KC where 课程名 = '计算机基础' )
4. 将XS_KC表计算机专业所有学生的各科成绩均提高5%。
UPDATE XS_KC set 成绩 = 成绩*1.05 where 学号 in ( select 学号 from XS where 专业='计算机' )
5. 将XS_KC表中“数据库”课程的所有成绩信息删除。
delete from XS_KC where 课程号 in( SELECT 课程号 from KC where 课程名 = '数据库' )
6. 将XS_KC表中其学号在XS表中不存在或其课程号在KC表中不存在的学生的成绩信息删除。
delete #SELECT * from XS_KC where 学号 not in ( select 学号 from XS
) or 课程号 not in ( select 课程号 from KC )
7. 创建新表XS1,该表的结构与数据与XS表完全一样。
create table XS1 like XS; insert into XS1 select * from XS;
8. 删除XS1表中前两个同学的基本信息。
delete from XS1 limit 2
9. 删除XS1表中的所有数据。
delete from XS1