日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

找工作筆試面試那些事兒(10)---SQL語句總結(jié)

系統(tǒng) 1779 0

SQL語句中常用關(guān)鍵詞及其解釋如下:

1)SELECT

將資料從數(shù)據(jù)庫中的表格內(nèi)選出,兩個(gè)關(guān)鍵字:從 (FROM) 數(shù)據(jù)庫中的表格內(nèi)選出 (SELECT)。語法為
SELECT "欄位名" FROM "表格名"。

2)DISTINCT
在上述 SELECT 關(guān)鍵詞后加上一個(gè) DISTINCT 就可以去除選擇出來的欄位中的重復(fù),從而完成求得這個(gè)表格/欄位內(nèi)有哪些不同的值的功能。語法為
SELECT DISTINCT "欄位名" FROM "表格名"。

3)WHERE
這個(gè)關(guān)鍵詞可以幫助我們選擇性地抓資料,而不是全取出來。語法為
SELECT "欄位名" FROM "表格名" WHERE "條件"?

4)AND OR
上例中的 WHERE 指令可以被用來由表格中有條件地選取資料。這個(gè)條件可能是簡單的 (像上一頁的例子),也可能是復(fù)雜的。復(fù)雜條件是由二或多個(gè)簡單條件透過 AND 或是 OR 的連接而成。語法為:
SELECT "欄位名" ?FROM "表格名" ?WHERE "簡單條件" ?{[AND|OR] "簡單條件"}+

5)IN
在 SQL 中,在兩個(gè)情況下會(huì)用到 IN ?這個(gè)指令;這一頁將介紹其中之一:與 WHERE 有關(guān)的那一個(gè)情況。在這個(gè)用法下,我們事先已知道至少一個(gè)我們需要的值,而我們將這些知道的值都放入 IN ?這個(gè)子句。語法為:
SELECT "欄位名" ?FROM "表格名" ?WHERE "欄位名" IN ('值一', '值二', ...) ?

6)BETWEEN
IN 這個(gè)指令可以讓我們依照一或數(shù)個(gè)不連續(xù) (discrete)的值的限制之內(nèi)抓出資料庫中的值,而 BETWEEN 則是讓我們可以運(yùn)用一個(gè)范圍 (range) ?內(nèi)抓出資料庫中的值,語法為:
SELECT "欄位名" ?FROM "表格名" WHERE "欄位名" BETWEEN '值一' AND '值二'?

7)LIKE
LIKE 是另一個(gè)在 WHERE ?子句中會(huì)用到的指令。基本上, LIKE ?能讓我們依據(jù)一個(gè)模式(pattern) 來找出我們要的資料。語法為:
SELECT "欄位名" ?FROM "表格名" ?WHERE "欄位名" LIKE {模式}?

8)ORDER BY
我們經(jīng)常需要能夠?qū)⒆コ龅馁Y料做一個(gè)有系統(tǒng)的顯示。這可能是由小往大 (ascending) ?或是由大往小(descending)。在這種情況下,我們就可以運(yùn)用 ORDER BY 這個(gè)指令來達(dá)到我們的目的。語法為:
SELECT "欄位名" ?FROM "表格名 [WHERE "條件"] ORDER BY "欄位名" [ASC, DESC]?

9)函數(shù)
函數(shù)允許我們能夠?qū)@些數(shù)字的型態(tài)存在的行或者列做運(yùn)算,包括 AVG (平均)、COUNT (計(jì)數(shù))、MAX (最大值)、MIN (最小值)、SUM (總合)。語法為:
SELECT "函數(shù)名"("欄位名") FROM "表格名" ?

10)COUNT
這個(gè)關(guān)鍵詞能夠幫我我們統(tǒng)計(jì)有多少筆資料被選出來,語法為:
SELECT COUNT("欄位名") FROM "表格名"

11)GROUP BY
GROUP BY 語句用于結(jié)合合計(jì)函數(shù),根據(jù)一個(gè)或多個(gè)列對結(jié)果集進(jìn)行分組。語法為:
SELECT "欄位1", SUM("欄位2") ?FROM "表格名" ?GROUP BY "欄位1"?

12)HAVING
該關(guān)鍵詞可以幫助我們對函數(shù)產(chǎn)生的值來設(shè)定條件。語法為:
SELECT "欄位1", SUM("欄位2") ?FROM "表格名" ?GROUP BY "欄位1" ?HAVING (函數(shù)條件) ?

13)ALIAS
我們可以通過ALIAS為列名稱和表名稱指定別名,語法為:
SELECT "表格別名"."欄位1" "欄位別名" ?FROM "表格名" "表格別名" ?

下面為一個(gè)例子,通過它我們應(yīng)該能很好地掌握以上關(guān)鍵詞的使用方法。


Student(S#,Sname,Sage,Ssex) 學(xué)生表
Course(C#,Cname,T#) 課程表
SC(S#,C#,score) 成績表
Teacher(T#,Tname) 教師表


問題:
1、查詢“001”課程比“002”課程成績高的所有學(xué)生的學(xué)號;
select a.S#
from (select s#,score from SC where C#=’001′) a,
(select s#,score from SC where C#=’002′) b
where a.score>b.score and a.s#=b.s#;

2、查詢平均成績大于60分的同學(xué)的學(xué)號和平均成績;
select S#,avg(score)
from sc
group by S# having avg(score) >60;

3、查詢所有同學(xué)的學(xué)號、姓名、選課數(shù)、總成績;
select Student.S#,Student.Sname,count(SC.C#),sum(score)
from Student left Outer join SC on Student.S#=SC.S#
group by Student.S#,Sname

4、查詢姓“李”的老師的個(gè)數(shù);
select count(distinct(Tname))
from Teacher
where Tname like ‘李%’;

5、查詢沒學(xué)過“葉平”老師課的同學(xué)的學(xué)號、姓名;
select Student.S#,Student.Sname
from Student
where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’葉平’);

6、查詢學(xué)過“001”并且也學(xué)過編號“002”課程的同學(xué)的學(xué)號、姓名;
select Student.S#,Student.Sname
from Student,SC

where Student.S#=SC.S# and SC.C#=’001′and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#=’002′);


7、查詢學(xué)過“葉平”老師所教的所有課的同學(xué)的學(xué)號、姓名;
select S#,Sname
from Student
where S# in
(select S#
from SC ,Course ,Teacher
where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’葉平’ group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname=’葉平’));

8、查詢所有課程成績小于60分的同學(xué)的學(xué)號、姓名;
select S#,Sname
from Student
where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);

9、查詢沒有學(xué)全所有課的同學(xué)的學(xué)號、姓名;
select Student.S#,Student.Sname
from Student,SC
where Student.S#=SC.S#
group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);

10、查詢至少有一門課與學(xué)號為“1001”的同學(xué)所學(xué)相同的同學(xué)的學(xué)號和姓名;
select S#,Sname
from Student,SC
where Student.S#=SC.S# and C# in (select C# from SC where S#='1001');

11、刪除學(xué)習(xí)“葉平”老師課的SC表記錄;
Delect SC
from course ,Teacher
where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='葉平';

12、查詢各科成績最高和最低的分:以如下形式顯示:課程ID,最高分,最低分
SELECT L.C# 課程ID,L.score 最高分,R.score 最低分
FROM SC L ,SC R
WHERE L.C# = R.C#
and
L.score = (SELECT MAX(IL.score)
FROM SC IL,Student IM
WHERE IL.C# = L.C# and IM.S#=IL.S#
GROUP BY IL.C#)
and
R.Score = (SELECT MIN(IR.score)
FROM SC IR
WHERE IR.C# = R.C#
GROUP BY IR.C# );

13、查詢學(xué)生平均成績及其名次
SELECT 1+(SELECT COUNT( distinct 平均成績)
FROM (SELECT S#,AVG(score) 平均成績
FROM SC
GROUP BY S# ) T1
WHERE 平均成績 > T2.平均成績) 名次, S# 學(xué)生學(xué)號,平均成績
FROM (SELECT S#,AVG(score) 平均成績 FROM SC GROUP BY S# ) T2
ORDER BY 平均成績 desc;

14、查詢各科成績前三名的記錄:(不考慮成績并列情況)
SELECT t1.S# as 學(xué)生ID,t1.C# as 課程ID,Score as 分?jǐn)?shù)
FROM SC t1
WHERE score IN (SELECT TOP 3 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC)
ORDER BY t1.C#;

15、查詢每門功成績最好的前兩名
SELECT t1.S# as 學(xué)生ID,t1.C# as 課程ID,Score as 分?jǐn)?shù)
FROM SC t1
WHERE score IN (SELECT TOP 2 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC )
ORDER BY t1.C#;

找工作筆試面試那些事兒(10)---SQL語句總結(jié)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 邳州市| 屯昌县| 华亭县| 建德市| 蒲城县| 鄂伦春自治旗| 中阳县| 固始县| 许昌市| 罗平县| 洱源县| 海南省| 邓州市| 扶余县| 阳泉市| 望都县| 开远市| 浦县| 武穴市| 东丽区| 大竹县| 鞍山市| 西宁市| 东平县| 临桂县| 宜川县| 绍兴县| 荔浦县| 韩城市| 宜宾市| 马边| 洛宁县| 眉山市| 威远县| 韩城市| 浦县| 闵行区| 余干县| 扬州市| 涟源市| 兴安县|