MySQL 数据库使用SQL SELECT语句来查询数据。
以下为在MySQL数据库中查询数据通用的 SELECT 语法:
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
- 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
- SELECT 命令可以读取一条或者多条记录。
- 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
- 你可以使用 WHERE 语句来包含任何条件。
- 你可以使用 LIMIT 属性来设定返回的记录数。
- 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
通用格式: select [distinct] [*] [列名1,列名2] from 表名 where 条件 group by ..having 条件过滤 order by 排序
我们一起来创建数据,然后使用select实现查询:
1.创建数据表,插入数据
create table orders(
id int,
product varchar(20),
price float
);
set names gbk;
insert into orders(id,product,price) values(1,'电视',900);
insert into orders(id,product,price) values(2,'洗衣机',100),(3,'洗衣粉',90),(4,'桔子',9),(5,'洗衣粉',90);
2.查询实现
select * from orders;
另外,对表中部分列的查询:(比如产品、价格)
select product,price from orders;
在运行这个之前,临时插入了一条数据,不用在意最后多的!
其他查询方式:
1、别名查询,使用as的关键字,as关键字时可以省略的
--表的别名(对于多表混合查询,比较实用)
来个简单的示例
select o.product,o.price from orders as o;
--列的别名(对列名可以使用中文展示,容易看懂)
来个简单的示例
select product as 商品,price as 价格 from orders;
省略关键字as,效果一样:
select product 商品,price 价格 from orders;
2、去掉重复的值,distinct
select distinct price from orders;
3、select运算查询(仅仅对查询结果进行了运算<+ - * />)
select *,price*0.8 折后价 from orders;
4、条件查询
比如,对价格大于100的所有商品进行查询
select * from orders where price > 100;
--关系运算符:> >= < <= != <>
<>:不等于,标准SQL语法
!=:不等于,非标准SQL语法
查询价格不等于90的所有商品,尝试一下
select * from orders where price <> 90;
select * from orders where price != 90;
查询价格在9到900之间的商品
select * from orders where price >9 and price <900;
如果使用between ... and ...,将包含符合数据的信息
select * from orders where price between 9 and 900;
如果数字从大到小,返回,查询位空
select * from orders where price between 10 and 900;
select * from orders where price between 900 and 10;
--逻辑运算:and,or,not
查询价格小于90,或大于100的商品
select * from orders where price <90 or price > 100;
--模糊查询:like
_:代表是一个字符
%:代表是多个字符
select * from orders where product like "%衣%";
select * from orders where product like "_视%";
--在某个范围中获得值:in
查询商品价格为900,9的所有商品
select * from orders where price in (9,900);
5、排序查询
order by关键字
asc:ascend 升序(默认的排序方式)
desc:descend 降序
示例:
查询所有商品,默认、升序、降序!
select * from orders order by price;
select * from orders order by price asc;
select * from orders order by price desc;
select * from orders where product like "%衣%" order by price desc;
6、聚合函数
sum : 求和
avg() : 平均值
count() : 统计数量
max() : 最大值
min() : 最小值
示例:
select sum(price) as 总价 from orders;
select avg(price) as 平均价格 from orders;
select count(*) as 商品总数 from orders;
注意:where条件后面不能接聚合函数(出现在分组之前)
如果这样写select * from orders where price > avg(price); 将报错
正确写法:
select * from orders where price > (select avg(price) from orders);
select avg(price) as 平均价格 from orders;
7、分组
group by 关键字
select * from orders;
select * from orders group by price;
select * from orders group by price order by price desc;
注意:使用having 关键字,可以接聚合函数(出现在分组之后)
我们这里不做示例!
编写顺序:
S..F..W..G..H..O
select..from..where..group by..having..order by
执行顺序:
F..W..G..H..S..O
from..where..group by..having..select..order by
持续更新之中...