1. 程式人生 > 其它 >SQL語言的學習

SQL語言的學習

DQL語言的學習:(查詢)

基本的SELECT語句

進階1:基礎查詢

/*
語法:
select 查詢列表 from 表名;

類似於:System.out.println(列印東西);

特點:

1、查詢列表可以是:表中的欄位、常量值、表示式、函式
2、查詢的結果是一個虛擬的表格
*/
—— —— —— —— —— —— —— —— —— —— —— —— —— —— —— ——
USE myemployees;

  • 1.查詢表中的單個欄位

SELECT last_name FROM employees;

  • 2.查詢表中的多個欄位
    SELECT last_name,salary,email FROM employees;

  • 3.查詢表中的所有欄位

    • 方式一:
      SELECT
      employee_id,
      first_name,
      last_name,
      phone_number,
      last_name,
      job_id,
      phone_number,
      job_id,
      salary,
      commission_pct,
      manager_id,
      department_id,
      hiredate
      FROM
      employees ;

    *方式二:
    SELECT * FROM employees;

  • 4.查詢常量值
    SELECT 100;
    SELECT 'john';

  • 5.查詢表示式
    SELECT 100%98;

  • 6.查詢函式

SELECT VERSION();

  • 7.起別名
    /*
    ①便於理解
    ②如果要查詢的欄位有重名的情況,使用別名可以區分開來

*/

  • 方式一:使用as
    SELECT 100%98 AS 結果;
    SELECT last_name AS 姓,first_name AS 名 FROM employees;

  • 方式二:使用空格
    SELECT last_name 姓,first_name 名 FROM employees;

  • 案例:查詢salary,顯示結果為 out put
    SELECT salary AS "out put" FROM employees;

  • 8.去重

  • 案例:查詢員工表中涉及到的所有的部門編號
    SELECT DISTINCT department_id FROM employees;

  • 9.+號的作用

/*

java中的+號:
①運算子,兩個運算元都為數值型
②連線符,只要有一個運算元為字串

mysql中的+號:
僅僅只有一個功能:運算子

select 100+90; 兩個運算元都為數值型,則做加法運算
select '123'+90;只要其中一方為字元型,試圖將字元型數值轉換成數值型
如果轉換成功,則繼續做加法運算
select 'john'+90; 如果轉換失敗,則將字元型數值轉換成0

select null+10; 只要其中一方為null,則結果肯定為null

*/

  • 案例:查詢員工名和姓連線成一個欄位,並顯示為 姓名

SELECT CONCAT('a','b','c') AS 結果;

SELECT
CONCAT(last_name,first_name) AS 姓名
FROM
employees;

—— —— —— —— —— —— —— —— —— —— —— —— —— —— —— ——

進階2:條件查詢

/*

語法:(先執行from,後執行where,最後執行select*)
select
查詢列表
from
表名
where //此處的where相當於Java中的if
篩選條件;
—— —— —— —— —— —— —— —— —— —— —— —— —— —— —— ——

  • 分類:
    一、按條件表示式篩選

    簡單條件運算子:> < = != <> >= <=

    二、按邏輯表示式篩選
    邏輯運算子:
    作用:用於連線條件表示式
    && || !
    and or not

    &&和and:兩個條件都為true,結果為true,反之為false
    ||或or: 只要有一個條件為true,結果為true,反之為false
    !或not: 如果連線的條件本身為false,結果為true,反之為false

    三、模糊查詢
    like
    between and
    in
    is null

*/

  • 一、按條件表示式篩選

    • 案例1:查詢工資>12000的員工資訊

SELECT
*
FROM
employees
WHERE
salary>12000;

  • 案例2:查詢部門編號不等於90號的員工名和部門編號
    SELECT
    last_name,
    department_id
    FROM
    employees
    WHERE
    department_id<>90;

  • 二、按邏輯表示式篩選

    • 案例1:查詢工資z在10000到20000之間的員工名、工資以及獎金
      SELECT
      last_name,
      salary,
      commission_pct
      FROM
      employees
      WHERE
      salary>=10000 AND salary<=20000;
    • 案例2:查詢部門編號不是在90到110之間,或者工資高於15000的員工資訊
      SELECT

FROM
employees
WHERE
NOT(department_id>=90 AND department_id<=110) OR salary>15000;

  • 三、模糊查詢
    /*
    like
    between and
    in
    is null|is not null

*/

  • 1.like
    /*
    特點:
    ①一般和萬用字元搭配使用
    萬用字元:
    % 任意多個字元,包含0個字元
    _ 任意單個字元
    *、

  • 案例1:查詢員工名中包含字元a的員工資訊

select
*
from
employees
where
last_name like '%a%';#abc

  • 案例2:查詢員工名中第三個字元為e,第五個字元為a的員工名和工資
    select
    last_name,
    salary
    FROM
    employees
    WHERE
    last_name LIKE '__n_l%';

  • 案例3:查詢員工名中第二個字元為_的員工名

SELECT
last_name
FROM
employees
WHERE
last_name LIKE '_\(_%' ESCAPE '\)';

  • 2.between and
    /*
    ①使用between and 可以提高語句的簡潔度
    ②包含臨界值
    ③兩個臨界值不要調換順序

*/

  • 案例1:查詢員工編號在100到120之間的員工資訊

SELECT
*
FROM
employees
WHERE
employee_id >= 120 AND employee_id<=100;

----------------------

SELECT
*
FROM
employees
WHERE
employee_id BETWEEN 120 AND 100;

  • 3.in
    /*
    含義:判斷某欄位的值是否屬於in列表中的某一項
    特點:
    ①使用in提高語句簡潔度
    ②in列表的值型別必須一致或相容
    ③in列表中不支援萬用字元

*/

  • 案例:查詢員工的工種編號是 IT_PROG、AD_VP、AD_PRES中的一個員工名和工種編號

SELECT
last_name,
job_id
FROM
employees
WHERE
job_id = 'IT_PROT' OR job_id = 'AD_VP' OR JOB_ID ='AD_PRES';

------------------

SELECT
last_name,
job_id
FROM
employees
WHERE
job_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');

 4、is null
/

=或<>不能用於判斷null值
is null或is not null 可以判斷null值

*/

  • 案例1:查詢沒有獎金的員工名和獎金率
    SELECT
    last_name,
    commission_pct
    FROM
    employees
    WHERE
    commission_pct IS NULL;

* 案例1:查詢有獎金的員工名和獎金率
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct IS NOT NULL;

----------以下為×
SELECT
last_name,
commission_pct
FROM
employees

WHERE
salary IS 12000;

安全等於 <=>

* 案例1:查詢沒有獎金的員工名和獎金率
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct <=>NULL;

  • 案例2:查詢工資為12000的員工資訊
    SELECT
    last_name,
    salary
    FROM
    employees

WHERE
salary <=> 12000;

  • is null pk <=>

IS NULL:僅僅可以判斷NULL值,可讀性較高,建議使用
<=> :既可以判斷NULL值,又可以判斷普通的數值,可讀性較低

———————————————————————————————————————————————

過濾和排序資料

分組函式

分組查詢

多表查詢

分頁查詢

DML語言的學習:(增刪改)

DDL語言的學習:(庫和表)

TCL語言的學習:(事務控制)