1. 程式人生 > 實用技巧 >mysql基礎-進階二【條件查詢】

mysql基礎-進階二【條件查詢】

基礎語句-進階2【條件查詢】
  • 條件查詢

    • 語法:
      select 查詢列表 from 表名 where 篩選條件; 
      ​
      執行順序:
      1. from 子句
      2. where 子句
      3. select 子句
    • 特點

      • 按關係表示式篩選

        • 關係運算符: ><>=<==<>
        • # 1,查詢部門編號不是100的員工資訊
          SELECT * FROM employees WHERE department_id <> 100;
          ​
          #2, 工資小於15000的姓名和工資
          SELECT first_name,salary FROM employees WHERE
          salary < 15000;
      • 按邏輯表示式篩選

        • 與或非 and or not
        • #3, 查詢部門編號不是50-100之間的員工姓名,部門編號,郵箱
          SELECT last_name,department_id,email FROM employees WHERE NOT (department_id >= 50 AND department_id <= 100);
          ​
          #4,查詢獎金率>0.03 或者 員工編號在60-110之間的員工資訊
          SELECT * FROM employees WHERE commission_pct > 0.03 OR (employee_id >=
          60 AND employee_id <=110);
      • 模糊查詢

        • like
          in
          between and
          is null
        • like

          • /*
            功能:一般和萬用字元搭配使用,對字元型資料進行部分匹配查詢
            常見的萬用字元:
            _ 任意單個字元
            % 任意多個字元
            $ ESCAPE '$' 將$後面的字元轉義
            */
            ​
            ​
            #5, 查詢姓名中包含字元a的員工資訊
            SELECT * FROM employees WHERE last_name LIKE '%a%';
            ​
            #6, 查詢姓名中最後一個字元為e字元的員工資訊
            SELECT * FROM employees WHERE last_name LIKE
            '%e'; ​ #7, 查詢姓名中第三個字元為x字元的員工資訊 SELECT * FROM employees WHERE last_name LIKE '__x%'; ​ #5, 查詢姓名中包含字元a的員工資訊 SELECT * FROM employees WHERE last_name LIKE '%a%'; ​ #6, 查詢姓名中最後一個字元為e字元的員工資訊 SELECT * FROM employees WHERE last_name LIKE '%e'; ​ #7, 查詢姓名中第三個字元為x字元的員工資訊 SELECT * FROM employees WHERE last_name LIKE '__x%'; ​ #8, 查詢姓名中第二個字元為_字元的員工資訊 【$作為轉譯字元的標準寫法】 SELECT * FROM employees WHERE last_name LIKE '_$_%' ESCAPE '$';
        • in

          • /*
            功能:查詢某欄位的值是否屬於指定的列表之內
            a in (常量1,常量2,常量3...)
            a not in (常量1,常量2,常量3...)
            */
            ​
            ​
            #9, 查詢部門編號是30/50/90 的員工名,部門編號
            SELECT last_name,department_id FROM employees WHERE department_id IN(30,50,90);
            #SELECT last_name,department_id FROM employees WHERE department_id=30 OR department_id=50 OR department_id=90;
            ​
            #10, 查詢工種編號不是sh_clerk 或者it_prog的員工資訊
            SELECT * FROM employees WHERE job_id NOT IN ('SH_CLERK', 'IT_PROG');
        • between...and

          • /*
            功能:判斷某個欄位的值是否介於。。。之間
            ​
            */
            ​
            #11, 查詢部門編號是30-90之間的部門編號、員工姓名
            SELECT department_id,last_name FROM employees WHERE department_id BETWEEN 30 AND 90;
            ​
            #12, 查詢年薪不是10w~20w之間的員工姓名、工資、年薪
            SELECT last_name,salary,salary*12*(1+IFNULL(commission_pct,0)) FROM employees
            WHERE salary*12*(1+IFNULL(commission_pct,0)) NOT BETWEEN 100000 AND 200000;
        • is null

          • /*
            功能:判斷不為空
            ​
            is  只能用來判斷null
            =   只能用來判斷普通的內容
            <=> 安全等於,既能用來判斷null 也能用來判斷普通的內容
            ​
            ​
            */
            ​
            #13, 查詢沒有獎金的員工資訊
            SELECT * FROM employees WHERE commission_pct IS NULL;
            ​
            #14, 查詢有獎金的員工資訊
            SELECT * FROM employees WHERE commission_pct IS NOT NULL;