国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
查詢數(shù)據(jù)庫(kù)語(yǔ)句

一、Select語(yǔ)句:67頁(yè)

    select語(yǔ)句除了可以查看數(shù)據(jù)庫(kù)中的表格和視圖的信息外,還可以查看SQL Server的系統(tǒng)信息、復(fù)制、創(chuàng)建數(shù)據(jù)表,其查詢功能強(qiáng)大,是SQL語(yǔ)言的靈魂語(yǔ)句,也是SQL中使用頻率最高的語(yǔ)句。

基本select語(yǔ)句:

   一個(gè)基本的select語(yǔ)句可以分解成三個(gè)部分:查找什么數(shù)據(jù)、從哪里查找、查找的條件是什么。
                                            
                                           select  ...... from...... where.......

select 語(yǔ)句的一般格式如下:

select  <目標(biāo)列表達(dá)式列表>     
 [into 新表名]             
 from  表名或視圖名     
 [where <條件>]                    
 [group by <分組表達(dá)式>]             
 [having <條件>]                
 [order by <排序表達(dá)式>[ASC|DESC]]    

二、單表查詢:指僅涉及一個(gè)表的查詢)(P67:基本查詢)

(一)查詢指定的列
  
1.查詢表中所有列:在select語(yǔ)句指定列的位置上使用*號(hào)時(shí),表示查詢表的所有列。

    格式:select * from 表名

例1.在xs表中查詢?nèi)w學(xué)生的信息。 

use xsbook           
 
select * from xs

2.查詢表中指定的列。查詢多列時(shí),列名之間要用逗號(hào)隔開(kāi)。

  格式:  select 列名1[,列名2,...]
     from 表名
 
例2.在xsbook數(shù)據(jù)庫(kù)的xs表中查詢學(xué)生的姓名、專業(yè)名、借書(shū)數(shù)信息。
   
select 姓名,專業(yè)名,借書(shū)數(shù)
    from xs
go

3.指定查詢結(jié)果中的列標(biāo)題

    通過(guò)指定列標(biāo)題(也叫列別名)可使輸出結(jié)果更容易被人理解。指定列標(biāo)題時(shí),可在列名之后使用AS子句;也可以使用:列別名=<表達(dá)式>的形式指定列標(biāo)題。

    AS子句的格式為:列名或計(jì)算表達(dá)式  [AS]  列標(biāo)題  

    其中:AS可省略。

例3:給列加顯示標(biāo)題示例:

select 借書(shū)證號(hào) as cardno,姓名 as name, 借書(shū)數(shù) as cnt
    from xs
go
           
   或采用列別名=<表達(dá)式>的形式指定列標(biāo)題,如上例可改為:

select cardno=借書(shū)證號(hào),name=姓名,cnt=借書(shū)數(shù)
   from xs
go
                                               
                                                               
4.查詢經(jīng)過(guò)計(jì)算的列(即表達(dá)式的值):

    使用select對(duì)列進(jìn)行查詢時(shí),不僅可以直接以列的原始值作為結(jié)果,而且還可以將列值進(jìn)行計(jì)算后所得值作為查詢結(jié)果,即select子句可以查詢表達(dá)式的值,表達(dá)式可由列名、常量及算術(shù)運(yùn)算符組成。查詢結(jié)果計(jì)算列顯示“無(wú)列名”,一般要給計(jì)算列加列標(biāo)題。

    其中:表達(dá)式中可以使用的運(yùn)算符有:加+、減-、乘*、除/、取余%
  
例4:查詢所有書(shū)名、單價(jià)及8折之后的圖書(shū)價(jià)格

select 書(shū)名,單價(jià),八折=單價(jià)*0.8
    from book
go
 
(二)、選擇行:選擇表中的部分行或全部行作為查詢的結(jié)果:(P72:篩選查詢)

格式: select [all|distinct] [top n[percent]]<目標(biāo)列表達(dá)式列表>
          from 表名

1. 消除查詢結(jié)果中的重復(fù)行

    對(duì)于關(guān)系數(shù)據(jù)庫(kù)來(lái)說(shuō),表中的每一行都必須是不同的(即無(wú)重復(fù)行)。但當(dāng)對(duì)表進(jìn)行查詢時(shí)若只選擇其中的某些列,查詢結(jié)果中就可能會(huì)出現(xiàn)重復(fù)行。在select語(yǔ)句中使用distinct關(guān)鍵字可以消除結(jié)果集中的重復(fù)行,其格式為:

    select distinct 列名1[,列名2,...]   from 表名

    其中:select語(yǔ)句中使用distinct的含義是對(duì)結(jié)果集中的重復(fù)行只選擇一個(gè),以保證行的唯一性(注意:強(qiáng)調(diào)的是“行”,而不是某一列)。

例5:查詢所有專業(yè)名

select distinct 專業(yè)名
   from xs
go

注意:與使用Distinct關(guān)鍵字相反,當(dāng)使用關(guān)鍵字All時(shí),將保留結(jié)果集中的所有行(默認(rèn)值為All)

例如:select all 姓名,性別
          from xs

2. 限制查詢結(jié)果中的返回行數(shù)

    使用top選項(xiàng)可限制查詢結(jié)果的返回行數(shù),即返回指定個(gè)數(shù)的記錄數(shù)。
 
    其中:n是一個(gè)正整數(shù),表示返回查詢結(jié)果集的前n行;若帶percent關(guān)鍵字,則表示返回結(jié)果集的前n%行。

例6:查詢xs表的前5個(gè)記錄信息

select top 5 * from xs
  
再如:select top 50 percent * from xs   --查詢前50%的學(xué)生信息

(三)查詢滿足條件的行: 用where子句實(shí)現(xiàn)條件查詢:(P70:where條件查詢)

    通過(guò)where子句實(shí)現(xiàn),該子句必須緊跟在From子句之后。

    格式為:

     select [all|distinct] [top n[percent]]<目標(biāo)列表達(dá)式列表>
         from 表名
         where <條件>
 
    說(shuō)明:在查詢條件中可使用以下運(yùn)算符或表達(dá)式:P134


運(yùn)算符   運(yùn)算符標(biāo)識(shí)

比較運(yùn)算符  <=,<,=,>,>=,!=,<>,!>,!<                                                                                                             
范圍運(yùn)算符  between... and,not between... and

列舉運(yùn)算符  in,not in

模糊匹配運(yùn)算符  like,not like

空值運(yùn)算符  is null,is not null

邏輯運(yùn)算符  and,or,not

1.使用比較運(yùn)算符:P70

例7:查詢xsbook數(shù)據(jù)庫(kù)xs表中借書(shū)數(shù)在2本以上的學(xué)生情況(含2本)。

select *
     from xs
     where 借書(shū)數(shù)>=2          --或?yàn)椋簑here 借書(shū)數(shù)!<2

2.指定范圍:P72

    用于指定范圍的關(guān)鍵字有兩個(gè):between...and和 not between...and。用于查找字段值在(或不在)指定范圍的行。

    格式為:表達(dá)式 [not] between <表達(dá)式1> and <表達(dá)式2>

其中:between關(guān)鍵字之后的是范圍的下限(即低值),and關(guān)鍵字之后的是范圍的上限(即高值)

例8:查詢xs表中1980 至1985年出生的學(xué)生情況。

select *
    from xs
    where 出生時(shí)間 between '1980-01-01' and '1985-12-31' 

   

再如:查詢xs 表中非1980年出生的學(xué)生信息。

select *
    from xs
    where 出生時(shí)間 not between '1980-01-01' and '1980-12-31'

   

3.使用列舉:

      使用in關(guān)鍵字可以指定一個(gè)值的集合,集合中列出所有可能的值,當(dāng)表達(dá)式的值與集合中的任一元素個(gè)匹配時(shí),即返回true,否則返回false。格式為:<表達(dá)式> [not]  in(值1,值2,...,值n)
 

例9:查詢xs表中專業(yè)名為'計(jì)算機(jī)'、'信息工程'、'英語(yǔ)'或'自動(dòng)化'的學(xué)生的借書(shū)證號(hào),姓名,借書(shū)數(shù),專業(yè)名。

select 借書(shū)證號(hào),姓名,借書(shū)數(shù),專業(yè)名
    from xs
    where 專業(yè)名 in('計(jì)算機(jī)','信息工程','英語(yǔ)','自動(dòng)化')

注意:與in相對(duì)的是 not in,用于查找表達(dá)式的值不屬于指定集合的行。

例如:查詢xs表中非'計(jì)算機(jī)'、'信息工程'、'英語(yǔ)'專業(yè)的學(xué)生情況:

select *
    from xs
    where 專業(yè)名 not in('計(jì)算機(jī)','信息工程','英語(yǔ)')

4.使用通配符進(jìn)行模糊查詢:P70

    可用like 子句進(jìn)行字符串的模糊匹配查詢,like子句將返回邏輯值(true或False)。

    like子句的格式為: <字符型字段> [not] like <匹配串>

    其含義是:查找指定字段值與匹配串相匹配的記錄。匹配串中通常含有通配符%和_(下劃線)。

    其中:

        %:代表任意長(zhǎng)度(包括0)的字符串

  例:a%c:表示以a開(kāi)頭,以c結(jié)尾的任意長(zhǎng)度的字符串,如:asc、abccccccccc、aabbc、ac

 _:代表任意一個(gè)字符

  例:a_c表示以a開(kāi)頭,以c結(jié)尾,長(zhǎng)度為3的字符串,如:abc、asc 

 Like子句中使用通配符的查詢也稱模糊查詢。
                                                                              
例10:查詢xs表中姓“王”且姓名為兩個(gè)字的學(xué)生情況

select *
    from xs
    where 姓名 like '王_'

再如:查詢book表中書(shū)名含有“數(shù)據(jù)”字樣的圖書(shū)情況:

select *
    from book
    where 書(shū)名 like '%數(shù)據(jù)%'

注意:所有通配符都必須在like 子句中才有意義,否則將被當(dāng)作普通字符處理;且like子句中的匹配串也可以是一個(gè)不含通配符的完整的字符串(如下例)。

例11:查詢xs表中計(jì)算機(jī)專業(yè)的學(xué)生情況

select *
    from xs
    where 專業(yè)名 like '計(jì)算機(jī)'    

查詢相反的情況:則使用以下語(yǔ)句:

select *
    from xs
    where 專業(yè)名 not like '計(jì)算機(jī)'   --查詢xs表中非計(jì)算機(jī)專業(yè)的學(xué)生情況

即:如果like后面的匹配串中不含通配符,那么可以用“=”(等號(hào))運(yùn)算符來(lái)替代like。即上例中的where子句等價(jià)于:where 專業(yè)名='計(jì)算機(jī)'。

5.使用null的查詢

     當(dāng)需要判定一個(gè)表達(dá)式的值是否為空值時(shí),使用 is null關(guān)鍵字。格式為:<表達(dá)式> is [not] null

     當(dāng)不使用not時(shí),若表達(dá)式的值為空值,則返回true,否則返回false;當(dāng)使用not時(shí),結(jié)果剛好相反。

例12:查詢xs表中專業(yè)名尚不確定的學(xué)生情況。

select *
    from xs
    where 專業(yè)名 is null

再如:查詢xs表中專業(yè)名已確定的學(xué)生的姓名,專業(yè)名。

select 姓名,專業(yè)名
    from xs
    where 專業(yè)名 is not null
        
6.多重條件查詢:使用邏輯運(yùn)算符(P70)

    邏輯運(yùn)算符and(與:兩個(gè)條件都要滿足)和or(或:滿足其中一個(gè)條件即可)可用來(lái)聯(lián)接多個(gè)查詢條件。and的優(yōu)先級(jí)高于or,但若使用括號(hào)可以改變優(yōu)先級(jí)。

例13:查詢xs表中借書(shū)數(shù)在3本以下的計(jì)算機(jī)專業(yè)學(xué)生的姓名和借書(shū)證號(hào)。

select 借書(shū)證號(hào),姓名
     from xs
     where 專業(yè)名='計(jì)算機(jī)' and 借書(shū)數(shù)<3

再如:查詢計(jì)算機(jī)和英語(yǔ)專業(yè)學(xué)生的基本情況:

select *
     from xs
     where 專業(yè)名='計(jì)算機(jī)' or  專業(yè)名='英語(yǔ)'

(四)對(duì)查詢結(jié)果排序:P73

    order by子句可用于對(duì)查詢結(jié)果按照一個(gè)或多個(gè)字段的值(或表達(dá)式的值)進(jìn)行升序(ASC)或降序(DESC)排列,默認(rèn)為升序。

    格式:order by {排序表達(dá)式[ASC|DESC]}[,...n]

   其中:排序表達(dá)式既可以是單個(gè)的一個(gè)字段(如例14),也可以是由字段、函數(shù)、常量等組成的表達(dá)式(如例15),或一個(gè)正整數(shù)。

例14:查詢xs表中的全體學(xué)生信息并按出生時(shí)間排序,要求晚出生的學(xué)生排在前面。

select *
    from xs
    order by 出生時(shí)間  desc  

思考:若本例改為以下格式的語(yǔ)句,其功能是什么?

select top 5 *
    from xs
    order by 出生時(shí)間  desc  

例15:請(qǐng)查詢圖書(shū)的書(shū)名、六折后的書(shū)價(jià),并將結(jié)果按六折后的書(shū)價(jià)的降序排列。
 
select 書(shū)名,單價(jià)*0.6 as 書(shū)價(jià)六折
    from  book
    order by  單價(jià)*0.6  desc      

說(shuō)明:本例中,order by子句也可寫(xiě)為: order by 2,這里2代表排序字段或表達(dá)式(即:?jiǎn)蝺r(jià)*0.6)在select子句中出現(xiàn)的順序號(hào)。

注意:排序表達(dá)式可有多個(gè),例如:將xs表的學(xué)生按性別的降序排序,同性別的按出生時(shí)間的升序排序:

select *
    from xs
    order by 性別 desc,出生時(shí)間 asc   

    注意:對(duì)于null值,若為升序則排在最前面,若為降序則排在最后。

(五)使用統(tǒng)計(jì)函數(shù):又稱集函數(shù),聚合函數(shù)  P75

    在對(duì)表進(jìn)行檢索時(shí),經(jīng)常需要對(duì)結(jié)果進(jìn)行計(jì)算或統(tǒng)計(jì),T-SQL提供了一些統(tǒng)計(jì)函數(shù)(也稱集函數(shù)或聚合函數(shù)),用來(lái)增強(qiáng)檢索功能。統(tǒng)計(jì)函數(shù)用于計(jì)算表中的數(shù)據(jù),即利用這些函數(shù)對(duì)一組數(shù)據(jù)進(jìn)行計(jì)算,并返回單一的值。

            常用統(tǒng)計(jì)函數(shù)表

函數(shù)名   功能

AVG   求平均值

count   求記錄個(gè)數(shù),返回int類型整數(shù)

max   求最大值

min   求最小值

sum   求和

1. SUM和AVG

功能:求指定的數(shù)值型表達(dá)式的和或平均值。
  
例16:查詢計(jì)算機(jī)專業(yè)學(xué)生所借圖書(shū)的平均數(shù)、借書(shū)總數(shù)。

select avg(借書(shū)數(shù)) as 平均借書(shū)數(shù),sum(借書(shū)數(shù)) as 借書(shū)總數(shù)
    from xs
    where 專業(yè)名='計(jì)算機(jī)'

2. Max和Min

功能:求指定表達(dá)式的最大值或最小值。

例17:在xs表中查詢學(xué)生最多和最少的借書(shū)數(shù)

select max(借書(shū)數(shù)) as 最多借書(shū)數(shù),min(借書(shū)數(shù)) as 最少借書(shū)數(shù)
    from xs

3. count:

    該函數(shù)有兩種格式:count(*)和count([all]|[distinct] 字段名),為避免出錯(cuò),查詢記錄個(gè)數(shù)一般使用count(*),而查詢某字段有幾種取值用count(distinct 字段名)。

(1).count(*):

功能:統(tǒng)計(jì)記錄總數(shù)。

例18:查詢學(xué)生總數(shù)

select count(*) as 學(xué)生總數(shù) 
   from xs

再如:查詢已借閱了圖書(shū)的學(xué)生人數(shù)。

select count(*) as 借閱了圖書(shū)的學(xué)生數(shù)
    from xs
    where 借書(shū)數(shù)<>0
   
思考:查詢計(jì)算機(jī)專業(yè)的學(xué)生總數(shù)。

(2).count([all]|[distinct] 字段名)

功能:統(tǒng)計(jì)指定字段值不為空的記錄個(gè)數(shù),字段的數(shù)據(jù)類型可以是text、image、ntext、uniqueidentifier之外的任何類型。
  
例19:查詢學(xué)生總數(shù)

select count(借書(shū)證號(hào)) as 總?cè)藬?shù)
    from  xs

說(shuō)明:

    A.本例中由于“借書(shū)證號(hào)”字段值所有記錄都不為空,故這一統(tǒng)計(jì)結(jié)果即為總記錄個(gè)數(shù),即和count(*)的統(tǒng)計(jì)結(jié)果一樣;

    B.distinct表示:先消除指定字段取值重復(fù)的記錄,然后再統(tǒng)計(jì)指定字段值不為空的記錄個(gè)數(shù);而all 則表示所有指定字段值不為空的全部記錄都參加統(tǒng)計(jì)計(jì)數(shù)。默認(rèn)為all。

例20:查詢出版社數(shù)。

select  count(distinct 出版社) as 出版社數(shù)
   from book

注意:若select 列表中使用了統(tǒng)計(jì)函數(shù),則列表中不允許再指定任何字段名,用group by子句指定的字段除外。如:以下操作將會(huì)產(chǎn)生錯(cuò)誤:

select 借書(shū)證號(hào),count(*)
    from xs
   
(六):對(duì)查詢結(jié)果分組:P76

    group by子句用于將查詢結(jié)果表按某一列或多列值進(jìn)行分組,列值相等的為一組,每組統(tǒng)計(jì)出一個(gè)結(jié)果。該子句常與統(tǒng)計(jì)函數(shù)一起使用進(jìn)行分組統(tǒng)計(jì)。格式為:

    group by 分組字段[,...n][having <條件表達(dá)式>]

例21:統(tǒng)計(jì)男、女生各多少人。

select 性別,count(*) as 人數(shù)
    from xs
    group by 性別

再如:查詢各專業(yè)人數(shù)及各專業(yè)的總借書(shū)數(shù)。

select 專業(yè)名,count(*) as 各專業(yè)人數(shù),sum(借書(shū)數(shù)) as 各專業(yè)的借書(shū)總數(shù)
    from xs
    group by 專業(yè)名

說(shuō)明:在使用group by子句時(shí)應(yīng)注意以下幾點(diǎn):P77

1.在使用group by子句后,select列表中只能包含:group by子句中所指定的分組字段及統(tǒng)計(jì)函數(shù)。

2.having子句的用法:

   having子句必須與group by 子句配合使用,用于對(duì)分組后的結(jié)果進(jìn)行篩選(篩選條件中常含有統(tǒng)計(jì)函數(shù))。

例22:查詢學(xué)生人數(shù)在2人以上(含2人)的專業(yè)的專業(yè)名以及其學(xué)生人數(shù)

select 專業(yè)名,count(*) as 人數(shù)
    from xs
    group by 專業(yè)名
    having count(*)>=2

3. 分組查詢時(shí):不含統(tǒng)計(jì)函數(shù)的條件,通常使用where子句;含有統(tǒng)計(jì)函數(shù)的條件,則只能用having子句。

例如:查詢“體育”專業(yè)男、女生各有多少人。

select 性別,count(*) as 人數(shù)
    from xs
    where 專業(yè)名='體育'
    group by 性別
      
再如:查詢平均借書(shū)數(shù)在2本以上(含)的專業(yè)及其學(xué)生人數(shù)。

select 專業(yè)名,count(*) as 人數(shù)
     from xs
     group by 專業(yè)名
     having avg(借書(shū)數(shù))>=2

(七)compute子句: P77

   格式:{compute 統(tǒng)計(jì)函數(shù)名}[,...n][by 分組表達(dá)式[,...n]

   功能:compute子句將產(chǎn)生一個(gè)單獨(dú)的匯總行,用以顯示統(tǒng)計(jì)信息。相當(dāng)于在select 語(yǔ)句的結(jié)果后面加了一個(gè)匯總行,這樣既查詢出了源表中一個(gè)一個(gè)的詳細(xì)記錄(即具體的字段值),又查詢出了統(tǒng)計(jì)某些列數(shù)據(jù)所產(chǎn)生的統(tǒng)計(jì)信息(即:細(xì)節(jié)+統(tǒng)計(jì))。

例23:查詢計(jì)算機(jī)專業(yè)學(xué)生的借書(shū)證號(hào),姓名,出生時(shí)間及學(xué)生人數(shù)。

select 借書(shū)證號(hào),姓名,出生時(shí)間
    from xs
    where 專業(yè)名='計(jì)算機(jī)'
    compute count(借書(shū)證號(hào))     
 
    其中:匯總行的列標(biāo)題:cnt表示:count函數(shù)匯總
            avg表示:avg函數(shù)匯總
     sum表示:sum函數(shù)匯總
 
再如:查詢所有圖書(shū)的書(shū)名,單價(jià),出版社及均價(jià)。

select 書(shū)名,單價(jià),出版社
    from book
    compute avg(單價(jià))       

說(shuō)明:使用compute子句時(shí)應(yīng)注意以下幾點(diǎn):

1.compute <統(tǒng)計(jì)函數(shù)名> 子句中所涉及到的字段是select 字段名列表中已列出的字段名。如:以下操作將產(chǎn)生錯(cuò)誤,思考一下為什么?

select 書(shū)名,單價(jià),出版社
    from book
    compute sum(庫(kù)存量) 

2.同時(shí)使用compute...by子句和order by子句也可實(shí)現(xiàn)分組統(tǒng)計(jì)查詢,但compute...by子句必須緊跟在order by 子句之后;compute ...by子句中的分組字段必須是order  by子句中的第一個(gè)排序字段。

例24:查詢各專業(yè)學(xué)生的姓名,性別,專業(yè)名及各專業(yè)的學(xué)生人數(shù)。

select 姓名,性別,專業(yè)名
    from xs
    order by 專業(yè)名
    compute  count(姓名) by 專業(yè)名  
 
再如:查詢各專業(yè)學(xué)生的姓名,性別,專業(yè)名,借書(shū)數(shù)及其總借書(shū)數(shù)。

select  姓名,性別,專業(yè)名,借書(shū)數(shù)
    from xs
    order by 專業(yè)名
    compute sum(借書(shū)數(shù)) by 專業(yè)名
       
總結(jié):group by:可用于解決分組統(tǒng)計(jì)的問(wèn)題。即只能顯示分組字段值及統(tǒng)計(jì)函數(shù)值,且每組只有一行統(tǒng)計(jì)數(shù)據(jù)。

     compute:可用于解決既要顯示具體的記錄數(shù)據(jù)又要顯示統(tǒng)計(jì)信息的問(wèn)題,并且不分組。即不需分組,既顯示字段值又要顯示統(tǒng)計(jì)函數(shù)值。

     compute...by:可用于解決既要顯示具體的記錄數(shù)據(jù)又要分組顯示統(tǒng)計(jì)信息的問(wèn)題。即分組統(tǒng)計(jì),既要顯示除分組字段以外的其它字段值又要顯示統(tǒng)計(jì)函數(shù)值。

(八)、select語(yǔ)句的其它功能:(選學(xué))

1、復(fù)制或創(chuàng)建表(into子句):P88

into子句功能:將select語(yǔ)句查詢所得的結(jié)果保存到一個(gè)新建的表中。

注意:into 子句應(yīng)放在select 字段名列表之后。into子句不能與compute子句一起使用。
 
例25:由xs表創(chuàng)建'計(jì)算機(jī)專業(yè)學(xué)生借書(shū)證'表,包括借書(shū)證號(hào)和姓名。

select 借書(shū)證號(hào),姓名  into 計(jì)算機(jī)專業(yè)學(xué)生借書(shū)證            
    from xs
    where 專業(yè)名='計(jì)算機(jī)'    

再如:將xs表數(shù)據(jù)全部復(fù)制到表xs4中。

select *  into xs4     
    from xs        

又例: 只復(fù)制xs表的結(jié)構(gòu),不復(fù)制記錄,即新表為空表。

select *  into xs7           
    from xs
    where 1=2         /*這里指定一個(gè)永遠(yuǎn)為假的條件*,以使無(wú)記錄被復(fù)制/
 
2、合并結(jié)果集(Union子句):可以將兩個(gè)或多個(gè)select查詢的結(jié)果合并成一個(gè)結(jié)果集,即合并兩個(gè)或多個(gè)查詢結(jié)果的記錄。

   格式為: select 語(yǔ)句1   {union  [all]  select  語(yǔ)句2}[...n]

   說(shuō)明:(1).用來(lái)合并的各select 語(yǔ)句字段列表中的列數(shù)、各對(duì)應(yīng)列的數(shù)據(jù)類型、列的順序必須一致。

         (2).all表示:合并的結(jié)果中保留兩個(gè)查詢結(jié)果的所有行,不去除重復(fù)行。若省略all則在合并的結(jié)果中將去除重復(fù)行。

         (3).合并后結(jié)果集中的列名來(lái)自第一個(gè)seleect 語(yǔ)句。

例26:合并xsbook庫(kù)中表xs1、xs2、xs3的全部記錄(假設(shè)這三個(gè)表的結(jié)構(gòu)相同)。

select *
    from xs1
union
    select *
        from xs2
union
    select *
        from xs3

3、顯示變量或表達(dá)式的值(無(wú)數(shù)據(jù)源查詢):

   select語(yǔ)句還可顯示常量、變量或表達(dá)式的值,也就是說(shuō)用select語(yǔ)句可查詢輸出不在數(shù)據(jù)表中的數(shù)據(jù),故又稱為無(wú)數(shù)據(jù)源查詢。

如:  select 'we are friends'

又如:select 123.56,'中國(guó)','沈陽(yáng)'

      select 45*23-1
 
注意:這里也可以為要輸出的值指定列顯示標(biāo)題,如: select '中國(guó)' as 國(guó)家,'沈陽(yáng)' as 城市

4.用select 語(yǔ)句向表中插入多行記錄。
 
格式:insert into 表名[(字段列表)]
         select 語(yǔ)句

注意:insert into表名[(字段列表)]和select查詢結(jié)果集的列數(shù)、列序和對(duì)應(yīng)列的數(shù)據(jù)類型必須一致。

例27:將表xs2中全體學(xué)生的記錄數(shù)據(jù)追加到表xs1中。

insert into xs1
    select * from xs2

再如:將表xs3中女生的記錄追加到表xs1中,要求只追加借書(shū)證號(hào),姓名,性別,出生時(shí)間字段值。

insert into xs1(借書(shū)證號(hào),姓名,性別,出生時(shí)間)
    select 借書(shū)證號(hào),姓名,性別,出生時(shí)間 
    from xs3
    where  性別=0


注意:一個(gè)select 語(yǔ)句中各子句的順序如下:

select---[記錄范圍]---字段名列表---[into]---[from]---[where]---[group by]---[having]---[order by]---[compute---[by]] 


練習(xí)一:以下所有操作均針對(duì)xsbook庫(kù)中的表xs或表book進(jìn)行。其中37-44為選做

1、查詢xs表中學(xué)生的借書(shū)證號(hào),姓名,借書(shū)數(shù)。

2、查詢book表中所有圖書(shū)信息。

3、查詢book表中的所有出版社名稱。

4、查詢book表中書(shū)名、單價(jià)、庫(kù)存量及各種庫(kù)存圖書(shū)的總價(jià)值(即總金額)。

5、查詢xs表中前3名學(xué)生的姓名,性別,出生時(shí)間。

6、查詢xs表中前30%學(xué)生的相關(guān)信息。

7、查詢xs表中計(jì)算機(jī)專業(yè)學(xué)生的相關(guān)信息。

8、查詢xs表中1979年后出生的學(xué)生的信息。

9、查詢book表中圖書(shū)單價(jià)在30-50之間的所有圖書(shū)的書(shū)名、單價(jià)。

10、查詢xs表中1980年出生的學(xué)生姓名,性別、出生時(shí)間。

11、查詢book表中圖書(shū)單價(jià)高于50元(不含50元)或低于30元(不含30元)的圖書(shū)的書(shū)名、單價(jià)。

12、查詢xs表中計(jì)算機(jī)、英語(yǔ)、體育、政治專業(yè)的學(xué)生的信息。
 
13、查詢xs表中非計(jì)算機(jī)、英語(yǔ)、體育專業(yè)的學(xué)生姓名、性別。
 
14、查詢book表中所有圖書(shū)名稱中包括了“政治”字樣的圖書(shū)的書(shū)名、單價(jià)。

15、查詢xs表中所有“王”姓同學(xué)的姓名、性別、出生時(shí)間。

16、查詢xs表中所有非計(jì)算機(jī)專業(yè)學(xué)生的信息。

17、查詢xs表中專業(yè)已確定的學(xué)生的借書(shū)證號(hào)、姓名。

18、查詢xs表中專業(yè)尚不確定的學(xué)生的信息。
 
19、查詢xs表中英語(yǔ)專業(yè)全體女生的姓名,出生時(shí)間。

20、查詢xs表中借書(shū)數(shù)在2本以上的全體男生的相關(guān)信息。

21、查詢xs表中計(jì)算機(jī)專業(yè)或者英語(yǔ)專業(yè)的學(xué)生姓名和借書(shū)證號(hào)。

22.查詢計(jì)算機(jī)專業(yè)的借書(shū)證號(hào),姓名,性別,并按學(xué)生借書(shū)數(shù)的降序排列記錄。

23.將xs表的所有記錄排序:先按性別排序,同性別的同學(xué)再按出生日期的升序排列記錄。

24.按庫(kù)存圖書(shū)的價(jià)值的升序排序查詢所有圖書(shū)的ISBN,書(shū)名及庫(kù)存圖書(shū)的價(jià)值(即單價(jià)*庫(kù)存量)。

25.查詢出生較早的三名同學(xué)的相關(guān)信息。

26.查詢計(jì)算機(jī)專業(yè)的學(xué)生總數(shù)。

27.查詢?nèi)w學(xué)生的總借書(shū)數(shù)、平均借書(shū)數(shù)、最多借書(shū)數(shù)和最少借書(shū)數(shù)。

28.查詢book表中有幾種圖書(shū)。

29.查詢xs表中有幾個(gè)專業(yè)。

30.查詢各專業(yè)的平均借書(shū)數(shù)。

31.查詢計(jì)算機(jī)和英語(yǔ)專業(yè)分別有多少學(xué)生。

32.查詢學(xué)生人數(shù)在2人以上(含)的專業(yè)及其學(xué)生人數(shù)。

33.查詢計(jì)算機(jī)專業(yè)學(xué)生的借書(shū)證號(hào),姓名,出生時(shí)間,借書(shū)數(shù)及平均借書(shū)數(shù)。

34.查詢所有圖書(shū)的書(shū)名,單價(jià),庫(kù)存量及庫(kù)存總量。

35.查詢各出版社所出版圖書(shū)的書(shū)名,單價(jià),出版社及平均價(jià)格。

36.查詢各專業(yè)學(xué)生的借書(shū)證號(hào),姓名,出生時(shí)間,專業(yè)名及其學(xué)生人數(shù)。

37.由xs表創(chuàng)建'英語(yǔ)專業(yè)學(xué)生'表,其中包括英語(yǔ)專業(yè)學(xué)生的全部信息。

38.復(fù)制xs表的結(jié)構(gòu)保存在表xin中,表xin中含有借書(shū)證、姓名、性別、出生時(shí)間字段。

39.將表xs1,xs2,xs3中的記錄合并到表women中,women中只包括女同學(xué)的借書(shū)證號(hào),姓名,出生時(shí)間。注意:每個(gè)select語(yǔ)句都要加where子句。

40.用下列形式顯示字符串:“中國(guó)”,“大連”,“170001”。

   國(guó)家   城市  郵編

   中國(guó)   大連  170001
  
41.顯示計(jì)算表達(dá)式123190*3/45-2321的值。

42.顯示系統(tǒng)的當(dāng)前日期和時(shí)間。注意:用函數(shù)getdate()獲取系統(tǒng)當(dāng)前日期日間。

43.將表xs2中80年之前出生的學(xué)生記錄數(shù)據(jù)追加到表xs1中。

44.將表xs3中借書(shū)數(shù)不為0的記錄追加到表xs1中,要求只追加借書(shū)證號(hào),姓名,性別,出生時(shí)間字段值。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
mis上機(jī)(1130)參考解
SQL Server 2008數(shù)據(jù)庫(kù)實(shí)用教程-第04章
SQL查詢語(yǔ)句 select 詳解
SQL語(yǔ)法簡(jiǎn)介
MySQL優(yōu)化(三) MySQL 卓越資源
SQL Select用法詳解
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服