top關鍵字:寫在select后面 字段的前面
比如你要顯示查詢的前5條記錄,如下所示:
select top 5 * from Student
一般情況下,top是和order by連用的
order by用在表名的后面 order by后面就填你要按它排序的字段,是升序排序(從小到大排序)
percent:百分比 %=percent
比如要顯示5%的數據處理,不能寫top 5%,而是top 5 percent
提示:如果top 5 percent出來的數是3.1條數據的話,是取四條數據,而不是3條
使用distinct去除重復記錄:
注意:重復記錄與表的原始數據無關,它只關注通過查詢語句查詢出來之后的結果集,如果虛擬結果集的每一列的值都一樣,那么才算重復記錄,如果有一個值不一樣,那么就是一條單獨的記錄
--sql聚合函數--
count();求滿足條件的記錄數,與值無關
注意:count()括弧中隨意傳入參數,因為它與具體值無關,只與記錄數有關,一般傳入0或 * 號。如count(*)
max();求最大值 括弧中傳入字段名 如max(age)
min();求最小值
sum();求和 括弧中傳入要求和的字段名
avg();求平均值 括弧中傳入要求平均值的字段名
注意:sum/avg不能針對日期和名字計算
--模糊查詢--
注:select 字段列表 from 表列表 where 條件 Order by 排序字段
下面的都是作為條件,用在where后面
1.between...and 相當於>=n,<=m 優先使用between...and,因為做過優先處理,效率高
它是用來描述數值或日期值的,對字符串沒用
2.in相當於and,and,and 其實可以in(1,2,3)三選一
3.not in(1,2,3)不在這個范圍之內
以上的between...and,in,not in 都是用在where后面的字段的后面
通配符:
1 %代表任意個任意字符
2 _:它就代表一個字符占位,相當於.代表一個具體的字符
3 []:相當於指定一個具體的范圍或者具體的值范圍。這點用 法與正則表達式一樣
4 [^]:取反
like:像。。一樣:如果要使用通配符,則必須配合 模糊查詢關鍵字
空值處理:null是指不知道,而不是像C#里面一樣說沒有分配地址 所以判斷是否為null值的時候不能用等號(=),而是用is,如:select * from Student where name is null
判斷的是學生表中的name字段是不是null
ISNULL()方法:用在select 字段 的后面,為的是判斷所查詢出的結果(這個字段)是否為null,如果為null值就用指定內容進行替換如下所示:
Select *,ISNULL(name,‘沒有寫名字’) from Student
數據排序:order by
排序默認是升序排序
升序:asc
降序:desc
如果排序有多個字段,是指先按第一個字段進行排序,相同的記錄再按第二個字段排序
如:select * from Student order by sex,name desc
分組統計:先分組再統計
分組:group by 對指定的字段進行分類 用再表的后面 然后group by 后面再接要被分組的字段
如:
--得到男生女生的總人數
Select sex,Count(*) from Student group by sex
查詢語句的順序:
Select from where group by having order by
注意:where是對源數據做篩選的。它只能去使用from后面的表中所指的列
Where條件后面不能使用聚合函數,如果使用了就會報錯
having:
如果是對分組之后的結果集做篩選,那么就需要使用having,因為where條件后面不能釋懷聚合函數
如:
Select classId,Count(*) from Student group by classId having COUNT(*) >2
Sql的分類
1、DDL(數據定義語言,建表,建庫等語言)
2.DML(數據操作語言mutipulation) 增加刪除修改和查詢 也叫CUID:數據庫的增刪改查3.DCL(數據庫控制語言)
類型轉換
1.--cast(源數據 as 目標類型)--
2.--Convert(目標類型,源數據,格式(日期值的格式))
Select getdate()--得到當前系統時間 select GETDATE()
聯合結果集union (很少使用)
Union all :不管結果是否重復,都顯示出來
Union:重復的數據不顯示出來
Union在合並多個結果集的限制:
1.要有相同數量的列
2.對應的列的類型要一致,類型可以強制轉換()cast或Convert