WHERE
子句
WHERE
子句用于指定从一个表或多个表中获取数据的条件。
如果条件满足给定的条件,即为真(
**True**
)时,从表中返回特定的值。SELECT column1, column2, columnN
FROM table_name
WHERE [condition];
UPDATE...SET...
UPDATE
用于修改表中已有的记录(行数据)。可以使用带有**WHERE**
子句的**UPDATE**
查询来更新选定行,否则所有的行都会被更新。UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
DELETE
DELETE
用于删除表中已有的记录。可以使用带WHERE子句的DELETE查询来删除指定行,否则所有的记录都会被删除。DELETE FROM table_name
WHERE [condition];
LIKE
子句(功能与GLOB
类似)LIKE
运算符用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,
**LIKE**
返回真(**True**
);- 以下两个通配符与
LIKE
运算符一起使用。
方式2:
SELECT columnlist FROM table_name WHERE column LIKE ‘str/num‘;
| **语句** | **描述** |
| --- | --- |
| 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 结尾的任意值** |
| WHERE SALARY LIKE '**%-%**' | 查找**字符串中包含一个连字符(-)的任意字符串** |
<a name="BfiBl"></a>
# `GLOB`子句
`GLOB`运算符**用来匹配通配符指定模式的文本值**。
- 搜索表达式与模式表达式匹配,`GLOB`返回真(`True`);
- `**GLOB**`**对大小写敏感**;
- 星号(`*`);
- **代表匹配零个、一个或多个数字或字符**。
- 问号(`?`)。
- **代表匹配单一的数字或字符。**
```sql
# 方式1:
SELECT FROM table_name
WHERE column GLOB 'XXXX*';
# 方式2:
SELECT FROM table_name
WHERE column GLOB 'XXXX?';
语句 | 描述 |
---|---|
WHERE SALARY GLOB ‘200*‘ | 查找以 200 开头的任意值 |
WHERE SALARY GLOB ‘200‘ | 查找任意位置包含 200 的任意值 |
WHERE SALARY GLOB ‘?00*‘ | 查找第二位和第三位为 00 的任意值 |
WHERE SALARY GLOB ‘2??‘ | 查找以 2 开头,且长度至少为 3 个字符的任意值 |
WHERE SALARY GLOB ‘*2‘ | 查找以 2 结尾的任意值 |
WHERE SALARY GLOB ‘?2*3‘ | 查找第二位为 2,且以 3 结尾的任意值 |
WHERE SALARY GLOB ‘2???3‘ | 查找长度为 5 位数,且以 2 开头以 3 结尾的任意值 |
WHERE SALARY GLOB ‘-‘ | 查找字符串中包含一个连字符(-)的任意字符串 |
LIMIT
子句
LIMIT
子句用于限制由SELECT语句返回的数据数量(行数)。
# 常规用法:
SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows]; # 限定返回行数
# 加入偏移位OFFSET的用法:
SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows] OFFSET [row num]; # 从指定OFFSET开始,限定返回行数
ORDER BY
子句
ORDER BY
用来基于一个或多个列按升序或降序顺序排列数据。
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
其中:
ASC:表示升序,即从小到大排序;
DESC:表示降序。
GROUP BY
子句
GROUP BY
用于与SELECT
语句一起使用,对相同的数据进行分组归类。
在
SELECT
语句中,**GROUP BY**
子句放在**WHERE**
子句之后,**ORDER BY**
子句之前。SELECT column-list FROM table_name WHERE [ conditions ] GROUP BY column1, column2....columnN ORDER BY column1, column2....columnN;
HAVING
子句HAVING
子句允许指定条件来过滤将出现在最终结果中的分组结果。HAVING
子句用在由**GROUP BY**
子句创建的分组上设置条件。SELECT column1, column2 FROM table1, table2 WHERE [ conditions ] GROUP BY column1, column2 HAVING [ conditions ] ORDER BY column1, column2;
示例
```sql SELECT * FROM COMPANY GROUP BY name HAVING count(name) < 2;
该语句将返回name数量小于2的所有行数据。
<a name="FL2C5"></a>
# `DISTINCT`关键字(去重)
`DISTINCT`关键字与`SELECT`语句一起使用,**用来消除所有重复的记录,并只获取一次记录**。
```sql
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition];