1. 程式人生 > >《MySQL必知必會》學習筆記五(資料處理函式)------掌握部分

《MySQL必知必會》學習筆記五(資料處理函式)------掌握部分

MySQL必知必會知識預覽
第一章——瞭解SQL
第二章——MySQL簡介
第三章——使用MySQL
第四章——檢索資料
第五章——排序檢索資料
第六章——過濾資料
第七章——資料過濾
第八章——用萬用字元進行過濾
第九章——用正則表示式進行搜尋
第十章——建立計算欄位
第十一章——使用資料處理函式
第十二章——彙總資料
第十三章——分組資料
第十四章——使用子查詢
第十五章——聯結表
第十六章——建立高階聯結
第十七章——組合查詢
第十八章——全文字搜尋
第十九章——插入資料
第二十章——更新和刪除資料
第二十一章——建立和操縱表
第二十二章——使用檢視
第二十三章——使用儲存過程
第二十四章——使用遊標
第二十五章——使用觸發器
第二十六章——管理事務處理
第二十七章——全球化和本地化
第二十八章——安全管理
第二十九章——資料庫維護
第三十章——改善效能

————————————– 華麗的分隔符 ————————————————–

第十章

計算欄位Concat()函式

儲存在資料庫表中的資料一般不是應用程式所需要的格式,我們需要直接從資料庫中檢索出轉換、計算或者格式化過的資料,而不是檢索出資料,然後在客戶機應用程式或者報告程式中重新格式化,這就是計算欄位發揮的作用,計算欄位並不存在資料表中,計算欄位是執行時在select語句內建立的。
在sql語句內完成的轉換和格式化工作都可以直接在客戶機應用程式內完成。但一般來說,在資料庫伺服器上完成這些操作比在客戶機中完成要快得多,因為DBMS是設計來快速有效地完成這種處理的。

計算欄位使用——拼接欄位
拼接:將值聯結在一起構成單個值。

select Concat(vend_name,’[‘,vend_country,’]’) from vendors order by vend_name;

這裡寫圖片描述

Concat()函式拼接注意:
Concat()拼接串,即把多個串連線起來形成一個較長的串。
Concat()需要一個或多個指定的串,各個串之間用逗號分隔;

去除空格Trim()函式

Trim函式,去掉串左右兩邊的空格
RTrim函式,去掉串右邊的空格
LTrim函式,去掉串左邊的空格

select Concat(Trim(vend_name),’[‘,vend_country,’]’) from vendors order by vend_name;
這裡寫圖片描述

使用別名

select語句拼接地址欄位很好,但是對於新計算列的名字是什麼呢?實際上,是沒有名字的,他只是一個值,而一個未知名的列是不能用於在客戶機應用中,因為客戶機滅有辦法引用她,所以,為了解決這個問題,引入別名。
別名:是一個欄位或值的替換名。使用關鍵字AS進行賦值、
select Concat(Trim(vend_name),’[‘,vend_country,’]’) as vend_title from vendors order by vend_name;

使用別名 AS關鍵字 引入別名後,在客戶機應用都可以按照這個別名來引用這個列。就像它是一個實際的表列一樣,有時候別名也稱為到匯出列。
別名的其他用途:
1. 實際的表列名包含不符合規定的字元(空格等)時重新命名它。
2. 在原有的名字含混或容易誤解事擴充它。

執行算術計算

MySQL支援基本運算子加減乘除,圓括號可以用來區分優先順序。
select prod_id,quantity,prices,quantity*item_prices as expended_price from orderitems where order_num = 20005;
// 彙總物品的總價
這裡寫圖片描述

第十一章資料處理函式

為什麼不建議使用函式?
函式沒有SQL的移植性強,能夠執行在多個系統上的程式碼稱為可移植的,多數SQL語句是可移植的,在SQL實現之間有差異時,這些差異通常不那麼難處理。而函式的可移植性卻不強。幾乎每種主要的DBMS的實現都支援其他實現不支援的函式,而且有時候差別很大。

注意:
函式沒有sql的移植性強,如果要使用函式,應該保證做好程式碼註釋,以便以後能確切地知道所編寫sql程式碼的含義。

大多數SQL實現支援以下型別的函式
1. 用於處理文字串(刪除或者填充值,轉換值的大小寫)的文字函式
2. 用於在數值資料上進行算術操作(進行代數運算,返回絕對值)的數值函式。
3. 用於處理日期和時間值並從這些值中提取特定的成分(返回兩個日期只差,檢查日期有效性等)的日期和時間函式。
4. 返回DBMS正使用的特殊資訊(返回使用者登入資訊,檢查版本細節)的系統函式。

文字處理函式

Left() :返回串左邊的字元
Length():返回串的長度
Locate():找出串的一個子串
Lower():將串轉換為小寫
LTrim():去掉串左邊的空格
Right():返回串右邊的字元
RTrim():去掉串右邊的空格
Soundex():返回串中的Soundex值
SubString():返回子串的字元
Upper() :將串轉換為大寫

select name,Upper(name) as namaUpper from product; // 轉化大寫形式
select left(name,2)as leftname ,name from product; // left(str,len) str字串,len擷取長度

重點——重點——重點
利用help contents;可以進行相應的檢視教程。
help 函式名; //檢視幫助文件

關於Soundex 的API
這裡寫圖片描述

日期和時間處理函式[重點]

日期和時間採用相應的資料型別和特殊的格式儲存,以便能快速和有效地排序或過濾,並且節省物理儲存空間。
一般,應用程式不使用 用來儲存日期和時間的格式,因此日期和時間函式總是被用來讀取、統計和處理這些值。由於這個原因,日期和時間函式在MySQL語言中具有重要的作用。

addDate() :增加一個日期(天、周等)
addTime() :增加一個日期(時、分等)
CurDate() :返回當前日期
CurTime() :返回當前時間
Now():返回當前時間和日期
Date():返回日期時間的日期部分
Time():返回一個日期時間的時間部分
DateDiff() :計算兩個日期只差
Date_Add():高度靈活的日期運算函式
Date_Format():返回一個格式化的日期或時間串
Day():返回一個日期的天數部分
DayOfWeek():對於一個日期,返回對應的星期幾
Second():返回一個時間的秒部分
Minute():返回一個時間的分鐘部分
Hour():返回一個時間的小時部分
Month():返回一個時間的月份部分
Year():返回一個時間的年份部分

注意:
如果要的是日期,請使用Date() 如果你想要的僅僅是日期,則使用Date()是一個良好的習慣,即使你知道相應的列只包含時間日期也是如此。這樣,如果由於某種原因表中以後有日期和時間值,你的sql程式碼也不必改變,當然,也存在一個Time()函式,在你只想要時間時應該使用它。
Date()和Time()都是在MySQL4.4.1中第一次引入的。

數值處理函式[瞭解]

數值處理函式僅處理數值資料。這些函式一般主要用於代數、三角或者幾何運算,因此沒有串或者日期-時間處理函式的使用頻繁。
但是具有諷刺意味的是:在主要的DBMS的函式中,數值函式是最一致的函式。
這裡寫圖片描述