第八章 数据库查询
基本的查询语句
- SELECT语句
- 基本语法:
SELECT 字段列表 FROM 表名 WHERE 查询条件;- 查询多个字段列表,字段列表处需要用逗号隔开
- where是字句,可选项,限定查询条件用
- 例如,
select f_id,f_name from test1 where f_name='xi';
- 基本语法:
单表查询
单表查询概念:从一张表中查询所有的数据
单表查询相关指令
- 查询所有字段:
SELECT * FROM 表的名称; - 查询指定字段:
SELECT 字段列表(列名) FROM 表名; - 查询指定记录:
- 使用in和not in关键字进行范围查找:
SELECT 字段列表 FROM 表名 WHERE 字段列表 IN (要查的数据内容);例如:
select s_id from test1 where s_id in (123,124);,表示在s_id内找到有123和124的数据内容SELECT 字段列表 FROM 表名 WHERE 字段列表 NOT IN (不要查的数据内容) ORDER BY 字段列表;例如:
select s_id from test1 where s_id not in (124) order by s_id;,表示在s_id内找除了124以外的数据内容
- 使用between关键字进行范围查找:
SELECT 字段列表 FROM 表名 WHERE 字段列表 BETWEEN 查找范围(小) AND 查找范围(大) ORDER BY 字段列表; - 使用like关键字进行模糊查询:
SELECT 字段列表 FROM 表名 WHERE 字段列表 LIKE '模糊查询内容1%模糊查询内容2';- 加了百分号表示查询以查询内容1开头的内容
例如,
select f_name from test1 where f_name like 'm%'; - 模糊查询结尾
- 模糊查询内容2为可选项,表示以模糊查询内容2结尾的内容
- 也可以“(前面字符个数的下划线)模糊搜索内容2”来查询以模糊搜索内容2结尾的内容
例如,
select f_name from test1 where f_name like '__i';
- 参数
- #%:匹配任意长度
- _:匹配任意字符
- 加了百分号表示查询以查询内容1开头的内容
- 使用in和not in关键字进行范围查找:
- 查询空值:
SELECT 列名 FROM 表名 WHERE 列名 IS NULL;例如:(’'表示空字符串,NULL表示空值)
insert into test2 (id,name) values ('129',NULL);
讯享网讯享网
SELECT ID FROM TEST2 WHERE NAME IS NULL; - 多条件查询:
SELECT 字段列表 FROM 表名 WHERE 字段列表 条件1 OR 条件2;例如,
SELECT ID FROM TEST2 WHERE NAME='1' OR NULL; - 查询结果排序:
- 语法格式:在查询条件最后加
ORDER BY 字段列表 - 例如:
select s_id from test1 where s_id in (123,124) order by s_id;
- 语法格式:在查询条件最后加
合并查询结果并去重
- 合并查询结果关键字:UNION
- 例如:
SELECT ID,NAME FROM TEST2 WHERE ID<128 UNION ALL SELECT ID,NAME FROM TEST2 WHERE ID IN (123,126) AND NAME IN (1);- UNION后加上ALL:不删除重复的行
- UNION后不加ALL:删除重复的行(去重)
正则表达式查询
- 正则表达式关键字:REGEXP
- 一条语句中匹配的字符可以不止一个
- 符号
| 符号 | 含义 |
|---|---|
| ^ | 匹配文件的开头字符 |
| $ | 匹配文件结尾的字符 |
| . | 匹配任意单个字符 |
| * | 匹配任意个字符(包括0个) |
| + | 匹配前面的字符1~n次 |
| [字符集合] | 匹配范围中的任意字符 |
| [^] | 匹配不在范围内的任何字符 |
| {n} | 匹配前面的字符至少n次 |
| {n,m} | 匹配前面的字符n~m次 |
| 匹配包含任意字符串的文本 |
查询特定字符开头的记录
例如:select * from test3 where name regexp '^x';,为查询name列中以x字符开头的记录
查询特定字符结尾的记录
例如:select * from test3 where name regexp 'i$';,为查询name列中以i字符结尾的记录
用点符号.替代任意字符
例如:select * from test3 where name regexp '^.';,为查询任意字符开头的记录
使用+和*匹配多个字符
例1:select * from test3 where name regexp 'e*';表示查询匹配e任意个的记录(包括0个)
例2:select * from test3 where name regexp 'e+';表示查询匹配e至少1个的记录

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/23906.html