mysql 找工作_MySQL之day2

1.建立数据给 product 表格table

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 mysql>show databases;2 +--------------------+

3 | Database |

4 +--------------------+

5 | information_schema |

6 | myshool |

7 | mysql |

8 | performance_schema |

9 | shop |

10 | sys |

11 +--------------------+

12 6 rows in set (0.00sec)13

14 mysql>show tables;15 +----------------+

16 | Tables_in_shop |

17 +----------------+

18 | product |

19 +----------------+

20 1 row in set (0.09sec)21

22 mysql>describe product;23 +----------------+--------------+------+-----+---------+-------+

24 | Field | Type | Null | Key | Default | Extra |

25 +----------------+--------------+------+-----+---------+-------+

26 | product_id | char(4) | NO | PRI | NULL | |

27 | product_name | varchar(100) | NO | | NULL | |

28 | product_type | varchar(32) | NO | | NULL | |

29 | sale_price | int(11) | YES | | NULL | |

30 | purchase_price | int(11) | YES | | NULL | |

31 | regist_date | date | YES | | NULL | |

32 +----------------+--------------+------+-----+---------+-------+

View Code

1.1  查询所有

1 mysql> select * fromproduct;2 +------------+--------------+--------------+------------+----------------+-------------+

3 | product_id | product_name | product_type | sale_price | purchase_price | regist_date |

4 +------------+--------------+--------------+------------+----------------+-------------+

5 | 0001 | T恤 | 衣服 | 1000 | 500 | 2009-09-20 |

6 | 0002 | 打孔器 | 办公用品 | 500 | 320 | 2009-09-11 |

7 | 0003 | 运行T恤 | 衣服 | 4000 | 2800 | NULL |

8 | 0004 | 菜刀 | 厨房用品 | 3000 | 2800 | 2009-09-20 |

9 | 0005 | 高压锅 | 厨房用品 | 6800 | 5000 | 2009-01-15 |

10 | 0006 | 叉子 | 厨房用品 | 500 | NULL | 2009-09-20 |

11 | 0007 | 砧板 | 厨房用品 | 880 | 790 | 2008-04-28 |

12 | 0008 | 圆珠笔 | 办公用品 | 100 | NULL | 2009-11-11 |

13 +------------+--------------+--------------+------------+----------------+-------------+

14 8 rows in set (0.00 sec)

1.2 为列设置别名   ,  常数查询

1 mysql> select 'product_type' as tpye , 39 as number ,sale_price fromproduct;2 +--------------+--------+------------+

3 | tpye | number | sale_price |

4 +--------------+--------+------------+

5 | product_type | 39 | 1000 |

6 | product_type | 39 | 500 |

7 | product_type | 39 | 4000 |

8 | product_type | 39 | 3000 |

9 | product_type | 39 | 6800 |

10 | product_type | 39 | 500 |

11 | product_type | 39 | 880 |

12 | product_type | 39 | 100 |

13 +--------------+--------+------------+

14 8 rows in set (0.00sec)15

16 mysql> select product_type as tpye , 39 as number ,sale_price fromproduct;17 +--------------+--------+------------+

18 | tpye | number | sale_price |

19 +--------------+--------+------------+

20 | 衣服 | 39 | 1000 |

21 | 办公用品 | 39 | 500 |

22 | 衣服 | 39 | 4000 |

23 | 厨房用品 | 39 | 3000 |

24 | 厨房用品 | 39 | 6800 |

25 | 厨房用品 | 39 | 500 |

26 | 厨房用品 | 39 | 880 |

27 | 办公用品 | 39 | 100 |

28 +--------------+--------+------------+

29 8 rows in set (0.00 sec)

1.3   从结果中删除重复行

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 mysql> select distinctproduct_type2 -> fromproduct;3 +--------------+

4 | product_type |

5 +--------------+

6 | 衣服 |

7 | 办公用品 |

8 | 厨房用品 |

9 +--------------+

10 3 rows in set (0.03 sec)

View Code

对含有null 的数据 的列使用distinct关键字, 将null 会保留下来

distinct 只能用在第一个列之前.

1.4  根据where 语句 来选择 记录

select ,  ...

from

where ;

注意:  随意改变顺序会报错

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 mysql> selectproduct_name2 -> where product_tpye = '衣服'

3 -> fromproduct;4 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from product' at line 3

5 mysql>

View Code

1.5 注释

单行 :   --

双行 :  /*   xxx */

1.6  算术运算符 和逻辑运算符

1.6.1 算术运算符

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 mysql> selectproduct_name,sale_price2 -> ,sale_price * 2 as"sale_price_x2"3 -> fromproduct;4 +--------------+------------+---------------+

5 | product_name | sale_price | sale_price_x2 |

6 +--------------+------------+---------------+

7 | T恤 | 1000 | 2000 |

8 | 打孔器 | 500 | 1000 |

9 | 运行T恤 | 4000 | 8000 |

10 | 菜刀 | 3000 | 6000 |

11 | 高压锅 | 6800 | 13600 |

12 | 叉子 | 500 | 1000 |

13 | 砧板 | 880 | 1760 |

14 | 圆珠笔 | 100 | 200 |

15 +--------------+------------+---------------+

16 8 rows in set (0.04 sec)

View Code

注意 :

null / 3

4 / null

2 - null

....

执行结果都为null

1.6.2 select 计算

mysql> select (23+232)/3 ascalculation;+-------------+

| calculation |

+-------------+

| 85.0000 |

+-------------+

1 row in set (0.03 sec)

1.6.3 比较运算符

c4c2a36b0d65116ab7fb7ea53b6a56cb.png

注意:

1.符号位置!!!!

2.char 排序 按照字典 和 数字不同 ,参考目录模式

如 : 11

1-8

2

22

3

3.  null  不可用于比较!!!

可以用  is null 或者 not is null

1.6.4  not  or and 运算符

1.  where not

2. where    or / and 

附:   含有 null 时为 不确定

2   聚合与排序

2.1  聚合函数

sum

avg

count

max

min

count

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 mysql> select * fromproduct ;2 +------------+--------------+--------------+------------+----------------+-------------+

3 | product_id | product_name | product_type | sale_price | purchase_price | regist_date |

4 +------------+--------------+--------------+------------+----------------+-------------+

5 | 0001 | T恤 | 衣服 | 1000 | 500 | 2009-09-20 |

6 | 0002 | 打孔器 | 办公用品 | 500 | 320 | 2009-09-11 |

7 | 0003 | 运行T恤 | 衣服 | 4000 | 2800 | NULL |

8 | 0004 | 菜刀 | 厨房用品 | 3000 | 2800 | 2009-09-20 |

9 | 0005 | 高压锅 | 厨房用品 | 6800 | 5000 | 2009-01-15 |

10 | 0006 | 叉子 | 厨房用品 | 500 | NULL | 2009-09-20 |

11 | 0007 | 砧板 | 厨房用品 | 880 | 790 | 2008-04-28 |

12 | 0008 | 圆珠笔 | 办公用品 | 100 | NULL | 2009-11-11 |

13 +------------+--------------+--------------+------------+----------------+-------------+

14 8 rows in set (0.00sec)15

16 mysql> alter table product add column co varchar(12) ;17 Query OK, 0 rows affected (1.08sec)18 Records: 0 Duplicates: 0 Warnings: 0

19

20 mysql> select * fromproduct ;21 +------------+--------------+--------------+------------+----------------+-------------+------+

22 | product_id | product_name | product_type | sale_price | purchase_price | regist_date | co |

23 +------------+--------------+--------------+------------+----------------+-------------+------+

24 | 0001 | T恤 | 衣服 | 1000 | 500 | 2009-09-20 | NULL |

25 | 0002 | 打孔器 | 办公用品 | 500 | 320 | 2009-09-11 | NULL |

26 | 0003 | 运行T恤 | 衣服 | 4000 | 2800 | NULL | NULL |

27 | 0004 | 菜刀 | 厨房用品 | 3000 | 2800 | 2009-09-20 | NULL |

28 | 0005 | 高压锅 | 厨房用品 | 6800 | 5000 | 2009-01-15 | NULL |

29 | 0006 | 叉子 | 厨房用品 | 500 | NULL | 2009-09-20 | NULL |

30 | 0007 | 砧板 | 厨房用品 | 880 | 790 | 2008-04-28 | NULL |

31 | 0008 | 圆珠笔 | 办公用品 | 100 | NULL | 2009-11-11 | NULL |

32 +------------+--------------+--------------+------------+----------------+-------------+------+

33 8 rows in set (0.00 sec)

View Code

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 mysql> select count(co ),count(purchase_price),count(*)2 -> fromproduct;3 +------------+-----------------------+----------+

4 | count(co ) | count(purchase_price) | count(*) |

5 +------------+-----------------------+----------+

6 | 0 | 6 | 8 |

7 +------------+-----------------------+----------+

8 1 row in set (0.00sec)9

10 mysql>

View Code

num

null 不在其中计算

avg

会把 null 删除再平均  !

max /min

几乎适合所有数据类型的列  而sum /avg 只能数值类型

2.2 也可以在聚合函数中使用  distinct

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 mysql> select count(distinctproduct_type)2 -> fromproduct;3 +------------------------------+

4 | count(distinct product_type) |

5 +------------------------------+

6 | 3 |

7 +------------------------------+

8 1 row in set (0.00sec)9

10 mysql> select distinct count( product_type)11 -> fromproduct;12 +----------------------+

13 | count( product_type) |

14 +----------------------+

15 | 8 |

16 +----------------------+

17 1 row in set (0.06 sec)

View Code

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

mysql> select sum(sale_price), sum(distinctsale_price)-> fromproduct;+-----------------+--------------------------+

| sum(sale_price) | sum(distinct sale_price) |

+-----------------+--------------------------+

| 16780 | 16280 |

+-----------------+--------------------------+

1 row in set (0.00sec)

mysql>

View Code

3.1 分组 Groud by

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 mysql> select product_type , count(*)2 -> fromproduct3 -> group byproduct_type ;4 +--------------+----------+

5 | product_type | count(*) |

6 +--------------+----------+

7 | 衣服 | 2 |

8 | 办公用品 | 2 |

9 | 厨房用品 | 4 |

10 +--------------+----------+

11 3 rows in set (0.00 sec)

View Code

group by 就像一把切分表的刀

聚合键中包含null, 结果会以 "不确定" 行 (空行) 的形式 表现出来

3.1.1使用 where 语句进行group by ,显示是无序的

select ,...

from

where

group by , ...

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 mysql> select purchase_price ,count(*)2 -> fromproduct3 -> where product_type = '衣服'

4 -> group bypurchase_price;5 +----------------+----------+

6 | purchase_price | count(*) |

7 +----------------+----------+

8 | 500 | 1 |

9 | 2800 | 1 |

10 +----------------+----------+

11 2 rows in set (0.33 sec)

View Code

执行顺序  :   from --> where--> group --> select

注意: select 语句 书写聚合键 以外 的列名 会发生错误!!

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 mysql> select purchase_price ,sale_price ,count(*)2 -> fromproduct3 -> where product_type = '衣服'

4 -> group bypurchase_price;5 ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'shop.product.sale_price' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

View Code

注意:  1. 别名 as 在select 中不可使用 ,因为执行顺序 见上!!!!

2. 不可在 where 语句中使用 count 聚合语句, 且只有having , select , order by 可以!!!

4.1  为聚合结果使用 指定条件

having

执行顺序 :  select --> from --> where --> group by -->  having

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 mysql> select product_type ,count(*)2 -> fromproduct3 -> group byproduct_type4 -> having count(*) = 2;5 +--------------+----------+

6 | product_type | count(*) |

7 +--------------+----------+

8 | 衣服 | 2 |

9 | 办公用品 | 2 |

10 +--------------+----------+

11 2 rows in set (0.00sec)12

13 mysql> select product_type ,count(*)14 -> fromproduct15 -> group byproduct_type16 ->;17 +--------------+----------+

18 | product_type | count(*) |

19 +--------------+----------+

20 | 衣服 | 2 |

21 | 办公用品 | 2 |

22 | 厨房用品 | 4 |

23 +--------------+----------+

24 3 rows in set (0.00 sec)

View Code

构成要素:

常数

聚合函数

Groud by 指定的列名 即 聚合键

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 mysql> select product_type ,count(*)2 -> fromproduct3 -> group byproduct_type4 -> having product_name = '圆珠笔';5 ERROR 1054 (42S22): Unknown column 'product_name' in 'having clause'

View Code

where  指定 行 所对应的 条件

having  指定 组 所对应的 条件

5.1 排序  order by 语句

顺序 :  在最后 !!!

select --> from --> where --> group by -->  having --> order by

升序 / 降序

asc  / desc

指定多个键时 优先排序 写在前面的

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

mysql> selectproduct_id , product_name , sale_price , purchase_price-> fromproduct-> order by sale_price asc , purchase_price desc;+------------+--------------+------------+----------------+

| product_id | product_name | sale_price | purchase_price |

+------------+--------------+------------+----------------+

| 0008 | 圆珠笔 | 100 | NULL |

| 0002 | 打孔器 | 500 | 320 |

| 0006 | 叉子 | 500 | NULL |

| 0007 | 砧板 | 880 | 790 |

| 0001 | T恤 | 1000 | 500 |

| 0004 | 菜刀 | 3000 | 2800 |

| 0003 | 运行T恤 | 4000 | 2800 |

| 0005 | 高压锅 | 6800 | 5000 |

+------------+--------------+------------+----------------+

8 rows in set (0.32 sec)

View Code

注意 : 排序键有 null 放在 后面/前面

可以使用聚合函数

如 :  order by count(*)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值