mysql练习_1_编辑数据库

依次输入以下命令:

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    |       |
+-------+------------+------+-----+---------+-------+

表的修改、删除!!!
  1. Student表中增加SEX 字段,类型CHAR(2)
    alter table student add SEX char(2);
  2. Student表中列名SEX修改为Ssex
    alter table student change SEX Ssex char(2);
  3. Student表中把Sname字段的类型修改为char(10),且字段不为空
    alter table student modify Sname char(10) not null;
  4. 创建一个名为student_1的表,其结构和内容(数据)都取自student表
    create table student_2 as (select * from student);
  5. 删除student_1表中的Sage列
    alter table student_1 drop Sage;
  6. 删除表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  |
+-------+------+-------+-------+

表记录的修改、删除!!!
  1. 将student表中学号为97005的学生的所在系改为MA
    update Student set Sdept='MA' where Sno= '97005';
  2. 删除student表中学号为97005的学生的记录
    delete from table_name where Sno= '97005';
  3. 删除student表中的所有记录
    delete from table_name;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341