1.在數(shù)據(jù)庫(kù)語(yǔ)言中,可以采用模糊查詢的方式來(lái)從表中選取想要的數(shù)據(jù)集合
模糊查詢主要是用于處理字符串類(lèi)型的值,其中運(yùn)算符包括:like %_[] ^。
like表示查詢方式為模糊查詢
%表示在查詢的字符串前面或者后面有n個(gè)任意的字符,例如 查找學(xué)生表中含有姓張的 同學(xué)名單時(shí),可以采用下列語(yǔ)句
select*from studentinfo
where Name like '張%'
%可以設(shè)置在字符串后面 也可以設(shè)置在前面,亦或二者均有,表示含有中間字段的數(shù)據(jù)集合。
下劃線_代表一個(gè)模糊的字符,即若查詢名單中名字為兩個(gè)字的張姓同學(xué),可用下列語(yǔ)句
select*from studentinfo
where Name like '張_'
而[]則代表一個(gè)區(qū)段,例如查詢電話號(hào)碼為13開(kāi)頭或者15開(kāi)頭的學(xué)生信息可以用
select*from studentinfo
where phonenumber like '1[3-5]%'? --注意添加%
而^表示非的意思 即
select*from studentinfo
where phonenumber like '1[^3-5]%' --表示查詢手機(jī)號(hào)非13? 15開(kāi)頭的學(xué)生信息
2,關(guān)于查詢中對(duì)于含空值(null)數(shù)據(jù)操作
對(duì)于null的操作,使用is null或者is not null,與其他計(jì)算時(shí)返回null
舉例:
select*from studentinfo
where phonenumber is null--查詢未填手機(jī)電話號(hào)的學(xué)生名單信息
select*from studentinfo
where phonenumber is not null--查詢所有已填手機(jī)電話號(hào)的學(xué)生名單信息
對(duì)于某些字符運(yùn)算的優(yōu)先級(jí)順序:按照小括號(hào),not,比較運(yùn)算符,邏輯運(yùn)算符的順序來(lái)排
3.連接查詢:當(dāng)查詢所需結(jié)果來(lái)自多張表時(shí),需要采用連接查詢的方式
查詢學(xué)生姓名以及所在班級(jí)名稱(chēng),這兩個(gè)信息來(lái)自兩個(gè)表
學(xué)生表:studentinfo和班級(jí)表classinfo
兩個(gè)表的關(guān)系:學(xué)生表中一列cid是引用的班級(jí)表中的cid,故采用連接查詢的關(guān)鍵是找準(zhǔn)那些表,這些表的關(guān)系
示例如下:

結(jié)果

若只想要篩選出學(xué)生姓名和班級(jí)名稱(chēng)的信息,則可以這么寫(xiě):

結(jié)果

在上述使用中出現(xiàn)了,inner join的語(yǔ)句,這叫內(nèi)連接這表示用來(lái)匹配兩個(gè)表的關(guān)系
同樣存在LEFT JOIN 左連接,LEFT JOIN 關(guān)鍵字會(huì)從左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中沒(méi)有匹配的行
RIGHT JOIN右連接 關(guān)鍵字會(huì)右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中沒(méi)有匹配的行。
FULL JION 全連接 只要其中某個(gè)表存在匹配,F(xiàn)ULL JOIN 關(guān)鍵字就會(huì)返回行。
4.多表連接
考慮查詢學(xué)生姓名,考試科目,以及分?jǐn)?shù),這三個(gè)信息來(lái)自三張不同的表
假設(shè)這三張表分別叫A,B,C只需要找到 其中A和B之間的關(guān)系以及B和C的關(guān)系即達(dá)到目的
語(yǔ)句如下:
select*from scoreinfo as score
inner join studentinfo as stu on score.stuid=stu.sid
inner join sbujectinfo as sub on score.stuid=sub.sid
這樣三個(gè)表的連接關(guān)系確立