本文主要介紹關於mysql的一些非常基礎的知識。具有很好的參考價值。以下跟著小編一起來看下吧
本篇主要介紹關於mysql的一些非常基礎的知識,為後面的sql優化做準備。
一:連接mysql
關於mysql的下載和安裝我在這裡就不說了,第一步我們要連接我們的mysql伺服器,開啟cmd指令切換到你安裝MySQL Server 的bin目錄下,然後輸入mysql -h localhost -u root -p
其中-h 表示你的主機位址(本機就是localhost,記住不要帶連接埠號碼) -u 就是連接資料庫名稱-p就是連線密碼。出現以下圖就表示連線成功了
二:常用的sql語句
2.1:建立資料庫create database 資料庫名稱
2.2:刪除資料庫drop database 資料庫名稱
2.3:查詢系統中的資料庫show databases
2.4:使用資料庫use 資料庫名稱
2.5:查詢資料庫的表格show tables
2.6:查詢表格結構desc +表名
#2.7:查詢建立表格的sql語句show create table +表名
#2.8:刪除表drop +表名
2.9:一次刪除多條表記錄:delete t1,t2 from t1,t2[where 條件] 如果from後面用別名那麼delete後面也需要用別名
3.0 :一次更新多次表update t1,t2 ...tn set t1.field=expr1,tn.exprn=exprn;
三:查詢
3.1 :select普通查詢
在這裡我建立了一個資料放了2個表,看下圖
## 3.2:查詢不重複記錄用關鍵字distinct如下圖 #3.3:排序與限制用關鍵字order by進行排序desc降序asc升序,limit關鍵字進行限制輸出 #order by後面跟字段(order by只寫一次即可先排第一個字段然後第二個以此類推,limit 後面第一個數是索性,第二個是輸出的數量)。 四:聚合操作
很多情況下,使用者都需要進行一些統計,例如統計整個公司的人數或部門的人數,這時就會用到聚合操作。聚合操作語法入戲下select 【field1,field2...fieldn】fun_name from 表名where 條件group by field1,field2...fieldnwith rolluphaving 條件fun_name叫做聚合函數或聚合操作,常見的有sum(求和)、 count(*)記錄數、 max(最大值) 、min(最小值)。 group by 表示要分類聚合的字段,例如依照部門分類統計的員工數量,部門就應該寫在group by後面with rollup 是可選語法,表示是否對分類聚合後的結合在進行總結having 表示對分類後的結果在次進行篩選#4.1:依照課程編號進行統計班級的人數 4.2:依年級統計人數,並統計總數 rollup就是進行人數總結的,從圖中我們可以看出。 4.3:統計年齡不小於20的人數 having和where的區別:having是對聚合後的結果進行篩選,而where是在聚合錢就對記錄進行篩選,如果邏輯允許,盡可能使用where先過濾記錄,這樣將減少結果集,對聚合的效率大大的提高,然後在根據having進行過濾。五:表格連接
如果需要同時顯示多個表格中的欄位的時候,就可以使用表格連接來實現這樣的功能。從大類上可以分為內連接和外連接,他們的主要區別是:內連接僅僅篩選出2個表互相匹配的記錄,而外連接會篩選出其他不匹配的記錄,我們經常使用的是內連接。
5.1:查詢學生所選的課程外連接又分為左連接和右連接。
左連接(包含所有左邊表中的記錄甚至右邊表中沒有和它匹配的記錄)
右連接(包含所有右邊表中的記錄甚至左邊表中沒有和它匹配的記錄)
#從中可以看出左連接是以左邊的表為主,右連接是以右邊的表為主。
六:子查詢
某些情況下,當進行查詢的時候,需要的條件是另外一個select語句的結果,這個時候就用到了子查詢,用於子查詢的關鍵字主要包括in、not in、=、!=、exist、not exist等
如使用in進行查詢
##但是使用內連接同樣能達到以上的效果 但是內連接的效率在很多情況下都是高於子查詢的,所以如果不影響業務邏輯的前提下優先考慮內聯。七:聯合
將2個表格的資料依照某一規則下查詢出來,將結果合併並一起顯示出來。這時候我們就可以用union或是union all。具體語法如下select * from t1 union\union all select * from t2 union\union all select * from tn;union和union all的差別在於union是在篩選的結果集去除重複的記錄。 切記不可以2個表格不符就進行聯合,如下 如果我們每個表格都查詢2個欄位八:常見的函數
#8.1:concat##cancat函數:把傳入的參數連成一個
字串,任何字串和null進行拼接的結果都是null,如下圖
8.2:insert(str,x,y,instr)函數,將字串str從第X個位置開始,y個字元長的字串替換成instr下面把字串hellomysql2016的第5個字元後面的4個字符替換成you
8.3:Lower(Str)和Upper(Str)把字串轉換成小寫或大寫。
8.4:left(str,x)和right(str,x)分別傳回字串最左邊的x個字元和最右邊的x個字符,如果第二個參數為null,不回傳任何字元
8.5:ltrim(str)和rtrim(str)去掉字串左邊或右邊的字元
#8.6:repeat(str,x):傳回str重複x次的結果
8.7:replace(str,a,b)用字串b替換字串str中所有出現字串a。
8.8:trim(str)去掉開頭與結尾的空格
8.9:substring(str,x, y):傳回從字串str中的第x個位置起y個字串長度的字串。
#
以上是詳細介紹mysql基礎知識掃盲(圖)的詳細內容。更多資訊請關注PHP中文網其他相關文章!