数据库查询

一、初始化库:

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;
原文地址:https://www.cnblogs.com/evilliu/p/9182252.html