SQL易錯點學習
例:table webs
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | taobao | https://www.taobao.com/ | 2 | CN | | 3 | kaola | https://www.kaola.com/ | 3 | CN | | 4 | you163 | http://you.163.com/ | 4 | CN | | 5 | Facebook | https://www.facebook.com/ | 5 | USA | +----+--------------+---------------------------+-------+---------+
1.SQL SELECT DISTINCT:用於返回唯一不同的值,可以去掉重複的值
SELECT DISTINCT country FROM webs; -----USA,CN
2.SELECT * FROM webs WHERE country = ‘CN’ and alexa = 3;
文字欄位使用了單引號,如果是數值欄位,請不要使用引號.
WHERE 子句並不一定帶比較運算子,當不帶運算子時,會執行一個隱式轉換。當 0 時轉化為 false,1 轉化為 true.
between and :注意:大於等於 1500 且小於等於 3000, 1500 為下限,3000 為上限,下限在前,上限在後,查詢的範圍包涵有上下限的值
邏輯運算的優先順序:() > not > and > or
3.ORDER BY: SELECT * FROM webs ORDER BY country , alexa;
ASC 順序 | DESC 倒序
ORDER BY 多列的時候,先按照第一個country 排序,在按照第二個alexa排序;
order by A desc,B – 這個時候 A 降序排列,B 升序排列
order by A ,B desc – 這個時候 A 升序,B 降序排列
4.insert into select 和select into from 的區別:
–insert into webs select * from web where neza = ‘neza’ --插入一行,要求表webs 必須存在
–select * into webs from web where neza=‘neza’ --也是插入一行,要求表webs 不存在 (oracle不支援此寫法)
oracle寫法:create table A as select * from B where 。。。
5.update:在 MySQL 中可以通過設定 sql_safe_updates 這個自帶的引數來解決,當該引數開啟的情況下,你必須在update 語句後攜帶 where 條件,否則就會報錯。
set sql_safe_updates=1; 表示開啟該引數
6.delete:SQL關於刪除的三個語句:DROP、TRUNCATE、 DELETE 的區別
DROP webs; – 刪除表webs,並釋放空間,將webs刪除的一乾二淨。
TRUNCATE webs; --刪除表webs裡的內容,並釋放空間,但不刪除表的定義,表的結構還在(注意:truncate 命令刪除的資料是不可以恢復的)
DELETE:
1.刪除指定資料
DELETE FROM webs WHERE alexa = 1 ;
2.刪除整個表
僅刪除表test內的所有內容,保留表的定義,不釋放空間。
DELETE FROM webs 或者 DELETE FROM webs ;
DELETE * FROM webs 或者 DELETE * FROM webs ;
速度:一般來說: drop > truncate > delete
安全性: 小心使用 drop 和 truncate, 尤其沒有備份的時候。否則哭都來不及
使用上, 想刪除部分資料行用 delete, 注意帶上 where 子句,delete 命令刪除的資料將儲存在系統回滾段中,需要的時候,資料可以回滾恢復,而 truncate 命令刪除的資料是不可以恢復的。
想刪除表, 當然用 drop。