MySQL DQL 基本查询

一.概念

        数据查询不应只是简单返回数据库中存储的数据,还应该根据需要对数据进行筛选以及确定数据以什么样的格式显示。

二.语法格式

select 列名 from 表 where 条件

1.查询所有的商品

select * from product;

2.查询商品名和商品价格

select pname,price from product;

 3.别名查询

使用关键字as,as可以省略

表别名:

select * from product as p;
select * from product p;

列别名:

select pname as '商品名',price as '商品价格' from product;

4.去掉重复值

select distinct price from product;

5.运算查询

select pname,price+10 from product;

三.运算符

1.算数运算符

+ - * / %

2.比较运算符

1)<=>

安全的等于,两个操作数均为null时,其所得值为1;当一个操作数为null时,其所得值为0.

2)<> 或!=

不等于

3)IS NULL或ISNULL

判断一个值是否为NULL

4)IS NOT NULL

5)LEAST 

返回最小值

6)GREATEST

返回最大值

7)BETWEEN AND

判断一个值是否落在两个值之间

8)IN

判断一个值是列表中的任意一个值

9)NOT IN

10)LIKE 

通配符匹配

11)REGEXP

正则表达式匹配

 注:

1)通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。

2)正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。

3.逻辑运算符

1)NOT或!

逻辑非

2)AND或&&

逻辑与

3)OR或||

逻辑或

4)XOR

逻辑异或

四.运算符的应用 

1.算数运算符

select pname,price+10 as new_price from product;

2.比较运算符/逻辑运算符

select * from product where pname='海尔洗衣机';
select * from product where price=800; 
select * from product where price in (200,800);
select * from product where pname like '%裤%';

%用来匹配任意字符

select * from product where pname like '_%蔻';

_下划线匹配单个字符

select * from product where category_id is null;

不能够使用=,因为null不等于任何值。

求最小值和最大值时,如果有一个值为null,则不进行比较,结果直接为null。

五.排序查询

对读取的数据进行排序,使用order by语句

语法格式:

select

        字段名1,字段名2,……

from 表名

order by 字段名1 [asc,desc],字段名2 [asc,desc]

asc表示升序,desc表示降序,默认升序

order by 子句,放在查询语句的最后面。limit子句除外

select * from product order by price desc;
select * from product order by price desc , category_id desc;
select distinct price from product order by price desc;

六.聚合查询

之前我们做的查询都是横向查询,而聚合查询是对一列的值进行计算,返回一个值。

1.查询商品的总条数

select count(pid) from product;
select count(*) from product;

查询所有记录不为空的条数

select count(pid) from product where price>200;

 2.查询总和

select sum(price) from product where category_id='c001';

3.查询最大/最小价格

select max(price) from product;
select min(price) from product;

4.查询平均价格

select avg(price) from product where category_id='c002';

5.聚合查询对于null的处理

1.count函数对null值的处理

如果count函数的参数为*,则统计所有记录的个数。如果参数为某字段,则不统计含null值的记录个数。

2.sum/avg/max/min对null值的处理

忽略null值的存在

七.分组查询(group by)

对查询信息进行分组

select category_id,count(id) from product group by category_id;

分组之后,select后面只能写分组字段和聚合函数。

分组之后的条件筛选——having

分组之后对统计结果进行筛选不能够使用where

having子句用来从分组的结果中筛选行。

select category_id,count(id) cnt from product group by category_id having cnt>4;

SQL的执行顺序

from ->group by ->count ->select ->having ->order by 

八.分页查询(limit)

采用分页显示方式。

limit m,n

m:整数,表示从第几条索引开始

n:整数,表示查询多少条数据

select * from product limit 5;

显示前5条 

select * from product limit 3,5;

从第四条开始显示,显示5条。

九.数据导入

将一张表的数据导入到另一张表中

格式;

insert into table2 select * from table1

要求目标表2必须存在。

insert into product3 select category_id , count(*) from product group by category_id;

十.总结

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值