1. 程式人生 > >MySQL基礎篇-SELECT 語句詳解

MySQL基礎篇-SELECT 語句詳解

1、基本的SELECT語句

     基本格式:

            SELECT 要查詢的列名 FROM 表名 WHERE 限制條件;

     若要查詢所有內容,則把“要查詢的列名”用*代替,代表要查詢表中所有的列。

     舉個栗子:

            栗子1)要查詢employee表中的name和age

                        SELECT name,age FROM employee;

            

       栗子2)要查詢employee表中的所有列

                   SELECT * FROM employee;

            

          從而可以比較下,SELECT 指定列和SELECT * 的區別

2、數學符號條件

     SELECT語句常常會有WHERE限制條件,用於達到更加精確的查詢。

     WHERE限制條件可以有數學符號(=,<,<=,>,>=,<>)

     在栗子1的基礎上,細化查詢條件age>25

     SELECT name,age FROM employee WHERE age>25;

     

3、“AND”和“OR”

      WHERE的後面可以有不止一條限制,根據條件之間的邏輯關係,可以用OR(或)和AND(且)連線

      在栗子1的基礎上,增加查詢age小於25或age大於30的資料

      SELECT name,age FROM employee WHERE age<25 OR age>30;

      

      或查詢年齡在25和30之間的資料

      SELECT name,age FROM employee WHERE age>25 AND age<30;

     

      另一種表現方式

      SELECT name,age FROM employee WHERE age BETWEEN 25 AND 30;

     

4、IN和NOT IN

     關鍵詞IN和NOT IN,主要用於篩選“在”或“不在”某個範圍內的結果

     舉個栗子:

            查詢在dpt3或dpt4的人

            SELECT * FROM employee WHERE in_dpt IN('dpt3','dpt4');

            

            查詢不在dpt1也不在dpt3的資料

            SELECT * FROM employee WHERE in_dpt NOT IN('dpt1','dpt3');

            

5、萬用字元

     萬用字元與關鍵字LIKE一起使用,萬用字元代表未知字元。

     主要有“_”和“%”兩種。“_”代表一個未指定字元,而“%”代表不定個未指定字元。

     舉個栗子:

            查詢電話號碼前四位為1101的資訊

            SELECT * FROM employee WHERE phone LIKE '1101__';

            

            查詢首字母為J的人

            SELECT * FROM employee WHERE name LIKE'J%';

            

6、對查詢結果進行排序

     對查詢結果按某一列進行排序,需用到ORDER BY關鍵詞。

     預設情況下,ORDER BY的結果是升序排列;若需按某一列倒序排列,則需再加入關鍵詞DESC

     舉個栗子:

           將所有查詢結果,按salary倒序進行排序

           SELECT * FROM employee ORDER BY salary DESC;

           

7、SQL內建函式和計算

     內建函式

函式名COUNTSUMAVGMAXMIN
作用計數求和求平均值最大值最小值
     COUNT函式可用於任何資料型別(因為它只是計數)

     SUM、AVG函式都只能對數字類資料型別做計算

     MAX、MIN可用於數值、字串或是日期時間資料型別

     舉個栗子:

            計算出salary的最大、最小值

           SELECT MAX(salary) AS max_salary, MIN(salary) FROM employee;

           

8、子查詢

     直接上栗子:

     查詢名為Tom的員工所在部門做了幾個工程。

     SELECT of_dpt,COUNT(proj_name) AS count_project

     FROM project

     WHERE of_dpt IN

           (SELECT in_dpt FROM employee WHERE name='Tom');

   

9、連線查詢

     連線的基本思想,就是把兩個或多個表當做一個新的表來操作

     栗子栗子:

           查詢各員工所在部門的人數,其中的id和name來自employee表,people_num來自department表

           SELECT id,name,people_num

           FROM employee,department

           WHERE employee,in_dpt=department.dpt_name

           ORDER BY id;

           

          或用JOIN ON語法

          SELECT id,name,people_num

          FROM employee JOIN department

          ON employee.in_dpt=department.dpt_name

          ORDER BY id;