WHERE子句
WHERE子句用于指定从一个表或多个表中获取数据的条件。
如果条件满足给定的条件,即为真(
**True**)时,从表中返回特定的值。SELECT column1, column2, columnNFROM table_nameWHERE [condition];
UPDATE...SET...UPDATE用于修改表中已有的记录(行数据)。可以使用带有**WHERE**子句的**UPDATE**查询来更新选定行,否则所有的行都会被更新。UPDATE table_nameSET column1 = value1, column2 = value2...., columnN = valueNWHERE [condition];
DELETEDELETE用于删除表中已有的记录。可以使用带WHERE子句的DELETE查询来删除指定行,否则所有的记录都会被删除。DELETE FROM table_nameWHERE [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_nameWHERE column GLOB 'XXXX*';# 方式2:SELECT FROM table_nameWHERE 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];
