成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

當前位置:首頁>>開發(fā)編程>>數(shù)據(jù)庫>>新聞內(nèi)容
簡單SQL語句小結(jié)
作者:sunjx119 發(fā)布時間:2004-7-24 9:48:31 文章來源:CSDN

  為了大家更容易理解我舉出的SQL語句,本文假定已經(jīng)建立了一個學生成績管理數(shù)據(jù)庫,全文均以學生成績的管理為例來描述。

  1.在查詢結(jié)果中顯示列名:

  a.用as關(guān)鍵字:select name as '姓名' from students order by age

  b.直接表示:select name '姓名' from students order by age

  2.精確查找:

  a.用in限定范圍:select * from students where native in ('湖南', '四川')

  b.between...and:select * from students where age between 20 and 30

  c.“=”:select * from students where name = '李山'

  d.like:select * from students where name like '李%' (注意查詢條件中有“%”,則說明是部分匹配,而且還有先后信息在里面,即查找以“李”開頭的匹配項。所以若查詢有“李”的所有對象,應(yīng)該命令:'%李%';若是第二個字為李,則應(yīng)為'_李%'或'_李'或'_李_'。)

  e.[]匹配檢查符:select * from courses where cno like '[AC]%' (表示或的關(guān)系,與"in(...)"類似,而且"[]"可以表示范圍,如:select * from courses where cno like '[A-C]%')

  3.對于時間類型變量的處理

  a.smalldatetime:直接按照字符串處理的方式進行處理,例如:
select * from students where birth > = '1980-1-1' and birth <= '1980-12-31'

  4.集函數(shù)

  a.count()求和,如:select count(*) from students (求學生總?cè)藬?shù))

  b.avg(列)求平均,如:select avg(mark) from grades where cno=’B2’

  c.max(列)和min(列),求最大與最小

  5.分組group

  常用于統(tǒng)計時,如分組查總數(shù):
select gender,count(sno)
from students
group by gender
(查看男女學生各有多少)

  注意:從哪種角度分組就從哪列"group by"

  對于多重分組,只需將分組規(guī)則羅列。比如查詢各屆各專業(yè)的男女同學人數(shù) ,那么分組規(guī)則有:屆別(grade)、專業(yè)(mno)和性別(gender),所以有"group by grade, mno, gender"

select grade, mno, gender, count(*)
from students
group by grade, mno, gender

  通常group還和having聯(lián)用,比如查詢1門課以上不及格的學生,則按學號(sno)分類有:

select sno,count(*) from grades
where mark<60
group by sno
having count(*)>1

  6.UNION聯(lián)合

  合并查詢結(jié)果,如:

SELECT * FROM students
WHERE name like ‘張%’
UNION [ALL]
SELECT * FROM students
WHERE name like ‘李%’

  7.多表查詢

  a.內(nèi)連接

select g.sno,s.name,c.coursename
from grades g JOIN students s ON g.sno=s.sno
JOIN courses c ON g.cno=c.cno
(注意可以引用別名)
b.外連接
b1.左連接
select courses.cno,max(coursename),count(sno)
from courses LEFT JOIN grades ON courses.cno=grades.cno
group by courses.cno

  左連接特點:顯示全部左邊表中的所有項目,即使其中有些項中的數(shù)據(jù)未填寫完全。

  左外連接返回那些存在于左表而右表中卻沒有的行,再加上內(nèi)連接的行。

  b2.右連接

  與左連接類似

  b3.全連接

select sno,name,major
from students FULL JOIN majors ON students.mno=majors.mno

  兩邊表中的內(nèi)容全部顯示

  c.自身連接

select c1.cno,c1.coursename,c1.pno,c2.coursename
from courses c1,courses c2 where c1.pno=c2.cno

  采用別名解決問題。

  d.交叉連接

select lastname+firstname from lastname CROSS JOIN firstanme

  相當于做笛卡兒積

  8.嵌套查詢

  a.用關(guān)鍵字IN,如查詢李山的同鄉(xiāng):

select * from students
where native in (select native from students where name=’ 李山’)

  b.使用關(guān)鍵字EXIST,比如,下面兩句是等價的:

select * from students
where sno in (select sno from grades where cno=’B2’)

select * from students where exists
(select * from grades where
grades.sno=students.sno AND cno=’B2’)

  9.關(guān)于排序order

  a.對于排序order,有兩種方法:asc升序和desc降序

  b.對于排序order,可以按照查詢條件中的某項排列,而且這項可用數(shù)字表示,如:

select sno,count(*) ,avg(mark) from grades
group by sno
having avg(mark)>85
order by 3

  10.其他

  a.對于有空格的識別名稱,應(yīng)該用"[]"括住。

  b.對于某列中沒有數(shù)據(jù)的特定查詢可以用null判斷,如select sno,courseno from grades where mark IS NULL

  c.注意區(qū)分在嵌套查詢中使用的any與all的區(qū)別,any相當于邏輯運算“||”而all則相當于邏輯運算“&&”

  d.注意在做否定意義的查詢是小心進入陷阱:

  如,沒有選修‘B2’課程的學生 :

select students.*
from students, grades
where students.sno=grades.sno
AND grades.cno <> ’B2’

  上面的查詢方式是錯誤的,正確方式見下方:

select * from students
where not exists (select * from grades
where grades.sno=students.sno AND cno='B2')

  11.關(guān)于有難度多重嵌套查詢的解決思想:

  如,選修了全部課程的學生:

select *
from students
where not exists ( select *
from courses
where NOT EXISTS
(select *
from grades
where sno=students.sno
AND cno=courses.cno))

  最外一重:從學生表中選,排除那些有課沒選的。用not exist。由于討論對象是課程,所以第二重查詢從course表中找,排除那些選了課的即可。


最新更新
·SQL Server 2005刪除用戶失敗
·SQL Server中刪除重復(fù)數(shù)據(jù)的
·經(jīng)典SQL語句大全
·SQL Server 2005與ASP.NET/A
·三種查看MySQL數(shù)據(jù)庫版本的方
·SQL Server 2005 Express 遠
·啟用SQL Server 2005 Expres
·Windows下如何安裝或卸載MyS
·解決MySQL5數(shù)據(jù)庫連接超時問
·清除SQL Server日志的兩種方
相關(guān)信息
·SQL Server 2005刪除用戶失敗解決方法(15138錯誤)
·SQL Server中刪除重復(fù)數(shù)據(jù)的幾個方法
·經(jīng)典SQL語句大全
·SQL Server 2005與ASP.NET/ASP連接設(shè)置
·三種查看MySQL數(shù)據(jù)庫版本的方法
·SQL Server 2005 Express 遠程訪問設(shè)置方法
·啟用SQL Server 2005 Express的sa用戶名
·Windows下如何安裝或卸載MySQL服務(wù)
·解決MySQL5數(shù)據(jù)庫連接超時問題
·清除SQL Server日志的兩種方法
畫心
愚愛
偏愛
火苗
白狐
畫沙
犯錯
歌曲
傳奇
稻香
小酒窩
獅子座
小情歌
全是愛
棉花糖
海豚音
我相信
甩蔥歌
這叫愛
shero
走天涯
琉璃月
Nobody
我愛他
套馬桿
愛是你我
最后一次
少女時代
灰色頭像
斷橋殘雪
美了美了
狼的誘惑
我很快樂
星月神話
心痛2009
愛丫愛丫
半城煙沙
旗開得勝
郎的誘惑
愛情買賣
2010等你來
我叫小沈陽
i miss you
姑娘我愛你
我們都一樣
其實很寂寞
我愛雨夜花
變心的玫瑰
犀利哥之歌
你是我的眼
你是我的OK繃
貝多芬的悲傷
哥只是個傳說
丟了幸福的豬
找個人來愛我
要嫁就嫁灰太狼
如果這就是愛情
我們沒有在一起
寂寞在唱什么歌
斯琴高麗的傷心
別在我離開之前離開
不是因為寂寞才想你
愛上你等于愛上了錯
在心里從此永遠有個你
一個人的寂寞兩個人的錯
主站蜘蛛池模板: 淳化县| 马关县| 克东县| 勐海县| 东兴市| 铜陵市| 兴隆县| 扶余县| 金川县| 虞城县| 山西省| 攀枝花市| 阳高县| 辽源市| 邢台县| 咸阳市| 辽阳县| 陵水| 阳山县| 洪泽县| 汝城县| 白沙| 鹿泉市| 县级市| 兴文县| 平阳县| 衡阳县| 贵德县| 错那县| 炉霍县| 安吉县| 息烽县| 定州市| 吴忠市| 阿拉善左旗| 江达县| 洪雅县| 敦化市| 从化市| 丹寨县| 青冈县|