在sql server中(不區(qū)分大小寫):
1.單表無條件查詢
select * from students;
查找students中的全部數(shù)據(jù),*是全部的意思致燥,可以換成表中的某一列或多列;
select sname,2016-sage birthyear,lower(sno) lsno from students;
查找的同時可以計算膝但,重新命名,控制大小寫;
select distinct sage from students;
查找出不重復(fù)的數(shù)據(jù)银室;
select count(distinct sdept),min(sage),max(sage),avg(sage) from students;
聚合函數(shù) count,sum,avg,min,max分別計算列上值的個數(shù)蝎抽,數(shù)值總和愿卒,平均值缚去,最小值,最大值琼开。
2.單表帶條件查詢易结。
select sname from students where sage between 18 and 20;
select sname from students where sage in(18,19,20);```
帶條件查詢的三種寫法。
```select sname from students where sname like '王%';
select sname from students where sname like '王____';```
模糊字符匹配柜候,查找姓王的同學(xué)的全名搞动。通配符%代表一個任意長度的字符串,_代表單個字符渣刷,一個漢字由兩個字符組成鹦肿,所以此處加了四個字符串。
```select sname from students where sname not like '王%'; ```
當然也可以利用字符匹配查找不姓王的數(shù)據(jù)辅柴,只需在like前面加not箩溃。用'='的地方可以like替換,不過效率會降低碌嘀。
```select cname from courses where cname like 'DB\_設(shè)%' escape '\';```
當要查詢的數(shù)據(jù)中確切的部分中含有通配符則應(yīng)用escape進行轉(zhuǎn)義,如果不進行轉(zhuǎn)義涣旨,就會查找出無用的數(shù)據(jù),比如要查找以"DB_"開頭股冗,且倒數(shù)第2個漢字字符為“設(shè)”的課程的詳細情況霹陡。如果不進行轉(zhuǎn)義,就會出現(xiàn)如下情況:
![沒有轉(zhuǎn)義](http://upload-images.jianshu.io/upload_images/2670618-174c6b2b91ce4595.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
```select sno,cno from reports where grade is null;```
查找存在記錄但是空值的數(shù)據(jù)止状。這種方法不能全部找出沒有值的數(shù)據(jù)烹棉,因為沒有值也可能記錄成 'null'或'_'。
>3.分組查詢和排序查詢怯疤。
```select cno,avg(grade) from reports group by cno;```
group by 是分組查詢峦耘,把一個表按照一定列上值相等的原則分組,然后分別對每個組進行操作旅薄。分組查詢經(jīng)常配合聚合函數(shù)一起使用辅髓,聚合函數(shù)在每個組中進行運算,然后每個組返回一個結(jié)果少梁。
```select cno,avg(grade) group by cname having count(*)>=3;```
having子句用于group by后對每一組進行條件判斷洛口,滿足having條件的組被選出來。
*【摘自網(wǎng)絡(luò)】*使用Group By子句的時候凯沪,一定要記住下面的一些規(guī)則:
1)不能Group By非標量基元類型的列第焰,如不能Group By text,image或bit類型的列
2)**Select指定的每一列都應(yīng)該出現(xiàn)在Group By子句中妨马,除非對這一列使用了聚合函數(shù)挺举;**
3)不能Group By在表中不存在的列杀赢;
4)進行分組前可以使用Where子句消除不滿足條件的行;
5)使用Group By子句返回的組沒有特定的順序湘纵,可以使用Order By子句指定次序脂崔。
```select * from students order by sdept asc,sage desc;```
order by查詢結(jié)果排序。查找所有學(xué)生信息梧喷,按系名升序砌左,同一系的按年齡降序。desc是降序铺敌,asc是升序汇歹,沒寫的時候默認升序,升序把空值放在最后偿凭,降序把空值放在最前面产弹。
>總結(jié):無論怎樣寫查找語句,得到的結(jié)果都是一張表弯囊,所以寫語句時要注意你寫的能不能構(gòu)成一張表取视。