mysql从0到1(三):简单查询

一般约定:

         虽然SQL不区分大小写,但是对于我们会对SQL关键字使用大写,对表名和列名使用小写。

         一条SQL语句可以不使用;对于多条SQL语句必须用分号隔开。

一、简单查询

1、检索单个列:

SELECT prod_name FROM products

2、检索多个列:

SELECT prod_id,prod_name  FROM products

3、检索所有列:

SELECT * FROM products

4、检索不同的行:

SELECT DISTINCT vend_id FROM products :DISTINCT 关键字返回的id都是不同的。

5、限制结果:

返回的结果不多于5行:SELECT prod_name FROM products LIMIT 5

从第五行开始查后面的5行:SELECT prod_name FROM products LIMIT 5,5

6、排序数据:默认是升序排ASC, 也可以指定降序DESC

(1)单列排序:

SELECT prod_name FROM products ORDER BY prod_name

(2)多列排序:首先按名字排,再按价格排;

SELECT prod_name,prod_price,prod_id FROM products ORDER BY prod_name,prod_price                            

(3)单列降序:

SELECT prod_name FROM products ORDER BY prod_name DESC

(4)多列降序:价格最贵的在前面,然后再按名字排序

SELECT prod_id,prod_name,prod_price FROM products ORDER BY prod_price DESC,prod_name

二、条件查询Where语句

1、 相等、大于小于、不等于
(1)SELECT prod_name,prod_price FROM products  WHERE prod_price = 2.50

(2)SELECT prod_name,prod_price FROM products  WHERE prod_price <= 10

(3)SELECT prod_name,prod_price FROM products  WHERE prod_price <> 10

(4)范围查询:BETWEE x AND Y [x,y]

SELECT prod_name,prod_price FROM products WHERE prod_price BETWEEN 5 AND 10

(5)空值检查:IS NULL 和 IS NOT NULL

SELECT prod_name,prod_price FROM products WHERE prod_price IS NULL

SELECT prod_name,prod_price FROM products WHERE prod_price IS NOT NULL

2、组合where字句

(1)AND 和 OR

SELECT prod_id,prod_name,prod_price FROM products WHERE vend_id = 1003 AND prod_price <=10

SELECT prod_id,prod_name,prod_price FROM products WHERE vend_id = 1003 OR prod_price <=10

(2)  AND 和 OR 结合:注意AND优先级比较高,会优先处理AND

SELECT prod_id,prod_name,prod_price FROM products WHERE vend_id = 1003 or vend_id = 1002 and prod_price >=10

解决方法:加()

SELECT prod_id,prod_name,prod_price FROM products WHERE (vend_id = 1003 or vend_id = 1002) and prod_price >=10

(3) IN 操作符用来指定条件范围,范围中的每个条件都可以进行匹配。

SELECT prod_name,prod_price FROM products WHERE vend_id IN (1002,1003) ORDER BY prod_price

相当于 vend_id=1002 OR vend_id=1003

(4) 不在范围内:NOT IN

  • 使用IN 一般比OR快,IN 中可以包含select语句

3、通配符进行过滤

(1)like : 模糊查询。%表示任何字符出现任意次数:%x%, x%t,  x%

查询名字以jet开头的产品名列表:区分大小写---- jet Jet

SELECT prod_name FROM products WHERE prod_name like 'jet%'

(2)下划线 _ 也可以做匹配,但是只能匹配一个字符

  • 效率比较低,不要过度使用,特别是放在开头!

4、正则表达式

随着查询条件的复杂性增加,where 字句本身的复杂性也增加,这时候我们就应该考虑正则表达式。

正则表达式的作用是匹配文本,将一个正则表达式与一个文本串进行比较。

语法:REGEXP + 表达式(其实很类似like语句), 不过有区别:

like匹配整个列,全匹配(不使用通配符)

regexp : 包含就可以

(1)查询name中包含文本1000 的所有行

SELECT prod_name FROM products where prod_name REGEXP '1000' 

(2). 表示匹配任意字符 :  查询name中包含文本 x000 的所有行

SELECT prod_name FROM products where prod_name REGEXP '.000' 

(3)其他例子

regexp 1000|2000 : 或

regexp [123] Ton : 匹配特定字符,另一种形式的或语句

regexp  [1-5] Ton : 匹配范围 

特殊字符要\\转义

^ :文本开始

$ :  文本结束

*[0,x]、+[1,x]、?[0,1]

.....

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值