測試人員必須掌握的SQL語法

什么是sql

SQL是結(jié)構(gòu)化查詢語句(Structured Query Language)

SQL是用于訪問和處理數(shù)據(jù)庫的標(biāo)準(zhǔn)的計算機(jī)語言

不同廠商在標(biāo)準(zhǔn)規(guī)范基礎(chǔ)上進(jìn)行了修改和擴(kuò)展及刻,略有不同。

SQL大小寫不敏感


1.SQL編寫----查詢語句-語法

SELECT

[DISTINCT]? 顯示字段列表

[FROM 單表或多表關(guān)聯(lián)

[WHERE 行記錄過濾條件]

[GROUP BY 分組字段]

[HAVING 條件]

[ORDER BY 排序字段]

[LIMIT 保留記錄數(shù)或區(qū)間]

(一)查詢所有學(xué)生的成績表

1.select * from score竞阐;

(二)查詢所有學(xué)生及其考試科目信息(不去重)

select mid , sid, cid from score;


(三)查詢學(xué)生表所有學(xué)生姓名及考試和性別暑劝,要求結(jié)果中列表標(biāo)題為 “姓名”骆莹、“性別”

select sname 姓名,gender as 性別 from student

(四)關(guān)鍵字distinct(去重)查詢成績表中成績担猛,根據(jù)根據(jù)學(xué)號去重

select distinct? sid from score;

(五)查詢學(xué)生表中zhangsan的信息? (查詢語句 ----- where 單條件)

select * from student where sname = "zhangsan"

(六)查詢學(xué)生表不是中zhangsan的信息? (查詢語句 ----- where? (not) )

select * from student where not sname = "zhangsan"

(七)查詢查詢成績表學(xué)號為1并且分?jǐn)?shù)為80的成績? (查詢語句 -----where 多條件(and))

select *? from score where sid ="1" and score ="80"

(八)查詢所有學(xué)號為1和為2的科目的成績信息 (查詢語句----- where多條件(or)

select * from score? where sid ='1' or sid ='2';同時也等價于select * from score where sid in ('1', '2');

(九)查詢姓zhang san 同學(xué)的成績信息

select * from score? where sname like "%zhang%" (查詢語句 ----- where條件(like)

(十)查詢每位學(xué)生的平均成績

select sid , avg(score)as 平均成績 from score group by? sid; (查詢語句 -----group by)

平時在測試工作過程中使用的聚合函數(shù)有:求和:sum(字段)幕垦,最大/最小值:max(字段)min(字段),記錄條數(shù):count(*)

(十一)查詢平均成績不低于85的學(xué)生及成績

selelct sid , avg(score) as 平均成績 from score group by sid having avg(score) >= 85; (查詢語句 ------ having)

(十二)查詢成績信息傅联,要求按學(xué)號降序排序

select * from score order by sid desc ; (查詢語句 ----- order by)

(十三)查詢成績信息先改,要求按學(xué)號降序排序,成績升序排序

select * from score order by sid desc, score asc;? (查詢語句 -----order by 多字段)

(十四)根據(jù)學(xué)號排序查詢前三名的學(xué)生成績信息

select sid , score from score where sid in ('1', '2','3') order by score desc limit 3; (SQL編寫-----limit)

(十五)查詢平均分高于85的學(xué)生學(xué)號及平均分蒸走,要求平均分降序排列

select sid , avg(score) as 平均成績 from score??where sid in ('1', '2','3') group by sid having avg(score)>85 order by avg(score) desc;

2.SQL編寫 ----- 插入語句insert?

(一)INSERT INTO 表名稱 VALUES(值1仇奶,值2,.........)

(二) 也可以指定字段插入(未指定字段按默認(rèn)值設(shè)置

)INSERT INTO 表名稱(列1比驻,列2该溯,....)VALUES(值1,值2,.....)

例如:將一班李四的英語成績88插入

insert into tb_score (name ,class subject, score )value ('李四', '一班', '英語', '88');等價于

insert into tb_score value ("李四","一班", "英語", "88");

3.SQL編寫 ----- 修改語句update

(一)APDATE 表名稱 SET 列名稱 = 新值 WHERE 條件别惦;

例如:在一張成績表中將所有數(shù)學(xué)成績減去5分

update t_score set score = score -5 where subject = "數(shù)學(xué)"

4.SQL編寫 ----- 刪除語句delete

(一)DELETE? FROM 表名稱 WHERE 條件狈茉;

(二)TRUNCATE 可以全表數(shù)據(jù)清空,效率高掸掸,但缺點是不能回滾氯庆。語法:truncate table 表名稱;

例如:將成績表里所有的數(shù)學(xué)成績刪除

delete from t_score where subject ="數(shù)學(xué)"扰付;

5.SQL編寫--表連接--交叉連接

例如:一張學(xué)生表(t_student)堤撵,一張獲獎信息表(t_honors)?

交叉連接的關(guān)鍵字:cross join

例如:select * from t_student cross ioin t_honors;

6.SQL編寫---表連接--內(nèi)連接

例如:一張學(xué)生表(t_student),一張獲獎信息表(t_honors)?

交叉連接的關(guān)鍵字:inner join

例如:select * from t_student as a inner join t_honors as b? on a.id=b.id;

7.SQL編寫---表連接--自然連接

例如:一張學(xué)生表(t_student)羽莺,一張獲獎信息表(t_honors)

交叉連接的關(guān)鍵字:nature? join

例如:select * from t_student as anature? join t_honors as b? on a.id=b.id;

8.SQL編寫---表連接--左連接

例如:一張學(xué)生表(t_student)粒督,一張獲獎信息表(t_honors)

交叉連接的關(guān)鍵字:left? join

例如:select * from t_student as? a left join?t_honors as b? on a.id=b.id;

9.SQL編寫---表連接--右連接

例如:一張學(xué)生表(t_student),一張獲獎信息表(t_honors)

交叉連接的關(guān)鍵字:right? join

例如:select * from t_student as? a right? join?t_honors as b? on a.id=b.id;

10.SQL編寫---表連接--全連接

例如:一張學(xué)生表(t_student)禽翼,一張獲獎信息表(t_honors)

交叉連接的關(guān)鍵字:full? join

例如:select * from t_student as? a?full?join?t_honors as b? on a.id=b.id;

11.數(shù)據(jù)庫基本概念----索引

索引是為了加速對表中數(shù)據(jù)行的檢索而創(chuàng)建的一種分散的存儲結(jié)構(gòu)

優(yōu)點:加快查詢屠橄,排序和分組的速度

缺點:表數(shù)據(jù)新增族跛,修改,刪除時索引頁需要更新锐墙。頻繁變動的表不適合設(shè)置索引礁哄。

12.數(shù)據(jù)庫基本概念----視圖

視圖是查詢結(jié)果集,使用上同表溪北,是一種虛擬表

創(chuàng)建學(xué)生表和成績表的視圖

例如:create view aaa as

select a.sname, b.score from student as a? right? join score as b on a.sid=b.sid;

創(chuàng)建成功之后桐绒,我們就可以查詢創(chuàng)建的視圖表:select * from aaa

視圖的優(yōu)點:1.聚焦特定的數(shù)據(jù) 2.簡單操作 3.安全性 4.邏輯獨立性

13.數(shù)據(jù)庫基本概念-----存儲過程

存儲過程:一組為了完成特定功能的SQL語句集。通過指定存儲過程名及其參數(shù)(若有)來調(diào)用執(zhí)行它之拨。有

存儲過程:分為有參數(shù)和無參數(shù)兩種類型

(一)有返回值的例子:(計算depb1表的存款余額茉继,存儲過程函數(shù)名:sum_balance)

BEGIN?

# 存款余額求和后,保留兩位小數(shù)蚀乔,轉(zhuǎn)化為萬元返回

select? round(sum(balance) / 10000,2) into @aa form depb1;

RETURN @aa;

END

select? ?sum_balance()

(二)無返回值的例子:(更新余額利潤,存儲過程函數(shù)名:update_balance_rate?)

BEGIN?

# Routine body goes? here .....

update depe1?

set rate = rate * factor

where balance > threshold;

END

call?update_balance_rate(10000,1.1)

14.數(shù)據(jù)庫基本概念 ------觸發(fā)器

觸發(fā)器即一觸即發(fā)

包括:觸發(fā)條件(insert烁竭,update,delete/前吉挣、后)派撕、觸發(fā)動作

觸發(fā)器是一種特殊的存儲過程。

和存儲過程不同的是:不是調(diào)用執(zhí)行睬魂,而是觸發(fā)執(zhí)行终吼。

例如:1.修改學(xué)生表的學(xué)生名時,將其它表中的學(xué)生名同步修改氯哮;

例如:2.商品價格調(diào)整幅度超過30%時际跪,將該異常波動記錄到監(jiān)控表中;

例如:3.敏感數(shù)據(jù)被人修改后喉钢,在日志表中記錄操作信息垫卤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市出牧,隨后出現(xiàn)的幾起案子穴肘,更是在濱河造成了極大的恐慌,老刑警劉巖舔痕,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件评抚,死亡現(xiàn)場離奇詭異,居然都是意外死亡伯复,警方通過查閱死者的電腦和手機(jī)慨代,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啸如,“玉大人侍匙,你說我怎么就攤上這事述么”┕梗” “怎么了语淘?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵栅炒,是天一觀的道長。 經(jīng)常有香客問我说莫,道長杨箭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任储狭,我火速辦了婚禮互婿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘辽狈。我一直安慰自己慈参,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布刮萌。 她就那樣靜靜地躺著驮配,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尊勿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天畜侦,我揣著相機(jī)與錄音元扔,去河邊找鬼。 笑死旋膳,一個胖子當(dāng)著我的面吹牛澎语,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播验懊,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼擅羞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了义图?” 一聲冷哼從身側(cè)響起减俏,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎碱工,沒想到半個月后娃承,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡怕篷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年历筝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廊谓。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡梳猪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蒸痹,到底是詐尸還是另有隱情春弥,我是刑警寧澤呛哟,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站惕稻,受9級特大地震影響竖共,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜俺祠,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一公给、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蜘渣,春花似錦淌铐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拾碌,卻和暖如春吐葱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背校翔。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工弟跑, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人防症。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓孟辑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蔫敲。 傳聞我的和親對象是個殘疾皇子饲嗽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容