MySQL學習14:操作資料表中的記錄(二)

來源:互聯網
上載者:User

標籤:

        四查詢記錄

        MySQL資料庫中對於資料表中的記錄最常用的就是記錄的查詢,操作資料表中的記錄大都是記錄的查詢。尋找

記錄的文法結構為:

        SELECT select_expr [,select_expr ...]

        [

             FROM table_refereneces

             [WHERE where_condition] 

             [GROUP BY {col_name | position } [ASC | DESC],...]

             [HAVING where_condition]

             [ORDER BY {col_name | expr | position} [ASC | DESC],...]

             [LIMIT {[offset,] row_count | row_count OFFSET offset}]

        ];

       (1)最簡單的查詢命令

       1)顯示當前伺服器版本

       SELECT VERSION();

       2)顯示當前日期時間

       SELECT NOW();

       3)顯示目前使用者

       SELECT USER();

       4)顯示當前資料庫

       SELECT DATABAE();

       來看其中的兩個例子:


       (2)查詢運算式解析

       對於查詢運算式select_expr,每一個運算式表示想要的一列,必須有且至少一個。多個列之間以英文逗號分隔。

星號(*)表示所有列。table_name.*可以表示命名表的所有列。查詢運算式可以使用[AS] alias_name為其賦予列名。別

名可用於GROUP BY,ORDER BY或HAVING子句。

        例子:

        1)查看資料表所有列的記錄

        SELECT * FROM users;

        SELECT * FROM users3;


        2)查看資料表指定的列的記錄

        查看資料表users3中的id欄位和username欄位的兩列記錄,其中你所寫的查詢運算式的前後位置不一樣,查詢

的結果也不一樣。下面就是例子:

        SELECT id,username FROM users3;

        SELECT username,id FROM users3;


        3)使用table_name.*可以表示命名表的所有列

        SELECT users3.id,users3.username FROM users3;


        上述的例子並沒有體現出這樣查詢的好處,在以後我們學習了多表之間的串連查詢,這樣寫的好處就會立馬體現

出來,關於多表之間的串連查詢我們後續會深入學習。

        4)查詢運算式可以使用[AS] alias_name為其賦予列名

        SELECT id AS userID,username AS uname FROM users3;


        4)where語句進行條件查詢

        條件運算式表達的意思是對記錄進行過濾,如果沒有指定WHERE字句,則顯示所有記錄。在WHERE表達式

中,可以使用MySQL支援的函數或運算子。在這裡不做過多的介紹,以後再進行詳細的解析。

        SELECT id,username FROM users3 WHERE id % 2 = 0;


        5)GROUP BY語句對查詢結果分組

        [GROUP BY {col_name | position} [ASC | DESC],... ]

        GROUP BY語句進行分組顯示還可以指定列的名稱以及列的位置。ASC表示顯示的查詢結果按照預設的升序排

列,DESC表示降序排列。

        SELECT * FROM users3;

        按性別進行分組:

        SELECT sex FROM users3 GROUP BY sex;

        或者SELECT sex FROM users3 GROUP BY 1;


        6)HAVING語句設定分組條件

        分組條件:[HAVING where_condition]

        SELECT sex,age FROM users3 GROUP BY 1 HAVING age > 23;

        SELECT sex FROM users3 GROUP BY 1 HAVING count(id) > 12;

        SELECT sex FROM users3 GROUP BY 1 HAVING count(id) > 1;


        7)ORDER BY語句對查詢結果排序

        [ORDER BY {col_name | expr | position} [ASC | DESC],... ]ORDER BY語句進行分組顯示還可以指定列的名

稱,運算式以及列的位置。ASC表示預設的升序排列,DESC表示降序排列。

       例子:

       SELECT * FROM users3;

       SELECT * FROM users3 ORDER BY id DESC;


       兩個欄位進行排序

       SELECT * FROM users3 ORDER BY age,id DESC;


       上述的結果表示;首選是以age欄位進行升序排列,如果有重複的數位話,再以id欄位的降序開始排列,這就輸

出了上面的結果。需要注意的是,如果指定的第一個需要排列的欄位無法進行排序,只能進行第二個欄位排列;如果

指定的第一個欄位能排序,那麼第二個欄位視情況而定。

       8)LIMIT語句限制查詢數量

       限制查詢結果返回的數量:[LIMIT {[offset,] row_count | row_count OFFSET offset}]預設的是返回所有記錄,因

此返回查詢結果的數量就需要我們自己指定。這裡最需要注意的是記錄都是從索引0開始記錄的

       例子:

       1指定一個數字,返回的是查詢結果的數量,當然是從索引為0開始計算的。

       SELECT * FROM users3 LIMIT 2;

       2指定兩個數字,第一個數字代表返回查詢記過的開始索引位置,第二數字代表但會查詢結果的數量。

       SELECT * FROM users3 LIMIT 3,2;


       3GROUP BY和LIMIT複合陳述式

       SELECT * FROM users3 ORDER BY id DESC;

       SELECT * FROM users3 ORDER BY id DESC LIMIT 2,2;


       這裡結果表示的是:分組查詢的結果不管是正序排列還是倒序排列,LIMIT限制語句的索引位置都是從索引0的位

置開始的,這裡所說的索引都是記錄的索引位置,也就是記錄的初始位置開始。


MySQL學習14:操作資料表中的記錄(二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.