SQL語法很難?其實只需要記住這部分行了

這裏給大家分享一個快速記憶SQL命令的一個訣竅:

牢牢記住下面這幾個特殊的語句,SQL命令將不是問題

字符串問題

在標準 SQL 中,字符串使用的是單引號。
如果字符串本身也包括單引號,則使用兩個單引號(注意,不是雙引號,字符串中的雙引號不需要另外轉義)

一、select

1.語句【記住】

select *
from user
where username='xiaomin'
order by user_id DESC 
limit 1 offset 2 或者 limit 2,1

'order by user_id DESC' :根據 user_id 倒序排列。如果沒有 DESC 表示正序排列  
'limit' : 設定返回的記錄數  
'offset' : 設定查詢時偏移個數,默認爲0。

2. 難點

問題:

LIMIT 2,1
LIMIT 1 OFFSET 2

這兩個語句爲什麼表達的意思是一樣的呢?

解答:

記住三點:
1.在計算機中索引都是從0開始的。但是LIMIT、OFFSET後面的數字只表示個數,和索引沒有關係。
2.一般涉及到偏移參數(偏移3行),這樣的描述都不包含所描述的那個個數,即3行數據已經不在“視野”內,偏移到“視野外”了,看不見,自然就不包含了。
3.一般涉及到索引參數(截取索引3到索引5),這樣的描述包含索引2,不包含索引5

LIMIT 2,1 : 表示偏移2行數據,獲取1個數據。即獲取的是第3行數據
LIMIT 1 OFFSET 2 : 表示獲取1個數據,但是偏移2行數據,即獲取的也是第3行數據

題外話:
Java和Javascript在字符串截取的時候都有一個方法:substring(),都是以索引的值作爲參數的。根據上面的描述,下面的結果不難得出來。

//表示開始的索引值和結束的索引值

"0123456789".substring(3); //3456789
"0123456789".substring(3,5); //34

二、insert

    insert into user(name,age) values ('song',18)

三、update

update user set age=18 where id=3

三、delete

delete from user where id=4

四、多表查詢

1. join ... on ... (內連接,或等值連接)

連接兩張表,只返回滿足條件的數據。

user 表和 permission表:

select user.name , permission.type from user
join permission on permission.id = user.id

2. left join ... on ... (左連接)

獲取左表所有記錄,即使右表沒有對應匹配的記錄,並將沒有匹配的右表字段記爲null。

user 表和 permission表:

select user.name , permission.type from user
left join permission on permission.id = user.id

當然上面的僅僅可以滿足日常開發需求,但是對於本身就不容易記的SQL語句,你是不是又學到了比較好的記憶方法呢?

希望本文對你有幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章