Mysql必知必會部分知識點梳理

NO IMAGE

Mysql必知必會學習筆記:

1、瞭解sql:

1,1、術語:

資料庫:儲存有組織的資料的容器;

主鍵使用:1.不更新主鍵列中的值;2:不使用可能會更改的值

1.2、sql是結構化的查詢語言的縮寫,是一種專門用來與資料庫通訊的語言

2、MySQL簡介:

2.1、DBMS可分為兩類:一類基於共享檔案的系統的DBMS,另一類基於客戶機—伺服器的DBMS

3、使用SQL:

3.1、使用SQL需使用use開啟資料庫,才能獲取資料

3.2、瞭解資料庫和表,show databases/tables/columns(show columns from customs可用describe customs代替)/show errors / show wainings /show grants(現實授予使用者的安全許可權)

4、檢索資料

4.1 、select

4.1.1、多條SQL語句需要(;)分隔,加上沒壞處 /篩選多個select用(,)隔開;/select * (除非需要,儘量不用,佔記憶體,降低效率,搜尋出來順序可能不一樣,也有優點,可能選出名字未知的列

4.1.2、distinct 返回唯一的值:select distinct vend,prod應用於兩列的唯一值(單個列可能有一樣的,多列組合不一樣)

4.1.3、limit 限制結果:limit 5/limit 5,7 第一個數為開始的位置,第二個為行數(limit1,1顯示的是第二行)(limit 7 offset 5可用來代替上一種寫法)

4.1.4、使用完全限制的表名 select world.city.name from world.city;

4.2、SQL不區分大小寫,但是可以關鍵字使用大寫,列和表名使用小寫,便於閱讀和除錯;

5、排序

1,order by /asc /desc

2,每一句,不指定的預設升序asc,制定了就desc,故倒序的都要加desc,asc其實沒用

6、過濾資料

1,where 可用where prod_price BETWEEN 5 AND 10; /where price is null :篩選是否為空值

7、資料過濾

where (price = 3 and price = 4 ) or price = 8

where price in (3,10) 執行速度快

相應的 where price not in (3,10)

8、 萬用字元

% / –的區別,以及注意空格 trim(),rtrim()

不要過度使用萬用字元,搜尋起來慢

9、 用正規表示式進行搜尋

1、基本字元搜尋 select name,COUNTRYCODE

from world.city

where CountryCode regexp ‘.FG’

2、or 使用select name,POPULATION

from world.city

where POPULATION regexp ‘[12]2’ 【】代表或,也可匹配一個範圍

3、匹配特殊字元 用\為前導,也有含特殊含義的字元元 :字 符 說 明 \f 換頁 \n 換行 \r 回車 \t 製表 \v 縱向製表

where vend_name regexp’\.’ 檢索出含. 的列

4,匹配字元類,匹配多個例項 where pord_name regexp ‘\([0-9] sticks:\)’ [0-9]匹配任意數字

10、計算欄位

1 、concat select concat(rtrim(vend),’(‘,name,’)’) 使用拼接最好先使用去空格

2、算術計算 select pod,id,comf*fany 直接可以相乘

11、資料處理函式

1、Left() 返回串左邊的字元

Length() 返回串的長度

Locate() 找出串的一個子串

Lower() 將串轉換為小寫

LTrim() 去掉串左邊的空格

Right() 返回串右邊的字元

RTrim() 去掉串右邊的空格

Soundex() 返回串的SOUNDEX值 where cust_concat= ‘y.lie’ 含y.lee的詞也能被選進來

SubString() 返回子串的字元

Upper() 將串轉換為大寫

2、日期和事件處理函式

AddDate() 增加一個日期(天、周等)

AddTime() 增加一個時間(時、分等)

CurDate() 返回當前日期

CurTime() 返回當前時間

Date() 返回日期時間的日期部分 select ID,name from orders where data(order_date) = ‘2005-01-02’

DateDiff() 計算兩個日期之差

Date_Add() 高度靈活的日期運算函式

Date_Format() 返回一個格式化的日期或時間串

Day() 返回一個日期的天數部分

DayOfWeek() 對於一個日期,返回對應的星期幾

Hour() 返回一個時間的小時部分

Minute() 返回一個時間的分鐘部分

Month() 返回一個日期的月份部分

Now() 返回當前日期和時間

Second() 返回一個時間的秒部分

Time() 返回一個日期時間的時間部分

Year() 返回一個日期的年份部分

3、數值處理函式

Abs() 返回一個數的絕對值

Cos() 返回一個角度的餘弦

Exp() 返回一個數的指數值

Mod() 返回除操作的餘數

Pi() 返回圓周率

Rand() 返回一個隨機數

Sin() 返回一個角度的正弦

Sqrt() 返回一個數的平方根

Tan() 返回一個角度的正切

12、彙總資料

AVG() 返回某列的平均值

COUNT() 返回某列的行數 count(*) 和count(name)返回的值不一定一樣的

MAX() 返回某列的最大值

MIN() 返回某列的最小值

SUM() 返回某列值之和

13、分組資料

1、group by having

2、使用ROLLUP 使用WITH ROLLUP關鍵字,可以得到每個分組以 及每個分組彙總級別(針對每個分組)的值