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 EXISTS 和 IF 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;