数据库8-数据库查询

数据库8-数据库查询第八章 数据库查询 基本的查询语句 SELECT 语句 基本语法 SELECT 字段列表 FROM 表名 WHERE 查询条件 查询多个字段列表 字段列表处需要用逗号隔开 where 是字句 可选项 限定查询条件用 例如 select f id f name from test1 where

大家好,我是讯享网,很高兴认识大家。

第八章 数据库查询

基本的查询语句

  • 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';

      • 参数
        • #%:匹配任意长度
        • _:匹配任意字符
  • 查询空值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个的记录

小讯
上一篇 2025-03-02 07:56
下一篇 2025-03-30 08:33

相关推荐

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