数据库MySQL数据查询---模糊查询(like和relike(或regexp))

数据库MySQL数据查询—模糊查询(like和relike(或regexp))

  1. like和relike(或regexp)的格式:

Like的格式是A(表名) like B(表达式),表示能否用B去完全匹配A的内容,简单来讲like是从头逐一字符匹配的,是全部匹配,返回的结果是True/False。

A(表名) relike B (表达式) ,表示A里边只要含有B即可,B中一般放正则表达式。regexp与其用法相似,即A(表名) regexp B (表达式)。

  1. 几种简单的匹配符号:

    (1)"_“表示任意单个字符
    (2)"%“表示任意数量的字符
    (3)如果想在A中匹配字符”_“和”%“或者“;”就需要转义。以“%”为例,即用”\%"(匹配一个%字符)。

大家可以通过以下例子对模糊查询做更进一步的了解:
例一、mySchool数据库中有如下表:
1.student表:学生(学号,密码,姓名,性别,年级编号,电话,地址,出生日期,邮件账号,身份证号);在这里插入图片描述2.subject表:课程表(课程编号,课程名称,学时,年级编号);
在这里插入图片描述

  1. 查询河北省的学生的学生姓名、地址、手机号码,列名用汉字显示。
    补充一点:这里给属性列起别名一共有三种方式(本人习惯用第一种形式):
    (1)select C(原来属性名) as 别名
    (2)select C(原来属性名) = 别名
    (3)select C(原来属性名) 别名
SELECT studentName as 姓名,address as 住址,phone as 手机号
from student
where address like'河北%';
  1. 查询姓李的男生信息。
SELECT *
from student
where studentName like'李%' and sex='男';
  1. 查询名字中包含“萍”字的女生信息。
SELECT *
from student
where studentName like'%萍%' and sex='女';
  1. 查询名字中第二个字为“秋”的学生信息。
SELECT *
from student
where studentName like'_秋%';
  1. 查询课程名第一个字符为“j”,第二字字符为“a”或“s”的课程信息。
SELECT *
from subject
where subjectName regexp '^j[as]';
  1. 查询课程名中包含“_”(下划线)的课程信息。
SELECT *
from subject
where subjectName like '%\_%';

例二、mySchool数据库中有如下表:
1.book表:图书(图书编号,书名,作者姓名,出版社,出版日期,现存数量,单价)
在这里插入图片描述
2.reader表:读者(读者编号,读者姓名,已借数量,联系地址)
在这里插入图片描述
3.pentlay表 罚款记录表(读者编号,图书编号,罚款日期,罚款类型,罚款金额)在这里插入图片描述

  1. 查询图书名以“欣赏”结尾的图书信息。
SELECT *
from book
where bname regexp '欣赏$';
  1. 查询图书名中包含“数据库”的图书编号、图书名、出版社、单价,列名以汉字显示。
SELECT bid as 图书编号,bname as 图书名,pubcomp as 出版社,price as 单价
from book
where bname regexp '数据库';
  1. 检索读者名中第三个字为“伟”的读者信息。
SELECT *
from reader
where rname like '__伟';
  1. 查询姓张的和姓王的读者信息。
SELECT *
from reader
where mname regexp'^[张王]';
  1. 查询罚款金额大于5元的罚款记录,输出读者编号、图书编号、罚款日期、罚款类型、罚款金额和一列“已处理”,最后一列的列名为“处理情况”,其他列的列名使用汉字。
SELECT rid as 读者编号,bid as 图书编号,pdate as 罚款日期,ptype as 罚款类型,amount as 罚款金额 ,'已处理' as 处理情况
from penalty
where amount>5 ;
  • 10
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值