select系列
1、where用法示例:
SELECT * FROM Websites WHERE country='CN';
查詢表中cuuntry為‘CN’的數(shù)據(jù)燎悍,如字段為數(shù)字无牵,不加""
1.1拗馒、同時(shí)滿足兩個(gè)條件:
Select * from emp where sal > 2000 and sal < 3000;
關(guān)鍵字 and
1.2冗茸、滿足兩個(gè)條件中的一個(gè)既為通過:
Select * from emp where sal > 2000 or comm > 500;
關(guān)鍵字 or
1.3崖飘、查詢不滿足改條件的數(shù)據(jù):select * from emp where not sal > 1500;關(guān)鍵字 not
1.4榴捡、三個(gè)關(guān)鍵字判斷的優(yōu)先級(jí)為not>and>or
and與or結(jié)合:
"Websites" 表中選取 alexa 排名大于 "15" 且國家為 "CN" 或 "USA" 的所有網(wǎng)站示例:
SELECT * FROM Websites WHERE alexa > 15 AND (country='CN' OR country='USA');
特殊判斷:
1.5、查詢?yōu)榭盏臄?shù)據(jù):
Select * from emp where comm is null;
關(guān)鍵字is null
1.6朱浴、查詢一個(gè)區(qū)間的數(shù)據(jù):
Select * from emp where sal between 1500 and 3000;
關(guān)鍵字 between and
注意:取值的下限(小值)在前吊圾,下限(大值)在后,且包含該值
1.7翰蠢、查詢表中有存在于in后列表中的數(shù)據(jù):
Select * from emp where sal in (5000,3000,1500);
關(guān)鍵字:in项乒,來自于,顯示表中存在in關(guān)鍵字之后的數(shù)據(jù)
1.8梁沧、模糊查詢以M為開頭的所有數(shù)據(jù):
Select * from emp where ename like 'M%';
關(guān)鍵字:{
‘%:表示多個(gè)值檀何,_:表示一個(gè)字符’,
‘M%:表示查詢以M開頭的數(shù)據(jù)’廷支,
‘%M%:表示查詢包含M的所有數(shù)據(jù)’频鉴,
‘%M:表示查詢所有以M結(jié)尾的數(shù)據(jù)’,
}
1.9恋拍、不帶比較運(yùn)算符的where語句垛孔,當(dāng)不帶運(yùn)算符時(shí),會(huì)執(zhí)行一個(gè)隱式轉(zhuǎn)換施敢。當(dāng) 0 時(shí)轉(zhuǎn)化為 false周荐,1 轉(zhuǎn)化為 true。
如:
SELECT studentNO FROM student WHERE 0悯姊。
返回一個(gè)空值羡藐,因每一行記錄都返回FLASE
SELECT studentNO FROM student WHERE 1。
返回該表中所有的數(shù)據(jù)悯许,因?yàn)槊恳恍械膚here都返回一個(gè)TRUE```
2仆嗦、其他特殊關(guān)鍵字:
2.1、去掉該列的重復(fù)的值:
SELECT DISTINCT country FROM Websites;
關(guān)鍵字 distinct
2.2先壕、order by 對(duì)結(jié)果一個(gè)列或多個(gè)進(jìn)行排序瘩扼,默認(rèn)升序,desc裝換為倒敘
示例1垃僚、
SELECT * FROM Websites ORDER BY alexa; 查詢所有數(shù)據(jù)集绰,并按照alexa排序,ascall碼
示例2谆棺、
SELECT * FROM Websites ORDER BY alexa DESC;
查詢所有數(shù)據(jù)栽燕,并按照alexa進(jìn)行降序排序
示例3罕袋、
SELECT * FROM Websites ORDER BY country,alexa;
查詢所有數(shù)據(jù),并按照country與alexa列進(jìn)行降序排序
示例4碍岔、
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
以逆字母順序顯示公司名稱浴讯,并以數(shù)字順序顯示順序號(hào)
order by A,B 這個(gè)時(shí)候都是默認(rèn)按升序排列
order by A desc,B 這個(gè)時(shí)候 A 降序,B 升序排列
order by A ,B desc 這個(gè)時(shí)候 A 升序蔼啦,B 降序排列
update更新語句:
1榆纽、查詢name為‘inter’的 alexa 排名更新為 5000,country 改為 USA捏肢。
UPDATE Websites SET alexa='5000', country='USA' WHERE name='inter';
set關(guān)鍵字奈籽,
注意:執(zhí)行語句省略where時(shí) UPDATE Websites SET alexa='5000', country='USA'
會(huì)把表中所有數(shù)據(jù)改為:slexa='5000',country=‘USA’
如:在 MySQL 中可以通過設(shè)置 sql_safe_updates 這個(gè)自帶的參數(shù)來解決,當(dāng)該參數(shù)開啟的情況下鸵赫,
必須在update 語句后攜帶 where 條件衣屏,否則就會(huì)報(bào)錯(cuò)。
delete刪除語句:
1辩棒、從 "Websites" 表中刪除網(wǎng)站名為 "百度" 且國家為 CN 的網(wǎng)站 勾拉。
DELETE FROM Websites WHERE name='百度' AND country='CN';
2、刪除表中所有數(shù)據(jù):
DELETE FROM table_name;
3盗温、sql中關(guān)于刪除的三個(gè)語句:DROP、TRUNCATE成肘、 DELETE 的區(qū)別卖局。
drop test 指刪除該表的所有數(shù)據(jù)及其結(jié)構(gòu)
truncate test 指刪除該表的數(shù)據(jù),保留表結(jié)構(gòu)
delete 刪除指定的數(shù)據(jù):delete from test where age=30 and country='US'
相同點(diǎn):drop双霍、delete砚偶、truncate 都是刪除表的內(nèi)容。
不同點(diǎn):
delete:刪除表的內(nèi)容洒闸,表的結(jié)構(gòu)還存在染坯,不釋放空間,可以回滾恢復(fù)丘逸;
drop:刪除表內(nèi)容和結(jié)構(gòu)单鹿,釋放空間,沒有備份表之前要慎用深纲;
truncate:刪除表的內(nèi)容仲锄,表的結(jié)構(gòu)存在,可以釋放空間,沒有備份表之前要慎用湃鹊;
補(bǔ)充:
mysql 中可以通過參數(shù) sql_safe_updates 來限制 update/delete儒喊,防止全表更新或刪除。
以下 3 種情況在采用此參數(shù)的情況下都不能正常進(jìn)行操作:
1: 沒有加where條件的全表更新操作;
2: 加了 where 條件字段币呵,但是 where 字段沒有走索引的表更新;
3: 全表 delete 沒有加 where 條件或者 where 條件沒有走索引怀愧。
這三種情況下都會(huì)拋出異常,無法執(zhí)行。
下面是 sql_safe_updates 變量為 0 和 1 時(shí)的取值說明:
sql_safe_updates 有兩個(gè)取值 0 和 1芯义, 即 off 和 on哈垢。
sql_safe_updates = 1 (或 sql_safe_updates = on ) 時(shí),不帶 where 和 limit 條件的 update 和 delete 操作語句是無法執(zhí)行的毕贼,即使是有 where 和 limit 條件但不帶 key column 限制條件的 update 和 delete 也不能執(zhí)行温赔。sql_safe_updates = 0 (或 sql_safe_updates = off ) 時(shí),無 where 和 limit 條件的 update 和 delete 操作將會(huì)順利執(zhí)行鬼癣。很顯然陶贼,在一般的 mysql 中此參數(shù)的默認(rèn)值是 1。
在 sql_safe_updates = on 時(shí)待秃,采取刪除或更新全表時(shí)拋出的錯(cuò)誤碼為 1175拜秧。