依次輸入以下命令:
mysql -uroot -p
prompt \U> ;
show databases;
create database mydb_dc;
use mydb_dc;
select database();
表的創(chuàng)建A簿!胀莹!
建立數(shù)據(jù)庫(mydb_dc),分別建立四個數(shù)據(jù)庫表:
學生表(Student)基跑、課程表(Course)、教師授課表(Teach)描焰、學生成績表(Score)
學生表 Student
序號 | 字段名 | 數(shù)據(jù)類型 | 說明 | 備注 |
---|---|---|---|---|
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
序號 | 字段名 | 數(shù)據(jù)類型 | 說明 | 備注 |
---|---|---|---|---|
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
序號 | 字段名 | 數(shù)據(jù)類型 | 說明 | 備注 |
---|---|---|---|---|
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
序號 | 字段名 | 數(shù)據(jù)類型 | 說明 | 備注 |
---|---|---|---|---|
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 | |
+-------+------------+------+-----+---------+-------+
表的修改媳否、刪除!>G亍篱竭!
- 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;
- 創(chuàng)建一個名為student_1的表步绸,其結(jié)構(gòu)和內(nèi)容(數(shù)據(jù))都取自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;
將下列數(shù)據(jù)插入到四個表中
表記錄的增加2舯啤!瓤介!
學生表
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 | 數(shù)學分析 | 114 |
002 | 普通物理 | 114 |
003 | 微機原理 | 72 |
004 | 數(shù)據(jù)結(jié)構(gòu) | 72 |
005 | 操作系統(tǒng) | 64 |
006 | 數(shù)據(jù)庫原理 | 64 |
007 | 數(shù)據(jù)庫設(shè)計 | 48 |
008 | 程序設(shè)計 | 56 |
root@localhost> insert into course(Cno,Cname,CTime)
-> value
-> ('001','數(shù)學分析','114'),
-> ('002','普通物理','114'),
-> ('003','微機原理','72'),
-> ('004','數(shù)據(jù)結(jié)構(gòu)','72'),
-> ('005','操作系統(tǒng)','64'),
-> ('006','數(shù)據(jù)庫原理','64'),
-> ('007','數(shù)據(jù)庫設(shè)計','48'),
-> ('008','程序設(shè)計','56');
root@localhost> select * from course;
+-----+-----------------+-------+
| Cno | Cname | CTime |
+-----+-----------------+-------+
| 001 | 數(shù)學分析 | 114 |
| 002 | 普通物理 | 114 |
| 003 | 微機原理 | 72 |
| 004 | 數(shù)據(jù)結(jié)構(gòu) | 72 |
| 005 | 操作系統(tǒng) | 64 |
| 006 | 數(shù)據(jù)庫原理 | 64 |
| 007 | 數(shù)據(jù)庫設(shè)計 | 48 |
| 008 | 程序設(shè)計 | 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表是通過兩個字段聯(lián)合設(shè)置的主鍵吕喘,通過Tname和Tdept確定唯一性,但是這里插入的數(shù)據(jù) 主鍵并不是唯一惑朦,最后一條數(shù)據(jù)會插入失敗兽泄。這時我們可以改變聯(lián)合主鍵 通過三個字段設(shè)置主鍵來解決這個問題漓概。
root@localhost> alter table teach drop primary key; #刪除主鍵
root@localhost> alter table teach add primary key(Tname,Cno,Tdept); #設(shè)置主鍵
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 |
+-------+------+-------+-------+
表記錄的修改觅彰、刪除7悦铩!填抬!
- 將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;