头歌实验MySQL-单表查询(模式匹配,null,去重,and,or)

目录

第1关:带 LIKE 的字符匹配查询

第2关:带RLIKE的正则表达式字符匹配查询

第3关:查询空值与去除重复结果

第4关:带 AND 与 OR 的多条件查询


第1关:带 LIKE 的字符匹配查询

相关知识

使用通配符 % 模糊匹配数据内容
百分号通配符%可以匹配任意长度的字符,甚至包括零字符。

语法规则:
select 表达式列表  
 from 表来源  
 where 字段名 like '字符%' 
[ group by 组别表达式 ]
[ having  组选择条件表达式 ]
[ order by 排序表达式 [ asc | desc ] ]

编程要求

根据提示,在右侧代码编辑器处补充SQL代码,实现以下查询:
查询1.5匹,即功率3500W的冷暖空调,列出型号,生产厂家和价格,依价格从低到高排序。

-- 实现以下查询的SQL语句:
-- 查询1.5匹,即功率3500W的冷暖空调,列出型号,生产厂家和价格,依价格从低到高排序。
-- 请在此处添加实现代码
SELECT model, manufacturer, price
FROM products
WHERE model LIKE 'KFR%35%'
ORDER BY price ASC;
-- EOF

第2关:带RLIKE的正则表达式字符匹配查询

正则表达式

^a 匹配以a开头的字符串
a$ 匹配以a结尾的字符串
. 代表任意字符
*表 示它前面的字符重复N(N>=0)次,
a|b |用来分隔多种可能的选择,匹配a或b
a* 星闭包,a重复n(>=0)次
a{0,} = a*, a重复0~任意次
a+ +闭包,n(>=1)个a
a{1,} = a+
a? n(<=1)个a
a{0,1} = a?
a{m,n} a重复m~n次 (m<=n)
a{n} a重复n次
(string)* string重复n(>=0)次
[a-dX] abcdX中的任何一个
[^a-dX] 与上条相反
[0-9] 0-9中的任何一个

-- 实现以下查询的SQL语句:
-- 查询分体式室热泵制热冷暖双制,制冷量7200W或6000W的落地式空调的型号、生产厂家和价格,查询结果依价格从低到高排序输出。
-- 请在此处添加实现代码:

select model, manufacturer,price
from products
where model  rlike'^KFR-7[2]LW.*' OR model rlike '^KFR-6[0]LW.*'
order by price asc;


-- EOF

第3关:查询空值与去除重复结果

查询空值

一、IS NULL

语法规则:
select 表达式列表  
 from 表来源  
 where 字段名 is null  
[ group by 组别表达式 ]
[ having  组选择条件表达式 ]
[ order by 排序表达式 [ asc | desc ] ]

二、isnull()函数
isnull(字段)也可以用来判断字段值是否为NULL。

前例的SQL语句也可以这样写:
select * from staff where isnull(dob);

判断非空,则把where子句改成:
where not isnull(dob);

消除数据表中重复的数据

DISTINCT的用法:
select distinct 表达式列表  
 from 表来源  
[ where 行筛选条件]
[ group by 组别表达式 ]
[ having  组选择条件表达式 ]
[ order by 排序表达式 [ asc | desc ] ]

-- 实现以下查询的SQL语句:
-- 任务1:查查询产品表(products)表中,有多少厂家(manufacturer)的产品,一个厂家只列一次,即便该厂家有多个型号的产品。查询结果依厂家名称排序输出。
-- 请在此处添加实现代码
select distinct manufacturer
from products
order by manufacturer;
-- 任务2:查询出生日期(出生日期)未填写(值为NULL)的员工编号,姓名。查询结果依姓名排序输出。
-- 请在此处添加实现代码
select sid,sname
from staff
where dob is NULL
order by sname;

-- EOF

第4关:带 AND 与 OR 的多条件查询

-- 实现以下查询的SQL语句:
-- 查询“美的”、“格力”或 “志高”价格在3000(含)以下,功率为3500W的空调信息,列出厂家,型号,价格。查询结果依价格从低到高排序。
-- 请在此处添加实现代码

select  manufacturer, model,price 
from products 
where manufacturer in ('格力' , '美的' ,'志高') and price<=3000 and model rlike '^KF[RD]?-(35)[A-Za-z]'
order by price asc;
-- EOF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值