zoukankan      html  css  js  c++  java
  • 数据库查询

    一、初始化库:

    1 CREATE TABLE products(pid INT PRIMARY KEY AUTO_INCREMENT, pname VARCHAR(30),price DOUBLE,pnum INT,cno INT ,pdate TIMESTAMP)

     其中timeStamp类型为时间戳形式。

    插入数据:

    1         insert into products values (null,'泰国大榴莲',98,12,1,null);
    2         insert into products values (null,'新疆大枣',38,123,1,null);
    3         insert into products values (null,'新疆切糕',68,50,2,null);
    4         insert into products values (null,'十三香',10,200,3,null);
    5         insert into products values (null,'老干妈',20,180,3,null);
    6         insert into products values (null,'豌豆黄',20,120,2,null);

     表内容:

    1)简单查询:

    1.查询所有的商品

    1 SELECT * FROM products;

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

    1 SELECT pname,price FROM products;

    3.查询所有商品都有那些价格.

    1 SELECT DISTINCT price FROM products;

    注意:去重distinct 语法

    select   distinct 字段名称1,字段名称2.。。。 from  表名;

    4.将所有商品的价格+10元进行显示.(别名)

    1 SELECT  price+10 FROM products;

    我们可以对price 加别名。

    语法:

    SELECT 字段名称  [as] 别名  FROM 表;

    其中关键字as可以省略。

    1 SELECT price+10 newprice FROM products;

    如果别名里有空格需要用单引号或者自执行符号。

    1 SELECT price+10  AS `loop price` FROM products;

     2)条件查询:

    1.查询商品名称为十三香的商品所有信息:

    SELECT * FROM  表名 WHERE 条件;

    1 SELECT * FROM  products WHERE pname='十三香';

    2.查询商品价格>60元的所有的商品信息:

    1 SELECT * FROM products WHERE price > 60;

    3.查询商品名称中包含”新”的商品

    1 SELECT * FROM products WHERE  pname LIKE '%新%';

    模糊查询:

                 LIKE '%新';以什么新结尾。

        LIKE '新%';以新开头。

        LIKE '%新%';包含新字。无论开头和结尾。

    如上的查询包含任意字符长度。

    如果限制字符的长度,使用‘_’ ,一个代表一个长度。

    1 SELECT *FROM products WHERE pname LIKE '新_'

    如上匹配2个长度以新开头的。

    4.查询价格为38,68,98的商品

    SELECT * FROM 表名 WHERE 列名 IN (值1,值2,值3);

    1 SELECT * FROM products WHERE price IN (38,68,98);

     5:。查询价格在20到60之间的商品

    SELECT  * FROM 表名 WHERE 列名  BETWEEN 较小值 AND 较大值;

    1 SELECT  * FROM products WHERE price  BETWEEN 20 AND 60;

    where后的条件写法:
                    * > ,<,=,>=,<=,<>,!=
                    * like 使用占位符 _ 和 %  _代表一个字符 %代表任意个字符.
                        * select * from product where pname like '%新%';
                    * in在某个范围中获得值.
                        * select * from product where pid in (2,5,8);
                    * between 较小值 and 较大值
                        select * from products where price between 50 and 70;

    3)排序查询:

    聚合函数:

    * sum(),avg(),max(),min(),count();

    1.获得所有商品的价格的总和:

    1 SELECT SUM(price) FROM products ;

    2.获得商品表中价格的平均数

    1 SELECT AVG(price) FROM products;

    值求四舍五入:聚合函数round()

    round(四舍五入的数据,保留几位小数)

    1 SELECT ROUND(AVG(price),1)FROM products ;

    3.获得商品表中有多少条记录:

    1 SELECT COUNT(*) productcount FROM products;

    注意:自动过滤null

    分组 groud by

    1.根据cno字段分组,分组后统计商品的个数.

    1 SELECT cno,SUM(pnum) FROM products GROUP BY cno;

    2.根据cno分组,分组统计每组商品的总数量,并且总数量> 200;

    1 SELECT cno,SUM(pnum)FROM products GROUP BY cno HAVING SUM(pnum) >200;

    注意:

    where后面不能接聚合函数,接聚合函数使用having.

    where 和having的区别:

    1)where是对分组前的数据进行过滤,having是对分组后的数据进行过滤。

    2)where后面不能接聚合函数,having可以。

    1.查询所有的商品,按价格进行排序.(asc-升序,desc-降序)

    SELECT * FROM 表名 ORDER BY 字段;

    1 SELECT * FROM products ORDER BY price ;
    1 SELECT * FROM products ORDER BY price DESC;

    2.查询名称有新的商品的信息并且按价格降序排序.

    1 SELECT * FROM products WHERE pname LIKE '%新%' ORDER  BY price DESC;
  • 相关阅读:
    Markdown语法
    IDEA常用快捷键及基本操作
    这一份MySQL书单,可以帮你搞定90%以上的面试题!
    你真的以为计算机网络不重要吗,这份书单帮你搞定相关面试题!
    学好程序员必知必会的数据结构,这一份书单你值得拥有!
    送你一份Redis书单,以后使用缓存的问题不用再问我啦!
    这本最适合夯实基础的经典 Java 书籍,可能80% 的 Java 程序员没有认真看过!
    荐书在精不在多,推荐一份夯实Java基础的必备书单!
    拿万元月薪必备的书单,学JAVA的程序员必看的5本书!
    8岁上海小学生B站教编程惊动苹果,库克亲送生日祝福
  • 原文地址:https://www.cnblogs.com/evilliu/p/9182252.html
Copyright © 2011-2022 走看看