一、SQL和MySQL背景
1.SQL和MySQL是什么垃环?
- SQL是結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language)的縮寫邀层,專門用來(lái)與數(shù)據(jù)庫(kù)進(jìn)行通信的語(yǔ)言,幾乎所有的DBMS(數(shù)據(jù)庫(kù)軟件)都支持
- MySQL是官方發(fā)布的免費(fèi)開(kāi)源的數(shù)據(jù)庫(kù)軟件遂庄,即SQL編輯器寥院,也有其他更好用的但是收費(fèi)的SQL編輯器軟件
- 在線寫代碼教程(需翻墻,英語(yǔ)):http://www.mysqltutorial.org
2.怎么進(jìn)入MySQL編輯界面涛目?
先把MySQL Notifier打開(kāi)秸谢,在右下角顯示后即可進(jìn)行通訊,默認(rèn)Stop霹肝,切換成Start后即可和數(shù)據(jù)庫(kù)進(jìn)行通訊估蹄,最后再把MySQLWorkbench打開(kāi)即可。
3.MySQL基礎(chǔ)概念
數(shù)據(jù)庫(kù)(datebase):保存有組織的數(shù)據(jù)的容器沫换。
表(table):某種特定類型數(shù)據(jù)的結(jié)構(gòu)化清單臭蚁。
列(column):表中的一個(gè)字段。所有表都由一列或者多列組成讯赏,每一列都有對(duì)應(yīng)的數(shù)據(jù)類型垮兑。
行(row):表中的一個(gè)記錄。
主鍵(primary key):一列(或一組列待逞?)甥角,其值能夠唯一區(qū)分表中每個(gè)行。表中每一行都有可以唯一標(biāo)識(shí)自己的一列识樱,表中的任何列都可以作為主鍵嗤无,但必須滿足以下條件:①任意兩行都不具有相同主鍵 ②每行都必須具有一個(gè)主鍵。即主鍵是唯一且每行必須的怜庸。
4.SQL基礎(chǔ)概念
- SQL操作不可逆
- SQl不區(qū)分大小寫
- 結(jié)束sql語(yǔ)句要使用分號(hào)(;)
- SQL語(yǔ)句會(huì)忽略空格当犯,即如果不用符號(hào)隔開(kāi)會(huì)默認(rèn)為一個(gè)單詞,但是在獲取結(jié)果時(shí)目標(biāo)格的空格不被忽略割疾,相當(dāng)于一個(gè)字符
- null 值會(huì)被忽略計(jì)算
- *代表全部的數(shù)據(jù)(all)
- 字符串用雙引號(hào)和單引號(hào)皆可嚎卫,單引號(hào)更規(guī)范
- 通配符(wildcard)用來(lái)匹配值的一部分的特殊字符,在搜索字句中使用通配符必須使用like操作符宏榕,通配符可位于開(kāi)頭拓诸、結(jié)尾或中間,要注意尾部空格和空值null
- % 代表任意長(zhǎng)度
- _代表一個(gè)字符
選取在name列里以A開(kāi)頭的行
后面輸了三個(gè)_麻昼,表示以ab開(kāi)頭后面還有三個(gè)字符的單詞
- 使用limit限制返回結(jié)果行數(shù)奠支,可以提前設(shè)置,也可在語(yǔ)句中限制
二抚芦、SQL語(yǔ)法
1.select選取數(shù)據(jù)倍谜,order by排序迈螟,use指定庫(kù)名
SQL幾乎所有的語(yǔ)句都要使用select來(lái)選取列數(shù)據(jù),select返回的結(jié)果是無(wú)序的尔崔,可使用order by(位于from字句之后)排序答毫,asc 升序,desc 降序
也可在輸入語(yǔ)句前季春,先指定庫(kù)洗搂,一般情況下是不會(huì)跨庫(kù)查詢的,因此可以直接用use語(yǔ)句指定庫(kù)名鹤盒,后續(xù)from不用再輸入庫(kù)蚕脏,如果需要指定到特定庫(kù)侦副,再到from那里指定侦锯,則優(yōu)先運(yùn)行from那里的庫(kù),再運(yùn)行use指定的庫(kù)
use指定庫(kù)的操作執(zhí)行一次秦驯,只要后續(xù)不再使用use指定庫(kù)尺碰,即一直默認(rèn)使用該庫(kù),即使刪掉指定語(yǔ)句也不影響译隘,如果想換庫(kù)亲桥,再指定一次即可
要選取多列,用逗號(hào)(,)隔開(kāi)
2.select … from
select … from一般是連著使用固耘。
from表示從哪張表中選擇题篷,如果多個(gè)庫(kù)中有相同的表,要在表之前指定庫(kù)名厅目,用句點(diǎn)(.)隔開(kāi)番枚,再指定表名
可多重排序,按前后順序優(yōu)先排列
3.注釋及顯示數(shù)量
注釋(#)不會(huì)被執(zhí)行损敷,只用來(lái)描述當(dāng)前代碼葫笼,如第6行
show datebases顯示當(dāng)前有多少庫(kù)
show tables顯示當(dāng)前庫(kù)有多少表
show columns from XX 顯示當(dāng)前表有多少列
4.where過(guò)濾,and/or連接拗馒,in語(yǔ)句
在select語(yǔ)句中路星,數(shù)據(jù)根據(jù)where子句指定的搜索條件進(jìn)行過(guò)濾,多個(gè)過(guò)濾子句使用and/or連接诱桂,where字句中的圓括號(hào)決定了計(jì)算次序
優(yōu)先運(yùn)行and洋丐,再運(yùn)行or,即該語(yǔ)句表示先運(yùn)行同時(shí)滿足紅色框框的部分挥等,再單獨(dú)運(yùn)行綠色框框部分
加括號(hào)后則優(yōu)先運(yùn)行括號(hào)內(nèi)的部分友绝,再運(yùn)行括號(hào)外的部分
上述語(yǔ)句也可直接換成更簡(jiǎn)潔的in語(yǔ)句
5.修剪函數(shù)
trim修剪函數(shù),刪除空格:rtrim刪除右邊空格触菜,ltrim刪除左邊空格
Substring:字符串子集九榔,substring(目標(biāo)單元格,2),從字符串左邊第二個(gè)字符開(kāi)始截取哲泊,substring(目標(biāo)單元格剩蟀,2,5)切威,從字符串左邊第二個(gè)字符開(kāi)始截取5個(gè)字符長(zhǎng)度育特。【個(gè)人感覺(jué)SQL里的SubString作用和Excel里mid函數(shù)作用是一樣的先朦,都是截取部分字段】
Left:返回字符串最左邊的n個(gè)字符
6.group by和having
group by分成小組缰冤,以便進(jìn)行平均等操作,如表里是按城市為一行喳魏,但按照國(guó)家對(duì)不同國(guó)家人口進(jìn)行求平均值等
分組后不可使用where進(jìn)行條件過(guò)濾棉浸,而應(yīng)使用having對(duì)組進(jìn)行過(guò)濾
7.distinct 唯一值
三、SQL其他操作
1.增刪表
- DROP TABLE 刪除表【SQL操作不可逆刺彩,一旦drop掉不可恢復(fù)迷郑,操作前要思考好】
- update用來(lái)更新表中的數(shù)據(jù),一定要仔細(xì)创倔,不要省略where字句
- delete用于從表中刪除特定的行或者從表中刪除所有行嗡害,一定要仔細(xì),不要省略where字句