數(shù)據(jù)庫筆記2-單表查詢

students
courses
reports

在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;

查找出不重復的數(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 '王____';```

模糊字符匹配,查找姓王的同學的全名。通配符%代表一個任意長度的字符串,_代表單個字符,一個漢字由兩個字符組成,所以此處加了四個字符串。

```select sname from students where sname not like '王%'; ```

當然也可以利用字符匹配查找不姓王的數(shù)據(jù),只需在like前面加not。用'='的地方可以like替換,不過效率會降低。

```select cname from courses where cname like 'DB\_設%' escape '\';```

當要查詢的數(shù)據(jù)中確切的部分中含有通配符則應用escape進行轉義,如果不進行轉義,就會查找出無用的數(shù)據(jù),比如要查找以"DB_"開頭,且倒數(shù)第2個漢字字符為“設”的課程的詳細情況。如果不進行轉義,就會出現(xià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ù)在每個組中進行運算,然后每個組返回一個結果。

```select cno,avg(grade) group by cname having count(*)>=3;```

having子句用于group by后對每一組進行條件判斷,滿足having條件的組被選出來。

*【摘自網(wǎng)絡】*使用Group By子句的時候,一定要記住下面的一些規(guī)則:
1)不能Group By非標量基元類型的列,如不能Group By text,image或bit類型的列
2)**Select指定的每一列都應該出現(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查詢結果排序。查找所有學生信息,按系名升序,同一系的按年齡降序。desc是降序,asc是升序,沒寫的時候默認升序,升序把空值放在最后,降序把空值放在最前面。

>總結:無論怎樣寫查找語句,得到的結果都是一張表,所以寫語句時要注意你寫的能不能構成一張表。




最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容