MySQL基本操作

SQL語句:結(jié)構(gòu)化查詢語言

  • DDL: 數(shù)據(jù)定義語言, 定義數(shù)據(jù)庫對象:庫翅萤、表恐疲、列、表結(jié)構(gòu)
  • DML: 數(shù)據(jù)操作語言套么, 定義數(shù)據(jù)庫記錄培己,增、刪胚泌、改 表記錄
  • DQL: 數(shù)據(jù)查詢語言省咨, 查詢記錄
  • DCL: 數(shù)據(jù)控制語言, 定義訪問權(quán)限和控制安全級別

1. DDL

1.1 數(shù)據(jù)庫

SHOW DATABASES: 查看所有數(shù)據(jù)庫
USE 數(shù)據(jù)庫名:切換到某數(shù)據(jù)庫
CREATE DATABASE [IF NOT EXISTS] 數(shù)據(jù)庫名 [CHARSET=UTF8]
DROP DATABASE [IF EXISTS] 數(shù)據(jù)庫名

1.2 表

SHOW TABLES: 查看數(shù)據(jù)庫下所有表
DESC 表名:查看表結(jié)構(gòu)
CREATE TABLE [IF NOT EXISTS] 表名 (列名 列類型玷室, 列名 列類型零蓉, ......);
DROP TABLE  表名
* 修改表:前綴 ALTER TABLE 表名笤受, alter table 表名 add|change|drop 列名 類型;
1. 添加列: ADD (列名 列類型, 列名 列類型敌蜂, ......)
2. 刪除列: DROP 列名
3. 修改列類型: MODIFY 列名 列類型
4. 修改列名: CHANGE 原列名 新列名 列類型
5. 修改表名: RENAME TO 新表名

2. DML

2.1 插入數(shù)據(jù)

INSERT INTO 表名

2.2 修改數(shù)據(jù)

UPDATE 表名 SET ... [where ...]

2.3 刪除數(shù)據(jù)

DELETE FROM 表名 [where ...]

3. DQL

  • 基本查詢
  • 條件控制
  • 聚合
  • 分組
  • 排序
  • 分頁

3.1 基本查詢

select * from 表名 [where ...]
select 列名1[,  列名2, ...] from 表名  [where ...]
select distinct * from 表名 [where ...] : 去重
select 列名 * 1.5 from 表名 [where ...]: 字符串被當做0
select 列名1 + 列名2 from 表名 [where ...]: NULL與任何運算都為NULL

3.2 條件控制

3.2.1 比較運算符
  • 等于: =
  • 大于: >
  • 大于等于: >=
  • 小于: <
  • 小于等于: <=
  • 不等于: !=或<>
select * from students where id > 3; 
select * from subjects where id <= 4;
select * from students where sname != '黃蓉';
select * from students where isdelete = 0;
3.2.2 邏輯運算符
  • and
  • or
  • not
select * from students where id>3 and gender=0;
select * from students where id<4 or isdelete=0;
3.2.3 模糊查詢
  • like: 關(guān)鍵字
  • % 表示可以匹配任意多個任意字符感论,0,1或多個
  • _ 表示可以匹配一個任意字符,1個
select * from students where sname like '黃%'; 查詢姓黃的學生
select * from students where sname like '黃_'; 查詢姓黃并且名字是一個字的學生
select * from students where sname like '黃%' or sname like '%靖%'; 查詢姓黃或叫靖的學生
3.2.4 范圍查詢
  • in 表示在一個非連續(xù)的范圍內(nèi)
  • between ... and ...表示在一個連續(xù)的范圍內(nèi)
select * from students where id in(1,3,8); 查詢編號是1或3或8的學生
select * from students where id between 3 and 8; 查詢學生是3至8的學生
select * from students where id between 3 and 8 and gender=1; 查詢學生是3至8的男生
3.2.5 空判斷
  • null與' '是不同的
  • 判空 is null
  • 判非空 is not null
select * from students where hometown is null;查詢沒有填寫地址的學生
select * from students where hometown is not null; 查詢填寫了地址的學生
select * from students where hometown is not null and gender=0; 查詢填寫了地址的女生
3.2.6 優(yōu)先級
  • 小括號紊册,not比肄,比較運算符,邏輯運算符
  • and比or先運算囊陡,如果同時出現(xiàn)并希望先算or芳绩,需要結(jié)合()使用

3.3 聚合

  • count(*) 計算總行數(shù)
  • max(列)
  • min(列)
  • sum(列)
  • avg(列)
select count(*) from students;查詢學生總數(shù)
select max(id) from students where gender=0;查詢女生的編號最大值
select min(id) from students where isdelete=0;查詢未刪除的學生最小編號
select sum(id) from students where gender=1;查詢男生的編號之和
select avg(id) from students where isdelete=0 and gender=0;查詢未刪除女生的編號平均值

3.4 分組

  • group by 列1,列2,列3...
  • having 分組后的數(shù)據(jù)篩選
  • having后面的條件運算符與where的相同

按照字段分組,表示此字段相同的數(shù)據(jù)會被放到一個組中
分組后撞反,只能查詢出相同的數(shù)據(jù)列妥色,對于有差異的數(shù)據(jù)列無法出現(xiàn)在結(jié)果集中
可以對分組后的數(shù)據(jù)進行統(tǒng)計,做聚合運算

select 列1,列2,聚合... from 表名 group by 列1,列2,列3...
select gender as 性別, count(*) from students group by gender; 查詢男女生總數(shù)
select hometown as 家鄉(xiāng),count(*) from students group by hometown;查詢各城市人數(shù)
select 列1,列2,聚合... from 表名 group by 列1,列2,列3... having 列1,...聚合...
1. select count(*) from students where gender=1; 查詢男生總?cè)藬?shù)
2. select gender as 性別,count(*) from students group by gender having gender=1;

對比where與having:
where是對from后面指定的表進行數(shù)據(jù)篩選遏片,屬于對原始數(shù)據(jù)的篩選
having是對group by的結(jié)果進行篩選

3.6 排序

  • order by
  • desc | asc

將行數(shù)據(jù)按照列1進行排序嘹害,如果某些行列1的值相同時,則按照列2排序吮便,以此類推
默認按照列值從小到大排列
asc從小到大排列笔呀,即升序
desc從大到小排序,即降序

select * from 表名 order by 列1 asc|desc, 列2 asc|desc,...
select * from students where gender=1 and isdelete=0 order by id desc;查詢未刪除男生學生信息髓需,按學號降序
select * from subject where isdelete=0 order by stitle;查詢未刪除科目信息许师,按名稱升序

3.7 分頁

  • limit start,count
  • 從start開始,獲取count條數(shù)據(jù)
  • start索引從0開始
    當數(shù)據(jù)量過大時僚匆,在一頁中查看數(shù)據(jù)是一件非常麻煩的事情

已知:每頁顯示m條數(shù)據(jù)微渠,當前顯示第n頁, 求總頁數(shù):
查詢總條數(shù)p1
使用p1除以m得到p2
如果整除則p2為總數(shù)頁
如果不整除則p2+1為總頁數(shù)
求第n頁的數(shù)據(jù)

select * from 表名 limit start,count
select * from students where isdelete=0 limit (n-1)*m,m
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市咧擂,隨后出現(xiàn)的幾起案子逞盆,更是在濱河造成了極大的恐慌,老刑警劉巖松申,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件云芦,死亡現(xiàn)場離奇詭異,居然都是意外死亡攻臀,警方通過查閱死者的電腦和手機焕数,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門纱昧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刨啸,“玉大人,你說我怎么就攤上這事识脆∩枇” “怎么了善已?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長离例。 經(jīng)常有香客問我换团,道長,這世上最難降的妖魔是什么宫蛆? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任艘包,我火速辦了婚禮,結(jié)果婚禮上耀盗,老公的妹妹穿的比我還像新娘想虎。我一直安慰自己,他們只是感情好叛拷,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布舌厨。 她就那樣靜靜地躺著,像睡著了一般忿薇。 火紅的嫁衣襯著肌膚如雪裙椭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天署浩,我揣著相機與錄音揉燃,去河邊找鬼。 笑死筋栋,一個胖子當著我的面吹牛你雌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播二汛,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼婿崭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肴颊?” 一聲冷哼從身側(cè)響起氓栈,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎婿着,沒想到半個月后授瘦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡竟宋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年提完,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丘侠。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡徒欣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蜗字,到底是詐尸還是另有隱情打肝,我是刑警寧澤脂新,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站粗梭,受9級特大地震影響争便,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜断医,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一滞乙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鉴嗤,春花似錦酷宵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至荣挨,卻和暖如春男韧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背默垄。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工此虑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人口锭。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓朦前,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鹃操。 傳聞我的和親對象是個殘疾皇子韭寸,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 查詢的基本語法: 1)from關(guān)鍵字后面寫表名,表示數(shù)據(jù)來源于是這張表2)select后面寫表中的列名荆隘,如果是*表...
    流光汐舞閱讀 198評論 0 0
  • MySQL的結(jié)構(gòu) 一共分四層,分別是: 1. 連接層:主要是一些客戶端和鏈接服務,包含本地sock通信和大多數(shù)基于...
    終生學習丶閱讀 418評論 0 1
  • 1.日扯魉牛互懟 “等我發(fā)家致富了,就跟你離婚”他淡淡的說椰拒。 聽完以后晶渠,她覺得心里好暖好暖!她想燃观,沒有比這更天長地久褒脯,...
    Fay小怪閱讀 233評論 0 2
  • 1.不要太愧疚,把精力放在反思和彌補上缆毁。 2.孤獨不是你的錯番川。
    讓我們談談死亡閱讀 147評論 0 0
  • 使用Joiner 典型的使用原生的java處理拼接字符串的方法: 注意:這里需要移除最后一個分隔符。原生的java...
    Viking_Den閱讀 804評論 0 2