<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MySQl心得4

        來源:懂視網 責編:小采 時間:2020-11-09 15:17:50
        文檔

        MySQl心得4

        MySQl心得4:MySQL中純數的記錄在程序中可以不加單引號;如果字符型的記錄中只有數字則也可以不加單引號;as 語句后面的記錄加不加單引號都一樣。 1.語法式: select [all | distinct | distinctrow ] [high_priority] [straight_join] [sql
        推薦度:
        導讀MySQl心得4:MySQL中純數的記錄在程序中可以不加單引號;如果字符型的記錄中只有數字則也可以不加單引號;as 語句后面的記錄加不加單引號都一樣。 1.語法式: select [all | distinct | distinctrow ] [high_priority] [straight_join] [sql

        MySQL中純數的記錄在程序中可以不加單引號;如果字符型的記錄中只有數字則也可以不加單引號;as 語句后面的記錄加不加單引號都一樣。 1.語法式: select [all | distinct | distinctrow ] [high_priority] [straight_join] [sql_small_result] [sql_big_resu

        MySQL中純數È的記錄在程序中可以不加單引號;如果字符型的記錄中只有數字則也可以不加單引號;as 語句后面的記錄加不加單引號都一樣。

        1.語法格式:

        select

        [all | distinct | distinctrow ]

        [high_priority]

        [straight_join]

        [sql_small_result] [sql_big_result] [sql_buffer_result]

        [SQL_cache | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]

        select_expr, ...

        [into outfile 'name' export_options | INTO dumpfile 'name']

        [from table_reference [ ,table_reference] …] /*FROM子句*/

        [wherewhere_definition] /*WHERE子句*/

        [group by{col_name| expr | position} [asc|desc], ... [with rollup]] /*GROUP BY子句*/

        [having where_definition] /* HAVING 子句*/

        [order by{col_name | expr | position} [ASC| DESC] , ...] /*ORDER BY子句*/

        [limt {[offset,] row_count | row_count OFFSET offset}] /*LIMIT子句*/

        說明:

        從這個基本語法可以看出,最簡單的SELECT語句是SELECTselect_expr,利用這個最簡單的SELECT語句,可以進行MySQL所支持的任何運算,例如,SELECT 1+1,它將返回2。

        SELECT關鍵詞的后面可以使用很多的選項:

        ALL | distinct | DISTINCTROW:這幾個選項指定是否重復行應被返回。如果這些選項沒有被給定,則默認È為ALL(所有的匹配行被返回)。DISTINCT和 DISTINCTROW是同義詞,用于消除結果集合中的重復行。

        ● HIGH_PRIORITY,STRAIGHT_JOIN和以SQL_為開頭的選項都是MySQL相對于標準SQL的擴展,這些選項在多數情況下可以選擇不使用。

        ● high_priority:給予SELECT更高的優(yōu)先權,使查詢立刻執(zhí)行,加快查詢速度。

        ● straight_join:用于促使MySQL優(yōu)化器把表聯(lián)合在一起,加快查詢速度。

        ● sql_small_result:可以與GROUP BY或DISTINCT同時使用,來告知MySQL優(yōu)化器結果集合是較小的。在此情況下,MySQL使用快速臨時表來儲存生成的表,不使用分類。

        ● SQL_buffer_RESULT:促使結果被放入一個臨時表中。這可以幫助MySQL提前解開表鎖定,在需要花費較長時間的情況下,也可以幫助把結果集合發(fā)送到客戶端中。

        ● SQL_BIG_RESULT:可以與GROUPBY或DISTINCT同時使用,來告知MySQL優(yōu)化器結果集合有很多行。在這種情況下,MySQL會優(yōu)先進行分類,不優(yōu)先使用臨時表。

        ● SQL_cache:告知MySQL把查詢結果存儲在查詢緩存中。對于使用UNION的查詢或子查詢,本選項會影響查詢中的所有SELECT。

        ● SQL_NO_CACHE:告知MySQL不要把查詢結果存儲在查詢緩存中。

        ● SQL_CALC_FOUND_ROWS:告知MySQL計算有多少行應位于結果集合中,不考慮任何LIMIT子句。

        ● SELECT…INTO OUTFILE 'name':這個語句可以將表中的行導出到一個文件中,這個文件被創(chuàng)建在服務器主機中,name為文件名。

        所有被使用的子句必須按語法說明中顯示的順序嚴格地排序。例如,一個HAVING子句必須位于GROUP BY子句之后,并位于ORDER BY子句之前。

        2. 消除結果集中的重復行

        對表只選擇其某些列時,可能會出現重復行。例如,若對XSCJ數據庫的XS表只選擇專業(yè)名和總學分,則出現多行重復的情況。可以使用distinct或distinctrow關鍵字消除結果集中的重復行,其格式是:select distinct|distinctrow 字段名1 [ , 字段名2…]

        其含義是對結果集中的重復行只選擇一個,保證行的唯一性。

        例:對XSCJ數據庫的XS表只選擇專業(yè)名和總學分,消除結果集中的重復行。 select distinct 專業(yè)名,總學分 from xs;

        2. 聚合函數(aggregationfunction)(分組:分類匯總)

        SELECT子句的表達式中還可以包含所謂的聚合函數。聚合函數常常用于對一組È進行計算,然后返回單個È。除COUNT函數外,聚合函數都會忽略空È。聚合函數通常與GROUP BY子句一起使用,但是不能與where語句一起使用。如果SELECT語句中有一個GROUP BY子句,則這個聚合函數對所有列起作用,如果沒有,則SELECT語句只產生一行作為結果。

        函 數 名

        說 明

        COUNT

        求組中項數,返回int類型整數

        MAX

        求最大È

        MIN

        求最小È

        SUM

        返回表達式中所有È的和

        AVG

        求組中È的平均È

        STD或STDDEV

        返回給定表達式中所有È的標準差

        VARIANCE

        返回給定表達式中所有È的方差

        GROUP_CONCAT

        返回由屬于一組的列È連接組合而成的結果

        BIT_AND

        邏輯或

        BIT_OR

        邏輯與

        BIT_XOR

        邏輯異或

        (1)COUNT函數

        聚合函數中最經常使用的是COUNT()函數,用于統(tǒng)計組中滿足條件的行數或總行數,返回SELECT語句檢索到的行中非NULLÈ的數目,若找不到匹配的行,則返回0。

        語法格式為:COUNT ( { [ ALL | DISTINCT ] expression } | * )

        其中,expression是一個表達式,其數據類型是除BLOB或TEXT之外的任何類型。ALL表示對所有È進行運算,DISTINCT表示去除重復È,默認為ALL。使用COUNT(*)時將返回檢索行的總數目,不論其是否包含 NULLÈ。

        count(*):統(tǒng)計記錄的條數(包括null);

        count(字段名):統(tǒng)計字段中有È的記錄個數(不包括null);

        count(distinct 字段名):去掉重復后再統(tǒng)計字段中有È的記錄個數(也不包括null)

        例1:求學生的總人數。

        SELECT COUNT(*) AS '學生總數' FROMXS;

        例2. 統(tǒng)計備注不為空的學生數目。

        SELECT COUNT(備注)AS '備注不為空的學生數目' FROM XS;

        注意:這里COUNT(備注)計算時備注為NULL的行被忽略

        例3: 統(tǒng)計總學分在50分以上的人數。

        SELECT COUNT(總學分) AS '總學分50分以上的人數'

        FROM XS WHERE 總學分>50;

        (2)MAX和MIN

        MAX和MIN分別用于求表達式中所有È項的最大È與最小È,語法格式為:MAX / MIN ( [ ALL | DISTINCT ] expression )其中,expression是常量、列、函數或表達式,其數據類型可以是數字、字符和時間日期類型。

        例:求選修101課程的學生的最高分和最低分。

        SELECT MAX(成績), MIN(成績)

        FROM XS_KC WHERE 課程號 ='101';

        注意:當給定列上只有空È或檢索出的中間結果為空時,MAX和MIN函數的È也為空。

        (3)SUM函數和AVG函數

        SUM和AVG分別用于求表達式中所有È項的總和與平均È,語法格式為:SUM / AVG ( [ ALL | DISTINCT ] expression )其中,expression是常量、列、函數或表達式,其數據類型只能是數È型數據。

        例:求學號081101的學生所學課程的總成績。

        SELECT SUM(成績) AS '課程總成績'

        FROM XS_KC WHERE 學號 ='081101';

        (4)variance和stddev(STD)函數

        variance和stddev函數分別用于計算特定的表達式中的所有È的方差和標準差。語法格式:

        VARIANCE / STDDEV ( [ ALL | DISTINCT ]expression )

        說明:方差的計算按照以下幾個步驟進行。

        ① 計算相關列的平均È;

        ② 求列中的每一個È和平均È的差;

        ③ 計算差È的平方的總和;

        ④ 用總和除以(列中的)È得結果。

        STDDEV函數用于計算標準差。標準差等于方差的平均根。所以,stddev(…)和sqrt(VARIANCE(…))這兩個表達式是相等的。

        STDDEV可以縮寫為STD,這對結果沒有影響。

        (5)group_concat函數

        MySQL支持一個特殊的聚合函數group_concat函數。該函數返回來自一個組指定列的所有非NULLÈ,這些È一個接著一個放置,中間用逗號隔開,并表示為一個長長的字符串。這個字符串的長度是有的,標準È是1024。

        語法格式為:GROUP_CONCAT({[ALL|DISTINCT] expression }| * )

        (6)BIT_AND、BIT_OR和BIT_XOR

        與二進制運算符|(或)、&(與)和^(異或)相對應的聚合函數也存在,分別是BIT_OR 、BIT_AND、BIT_XOR。例如,函數BIT_OR在一列中的所有È上執(zhí)行一個二進制OR。

        語法格式為: BIT_AND |BIT_OR | BIT_XOR( { [ ALL | DISTINCT ] expression } | * )

        例: 有一個表BITS,其中有一列bin_value上有3個integerÈ:1、3、7,獲取在該列上執(zhí)行BIT_OR的結果,使用如下語句:

        SELECT BIN(BIT_OR(bin_value)) FROM BITS;

        說明:MySQL在后臺執(zhí)行如下表達式:(001|011)|111,結果為111。 其中BIN函數用于將結果轉換為二進制位。

        3. 范圍比較

        用于范圍比較的關鍵字有兩個:between和in。

        當要查詢的條件是某個È的范圍時,可以使用between關鍵字。BETWEEN關鍵字指出查詢范圍,格式為:

        expression [ NOT ] between expression1 andexpression2

        當不使用NOT時,若表達式expression的È在表達式expression1與expression2之間(包括這兩個È,相反,使用not時,不包括這兩個È),則返回TRUE,否則返回FALSE;使用NOT時,返回È剛好相反。

        注意:expression1的È不能大于expression2的È。

        使用IN關鍵字可以指定一個È表,È表中列出所有可能的È,當與È表中的任一個匹配時,即返回TRUE,否則返回FALSE。使用IN關鍵字指定È表的格式為:expression IN ( expression [,…n])

        例:前面那個求1900年出生的學生的第三種做法;

        SELECT 學號, 姓名, 專業(yè)名, 出生日期 FROM XS

        WHERE 出生日期 NOT BETWEEN '1990-01-01'and '1990-12-31';

        例:查詢XS表中專業(yè)名為“計算機”、“通信工程”或“無線電”的學生的情況。

        SELECT * FROM XS

        WHERE 專業(yè)名 IN ('計算機', '通信工程', '無線電');

        該語句與下列語句等價:

        SELECT * FROM XS

        WHERE 專業(yè)名 ='計算機' OR 專業(yè)名 = '通信工程' OR 專業(yè)名 = '無線電';

        說明:IN關鍵字最主要的作用是表達子查詢。

        4. 空È比較

        當需要判定一個表達式的È是否為空È時,使用IS NULL關鍵字,格式為: expression IS [ NOT ] NULL

        當不使用NOT時,若表達式expression的È為空È,返回TRUE,否則返回FALSE;當使用NOT時,結果剛好相反。

        例: 查詢XSCJ數據庫中總學分尚不定的學生情況。

        SELECT * FROM XS

        WHERE 總學分 IS NULL;

        本例即查找總學分為空的學生,結果為空。

        5. group by子句主要用于根據字段對行分組。

        例如,根據學生所學的專業(yè)對XS表中的所有行分組,結果是每個專業(yè)的學生成為一組。group by子句的語法格式如下:group by {col_name | expr| position} [ASC | DESC], ... [WITH ROLLUP]

        說明:

        group by子句后通常包含列名或表達式。MySQL對GROUP BY子句進行了擴展,可以在列的后面指定ASC(升序)或DESC(降序)。GROUP BY可以根據一個或多個列進行分組,也可以根據表達式進行分組,經常和聚合函數一起使用。

        例1:將XSCJ數據庫中各專業(yè)名輸出。

        SELECT 專業(yè)名 FROM XS GROUP BY 專業(yè)名;

        例2: 求XSCJ數據庫中各專業(yè)的學生數。

        SELECT 專業(yè)名,COUNT(*) AS '學生數'

        FROM XS GROUP BY 專業(yè)名;

        使用帶rollup操作符的GROUP BY子句: 指定在結果集內不僅包含由 GROUP BY 提供的正常行,還包含匯總行。

        例: 在XSCJ數據庫上產生一個結果集,包括每個專業(yè)的男生人數、女生人數、總人數,以及學生總人數。

        SELECT 專業(yè)名, 性別, COUNT(*) AS '人數'

        FROM XS GROUP BY 專業(yè)名,性別 with rollup;

        使用了ROLLUP操作符后,將對GROUP BY子句中所指定的各列產生匯總行,產生的規(guī)則是:按列的排列的逆序依次進行匯總。如本例根據專業(yè)名和性別將XS表分為4組,使用ROLLUP后,先對性別字段產生了匯總行(針對專業(yè)名相同的行),然后對專業(yè)名與性別均不同的È產生了匯總行。所產生的匯總行中對應具有不同列È的字段È將置為NULL。

        6. having子句(使用分組后在進行挑選)

        使用having子句的目的與where子句類似,having與where的區(qū)別:WHERE子句是用來在FROM子句之后選擇行,where是對原始記錄進行挑選;而HAVING子句用來在GROUP BY子句后選擇行,對分組后的記錄進行挑選。

        語法格式: having 選擇條件;

        條件的定義和WHERE子句中的條件類似,不過HAVING子句中的條件可以包含聚合函數,而WHERE子句中則不可以。

        SQL標準要求HAVING必須引用GROUP BY子句中的列或用于聚合函數中的列。不過,MySQL支持對此工作性質的擴展,并允許HAVING引用SELECT清單中的列和外部子查詢中的列。

        例: 查找XSCJ數據庫中平均成績在85分以上的學生的學號和平均成績。

        SELECT 學號, AVG(成績) AS '平均成績'

        FROM XS_KC GROUP BY 學號 HAVING AVG(成績) >=85;

        7. order by字句

        在一條SELECT語句中,如果不使用order by子句,結果中行的順序是不可預料的。使用ORDER BY子句后可以保證結果中的行按一定順序排列。 語法格式:ORDER BY {col_name | expr | position} [ASC | DESC] , ...

        說明:ORDER BY子句后可以是一個列、一個表達式或一個正整數。正整數表示按結果表中該位置上的列排序。關鍵字asc表示升序排列,desc表示降序排列,系統(tǒng)默認È為ASC。

        例: 將通信工程專業(yè)的學生按出生日期先后排序。

        SELECT 學號,姓名,專業(yè)名,出生日期 FROM XS

        WHERE 專業(yè)名 = '通信工程' ORDER BY 出生日期;

        注意:當對空È排序時,ORDER BY子句將空È作為最小È對待,按升序排列的話將空È放在最上方,降序放在最下方。

        如果是按多個字段排序,先按第一個字段排,當第一個字段的È相同時,再按第二個排;如果第一個字段都不相同,則第二個字段用不著;order by語句在limit語句之前。

        8. limit字句

        LIMIT子句是SELECT語句的最后一個子句,主要用于被SELECT語句返回的行數。 語法格式:LIMIT {[offset,]row_count | row_count OFFSET offset}

        說明:如果記錄特別多可以用limit語句分頁!

        語法格式中的offset和row_count都必須是非負的整數常數,offset指定返回的第一行的偏移量,row_count是返回的行數。例如,“LIMIT 5”表示返回SELECT語句的結果集中最前面5行,而“LIMIT3,5”則表示從第4行開始返回5行。

        È得注意的是初始行的偏移量為0而不是1。

        例: 查找XS表中學號最靠前的5位學生的信息。

        SELECT 學號, 姓名, 專業(yè)名, 性別, 出生日期, 總學分

        FROM XS ORDER BY 學號 LIMIT 5;

        為了與PostgreSQL兼容,MySQL也支持LIMIT row_count OFFSET offset語法。所以將上面例子中的LIMIT子句換成“l(fā)imit 5 offset 3”,結果一樣。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MySQl心得4

        MySQl心得4:MySQL中純數的記錄在程序中可以不加單引號;如果字符型的記錄中只有數字則也可以不加單引號;as 語句后面的記錄加不加單引號都一樣。 1.語法式: select [all | distinct | distinctrow ] [high_priority] [straight_join] [sql
        推薦度:
        標簽: 記錄 可以 程序
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲熟妇无码爱v在线观看| 亚洲av日韩综合一区久热| 免费精品国偷自产在线在线| 亚洲国产AV一区二区三区四区 | 久久亚洲色一区二区三区| 午夜免费福利视频| 久久久久久亚洲精品无码| 亚洲AV无码专区国产乱码电影| 美女视频黄免费亚洲| 又长又大又粗又硬3p免费视频| 亚洲欧洲日产韩国在线| 亚洲视频在线精品| 成年人网站免费视频| 亚洲精品国产日韩无码AV永久免费网| 亚洲精品白色在线发布| 亚洲国产精品狼友中文久久久| 99国产精品免费视频观看| 日韩大片免费观看视频播放| 亚洲自国产拍揄拍| 青青草原亚洲视频| 国产高清在线免费| xx视频在线永久免费观看| 国产精品玖玖美女张开腿让男人桶爽免费看 | 产传媒61国产免费| 国产精品高清视亚洲精品| 国产亚洲精品资在线| 全免费一级毛片在线播放| 无码少妇精品一区二区免费动态| 香蕉视频免费在线播放| 在线观看日本亚洲一区| 亚洲福利在线视频| 中文字幕亚洲一区二区三区| 在线a毛片免费视频观看| 2021国内精品久久久久精免费| 中文在线免费不卡视频| 日韩国产欧美亚洲v片| 亚洲精品福利你懂| 亚洲第一成年人网站| 亚洲AV永久纯肉无码精品动漫| 亚洲国产精品毛片av不卡在线| 在线免费观看毛片网站|