SQLite基礎-8.子句(二)

SQLite子句(二)

1. GROUP BY子句

GROUP BY子句與SELECT語句一起使用,對數據進行分組。
位置:放在WHERE子句後,放在ORDER BY子句之前。

-- 語法
SELECT * FROM table_name
    WHERE [condition]
    GROUP BY column1,, column2,..
    ORDER BY column1 DESC;

-- 實例
select * from link_men
    where name = 'eric'
    group by address;

2. HAVING子句

HAVING 子句通常與GROUP BY子句聯合使用,用來過濾由GROUP BY子句返回的分組結果。

-- 語法
SELECT * FROM table_name
    WHERE [condition] 
    GROUP BY column1
    HAVING [condition]
    ORDER BY column1 DESC;

--實例
SELECT * FROM table_name
    GROUP BY address
    HAVING count(address) < 2;

實例

語句 描述
WHERE SALARY LIKE ‘200%’ 查找以 200 開頭的任意值
WHERE SALARY LIKE ‘%200%’ 查找任意位置包含 200 的任意值
WHERE SALARY LIKE ‘_00%’ 查找第二位和第三位爲 00 的任意值
WHERE SALARY LIKE ‘2_%_%’ 查找以 2 開頭,且長度至少爲 3 個字符的任意值
WHERE SALARY LIKE ‘%2’ 查找以 2 結尾的任意值
WHERE SALARY LIKE ‘_2%3’ 查找第二位爲 2,且以 3 結尾的任意值
WHERE SALARY LIKE ‘2___3’ 查找長度爲 5 位數,且以 2 開頭以 3 結尾的任意值

3. LIMIT 子句

LIMIT子句來限制SELECT語句返回的行數。

-- 語法
SELECT * FROM table_name
    [WHERE condition]
    [ORDER BY column1, column2,...] [ASC | DESC]
    LIMIT row_count
    OFFSET offset;
-- OFFSET 可選,偏移行。在約束行數之前,先跳過偏移行。

-- 實例
SELECT * FROM link_men
    ORDER BY salary
    LIMIT 10;

4. IF EXISTS 和 IF NOT EXISTS 子句

IF EXISTSIF NOT EXISTS子句表示如果當前創建的數據表名已經存在 和 如果當前創建的數據表名不存在,一般用在 CREATE和DROP語句中。
用於防止以下場景:

  • 當表存在時再次創建表或者視圖,產生異常:Error: table link_men already exists
  • 當表或者視圖不存在時刪除表,產生異常:Error: no such table: link_men
-- 語法
CREATE TABLE IF NOT EXISTS table_name (
    column1 datatype PRIMARY KEY,
    ...
    columnN datatype,
);

DROP TABLE IF EXISTS table_name;

-- 實例
CREATE TABLE IF NOT EXISTS link_men(
    ID INT PRIMARY KEY NOT NULL,
    ...
);

DROP TABLE IF EXISTS link_men;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章