MySQL語法

1. SQL語句分類
  • DDL(Data Definition Language):數(shù)據(jù)定義語言,用來定義數(shù)據(jù)庫對(duì)象:庫焦蘑、表、列等盒发。功能:創(chuàng)建例嘱、刪除、修改庫和表結(jié)構(gòu)宁舰。
  • DML(Data Manipulation Language):數(shù)據(jù)操作語言拼卵,用來定義數(shù)據(jù)庫記錄:增、刪蛮艰、改表記錄腋腮。
  • DCL(Data Control Language):數(shù)據(jù)控制語言,用來定義訪問權(quán)限和安全級(jí)別。
  • DQL(Data Query Language):數(shù)據(jù)查詢語言即寡,用來查詢記錄亿絮。也是本章學(xué)習(xí)的重點(diǎn)顶吮。
2. SQL數(shù)據(jù)中的屬性類型
  • TINYINT:1字節(jié)横堡,小整數(shù)值玻靡。
  • SMALLINT:2字節(jié),大整數(shù)值墩蔓。
  • MEDIUMINT:3字節(jié)梢莽,大整數(shù)值。
  • INT或INTEGER:4字節(jié)奸披,整型,大整數(shù)值昏名。
  • FLOAT:單精度浮點(diǎn)數(shù)值。
  • DOUBLE(5,2):雙精度浮點(diǎn)型數(shù)值阵面,參數(shù)表示該浮點(diǎn)型數(shù)值最多有5位轻局,其中必須有2位小數(shù)。
  • DECIMAL(M,D):小數(shù)值,參數(shù)表示該數(shù)值最多有M位膜钓,其中必須有D位小數(shù)嗽交。
  • CHAR:字符型卿嘲,固定長度字符串類型:char(255)颂斜。你存入一個(gè)a字符,雖然a只占一個(gè)字符拾枣,但是它會(huì)自動(dòng)給你加254個(gè)空格湊成255個(gè)長度沃疮。即數(shù)據(jù)的長度不足指定長度,它會(huì)補(bǔ)足到指定長度梅肤。
  • VARCHAR:可變長度字符串類型:- varchar(65535),你存入的數(shù)據(jù)多長它就是多長司蔬。它會(huì)抽出幾個(gè)字節(jié)來記錄數(shù)據(jù)的長度。
  • TEXT(CLOB):mysql獨(dú)有的數(shù)據(jù)類型姨蝴,字符串類型俊啼。
  • BLOB:字節(jié)類型。
  • YEAR:年份值左医,格式為:YYYY
  • DATA:日期類型授帕,格式為:yyyy-MM-dd。
  • TIME:時(shí)間類型浮梢,格式為:hh:mm:ss跛十。
  • TIMESTAMP:時(shí)間戳類型,格式為上面二者的綜合秕硝。
  • DATETIME:混合日期和時(shí)間值芥映,格式為:YYYYMMDD HHMMSS.
3. SQL語句詳解

當(dāng)然首先需要再命令行中輸入mysql -uroot -p來進(jìn)入mysql。注意:1.MySQL語法不區(qū)分大小寫,但是建議在寫關(guān)鍵字時(shí)用大寫奈偏。2.每一條語句后面以分號(hào)結(jié)尾坞嘀。

3.1DDL(數(shù)據(jù)定義語言)語法

該語言用來對(duì)數(shù)據(jù)庫和表結(jié)構(gòu)進(jìn)行操作。

對(duì)數(shù)據(jù)庫的操作:

查看所有數(shù)據(jù)庫:SHOW DATABASES;

使用數(shù)據(jù)庫:USE 數(shù)據(jù)庫名;

創(chuàng)建數(shù)據(jù)庫并指定編碼:CREATE DATABASE [IF NOT EXISTS] 數(shù)據(jù)庫名 [DEFAULT CHARACTER SET UTF8];

刪除數(shù)據(jù)庫:DROP DATABASE 數(shù)據(jù)庫名;

修改數(shù)據(jù)庫的編碼:ALTER DATABASE 數(shù)據(jù)庫名 CHARACTER SET UTF-8;

對(duì)表結(jié)構(gòu)的操作
創(chuàng)建表:

CREATE TABLE (IF NOT EXISTS)表名(
列名 列類型霎苗,
...姆吭,
列名 列類型,
)
  • 查看當(dāng)前數(shù)據(jù)庫中所有表:SHOW TABLES;
  • 查看表結(jié)構(gòu):DESC 表名;
  • 刪除表:DROP 表名;
  • 修改表:修改表有5個(gè)操作唁盏,但前綴都是一樣的:ALTER TABLE 表名...
  • 修改表之添加列:ALTER TABLE 表名 add (列名 列類型内狸,...,列名 列類型);
  • 修改表之修改列類型:ALTER TABLE 表名 MODIFY 列名 列的新類型;
  • 修改表之列名稱列類型一起修改:ALTER TABLE 表名 CHANGE 原列名 新列名 列名類型;
  • 修改表之刪除列:ALTER TABLE 表名 DROP 列名;
  • 修改表之修改表名:ALTER TABLE 表名 RENAME TO 新表名
3.2DML(數(shù)據(jù)操作語言)語法

該語言用來對(duì)表記錄操作(增厘擂、刪昆淡、改)。

3.2.1插入數(shù)據(jù)(一次插入就是插入一行)

insert into 表名 (列名1刽严,列名2昂灵,列名3) values (列值1,列值2舞萄,列值3)

說明:1.在數(shù)據(jù)庫中所有的字符串類型眨补,必須使用單引號(hào)。2.(列名1倒脓,列名2撑螺,列名3)可省略,表示按照表中的順序插入崎弃。但不建議采取這種寫法甘晤,因?yàn)榻档土顺绦虻目勺x性。3.在命令行插入記錄不要寫中文饲做,否則會(huì)出現(xiàn)亂碼(解決控制臺(tái)的亂碼問題后便可插入中文线婚,至于如何解決亂碼問題請參考我的下篇文章)。

3.2.2修改記錄(不會(huì)修改一行)

修改某列的全部值:update 表名 set 列名1=列值1(盆均,列名2=列值2);

修改(某行或者多行記錄的)列的指定值:update 表名 set 列名1=列值1 where 列名2=列值2 or 列名3=列值3;

運(yùn)算符:=塞弊、!=、<>泪姨、<游沿、>、>=驴娃、<=奏候、between...and、in(…)唇敞、is null蔗草、not咒彤、or、and咒精,其中in(…)的用法表示集合镶柱。例如:update 表名 set 列名1=列值1 where 列名2=列值2 or 列名2=列值22用in(…)寫成update 表名 set 列名1=列值1 where 列名2 in(列值2,列值3)

3.2.3刪除數(shù)據(jù)(刪除整行)

delete from 表名 (where 條件);不加where條件時(shí)會(huì)刪除表中所有的記錄模叙,所以為了防止這種失誤操作歇拆,很多數(shù)據(jù)庫往往都會(huì)有備份。

3.3DCL(數(shù)據(jù)控制語言)語法

該語言用來定義訪問權(quán)限范咨,理解即可故觅,以后不會(huì)多用。需要記住的是渠啊,一個(gè)項(xiàng)目創(chuàng)建一個(gè)用戶输吏,一個(gè)項(xiàng)目對(duì)應(yīng)的數(shù)據(jù)庫只有一個(gè)。這個(gè)用戶只能對(duì)這個(gè)數(shù)據(jù)庫有權(quán)限替蛉,其它數(shù)據(jù)庫該用戶就操作不了贯溅。

3.3.1創(chuàng)建用戶

用戶只能在指定ip地址上登錄mysql:create user 用戶名@IP地址 identified by ‘密碼’;

用戶可以在任意ip地址上登錄:create user 用戶名@‘%’ identified by ‘密碼’躲查;

3.3.2給用戶授權(quán)

語法:grant 權(quán)限1它浅,…,權(quán)限n on 數(shù)據(jù)庫.* to 用戶名@IP地址镣煮;其中權(quán)限1姐霍、2、n可以直接用all關(guān)鍵字代替怎静。權(quán)限例如:create,alter,drop,insert,update,delete,select邮弹。

3.3.3撤銷授權(quán)

語法:revoke 權(quán)限1黔衡,…蚓聘,權(quán)限n on 數(shù)據(jù)庫.* from 用戶名@ ip地址;撤銷指定用戶在指定數(shù)據(jù)庫上的指定權(quán)限盟劫。撤銷例如:revoke create,delete on mydb1.* form user@localhost;表示的意思是撤消user用戶在數(shù)據(jù)庫mydb1傷的create夜牡、alter權(quán)限。

3.3.4查看權(quán)限

查看指定用戶的權(quán)限:show grants for 用戶名@ip地址侣签;

3.4DQL(數(shù)據(jù)查詢語言)語法

重點(diǎn)塘装,該語言用來查詢記錄,不會(huì)修改數(shù)據(jù)庫和表結(jié)構(gòu)影所。

3.4.1基本查詢(后綴都是統(tǒng)一為from 表名)
  • 1.字段(列)控制1.查詢所有列:select * from 表名;
    其中*表示查詢所有列蹦肴,而不是所有行的意思。
  • 2.查詢指定列:select 列1猴娩,列2阴幌,列n from 表名勺阐;
  • 3.完全重復(fù)的記錄只顯示一次:在查詢的列之前添加distinct:select distinct $ from 表名;
    缺省值為all矛双。
  • 4.列運(yùn)算a.數(shù)量類型的列可以做加渊抽、減、乘议忽、除:SELECT sal*5 from 表名懒闷;
說明:

1.遇到null加任何值都等于null的情況,需要用到ifnull()函數(shù)栈幸。
2.將字符串做加減乘除運(yùn)算愤估,會(huì)把字符串當(dāng)作0。b.字符串累類型可以做連續(xù)運(yùn)算(需要用到concat()函數(shù)):select concat(列名1速址,列名2) from 表名;其中列名的類型要為字符串灵疮。c. 給列名起別名:select 列名1 (as) 別名1,列名2 (as) 別名2 from 表名;

2.條件控制
1.條件查詢壳繁。在后面添加where指定條件:select * from 表名 where 列名=指定值;
2.模糊查詢:當(dāng)你想查詢所有姓張的記錄震捣。用到關(guān)鍵字like。eg:select * from 表名 where 列名 like ‘張_’;
(代表匹配任意一個(gè)字符闹炉,%代表匹配0~n個(gè)任意字符)蒿赢。

3.4.2排序(所謂升序和降序都是從上往下排列)

1.升序:select * form 表名 order by 列名 (ASC );
()里面的內(nèi)容為缺省值;
2.降序:select * from 表名 order by 列名 DESC;

3.使用多列作為排序條件: 當(dāng)?shù)谝涣信判驐l件相同時(shí)渣触,根據(jù)第二列排序條件排序(當(dāng)?shù)诙幸琅f相同時(shí)可視情況根據(jù)第三例條件排序)羡棵。eg:select * from 表名 order by 列名1 ASC, 列名2 DESC;
意思是當(dāng)列名1的值相同時(shí)按照列名2的值降序排。

3.4.3聚合函數(shù)

1.count:select count(列名) from 表名嗅钻;
,紀(jì)錄有效行數(shù)皂冰。
2.max:select count(列名) from 表名;
,列中最大值养篓。
3.min:select sum(列名) from 表名秃流;
,列中最小值。
4.sum:select sum(列名) from 表名柳弄;
,求列的總值舶胀,null 和字符串默認(rèn)為0。
5.avg:select avg(列名) from 表名;
,一列的平均值碧注。

3.4.4分組查詢

分組查詢的信息都是組的信息嚣伐,不能查到個(gè)人的信息,其中查詢組的信息是通過聚合函數(shù)得到的萍丐。
語法:select 分組列名轩端,聚合函數(shù)1,聚合函數(shù)2 from 表名 group by 該分組列名;
其中分組列名需要的條件是該列名中有重復(fù)的信息逝变。
查詢的結(jié)果只能為:作為分組條件的列和聚合函數(shù)基茵;查處的信息都是組的信息刻撒。
分組查詢前,還可以通過關(guān)鍵字where先把滿足條件的人分出來耿导,再分組声怔。語法為:select 分組列,聚合函數(shù) from 表名 where 條件 group by 分組列舱呻;

分組查詢后醋火,也可以通過關(guān)鍵字having把組信息中滿足條件的組再細(xì)分出來。語法為:select 分組列箱吕,聚合函數(shù) from 表名 where 條件 group by 分組列 having 聚合函數(shù)或列名(條件)芥驳;

3.4.5LIMIT子句(mysql中獨(dú)有的語法)

LIMIT用來限定查詢結(jié)果的起始行,以及總行數(shù)茬高。
例如:select * from 表名 limit 4兆旬,3;
表示起始行為第5行怎栽,一共查詢3行記錄丽猬。

4.總結(jié)

學(xué)過的關(guān)鍵字:select,from,where,group by,having ,order by。
當(dāng)一條查詢語句中都包含所有這些關(guān)鍵字時(shí)它們的優(yōu)先級(jí)是select>from>where>group by>having>order by
熏瞄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脚祟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子强饮,更是在濱河造成了極大的恐慌由桌,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邮丰,死亡現(xiàn)場離奇詭異行您,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)剪廉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門娃循,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人妈经,你說我怎么就攤上這事淮野∨跏椋” “怎么了吹泡?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長经瓷。 經(jīng)常有香客問我爆哑,道長,這世上最難降的妖魔是什么舆吮? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任揭朝,我火速辦了婚禮队贱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘潭袱。我一直安慰自己柱嫌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布屯换。 她就那樣靜靜地躺著编丘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪彤悔。 梳的紋絲不亂的頭發(fā)上嘉抓,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音晕窑,去河邊找鬼抑片。 笑死,一個(gè)胖子當(dāng)著我的面吹牛杨赤,可吹牛的內(nèi)容都是我干的敞斋。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼疾牲,長吁一口氣:“原來是場噩夢啊……” “哼渺尘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起说敏,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤鸥跟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后盔沫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體医咨,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年架诞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拟淮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谴忧,死狀恐怖很泊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沾谓,我是刑警寧澤委造,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站均驶,受9級(jí)特大地震影響昏兆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜妇穴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一爬虱、第九天 我趴在偏房一處隱蔽的房頂上張望隶债。 院中可真熱鬧,春花似錦跑筝、人聲如沸死讹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽回俐。三九已至,卻和暖如春稀并,著一層夾襖步出監(jiān)牢的瞬間仅颇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國打工碘举, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留忘瓦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓引颈,卻偏偏與公主長得像耕皮,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蝙场,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

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

  • 1 : 基礎(chǔ)語法--------- 對(duì)實(shí)體集 的操作 ------------select 查詢create ...
    記住你姓李閱讀 448評(píng)論 0 3
  • 什么是SQL數(shù)據(jù)庫: SQL是Structured Query Language(結(jié)構(gòu)化查詢語言)的縮寫凌停。SQL是...
    西貝巴巴閱讀 1,824評(píng)論 0 10
  • 50個(gè)常用的sql語句Student(S#,Sname,Sage,Ssex) 學(xué)生表Course(C#,Cname...
    哈哈海閱讀 1,235評(píng)論 0 7
  • 佛陀通過一個(gè)小故事講述了貪、嗔售滤、癡三毒罚拟,在其他佛教典故里也經(jīng)常講述關(guān)于貪、嗔完箩、癡赐俗、慢、疑給人所帶來的災(zāi)難弊知。...
    塵埃wyzh閱讀 336評(píng)論 0 1
  • ‘’鐵肩擔(dān)道義阻逮,妙筆著文章‘’,是我對(duì)新聞寫作的第一印象秩彤。第一次接觸到新聞寫作還是自己讀大四時(shí)叔扼,經(jīng)輔導(dǎo)員介紹去國企...
    看世間濤走云飛閱讀 446評(píng)論 1 4