mysql常用sql與命令之從入門到刪庫跑路
啟動與停止
啟動mysql服務
sudo /usr/local/mysql/support-files/mysql.server start
停止mysql服務
sudo /usr/local/mysql/support-files/mysql.server stop
重啟mysql服務
sudo /usr/local/mysql/support-files/mysql.server restart
進入mysql目錄文件
cd /usr/local/mysql/support-files
進入mysql命令行
/usr/local/MySQL/bin/mysql -uroot -p12345678
退出數據庫
exit;
數據庫相關操作
查詢所有數據庫
show databases;
選擇(使用)數據庫
use mybatis;
查詢當前正在使用的數據庫名稱
select database();
創建數據庫
create database 數據庫名稱;
創建數據庫,判斷不存在,再創建: create database if not exists 數據庫名;
刪除數據庫
drop database 數據庫名稱;
判斷數據庫存在,存在再刪除:drop database if exists 數據庫名稱;
數據庫表相關操作
創建數據庫表
create table 表名( 列名1 數據類型1, 列名2 數據類型2, .... 列名n 數據類型n );
復制表
create table 表名 like 被復制的表名;
查看某個數據庫中的所有的數據表
show tables;
查看數據表的結構
desc pet;或describe pet;
修改表名
alter table 表名 rename to 新的表名;
修改表的字符集
alter table 表名 character set 字符集名稱;
添加一列
alter table 表名 add 列名 數據類型;
刪除列
alter table 表名 drop 列名;
刪除表
drop table 表名;或drop table if exists 表名 ;
添加數據
insert into 表名(列名1,列名2,…列名n) values(值1,值2,…值n);
其中列名和值要一一對應。如果表名後,不定義列名,則默認給所有列添加值,如:insert into 表名 values(值1,值2,…值n);除瞭數字類型,其他類型需要使用引號(單雙都可以)引起來.
刪除數據
delete from 表名 where 條件
其中:如果不加條件,則刪除表中所有記錄。如果要刪除所有記錄, 使用delete from 表名;一般不推薦使用。這種操作有多少條記錄就會執行多少次刪除操作.
TRUNCATE TABLE 表名;推薦使用,效率更高 先刪除表,然後再創建一張一樣的表.
修改數據
update 表名 set 列名1 = 值1, 列名2 = 值2,… where 條件;如果不加任何條件,則會將表中所有記錄全部修改.
insert into user2 values (1,'李四','123'); // 增 delete from pet where ower = 'disn'; //刪 update pet set name = '後裔' where ower = 'dfn'; //改
查詢數據
①> 、< 、<= 、>= 、= 、<> ②BETWEEN...AND ③ IN( 集合) ④LIKE 模糊查詢 ⑤_單個任意字符 ⑥%多個任意字符 ⑦IS NULL ⑧and 或 && ⑨or 或 || ⑩not 或 ! 查詢條件應用舉例: SELECT * FROM user WHERE age >= 18; SELECT * FROM user WHERE age >= 18 AND age <=36; SELECT * FROM user WHERE age BETWEEN 40 AND 70; SELECT * FROM user WHERE age IN (6,18,37); // 關於NULL SELECT * FROM user WHERE height = NULL; 錯誤,因為null值不能使用=或(!=) 判斷 SELECT * FROM user WHERE height IS NULL;(正確) SELECT * FROM user WHERE height IS NOT NULL;(正確) // 查詢姓陳的有哪些?< like> SELECT * FROM user WHERE NAME LIKE '陳%'; // 查詢姓名第二個字是新的人 SELECT * FROM user WHERE NAME LIKE "_新%"; // 查詢姓名是三個字的人 SELECT * FROM user WHERE NAME LIKE '___'; // 查詢姓名中包含狗的人 SELECT * FROM user WHERE NAME LIKE '%狗%';
約束相關
主鍵約束 (primary key)
能夠唯一確定一張表中的的一條記錄,我們通過給某個字段添加約束, 可以使得這個字段不重復且不為空.
create table user ( id int primary key auto_increment, // 在創建表時,添加主鍵約束,並且完成主鍵自增 name varchar(20) ); -- 聯合主鍵: 由多個字段聯合組成的主鍵, 隻要聯合的主鍵加起來不重復就可以.聯合主鍵中的任何一個字段都不能為空. create table user2 ( id int, name varchar(20), password varchar(20), primary key(id, name) );
表創建完成後:
添加主鍵.如:
①alter table user add primary key(id);
②alter table user modify id int primary key;
刪除主鍵:alter table user drop primary key;
唯一約束:unique 約束修飾的字段的值不可以重復.
create table user1 ( id int primary key auto_increment, phone_num varchar(20) unique ); create table user2 ( id int primary key auto_increment, name varchar(20), unique(id, name) // 表示兩個字段在一起不重復就可以 );
也可以在表創建完成後, 通過alter table user3 add unique(phone_num);
或alter table user3 modify phone_num varchar(20) unique;
來添加unique約束.
刪除unique約束:alter table user3 drop index phone_num;
非空約束:not null 修飾的字段不能為空NULL
create table user3 ( id int primary key auto_increment, name varchar(20) not null );
刪除非空約束:alter table user3 modify name varchar(20);
默認約束
當我們插入字段值時候,如果對應的字段沒有插入值,則會使用默認值.如果傳入瞭值,則不會使用默認值.
create table user4( id int primary key auto_increment, age int default 18, name varchar(20) not null );
外鍵約束:foreign key
create table 表名( .... 外鍵列 constraint 外鍵名稱 foreign key (外鍵列名稱) references 主表名稱(主表列名稱) ); // 班級 create table classes( id int primary key, name varchar(20) ); // 學生表 create table student ( id int primary key, name varchar(20), class_id int, foreign key(class_id) references classes(id) );
數據庫查詢進階
查詢所有記錄 例如:查詢student表中的所有記錄. select * from student; 查詢指定字段 例如:查詢student中的sname,ssex,class. select sname,ssex,class from student; 查詢教師表中所有的單位即不重復的depart列. <排除重復distinct> select distinct depart from teacher; 查詢score表中成績在60到80之間的所有記錄 <查詢區間 between…and…> select * from score where degree between 60 and 80; select * from score where degree > 60 and degree < 80; 查詢score表中成績為85,86或88的記錄 select * from score where degree in(85, 86, 88); 查詢student表中'95031'班或性別為'女'的同學記錄. <or 表示或者> select *from student where class = '95031' or sex = '女'; 以class降序查詢student表的所有記錄 <降序:desc, 升序asc,默認升序(省略)>. select * from student order by class desc; 以cno升序,degree降序查詢score表的所有記錄 select * from score order by cno asc,degree desc; 查詢"95031'班的學生人數 <統計 count> select count(*) from student where class = '95031'; 查詢score表中最高分的學生學號和課程號(子查詢) select sno, cno from score where degree = (select max(degree) from score );其中:select max(degree) from score 先查出最高分. select sno,cno degree from score order by degree desc limit 0,1;其中:limit第一個數字表示從多少開始,第二個表示多少條.當有多個相同最高分時,容易出bug,不推薦使用這種方式查詢. 查詢每門課的平均成績 select cno, avg(degree) from score group by cno; 查詢score表中至少有2名學生選修的並以3開頭的課程的平均分數. select cno, avg(degree) from score group by cno having count(cno) >= 2 and cno like '3%'; 查詢分數大於70, 小於90的sno列. select sno, degree from score where degree between 70 and 90; 查詢所有學生的sname, cno和degree列. select sname, cno, degree from student, score where student.sno = score.sno; 查詢所有學生的sno,cname和degree列 select sno,cname,degree from course ,score where course.cno = score.cno; 查詢"95031"班學生每門課的平均分. select cno, avg(degree) from score where sno in (select sno from student where class = '95031') group by cno; 查詢選修"3-105"課程的成績高於"109"號同學"3-105"成績的所有同學的記錄. select * from score where cno = '3-105' and degree > (select degree from score where sno = '109' and cno = '3-105'); 查詢成績高於學號為"109", 課程號為"3-105"的成績的所有記錄 select * from score where degree > (select degree from score where sno = '109' and cno = '3-105'); 查詢和學號為108,101的同學同年出生的所有的sno, sname, sbirthday select *from student where year(sbirthday) in (select year(sbirthday) from student where sno in(108, 101)); 查詢"張旭"教師任課的學生成績 select * from score where cno = ( select cno from course where tno = (select tno from teacher where tname = "張旭")); 查詢選修某課程的同學人數多於5人的教師姓名. select tname from teacher where tno = (select tno from course where cno = (select cno from score group by cno having count(*) > 5)); 查詢存在有85分以上的成績的課程的cno select cno, degree from score where degree > 85; 查詢出"計算機系"教師所教課程的成績表 select * from score where cno in (select cno from course where tno in (select tno from teacher where depart = "計算機系")); 查詢選修編號為"3-105"課程且成績至少高於選休息編號為"3-245"的同學的cno,sno和degree,並按degree從高到低次序排序. any 至少一個.
select * from score where cno = '3-105' and degree > any(select degree from score where cno = '3-245') order by degree desc;
查詢選修編號為”3-105″課程且成績高於選休息編號為”3-245″的同學的cno,sno和degree,並按degree從高到低次序排序.
all 表示所有
select * from score where cno = '3-105' and degree > all(select degree from score where cno = '3-245') order by degree desc;
查詢所有教師和同學的name, sex和birthday
select tname as name, tsex as sex, tbirthday as birthday from teacher union select sname, ssex, sbirthday from student;
查詢所有”女”教師和”女”同學的name,sex和birthday
select tname as name, tsex as sex, tbirthday as birthday from teacher where tsex = ‘女’ union select sname, ssex, sbirthday from student where ssex = ‘女’;
查詢成績比該課程成績低的同學的成績表
思路: 從a表查出對應的分數跟b表篩選出來的平均分作比較.
select * from score a where degree < (select avg(degree) from score b where a.cno = b.cno); 表a +-----+-------+--------+ | sno | cno | degree | +-----+-------+--------+ | 101 | 3-105 | 91 | | 102 | 3-105 | 92 | | 103 | 3-105 | 92 | | 103 | 3-245 | 86 | | 103 | 6-166 | 85 | | 104 | 3-105 | 81 | | 105 | 3-105 | 88 | | 105 | 3-245 | 75 | | 105 | 6-166 | 79 | | 109 | 3-105 | 76 | | 109 | 3-245 | 68 | | 109 | 6-166 | 81 | +-----+-------+--------+ 12 rows in set (0.00 sec) 表b | sno | cno | degree | +-----+-------+--------+ | 101 | 3-105 | 91 | | 102 | 3-105 | 92 | | 103 | 3-105 | 92 | | 103 | 3-245 | 86 | | 103 | 6-166 | 85 | | 104 | 3-105 | 81 | | 105 | 3-105 | 88 | | 105 | 3-245 | 75 | | 105 | 6-166 | 79 | | 109 | 3-105 | 76 | | 109 | 3-245 | 68 | | 109 | 6-166 | 81 | +-----+-------+--------+ 12 rows in set (0.00 sec)
查詢所有任課教師的tname和depart
select tname, depart from teacher where tno in (select tno from course);
查詢至少有兩名男生的班號
select class from student where ssex= ‘男’ group by class having count(*) > 1
查詢student表中不姓”王”的同學記錄
select * from student where sname not like ‘王%’;
查詢student表中每個學生的姓名和年齡
select sname, year(now()) – year(sbirthday) as ‘年齡’ from student;
查詢student表中最大和最小的sbirthday日期值
select max(sbirthday) as ‘最大’, min(sbirthday) as ‘最小’ from student;
以班號和年齡從大到小的順序查詢student表中的全部記錄
select * from student order by class desc, sbirthday;
查詢”男”教師及其所上的課程
select * from course where tno in (select tno from teacher where tsex = ‘男’);
查詢最高分同學的sno, cno和degree列
select * from score where degree = (select max(degree) from score);
查詢和李軍同性別的所有同學的sname
select sname from student where ssex = (select ssex from student where sname = ‘李軍’);
查詢和李軍同性別並同班 同學sname
select sname from student where ssex = (select ssex from student where sname = “李軍”) and class = (select class from student where sname = ‘李軍’);
查詢所有選修”計算機導論”課程的”男”的成績表
select * from score where cno = (select cno from course where cname = ‘計算機導論’) and sno in(select sno from student where ssex = ‘男’);
SQL的四種連接查詢
分析用例的數據準備: mysql> select * from person; +----+--------+--------+ | id | name | cardId | +----+--------+--------+ | 1 | 張三 | 1 | | 2 | 李四 | 3 | | 3 | 王五 | 6 | +----+--------+--------+ 3 rows in set (0.00 sec) mysql> select * from card; +------+-----------+ | id | name | +------+-----------+ | 1 | 飯卡 | | 2 | 建行卡 | | 3 | 農行卡 | | 4 | 工商卡 | | 5 | 郵政卡 | +------+-----------+ 5 rows in set (0.00 sec)
內連接
inner join
或者 join
, 後面通常跟對一個on
表示條件
—- 內聯查詢: 就是兩張表中的數據, 通過某個字段相等,查詢出相關記錄數據.
<當前表中的cardid與id相同.>
select * from person inner join card on person.cardId = card.id; +----+--------+--------+------+-----------+ | id | name | cardId | id | name | +----+--------+--------+------+-----------+ | 1 | 張三 | 1 | 1 | 飯卡 | | 2 | 李四 | 3 | 3 | 農行卡 | +----+--------+--------+------+-----------+ 2 rows in set (0.00 sec)
外連接
左外連接:左連接 left join
或者 left outer join
—- 左外連接, 會把左邊表裡面的所有數據取出來, 而右邊表中的數據,如果有相等的,就顯示出來, 如果沒有, 則會補NULL.
select * from person left join card on person.cardId = card.id; +----+--------+--------+------+-----------+ | id | name | cardId | id | name | +----+--------+--------+------+-----------+ | 1 | 張三 | 1 | 1 | 飯卡 | | 2 | 李四 | 3 | 3 | 農行卡 | | 3 | 王五 | 6 | NULL | NULL | +----+--------+--------+------+-----------+ 3 rows in set (0.00 sec)
右外連接:右連接 right join
或者right outer join
—-右外連接, 會把右邊表裡面的所有數據取出來, 而左邊表中的數據,如果有相等的,就顯示出來, 如果沒有, 則會補NULL.
select * from person right join card on person.cardId = card.id; +------+--------+--------+------+-----------+ | id | name | cardId | id | name | +------+--------+--------+------+-----------+ | 1 | 張三 | 1 | 1 | 飯卡 | | 2 | 李四 | 3 | 3 | 農行卡 | | NULL | NULL | NULL | 2 | 建行卡 | | NULL | NULL | NULL | 4 | 工商卡 | | NULL | NULL | NULL | 5 | 郵政卡 | +------+--------+--------+------+-----------+ 5 rows in set (0.01 sec)
全外連接:完全外連接 full join
或者full outer join
<mysql不支持full join>
mysql> select * from person full join card on person.cardId= card.id; ERROR 1054 (42S22): Unknown column 'person.cardId' in 'on clause' **** 解決mysql不支持full join的方法**** <左連接 + 右鏈接> , 即通過union來連接左右連接. <左連接 union 右鏈接>. eg: select * from person left join card on person.cardId = card.id union select * from person right join card on person.cardId = card.id; +------+--------+--------+------+-----------+ | id | name | cardId | id | name | +------+--------+--------+------+-----------+ | 1 | 張三 | 1 | 1 | 飯卡 | | 2 | 李四 | 3 | 3 | 農行卡 | | 3 | 王五 | 6 | NULL | NULL | | NULL | NULL | NULL | 2 | 建行卡 | | NULL | NULL | NULL | 4 | 工商卡 | | NULL | NULL | NULL | 5 | 郵政卡 | +------+--------+--------+------+-----------+ 6 rows in set (0.01 sec)
要點梳理
where 和 having 的區別?
(1) having通常用在聚合函數前面,對聚合函數進行過濾,(MAX、MIN、COUNT、SUM).having通常和group by 一起連用,因為where不能加在group by的後面.
(2) where 在分組之前進行限定,如果不滿足條件,則不參與分組。having在分組之後進行限定,如果不滿足結果,則不會被查詢出來. where 後不可以跟聚合函數,having可以進行聚合函數的判斷。
MYSQL執行語句順序,嚴格遵循次順序,不能改變 select from where group by having order by
mysql的事務
關於事務
mysql中, 事務其實是一個最小的不可分割的工作單元. 事務能夠保證一個業務的完整性.
分析:
例如: a --> -100 update user set money = money - 100 where name = 'a'; b --> +100 update user set money = money + 100 where name = 'b'; -- 實際程序中, 如果隻有一條sql語句執行成功瞭,而另外一條沒有執行成功?則會出現前後數據不一致的情況. update user set money = money - 100 where name = 'a'; update user set money = money + 100 where name = 'b'; 在多條sql語句,可能會有同時成功的要求,要麼就同時失敗.
事務控制
(1)事務主要包含自動提交@@autocommit=1;,手動提交commit;和事務回滾rollback;.
(2) mysql默認是開啟事務的(自動提交).
—-當我們去執行一個sql語句的時候,效果會立即提現出來,且不能回滾.
set autocommit = 0;設置mysql是否自動提交,<0為否, 1為是.>
select @@autocommit;查看mysql的自動提交方式.
commit; 手動提交.
具體事務控制相關參照下面代碼分析:
mysql> select @@autocommit; +--------------+ | @@autocommit | +--------------+ | 1 | +--------------+ 1 row in set (0.00 sec) // 建表 create database bank; create table user ( id int primary key, name varchar(20), money int ); // 首先在表中插入一條用戶數據a. insert into user values (1,'a',1000); Query OK, 1 row affected (0.00 sec) // 進行回滾操作. mysql> rollback; Query OK, 0 rows affected (0.00 sec) // 執行回滾後,查看數據表信息,發現即使調用瞭rollback,但插入的數據依然存在.說明當前不能回滾. mysql> select * from user; +----+------+-------+ | id | name | money | +----+------+-------+ | 1 | a | 1000 | +----+------+-------+ 1 row in set (0.00 sec) // 可以通過設置msql的回滾自動提交為false. set autocommit = 0; Query OK, 0 rows affected (0.00 sec) mysql> select @@autocommit; +--------------+ | @@autocommit | +--------------+ | 0 | +--------------+ 1 row in set (0.00 sec) // 也就說, 通過上面的set autocommit = 0;操作關閉瞭mysql的自動提交(commit). *******再次插入數據:******* insert into user values (2,'b',1000); Query OK, 1 row affected (0.00 sec) // 插入數據後查看表,用戶2數據添加成功. mysql> select * from user; +----+------+-------+ | id | name | money | +----+------+-------+ | 1 | a | 1000 | | 2 | b | 1000 | +----+------+-------+ 2 rows in set (0.00 sec) // 執行回滾操作. mysql> rollback; Query OK, 0 rows affected (0.00 sec) // 回滾後再次查看表,發現剛才插入的數據已經被幹掉瞭. mysql> select * from user; +----+------+-------+ | id | name | money | +----+------+-------+ | 1 | a | 1000 | +----+------+-------+ 1 row in set (0.01 sec) **** 對於這種場景,如果想讓用戶b數據成功提交, 可以通過commit;命令執行手動提交操作.手動提交後,如果想再次通過rollback來撤銷,則是不可以的.也就是說,事務一旦提交,執行的sql語句就不可以再撤銷,也就是說事務一旦提交數據就會持久的產生效果.
(3)手動開啟事務
begin和start transaction都可以手動開啟一個事務. 也就是說,當我們當前的mysql如果默認的是自動提交模式,則執行rollback進行事務回滾則是無效的. 但是可以通過begin和start transaction手動開啟事務.
即: 當前默認為自動提交模式,此時執行rollback無效.執行下面sql語句: start transaction;(或者begin;) update user set money = money - 100 where name = 'a'; update user set money = money + 100 where name = 'b'; 執行完插入a,b用戶數據後,再執行rollback,發現可以成功回滾事務.可以成功切換成手動開啟事務的模式.若想使得插入的數據生效,也需要手動執行commit進行提交操作. 事務開啟之後,一旦commit提交,就不可以回滾,也就說,當前的這個事務在提交的時候就已經結束瞭.
事務的四大特征
A 原子性: 事務是最小的單元, 不可以在分割.
C 一致性: 事務要求, 同一事務中的sql語句必須保證同時成功,同時失敗.
I 隔離性: 事務1 和事務2之間shi具有隔離性的.
D 持久性: 事務一旦結束(commit,rollback),就不可以返回.
事務的隔離性
多個事務之間隔離的,相互獨立的。但是如果多個事務操作同一批數據,則會引發一些問題,設置不同的隔離級別就可以解決這些問題.
存在問題:
(1) 臟讀:一個事務,讀取到另一個事務中沒有提交的數據.
(2)不可重復讀(虛讀):在同一個事務中,兩次讀取到的數據不一樣.
(3)幻讀:一個事務操作(DML)數據表中所有記錄,另一個事務添加瞭一條數據,則第一個事務查詢不到自己的修改.
read uncommitted; 讀未提交的–>產生的問題:臟讀、不可重復讀、幻讀.
read committed; 讀已經提交的–>產生的問題:不可重復讀、幻讀repeatable read; 可以重復讀–>產生的問題:幻讀
serializable; 串行化<性能特差>
通常是隔離級別越高,性能越差.
(1)查看數據庫的隔離級別
mysql默認的隔離級別: REPEATABLE-READ
mysql8.0:
系統級別的:select @@global.transaction_isolation;
會話級別的:select @@transaction_isolation;
mysql5.x:
系統級別的:select @@global.tx_isolation;
會話級別的:select @@tx_isolation;
mysql> select @@global.transaction_isolation; +--------------------------------+ | @@global.transaction_isolation | +--------------------------------+ | REPEATABLE-READ | +--------------------------------+ 1 row in set (0.00 sec)
(2)修改隔離級別
set global tansaction isolation level read uncomitted;
數據庫的三大范式
第一范式
數據表中的所有字段都是不可分割的原子項.初步可以理解為:字段值還可以繼續拆分的,就不滿足第一范式.
比如某表中有一個address的字段,插入值為”中國陜西省西安市碑林區柏樹林11號”.該字段值是可以繼續拆分的,原則上就不滿足第一范式.可以依次拆分為:國傢/省/市/區/街道等等.
當然,范式設計的越詳細,對某些實際操作可能會更好.但不一定都是好處.<比如對address字段來說,可能拆分開來永遠都用不到這麼詳細的信息,可能就沒有拆分的必要.>
第二范式
必須是滿足第一范式的前提下,第二范式要求,除主鍵外的每一列都必須完全依賴主鍵.如果要出現不完全依賴,隻可能發生在聯合主鍵的情況下.
例如: create table myorder( product_id int, customer_id int, product_name varchar(20), customer_name varchar(20), primary key(product_id, customer_id ); 當前表中, 除主鍵以外的其他列, 隻依賴於主鍵的部分字段.則不滿足第二范式,通常需要拆表. create table myorder( order_id int primary key, product_id int, customer_id int ); create table product ( id int primary key, name varchar(20) ); create table customer( id int primary key, name varchar(20) ); 拆分成三個表後,滿足第二范式.
第三范式
必須先滿足第二范式.除開主鍵列的其他列之間不能有傳遞依賴關系.
附件
查詢語句所涉及的sql語句
create table student( sno varchar(20) primary key, sname varchar(20) not null, ssex varchar(20) not null, sbrithday datetime, class varchar(20) ); create table student( sno varchar(20) primary key, sname varchar(20) not null, ssex varchar(10) not null, sbirthday datetime, class varchar(20) ) create table teacher( tno varchar(20) primary key, tname varchar(20) not null, tsex varchar(20) not null, tbirthday datetime, prof varchar(20) not null, depart varchar(20) not null ); create table course( cno varchar(20) primary key, cname varchar(20) not null, tno varchar(20) not null, foreign key(tno) references teacher(tno) ); create table score( sno varchar(20) not null, degree decimal, primary key (sno, cno), foreign key (sno) references student(sno), foreign key (cno) references course(cno) ); insert into student values ('101','曾華','男','1977-09-01','95033'); insert into student values ('102','匡明','男','1975-10-02','95031'); insert into student values ('103','王麗','女','1976-01-23','95033'); insert into student values ('104','李軍','男','1976-02-20','95033'); insert into student values ('105','王芳','女','1975-02-10','95031'); insert into student values ('106','陸君','男','1974-06-03','95031'); insert into student values ('107','王尼瑪','男','1976-02-20','95033'); insert into student values ('108','張全蛋','男','1975-02-10','95031'); insert into student values ('109','趙鐵柱','男','1974-06-03','95031'); insert into teacher values ('804','李成','男','1958-12-02','副教授','計算機系'); insert into teacher values ('856','張旭','男','1969-03-12','講師','電子工程系'); insert into teacher values ('825','王萍','女','1972-05-05','助教','計算機系'); insert into teacher values ('831','劉冰','女','1977-08-14','助教','電子工程系'); insert into course values ('3-105','計算機導論', '825'); insert into course values ('3-245','操作系統', '804'); insert into course values ('6-166','數字電路', '856'); insert into course values ('9-888','高等數學', '831'); insert into score values('103','3-245','86'); insert into score values('105','3-245','75'); insert into score values('109','3-245','68'); insert into score values('103','3-105','92'); insert into score values('105','3-105','88'); insert into score values('109','3-105','76'); insert into score values('103','3-105','64'); insert into score values('105','6-166','79'); insert into score values('109','6-166','81'); create table person( id int primary key auto_increment, name varchar(20), cardId int ); create table card ( id int, name varchar(20) ); insert into card values (1,'飯卡'); insert into card values (2,'建行卡'); insert into card values (3,'農行卡'); insert into card values (4,'工商卡'); insert into card values (5,'郵政卡'); insert into person values (1,'張三',1); insert into person values (2,'李四',3); insert into person values (3,'王五',6);
到此這篇關於mysql常用sql與命令之從入門到刪庫跑路的文章就介紹到這瞭,更多相關mysql 入門內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!