zoukankan      html  css  js  c++  java
  • mysql 单表查询

    目录


    通配符“*”

    SELECT * FROM xc_disk_file;

    1. 使用通配符返回所有的列
    2. 按照表定义时的顺序显示
    3. 除非查询表中所有数据否则不建议使用通配符,虽然减少了输入查询语句的时间,但是获取不需要的列数据会见底查询和程序效率

    查询指定字段

    SELECT id,file_type FROM xc_disk_file;

    1. 按照格式 select 列名 from 表名
    2. 列名之间用“,”分隔可以指定多个列

    查询指定记录

    SELECT id,file_type

    FROM xc_disk_file

    WHERE id > 10;

    1. 在查询指定字段基础上,使用where
    2. where 后面添加条件判断符

    运算符说明

    判断符 IN、NOT

    SELECT pid,pname,market_price
        -> FROM product
        -> WHERE pid IN(30,40)
        -> ORDER BY market_price;

    IN

    1. IN 关键字后用括号包围一个集合,集合中是一个或者多个检索条件,满足条件的记录会被查询出来
    2. 如图查询出 pid 是 30、40 的数据
    3. NOT 关键字,WHERE pid NOT IN(30,40),可以查出所有pid不是30、40的数据

    判断符 BETWEEN..ADN..

    SELECT pid,pname,market_price
    FROM product
    WHERE market_price BETWEEN 100 AND 200
    ORDER BY market_price;
    1. BETWEEN..AND.. 表示某一范围内的集合
    2. 包含两端点,如上查询价格为[100,200]中的数据,包含100、200

    判断符 LIKE

    LIKE与匹配符搭配,进行查找

    百分号通配符 “%”,匹配多字符

    SELECT pid,pname 
    FROM product
    WHERE pname LIKE "%女装%"
    1. 查询所有名字中有女装的商品
    2. %表示任意字符,也可以是0字符

    下划线通配符 “_”,匹配单字符

    SELECT pid,pname,shop_price
    FROM product
    WHERE shop_price LIKE "__9"
    1. 查询所有价格三位数,个位为9的商品
    2. 一个“_”代表一个占位符,匹配一个字符

    判断符 IS NULL

    SELECT oid,addr
    FROM orders
    WHERE addr IS NULL
    1. 查询地址为空的订单
    2. IS NULL表示空值,当数据库字段设计时允许为NULL时才有
    3. 注意空值不是字段值为0,也不是空字符串

    逻辑运算符 AND

    SELECT pid,pname,shop_price,is_hot
    FROM product
    WHERE shop_price > 300 AND is_hot = 1
    1. 查询价格大于300,且热门商品
    2. AND就像&&,需要同时满足几个条件,可以理解成过滤的作用

    逻辑运算符 OR

    SELECT pid,pname,shop_price,is_hot
    FROM product
    WHERE shop_price > 300 OR is_hot = 1
    1. 查询价格大于300的商品,以及热门商品
    2. OR表示多个条件满足其中一个即可
    3. AND的优先级高于OR

    处理查询结果

    查询结果不重复 : DISTINCT 关键字

    SELECT DISTINCT pname
    FROM product
    1. pname中有许多同名的数据,使用DISTINCT修饰pname消除重复记录值

    查询结果进行排序 ORDER BY

    单列排序

    SELECT pid,pname,shop_price,is_hot
    FROM product
    ORDER BY shop_price
    1. 通过ORDER BY将查询结果按照价格进行升序排列

    多列排序

    SELECT pid,pname,shop_price,is_hot
    FROM product
    ORDER BY shop_price,is_hot
    1. 在单列排序的基础上,加上一个条件is_hot表示是否热门
    2. 多列排序首先第一列要有相同值,再比较第二列
    3. 以上语句先比较价格的高低,相同价格的再比较是否热门,热门用0,1表示

    指定排序方式:DESC、ASC

    SELECT pid,pname,shop_price,is_hot
    FROM product
    ORDER BY shop_price DESC
    1. 通过价格对商品进行降序排序,使用DESC关键字
    2. 升序排序使用ASC,默认为升序排列,所以当升序时可以不写ASC

    分组查询 GROUP BY

    SELECT pid,shop_price,COUNT(*) AS TOTAL
    FROM product
    GROUP BY shop_price
    ORDER BY pid
    1. 根据商品价格进行分组,使用GROUP BY shop_price表明
    2. 统计统一价格的商品有多少COUNT(*) AS TOTAL
    3. 如果想查看分组中某一字段的详情可以使用GROUP_CONCAT(market_price),如下:
    SELECT pid,shop_price,GROUP_CONCAT(market_price) AS mprice
    FROM product
    GROUP BY shop_price
    ORDER BY pid

    查看统一shop_price的market_price

    GROUP BY

    使用 HAVING 过滤分组

    SELECT pid,shop_price,GROUP_CONCAT(market_price) AS mprice
    FROM product
    GROUP BY shop_price HAVING COUNT(market_price) > 1
    ORDER BY pid
    1. 按照shop_price进行分组,且满足他们的有一种以上的market_price

    注意点: WHERE 和 HAVING 均起过滤作用,两者之间的区别在于,WHERE在分组之前进行过滤,HAVING在分组之后过滤。以上面的查询语句举例,即先查询出所有相同shop_price的记录,再在其基础上判断相同shop_price的商品是否有多种market_price。

    使用 WITH ROLLUP 统计记录数量

    SELECT pid,shop_price,COUNT(*) AS TOTAL
    FROM product
    GROUP BY shop_price WITH ROLLUP
    1. GROUP BY 分组后使用 WITH ROLLUP,在显示结果最后添加一条记录,统计所有 TOTAL 数量

    限制查询结果 LIMIT

    SELECT pid,shop_price
    FROM product
    LIMIT 4
    1. 按照条件显示头 4 条记录
    SELECT pid,shop_price
    FROM product
    LIMIT 4,3
    1. 显示第 5 条开始,共 3 条记录

    所以从以上结果可以看出 LIMIT 指定查询的位置向后偏移一位,LIMIT m,n 从第 m + 1 条结果开始显示, LIMIT m 就像 LIMIT 0,m 一样。所以LIMIT 1,1 返回什么呢?

    返回的是第二条结果,而不是第一条。

    使用集合函数查询

    COUNT() 函数

    SELECT pid,shop_price,COUNT(*) AS TOTAL
    FROM product
    SELECT pid,shop_price,COUNT(pdesc) AS TOTAL
    FROM product
    1. COUNT(*) 查询所有记录行总数,不管某列是否有为空值
    2. COUNT(expt) 查询指定列下的记录行数,忽略该列为空值的记录
    3. 空值的意思是 NULL,如果是空的字符串也会进行计数

    SUM() 函数

    SELECT SUM(shop_price) AS price_total,COUNT(shop_price) AS price_count
    FROM product
    WHERE shop_price = 119

    SUM()

    1. 查询价格为 199 的商品有多少用 COUNT()
    2. 查询价格为 199 的商品总价格为多少用 SUM(),即数量 * 单价

    AVG() 函数

    SELECT AVG(shop_price) AS price_avg
    FROM product
    WHERE pid >= 1 AND pid <= 5
    1. 查询指定列的平均值
    2. AVG() 查询每列平均值,所以查询多列的平均值需要在每一列中加上AVG()

    MAX() 函数

    SELECT MAX(shop_price) AS max
    FROM product
    1. 查询最大值
    SELECT market_price,MAX(shop_price) AS max
    FROM product
    GROUP BY market_price
    1. 可以和 GROUP BY 组合使用,表明分组中的最大值
    2. 如上查询相同 market_price 中,shop_price 最大的
    3. 前面的函数也都能和 GROUP BY 组合使用

    MIN() 函数

    SELECT market_price,MAX(shop_price) AS max,MIN(shop_price) AS min
    FROM product
    GROUP BY market_price
    1. 表示最小值,用法同MAX()
    2. 以上将最大值和最小值一起查询出来,可以对比一下看看
  • 相关阅读:
    java中的拷贝(二)深克隆
    java中的拷贝(一)
    java类的访问权限
    对象和对象引用
    equals和==
    类与继承(一)
    WebSocket简单介绍
    php获取请求的方式(get/post)
    php 使用jquery实现ajax
    PHP 系统常量及自定义常量
  • 原文地址:https://www.cnblogs.com/shuiyj/p/13185234.html
Copyright © 2011-2022 走看看