依次输入以下命令:
mysql -uroot -p
prompt \U> ;
show databases;
create database mydb_dc;
use mydb_dc;
select database();
表的创建!!!
建立数据库(mydb_dc),分别建立四个数据库表:
学生表(Student)、课程表(Course)、教师授课表(Teach)、学生成绩表(Score)
学生表 Student
序号 | 字段名 | 数据类型 | 说明 | 备注 |
---|---|---|---|---|
1 | Sno | CHAR(8) | 学号 | 主键唯一 |
2 | Sname | Varchar(10) | 姓名 | 不为空 |
3 | Sdept | CHAR(2) | 所在系 | 不为空 |
4 | Sclass | CHAR(2) | 班级 | 不为空 |
5 | Sage | Number(2) | 年龄 |
root@localhost> create table Student(
-> Sno char(8) comment "学号" primary key,
-> Sname varchar(10) comment "姓名" not null,
-> Sdept char(2) comment "所在系" not null,
-> Sclass char(2) comment "班级" not null,
-> Sage tinyint comment "年龄");
root@localhost> show create table student; #通过这条命令可查看注释的信息
root@localhost> desc student;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| Sno | char(8) | NO | PRI | NULL | |
| Sname | varchar(10) | NO | | NULL | |
| Sdept | char(2) | NO | | NULL | |
| Sclass | char(2) | NO | | NULL | |
| Sage | tinyint(4) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
课程表 Course
序号 | 字段名 | 数据类型 | 说明 | 备注 |
---|---|---|---|---|
1 | Cno | CHAR(3) | 课程编号 | 主键唯一 |
2 | Cname | Varchar(16) | 课程名称 | 不为空 |
3 | CTime | CHAR(3) | 课时 | 不为空 |
root@localhost> create table Course(
-> Cno char(3) comment '课程编号' primary key,
-> Cname varchar(16) comment '课程名称' not null,
-> CTime char(3) comment '课时' not null);
root@localhost> desc course;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| Cno | char(3) | NO | PRI | NULL | |
| Cname | varchar(16) | NO | | NULL | |
| CTime | char(3) | NO | | NULL | |
+-------+-------------+------+-----+---------+-------+
教师授课表 Teach
序号 | 字段名 | 数据类型 | 说明 | 备注 |
---|---|---|---|---|
1 | Tname | VARCHAR(8) | 教师姓名 | 主键 |
2 | Tsex | CHAR(2) | 教师性别 | |
3 | Cno | CHAR(3) | 课程编号 | 外键 |
4 | Tdate | CHAR(20) | 上课日期 | |
5 | Tdept | CHAR(2) | 所教系 | 主键 |
root@localhost> create table Teach(
-> Tname varchar(8) comment '教师姓名',
-> Tsex char(2) comment '教师性别',
-> Cno char(3) comment '课程编号',
-> Tdate char(20) comment '上课日期',
-> Tdept char(2) comment '所教系',
-> primary key(Tname,Tdept),
-> foreign key(Cno) references Course(Cno));
root@localhost> desc teach;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| Tname | varchar(8) | NO | PRI | NULL | |
| Tsex | char(2) | YES | | NULL | |
| Cno | char(3) | YES | MUL | NULL | |
| Tdate | char(20) | YES | | NULL | |
| Tdept | char(2) | NO | PRI | NULL | |
+-------+------------+------+-----+---------+-------+
学生成绩表 Score
序号 | 字段名 | 数据类型 | 说明 | 备注 |
---|---|---|---|---|
1 | Sno | CHAR(5) | 学号 | 外键 |
2 | Cno | CHAR(3) | 课程编号 | |
3 | Score | NUMER(5,2) | 成绩 | |
4 | Tdept | CHAR(2) | 所在系 |
root@localhost> create table Score(
-> Sno char(5) comment '学号',
-> Cno char(3) comment '课程编号',
-> Score float(5,2) comment '成绩',
-> Tdept char(2) comment '所在系',
-> foreign key(Sno) references Student(Sno));
root@localhost> desc score;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| Sno | char(5) | YES | MUL | NULL | |
| Cno | char(3) | YES | | NULL | |
| Score | float(5,2) | YES | | NULL | |
| Tdept | char(2) | YES | | NULL | |
+-------+------------+------+-----+---------+-------+
表的修改、删除!!!
- Student表中增加SEX 字段,类型CHAR(2)
alter table student add SEX char(2);
- Student表中列名SEX修改为Ssex
alter table student change SEX Ssex char(2);
- Student表中把Sname字段的类型修改为char(10),且字段不为空
alter table student modify Sname char(10) not null;
- 创建一个名为student_1的表,其结构和内容(数据)都取自student表
create table student_2 as (select * from student);
- 删除student_1表中的Sage列
alter table student_1 drop Sage;
- 删除表student_1
drop table if exists student_1;
将下列数据插入到四个表中
表记录的增加!!!
学生表
Sno | Sname | Sdept | Sclass | Ssex | Sage |
---|---|---|---|---|---|
96001 | 马小燕 | CS | 01 | 女 | 21 |
96002 | 黎明 | CS | 01 | 男 | 18 |
96003 | 刘东明 | MA | 01 | 男 | 18 |
96004 | 赵志勇 | IS | 02 | 男 | 20 |
97001 | 马蓉 | MA | 02 | 女 | 19 |
97002 | 李成功 | CS | 01 | 男 | 20 |
97003 | 黎明 | IS | 03 | 女 | 19 |
97004 | 李丽 | CS | 02 | 女 | 19 |
97005 | 司马志明 | CS | 02 | 男 | 18 |
20001 | 赵薇 | IS | 02 | 女 | 19 |
root@localhost> insert into Student (Sno,Sname,Sdept,Sclass,Ssex,Sage)
-> value
-> ('96001','马小燕','CS','01','女',21),
-> ('96002','黎明','CS','01','男',18),
-> ('96003','刘东明','MA','01','男',18),
-> ('96004','赵志勇','IS','02','男',20),
-> ('97001','马蓉','MA','02','女',19),
-> ('97002','李成功','CS','01','男',20),
-> ('97003','黎明','IS','03','女',19),
-> ('97004','李丽','CS','02','女',19),
-> ('97005','司马志明','CS','02','男',18),
-> ('20001','赵薇','IS','02','女',19);
root@localhost> select * from student;
+-------+--------------+-------+--------+------+------+
| Sno | Sname | Sdept | Sclass | Ssex | Sage |
+-------+--------------+-------+--------+------+------+
| 20001 | 赵薇 | IS | 02 | 女 | 19 |
| 96001 | 马小燕 | CS | 01 | 女 | 21 |
| 96002 | 黎明 | CS | 01 | 男 | 18 |
| 96003 | 刘东明 | MA | 01 | 男 | 18 |
| 96004 | 赵志勇 | IS | 02 | 男 | 20 |
| 97001 | 马蓉 | MA | 02 | 女 | 19 |
| 97002 | 李成功 | CS | 01 | 男 | 20 |
| 97003 | 黎明 | IS | 03 | 女 | 19 |
| 97004 | 李丽 | CS | 02 | 女 | 19 |
| 97005 | 司马志明 | CS | 02 | 男 | 18 |
+-------+--------------+-------+--------+------+------+
课程表
Cno | Cname | Ctime |
---|---|---|
001 | 数学分析 | 114 |
002 | 普通物理 | 114 |
003 | 微机原理 | 72 |
004 | 数据结构 | 72 |
005 | 操作系统 | 64 |
006 | 数据库原理 | 64 |
007 | 数据库设计 | 48 |
008 | 程序设计 | 56 |
root@localhost> insert into course(Cno,Cname,CTime)
-> value
-> ('001','数学分析','114'),
-> ('002','普通物理','114'),
-> ('003','微机原理','72'),
-> ('004','数据结构','72'),
-> ('005','操作系统','64'),
-> ('006','数据库原理','64'),
-> ('007','数据库设计','48'),
-> ('008','程序设计','56');
root@localhost> select * from course;
+-----+-----------------+-------+
| Cno | Cname | CTime |
+-----+-----------------+-------+
| 001 | 数学分析 | 114 |
| 002 | 普通物理 | 114 |
| 003 | 微机原理 | 72 |
| 004 | 数据结构 | 72 |
| 005 | 操作系统 | 64 |
| 006 | 数据库原理 | 64 |
| 007 | 数据库设计 | 48 |
| 008 | 程序设计 | 56 |
+-----+-----------------+-------+
教师授课表
Tname | Tsex | Cno | Tdate | Tdept |
---|---|---|---|---|
王成刚 | 男 | 004 | 2020.9.5 | CS |
李正科 | 男 | 003 | 2020.9.5 | CS |
严敏 | 女 | 001 | 2020.9.5 | MA |
赵高 | 男 | 004 | 2020.9.5 | IS |
李正科 | 男 | 003 | 2020.10.5 | MA |
刘玉兰 | 女 | 006 | 2020.10.5 | CS |
王成刚 | 男 | 004 | 2020.10.5 | IS |
马悦 | 女 | 008 | 2020.10.6 | CS |
王成刚 | 男 | 007 | 2020.9.5 | CS |
注意:teach表是通过两个字段联合设置的主键,通过Tname和Tdept确定唯一性,但是这里插入的数据 主键并不是唯一,最后一条数据会插入失败。这时我们可以改变联合主键 通过三个字段设置主键来解决这个问题。
root@localhost> alter table teach drop primary key; #删除主键
root@localhost> alter table teach add primary key(Tname,Cno,Tdept); #设置主键
root@localhost> insert into teach (Tname,Tsex,Cno,Tdate,Tdept)
-> value
-> ('王成刚','男','004','2020.9.5','CS'),
-> ('李正科','男','003','2020.9.5','CS'),
-> ('严敏','女','001','2020.9.5','MA'),
-> ('赵高','男','004','2020.9.5','IS'),
-> ('李正科','男','003','2020.10.5','MA'),
-> ('刘玉兰','女','006','2020.10.5','CS'),
-> ('王成刚','男','004','2020.10.5','IS'),
-> ('马悦','女','008','2020.10.6','CS'),
-> ('王成刚','男','007','2020.9.5','CS');
root@localhost> select * from teach;
+-----------+------+-----+-----------+-------+
| Tname | Tsex | Cno | Tdate | Tdept |
+-----------+------+-----+-----------+-------+
| 严敏 | 女 | 001 | 2020.9.5 | MA |
| 刘玉兰 | 女 | 006 | 2020.10.5 | CS |
| 李正科 | 男 | 003 | 2020.9.5 | CS |
| 李正科 | 男 | 003 | 2020.10.5 | MA |
| 王成刚 | 男 | 004 | 2020.9.5 | CS |
| 王成刚 | 男 | 004 | 2020.10.5 | IS |
| 王成刚 | 男 | 007 | 2020.9.5 | CS |
| 赵高 | 男 | 004 | 2020.9.5 | IS |
| 马悦 | 女 | 008 | 2020.10.6 | CS |
+-----------+------+-----+-----------+-------+
学生成绩表
Sno | Cno | Score |
---|---|---|
96001 | 001 | 77.5 |
96001 | 003 | 89 |
96001 | 004 | 86 |
96001 | 005 | 82 |
96002 | 001 | 88 |
96002 | 003 | 92.5 |
96002 | 006 | 90 |
96005 | 004 | 92 |
96005 | 005 | 90 |
96005 | 006 | 89 |
96005 | 007 | 76 |
96003 | 001 | 69 |
97001 | 001 | 96 |
97001 | 008 | 95 |
96004 | 001 | 87 |
96003 | 003 | 91 |
97002 | 003 | 91 |
97002 | 004 | |
97002 | 006 | 92 |
97004 | 005 | 90 |
97004 | 006 | 85 |
97004 | 008 | 70 |
97003 | 001 | 59 |
97003 | 003 | 58 |
注意:score表的sno是外键,在student表中没有96005这个学生的信息,因而在score表中插入96005的信息会报错,外键约束了,这里我们通过不插入96005的信息来解决。
root@localhost> insert into score (Sno,Cno,Score)
-> values
-> ('96001','001','77.5'),
-> ('96001','003','89'),
-> ('96001','004','86'),
-> ('96001','005','82'),
-> ('96002','001','88'),
-> ('96002','003','92.5'),
-> ('96002','006','90'),
-> ('96003','001','69'),
-> ('97001','001','96'),
-> ('97001','008','95'),
-> ('96004','001','87'),
-> ('96003','003','91'),
-> ('97002','003','91'),
-> ('97002','004',null),
-> ('97002','006','92'),
-> ('97004','005','90'),
-> ('97004','006','85'),
-> ('97004','008','70'),
-> ('97003','001','59'),
-> ('97003','003','58');
root@localhost> select * from score;
+-------+------+-------+-------+
| Sno | Cno | Score | Tdept |
+-------+------+-------+-------+
| 96001 | 001 | 77.50 | NULL |
| 96001 | 003 | 89.00 | NULL |
| 96001 | 004 | 86.00 | NULL |
| 96001 | 005 | 82.00 | NULL |
| 96002 | 001 | 88.00 | NULL |
| 96002 | 003 | 92.50 | NULL |
| 96002 | 006 | 90.00 | NULL |
| 96003 | 001 | 69.00 | NULL |
| 97001 | 001 | 96.00 | NULL |
| 97001 | 008 | 95.00 | NULL |
| 96004 | 001 | 87.00 | NULL |
| 96003 | 003 | 91.00 | NULL |
| 97002 | 003 | 91.00 | NULL |
| 97002 | 004 | NULL | NULL |
| 97002 | 006 | 92.00 | NULL |
| 97004 | 005 | 90.00 | NULL |
| 97004 | 006 | 85.00 | NULL |
| 97004 | 008 | 70.00 | NULL |
| 97003 | 001 | 59.00 | NULL |
| 97003 | 003 | 58.00 | NULL |
+-------+------+-------+-------+
表记录的修改、删除!!!
- 将student表中学号为97005的学生的所在系改为MA
update Student set Sdept='MA' where Sno= '97005';
- 删除student表中学号为97005的学生的记录
delete from table_name where Sno= '97005';
- 删除student表中的所有记录
delete from table_name;