亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

6、SQL Server 數據查詢

2024-08-31 00:54:08
字體:
來源:轉載
供稿:網友
6、SQL Server 數據查詢

一、使用SELECT檢索數據

數據查詢是SQL語言的中心內容,SELECT 語句的作用是讓數據庫服務器根據客戶要求檢索出所需要的信息資料,并按照規定的格式進行整理,返回給客戶端。

SELECT 語句的基本結構

[WITH<common_tale_exPRession>]SELECT select_list [INTO new_table_name][FROM table_source][where search_condition][GROUP BY group_by_expression][HAVING search_condition][ORDER BY order_expression [ ASC | DESC ]] 

WITH子句

WITH子句用于指定臨時命名的結果集,這些結果集成為公用表表達式(CTE)。該表達式源自簡單查詢,并且在單條SELECCT、INSERT、UPDATE或DELETE語句的執行范圍內定義。

use web;with AgeReps(Age,AgeCount) AS ( select Age,count(*) from tt as AgeReports where age is not null group by age)select age,agecount from AgeReps 

查詢命名為AgeReps臨時表中的年齡,年齡總數。 臨時表中為年齡分組并顯示年齡數量。

SELECT ··· FROM 子句

SELECT 表明要讀取信息,FROM指定要從中獲取數據的一個或多個表的名稱。

select * from tables /* *查詢全部列 */select id,name from tables /* 查詢指定列 */select tables.id,tables.name from tables /*還可以表.列名*//*別名顯示*/select tt.id ID,tt.name 名字,tt.sex 性別,tt.age 年齡 from ttselect ID = tt.id , 名字 = tt.name from ttselect tt.id as ID,tt.name as 名字,tt.sex as 性別,tt.age as 年齡 from tt

INTO 子句

將查詢的結果插入到新表中

select tt.id,tt.name,tt.age into newTable from tt

WHERE 子句

為搜索追加搜索條件

1.邏輯運算符(NOT、AND、OR)

1.1 NOT : 對布爾型輸入取反,使用NOT返回不滿足表達式的行。

1.2 AND : 組合兩個布爾表達式,當兩個表達式均為true時返回true。

1.3 OR : 將兩個條件組合起來,當滿足任意一條時為true。

優先順序是 NOT AND OR。

select * from [user] where id=1 and name = 'a' or name='bc' and not name='d'

2.比較運算符

= (是否相等)、 <> (是否彼此不等)、 !=(是否彼此不等) 、 >(大于) 、 >=(大于且等于) 、 !>(不大于) 、 < (小于) 、 < = (小于等于) 、 ! < (不小于) 。

select * from [user] where age > 24

LIKE 關鍵字

select * from tables where name like ' 王%' 查找王開頭的。select * from tables where name like ' 王_' 查找王開頭后面跟一個字的。select * from tables where name not like ' 王_' 查找不是王開頭后面跟一個字的。select * from tables where age like ' 2[2-4]' 查找2后面跟2到4之間的。select * from tables where age like ' 2[^2-4]' 查找2后面不再2到4之間的。

BETWEEN 關鍵字

select * from tables where age between 22 and 24 查找22 到24之間的。select * from tables where age not between 22 and 24 查找不再22到24之間的。

IS (NOT) NULL 關鍵字

在where子句中不能使用比較運算符(=)來對空值進行判斷,只能用IS NULL 來對空值進行查詢。

select * from tables where age is null 查詢 age為空的。select * from tables where age is not null age 不為空的。

IN關鍵字

使用IN關鍵字來指定搜索范圍,是否與子查詢或列表中的值相匹配。

select * from tables where id in ('001','002','003') 查找id范圍在001 002 003中的。select * from tables where id not in ('001','002','003') 查找id范圍不在001 002 003中的。

ALL、SOME、ANY 關鍵字

ALL:比較標量值和單列集中的值,與比較運算符和子查詢一起使用。>ALL標識大于條件的每一個值,大于最大值。

select * from tt where age > all(select age from tt where age = 24) 查詢大于all里面的查詢值。

SOME|ANY:比較標量值和單列集中的值,SOME 和 ANY 是等效的,與比較運算符和自查詢一起使用。> ANY 表示至少大于條件的一個值,大于最小值。

select * from tt where age > any(select age from tt where age = 24)

EXISTS 關鍵字

select id , name from [user] where exists (select null)

GOUP BY 子句

將按照一個或多個列或表達式的值將一組選定行組合成一個摘要行集,針對每一組返回一行,分組。

select age from tt group by age

HAVING 子句

通常在GOURP BY 子句中使用,在分組中指定條件搜索。

select age from tt group by age having age = 24

ORDER BY 子句

對搜索進行排序,除非同時指定了TOP ,否則ORDER BY 子句在視圖、內斂函數、派生表和子查詢中無效。

select * from tables order by id desc, 按照ID 倒序排序。select * from tables order by id asc 按照ID 升序排序。

COMPUTE 子句

生成合計作為附加的匯總列出現在結果集的最后。當與BY 一起使用時,COMPUTE子句在結果集內生成控制中斷和小計??稍诮y一查詢內指定COMPUTE BY 和 COMPUTE。

select * from tables order by sex compute avg(avg)。 按照性別分組查詢,并將平均年齡顯示最后。select * from tables order by sex compute avg(avg) by sex。 按照性別分組查詢,并按照性別分開顯示,顯示出兩組平均年齡。 

ALL 關鍵字

查詢所有記錄。

select all age from tables

DISTINCT 關鍵字

去掉搜索結果中重復的記錄。

select distinct age from tables

TOP 關鍵字

限制查詢結果顯示的行數

select top 5 * from tables.

二、使用UNION合并多個查詢結果

表的合并操作將兩個表的行合并到了一個表中,且不需要對這些行作任何更改。在構造合并查詢時必須:

1.兩個select語句選擇列表中的列數目必須一樣多,而且對應位置上的列的數據類型必須相同或者兼容。

2.列的名字或者別名是由第一個select語句的選擇列決定的。

3.可以為每個select 語句都增加一個表示行的數據來源的表達式。

4.可以將合并操作作為select into命令的一部分使用,但是info關聯必須放在第一個select語句中。

5.合并操作默認情況下去除重復的行,如果希望返回重復的行需要使用 all 關鍵字。

6.用對所有select 語句的合并操作結果進行排序的order by子句,必須放到最后一個select 后面,但排序列名必須是第一個select 選擇列表中的列名。

UNION 與 聯接之間的區別

在合并中,兩個表源列的數量與數據類型必須相同,在聯接中,一個表的行可能與另外一個表的行有很大區別。

在合并中,行的最大數量是兩個表的“和”。在聯接中,行的最大數量使他們的“乘積”

去重:select id,name from [user] union select id,title from work 結果為 id name 下面兩個表的信息

重復:select id,name from [user] union all select id,title from work 包含重復行

排序:select id,name from [user] union all select id,title from work order by name desc 排序第一表中的列

列數不同:select id,name,sex from [user] union all select id,title,null from work order by name desc 用NULL填充

子查詢

子查詢是一個嵌套在select、insert、update或delete語句或其他子查詢中的查詢,返回單個值。

select * from tables where id not in (1,3,4)。

嵌套查詢

嵌套查詢是指將一個查詢塊嵌套在另一個查詢塊的where子句或having短語的條件中查詢。

select * from tables where id in (select typeid from type where id = 86) id范圍在返回結果中select * from tables where id not in (select typeid from type where id=84) id范圍不在返回結果中select * from tables where age < some(select avg(avg) from student) 年齡小于平均年齡select * from tables where age <> any(select avg(avg) from student) 年齡不等于平均年齡select * from tables where age <> all(select avg from student where age > 90) 年齡沒有大于90的信息select * from tables where not exists (select id from user where tables.id = user.id) 查詢id不相等的信息

聯接查詢

水平方向合并兩個數據集合,產生一個新的結果集,聯接條件可以在from或where子句中指定。

內部聯接

內部聯接是從結果中刪除其他被聯接表中沒有匹配行的所有行,所以可能會丟失信息。

select * from [user] inner join [work] on [user].id=work.id 查詢兩表ID相同的信息。

外部聯接

1.左向外聯接 left join

如果左表中的某一行在右表中沒有匹配行,則在關聯的結果中,顯示為空值。

select * from [user] left join [work] on [user].id = work.id 顯示所有user信息 若work沒有對應信息顯示為NULL

2.右向外聯接 right join

與左聯接相反,如果右表中的某一行在左表中沒有匹配行,則顯示為空值。

select * from [user] right join [work] on [user].id = work.id 以work為主體 若user沒有對應信息顯示為NULL

3.完整外聯接 full join

返回左表和右表的所有行,當某一行在另一個表中沒有匹配行時,另一個表的選擇列將包含空值。

select * from [user] full join [work] on [user].id = work.id 顯示左右全部信息,若沒有就顯示NULL

交叉聯接 cross join

第一個表的行數乘以第二個表的行數等于結果集的大小

select * from [user] cross join work 平均交叉互補 不顯示NULL

多表聯接

WHERE:select * from table1,table2,table3 where table1.id =table2.id and table2.id = table3.idFORM:select * from table1 join table2 join table3 on table1.id = table2 and table2.id = table3.id   

三、使用CASE函數進行查詢

select 數字 = case /* 別名 */    when id = 10 then '是1哦' /* 如果id=1 則輸出 是1哦 */    when id = 11 then '11哦'    when id = 12 then '12哦'    else '沒有' /* 否則 輸出 沒有*/    end from [user]/*修改*/update [user] set sex = case     when sex='n' then '男'    when sex='a' then '女'end

四、函數

聚合函數

count(*):返回行數。count(列名):返回某列的個數。avg(列名):返回某列的平均值。max(列名):返回某列的最大值。min(列名):返回某列的最小值。sum(列名):返回某列值的和。  

開窗函數

--使用聚合函數后,返回結果只能是一行--使用over() 可以將聚合函數擴展到所有行--語法 聚合函數() over()select avg(score) from student; --返回一條信息 平均分。select *,avg(score) over() from student; --返回所有數據最后加一列平均分

日期時間函數

select getDate(); 當前系統日期 select dateadd(day,3,getDate()); 加3天 select dateadd(year,3,getDate()); 加年select dateadd(hour,3,getDate()); 加小時select dateDiff(day,'2013-02-01',getDate());  返回相差天數select dateDiff(second,'2013-02-01',getDate()); 返回相差秒數select dateName(month,getDate());  返回當前月份select dateName(minute,getDate()); 返回當前分鐘 select dateName(weekday,getDate()); 返回當前星期select day(getDate());  返回當前日期天數select month(getDate()); 返回當前日期月份select year(getDate()); 返回當前日期年份 

數字函數<

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
4k岛国日韩精品**专区| 中国人与牲禽动交精品| 日韩电影免费在线观看中文字幕| 国产成人精品久久亚洲高清不卡| 久久久av免费| 久久久久久91| 国产不卡精品视男人的天堂| 在线视频欧美性高潮| 成人性生交大片免费看视频直播| 国产精品久久久久久亚洲调教| 亚洲丝袜av一区| 欧美精品在线播放| 亚洲天堂男人的天堂| 91精品免费久久久久久久久| 2021国产精品视频| 国产精品久久久久久影视| 亚洲人成电影网站色xx| 欧美在线性爱视频| 欧美国产一区二区三区| 精品精品国产国产自在线| 成人妇女免费播放久久久| 久久国产精品亚洲| 在线观看国产精品91| 国产精品视频色| 亚洲激情在线视频| 欧美孕妇毛茸茸xxxx| 日韩精品在线观看网站| 欧美激情综合色综合啪啪五月| 欧美亚洲另类激情另类| 久久影院模特热| 国产一区视频在线| 成人免费在线视频网址| 国产精品视频免费在线观看| 日本成熟性欧美| 日韩暖暖在线视频| 成人a在线视频| 亚洲日韩欧美视频| 国语对白做受69| 在线观看91久久久久久| 一区二区三区美女xx视频| 欧美一区二区三区图| 亚洲天堂一区二区三区| 欧美理论电影在线观看| 国产区精品在线观看| 国产精品女人久久久久久| 在线观看日韩www视频免费| 亚洲欧美在线免费观看| 欧美亚洲成人免费| 亚洲国产精品久久久久久| 国产精品视频白浆免费视频| 青青久久av北条麻妃海外网| 日韩一中文字幕| 亚洲国产精品成人av| 亚洲国产精品人久久电影| 久久av.com| 在线午夜精品自拍| 亚洲аv电影天堂网| 欧美激情精品久久久久久蜜臀| 97人人做人人爱| 成人网在线观看| 亚洲人成电影网站色…| 国内精品一区二区三区| 97在线视频免费看| 久久99久久99精品免观看粉嫩| 98精品国产高清在线xxxx天堂| 国产成人精彩在线视频九色| 亚洲摸下面视频| 国产精品久久久久久久久久久久久久| 欧美日韩另类字幕中文| 亚洲综合日韩中文字幕v在线| 91日本在线视频| 中文字幕精品网| 91欧美激情另类亚洲| 欧美一级片在线播放| 亚洲国语精品自产拍在线观看| 成人中文字幕在线观看| 97久久国产精品| 96精品视频在线| 亚洲视频在线看| 91精品视频一区| 久久久精品2019中文字幕神马| 91免费在线视频网站| 97在线观看免费| 国产欧美va欧美va香蕉在线| 精品丝袜一区二区三区| 国产伊人精品在线| 日韩动漫免费观看电视剧高清| 成人在线视频网| 国产精品免费一区| 国模叶桐国产精品一区| 国产一级揄自揄精品视频| 国产综合福利在线| 午夜精品久久久久久99热软件| 一本一本久久a久久精品牛牛影视| 久久人91精品久久久久久不卡| 国产精品久久色| 91视频国产精品| 欧美专区第一页| 久久精品中文字幕免费mv| 亚洲精品少妇网址| 国产女人精品视频| 超碰日本道色综合久久综合| 日韩黄色在线免费观看| 亚洲福利小视频| 国产精品爽黄69天堂a| 亚洲天堂一区二区三区| 国产精品久久91| 亚洲永久在线观看| 欧美成人免费观看| 国产主播喷水一区二区| 日韩av电影中文字幕| 久久久精品一区二区三区| 日韩欧美成人免费视频| 久久人人爽人人爽人人片亚洲| 国产91网红主播在线观看| 亚洲天天在线日亚洲洲精| 精品国产乱码久久久久久天美| 日韩一区二区福利| 亚洲伊人第一页| 国产日韩av在线播放| 欧美电影免费观看大全| 日韩精品一区二区视频| 亚洲人成欧美中文字幕| www.日韩av.com| 国产视频丨精品|在线观看| 精品欧美aⅴ在线网站| 国产精品∨欧美精品v日韩精品| 日韩av免费看网站| 亚洲天堂免费在线| 中文字幕久热精品在线视频| 性亚洲最疯狂xxxx高清| 欧美日韩国产二区| 色偷偷av亚洲男人的天堂| 国产九九精品视频| 日韩国产高清污视频在线观看| 国产欧美婷婷中文| 91免费在线视频网站| 91精品国产91| 午夜精品三级视频福利| 色老头一区二区三区| 97在线观看免费高清| 91精品国产综合久久久久久蜜臀| 国产激情视频一区| 欧美中文字幕视频| 精品国产美女在线| 在线电影中文日韩| 91在线播放国产| 久久久精品一区| 国产精品久久久久久久午夜| 国产精品video| 国产成人免费av| 精品久久久免费| 亚洲日韩欧美视频一区| 成人国产精品av| 日韩av在线免费播放| 日韩中文av在线| 欧美国产在线视频| 国产专区精品视频| www.精品av.com| 亚洲精品大尺度| 亚洲第一偷拍网| 成人欧美在线观看| 欧美亚洲国产视频| 在线播放日韩欧美|