数据库的查询

数据库查询

语法

select [distinct]  * | 列名,列名  from 表  where 条件

简单查询(SELECT  selectfrom

  1. 查询指定字段信息

    select 字段1,字段2,...from 表名;

    例如:

    select id,zname from zhangwu;

  2. 查询表中所有字段

           select * from 表名;

     例如:

           select * from zhangwu;

            注意:使用"*"在练习、学习过程中可以使用,在实际开发中,不推荐使用。原因,要查询的字段信息不明确,若字段数量很多,会导致查询速度很慢。

       3.distinct用于去除重复记录

         select distinct 字段 from 表名;

          例如:

                    select distinct zmoney from zhangwu;

      4.别名查询,使用的as关键字,as可以省略的.

别名可以给表中的字段,表设置别名。 当查询语句复杂时,使用别名可以极大的简便操作。 

 

     表别名格式:

          select * from 表名 as 别名; 或  select * from 表名 别名;

     列别名格式: select 字段名 as 别名 from 表名;  或 select 字段名 别名 from 表名;

例如

表别名:

select * from zhangwu as zw;

列别名:

select zmoney as m from zhangwu;

select zmoney m from zhangwu;

5.我们在sql语句的操作中,可以直接对列进行运算。

select (1+2);

例如:将所有账务的金额+10000元进行显示.

select zname,zmoney+10000 from zhangwu;

条件查询

select [distinct]*(所有)|字段名,...字段名 from 表名 [where 条件过滤]

比较运算符

>  <  >=  <=  =  <>  (!=)   is null 是否为null

逻辑运算符

与 and  或 or   非 not

模糊查询

like

      %:任意多个字符       _:单个字符

#查询商品名称为“花花公子”的商品所有信息:
    SELECT * FROM product WHERE pname = '花花公子'

#查询价格为800商品
SELECT * FROM product WHERE price = 800

#查询价格不是800的所有商品
SELECT * FROM product WHERE price != 800
SELECT * FROM product WHERE price <> 800
SELECT * FROM product WHERE NOT(price = 800)

#查询商品价格大于60元的所有商品信息
SELECT * FROM product WHERE price > 60;


#查询商品价格在200到1000之间所有商品
SELECT * FROM product WHERE price >= 200 AND price <=1000;
# 小的数值必须写在前边,可以多日期进行查询
SELECT * FROM product WHERE price BETWEEN 200 AND 1000;

#查询商品价格是200或800的所有商品
SELECT * FROM product WHERE price = 200 OR 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 pname LIKE '_____';

#查询名称第二个字为'想'的所有商品
SELECT * FROM product WHERE pname LIKE '_想%';

#查询商品名称是null的值
SELECT * FROM product WHERE pname IS NULL;

#查询商品名称不是null的值
SELECT * FROM product WHERE pname IS NOT NULL;

排序查询

通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。

格式:

SELECT * FROM 表名 ORDER BY 排序字段 ASC|DESC;

ASC 升序 (默认)

DESC 降序

#1.使用价格排序(升/降序)
SELECT * FROM product ORDER BY price DESC;
#2.显示商品的价格(去重复),并排序(降序)
SELECT DISTINCT price FROM product ORDER BY price DESC;
#4.显示商品的价格大于1000的商品所有信息,并排序(降序)
SELECT * FROM products WHERE price >1000 ORDER BY price DESC; 
#5.根据商品名称排序 默认使用编码表排序
SELECT * FROM products ORDER BY pname DESC;

distinct(去重)的用法: 放在查询select之后  他后面跟去重后要显示的内容,order by后面跟要排序的选项

聚合查询

之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个单一的值;另外聚合函数会忽略空值。

今天我们学习如下五个聚合函数:

  1. count:统计指定列不为NULL的记录行数;
  2. sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
  3. max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
  4. min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

      5.avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

格式:select 聚合函数(字段) from 表名

#1 查询商品的总条数

SELECT COUNT(*) FROM products;-- 13

SELECT COUNT(pname) FROM products;--  (对非数值字段进行统计时忽略空值)

SELECT COUNT(price) FROM products;-- 13

#2 查询价格大于200商品的总条数

SELECT COUNT(*) FROM products WHERE price >200;

#3. 对商品表查询,对所有的金额求和计算

SELECT SUM(price) FROM products;

# 对非数值字段求和结果为0

SELECT SUM(pname) FROM products;

#4.对商品表查询,对所有的金额计算平均值

SELECT AVG(price) FROM products;

#5. 统计出商品表中价钱的最大与最小值

SELECT MAX(price),MIN(price) FROM products;

SELECT MAX(price)最大值,MIN(price)最小值 FROM products;

分组查询

分组查询是指使用group by字句对查询信息进行分组。

  1. 格式:

SELECT 字段1,字段2… FROM 表名GROUP BY分组字段 HAVING 分组条件;

分组的字段必须写在 select 后面

分组操作中的having子语句,是用于在分组后对数据进行过滤的,作用类似于where条件。

  1. having与where的区别:
    1. having是在分组后对数据进行过滤.

where是在分组前对数据进行过滤

    1. having后面可以使用分组函数(统计函数)

               where后面不可以使用分组函数。

需求:

    根据商品名称相同,对数据进行分组,对每组数据进行求和

SELECT pname,SUM(price) FROM products GROUP BY pname;

 

-- 需求:对分组求和的结果进行过滤,只显示求和结果大于1000的商品

-- 先查询出价格大于1000的商品,对大于1000的商品进行分组求和

SELECT pname,SUM(price) s FROM products GROUP BY pname

HAVING s>1000;

SELECT pname,SUM(price) s FROM products GROUP BY pname

HAVING SUM(price)>1000;

分页查询

可以使用关键字 limit m,n

m:可以变化页码1,2,3,4

n:固定不变的分页数(每页5条)

数据库的数据是从0开始

--一共几页(向上取整)

select ceil(count(*)/6.0) from products;

-- 只要前5条数据

SELECT * FROM products LIMIT 5;

-- 要0开始到5结束的数据(第一页的数据)

-- 从0开始要5个数据

SELECT * FROM products LIMIT 0,5;

-- 要6开始到10结束的数据(第二页的数据)

-- 从6开始要5个数据

SELECT * FROM products LIMIT 5,5;

-- 要11开始到15结束的数据(第三页的数据)

-- 从10开始要5个数据

SELECT * FROM products LIMIT 10,5;

例:

SELECT * FROM zhangwu

-- 就要3条

SELECT * FROM zhangwu LIMIT 3

-- 从0开始要3条

SELECT * FROM zhangwu LIMIT 0,3

-- 从3开始要3条

SELECT * FROM zhangwu LIMIT 3,3

-- 从6开始要3条

SELECT * FROM zhangwu LIMIT 6,3

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值