1. 程式人生 > >sql知識助記(未完待續)

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
    (略)