sql知識助記(未完待續)
資料庫對比
MySQL
不標準sql:自動型別轉換
MySQL型別會做自動轉換 例如:會將“1”先轉為some_num相同的型別
select some_num from a_table where some_num="1";
年月日字串可自動轉為時間,
每個資料庫處理date格式有些不同,所以建議日期用字串
不標準sql:引號
MySQL表示字串的‘’和’通用,sql標準用 ’建議用單引號
不標準sql:空格
select some_str from a_table where some_str="need ";
select some_str from a_table where some_str="need";
MySQL自動去除字串尾部空格,上邊兩句一樣
特有關鍵字:limit
作用:獲取指定幾行的資料,(列表切片操作)
用法:
limit n
前n行資料。
limit start,n
從下標為start開始的n條資料,下標從0開始
sql
查
查全部欄位
select * from a_table;
會多一步,會先自動查一遍field list 然後轉換成如下語句
select all_field_name from a_table;
為了讓別人看到用到什麼,建議不寫*
欄位名臨時名
select a_field_name as new_name from a_table;
as可以省略,但建議不省略
between
select some_num from a_table where between a and b;
閉區間:between a and b <=> x>=a and x<=b
符號
萬用字元% 佔位符_
排序
預設asc可不寫
select * from a_table order by a_field_name asc;
select * from a_table order by a_field_name desc;
select all_field_name from a_table order by 5 desc;
下標排序時建議寫出全部欄位名,當表結構改變時第5個未必是你預設要排的欄位
處理函式
Lower(欄位名) :轉小寫
upper(欄位名):轉大寫
substr(欄位名,起始下標,字串長度):擷取子串,首字母下標為1
length(欄位名):取長度
trim(字串):去前後全部空格
str_to_date(字串,格式):字串轉日期,格式例如‘%Y-%m-%d’
date_format:格式化日期
format:設定千分位
round(處理的數字,保留幾位小數=0):四捨五入,保留位數∈整數, 不寫預設0
rand():生成隨機數[0,1]
Ifnull:轉null為另一個值
跨表查詢
內連線:找出符合匹配條件的全部資料
1 等值連線:92版 查詢次數等於笛卡爾積數
2 非等值連線:
3 自連線:
外連結:並不只顯示匹配的結果,還可顯示其中一張表的其他未匹配項,並將匹配值設為null。即外連結=內連線+某表未匹配
左外連線,左表列全顯示(= from後邊第一個全顯示 且 新表再左), left outer 可簡寫為 left
右連線,右表列全顯示(= from後邊第一個全顯示 且 新表再右),right outer 可簡寫為 right
selct
left_table.field_name_1,right_table.field_name_1
from
left_table
right outer join
right_table
on
left_table.field_name_2 = right_table.field_name_2
where
(略)