练习用的表

表结构

把num值处于[20,29]之间,改为20;num值处于[30,39]之间的,改为30。

方法一:

update mian set num = 20 where num between 20 and 29;

update mian set num = 30 where num between 30 and 39;

方法二:

update mian set num = floor(num/10)*10 where num between 20 and 39;

改后结果

练习用的表

表结构

1、基础查询where的练习:

1.1、主键为32的商品

select goods_id, goods_name, shop_price,market_price from goods where goods_id = 32;

图1-1

1.2、不属第3栏目的所有商品

select goods_id, goods_name, cat_id, shop_price,market_price from goods where cat_id != 3;

图1-2

1.3、本店价格高于3000元的商品

select goods_id, goods_name, cat_id, shop_price,market_price from goods where shop_price > 3000;

图1-3

1.4、本店价格低于或等于100元的商品

select goods_id, goods_name, cat_id, shop_price,market_price from goods where shop_price < 100;

图1-4

1.5、取出第4栏目或第11栏目的商品(不许用or)

select goods_id, goods_name, cat_id, shop_price,market_price from goods where cat_id in (4,11);

图1-5

1.6、取出100<=价格<=500的商品(不许用and)

select goods_id, goods_name, cat_id, shop_price,market_price from goods where shop_price between 100 and 500;

图1-6

1.7、取出不属于第3栏目且不属于第11栏目的商品(and,或not in分别实现)

select goods_id, goods_name, cat_id, shop_price,market_price from goods where cat_id !=3 and cat_id !=11;

select goods_id, goods_name, cat_id, shop_price,market_price from goods where cat_id not in (3, 11);

图1-7

1.8、取出价格大于100且小于300,或者大于4000且小于5000的商品

select goods_id,cat_id,goods_name,shop_price from goods where shop_price > 100 and shop_price < 300 or shop_price > 4000 and shop_price < 5000;

图1-8

1.9、取出第3个栏目下面价格<1000或>3000,并且点击量>5的系列商品

select goods_id,cat_id,goods_name,shop_price,click_count from goods where cat_id = 3 and (shop_price < 1000 or shop_price > 3000) and click_count > 5;

图1-9

1.10、取出第1个栏目下面的商品(注意:1栏目下面没商品,但其子栏目下有)

栏目表如下图:

本题所说的栏目表

题目中要取出栏目为1的商品,即cat_id为1的goods表中的商品。从表中可知cat_id 2~5的栏目均属于cat_id = 1的子栏目,所以这些要取出来。

# 建立一个视图保存从goods表中匹对出第1栏中的子栏商品

create view catid_1 as

-> select goods.cat_id, goods_name,category.parent_id, cat_name

-> from goods right join category

-> on goods.cat_id = category.cat_id and category.parent_id = 1;

图1-10-1 view视图

# 选出parent_id为1的商品即可

select parent_id, cat_id, goods_name, cat_name from catid_1 where parent_id = 1;

图1-10-2 最终结果

1.11、取出名字以"诺基亚"开头的商品

select goods_id,cat_id,goods_name,shop_price from goods where goods_name like '诺基亚%';

图1-11

1.12、取出名字为"诺基亚Nxx"的手机

select goods_id,cat_id,goods_name,shop_price from goods where goods_name like '诺基亚N__';

图1-12

1.13、取出名字不以"诺基亚"开头的商品

select goods_id,cat_id,goods_name,shop_price from goods where goods_name not like '诺基亚%';

图1-13

1.14、取出第3个栏目下面价格在1000到3000之间,并且点击量>5 "诺基亚"开头的系列商品

select goods_id,cat_id,goods_name,shop_price from goods where cat_id = 3 and (shop_price between 1000 and 3000) and goods_name like '诺基亚%';

图1-14

1.15、把goods表中商品名为'诺基亚xxxx'的商品,改为'HTCxxxx',提示:大胆的把列看成变量,参与运算,甚至调用函数来处理 .(substring(),concat())

update goods set goods_name = concat('HTC',substring(goods_name,4)) where goods_name like '诺基亚%';

图1-15

2、分组查询group:

2.1、查出最贵的商品的价格

select max(shop_price) from goods;

图2-1

2.2、查出最大(最新)的商品编号

select max(goods_id) from goods;

图2-2

2.3、查出最便宜的商品的价格

select min(shop_price) from goods;

图2-3

2.4、查出最旧(最小)的商品编号

select min(goods_id) from goods;

图2-4

2.5、查询该店所有商品的库存总量

select sum(goods_number) from goods;

图2-5

2.6、查询所有商品的平均价

select avg(shop_price) from goods;

图2-6

2.7、查询该店一共有多少种商品

select count(*) from goods;

图2-7

2.8、查询每个栏目下面

最贵商品价格

最低商品价格

商品平均价格

商品库存量

商品种类

提示:(5个聚合函数,sum,avg,max,min,count与group综合运用)

select cat_id, max(shop_price),min(shop_price), avg(shop_price), sum(goods_number),count(goods_id) from goods group by cat_id;

图2-8

3、having与group综合运用查询:

3.1、查询该店的商品比市场价所节省的价格

select goods_id, goods_name, market_price - shop_price as safe_money from goods;

图3-1

3.2、查询每个商品所积压的货款(提示:库存*单价)

select goods_id, goods_name, goods_number * shop_price as loan from goods;

图3-2

3.3、查询该店积压的总货款

select sum(goods_number * shop_price) as loan_all from goods;

图3-3

3.4、查询该店每个栏目下面积压的货款.

select cat_id, sum(goods_number * shop_price) as loan_all from goods group by cat_id;

图3-4

3.5、查询比市场价省钱200元以上的商品及该商品所省的钱(where和having分别实现)

where:

select goods_id, goods_name, shop_price, market_price, market_price - shop_price as safe_money from goods where (market_price - shop_price) > 200;

having:

select goods_id, goods_name, shop_price, market_price, market_price - shop_price as safe_money from goods having safe_money > 200;

图3-5

3.6、查询积压货款超过2W元的栏目,以及该栏目积压的货款

select cat_id, sum(goods_number * shop_price) as loan_all from goods group by cat_id having loan_all > 20000;

图3-6

3.7、where-having-group综合练习题

图3-7-1 所用表格

要求:查询出2门及2门以上不及格者的平均成绩。

select name, avg(score) as avg_score, sum(score < 60) as fail_courses from result

group by name

having fail_courses >= 2;

图3-7-2

Ps:这里很容易出错,一开始我自己就错用count( )来统计不及格成绩数,但是count( )只能计算行数,及格数也占一行,所以统计出来的数量是错误的。另外,sql思路与以往有所区别,要什么就先取什么,然后再一步步筛选。

mysql基础作业_mysql中基础练习相关推荐

  1. MySQ快速基础篇_MySQL数据库基础

    MySQ快速基础篇_MySQL数据库基础 文章目录 MySQ快速基础篇_MySQL数据库基础 MySQL数据库基础 学习目录 学习目标 一.数据库概述 1.数据库介绍 2.数据库分类 ☆ 关系型数据库 ...

  2. mysql loop嵌套_MySQL中Nested-Loop Join算法小结

    数据库中JOIN操作的实现主要有三种:嵌套循环连接(Nested Loop Join),归并连接(Merge Join)和散列连接或者哈稀连接(Hash Join).其中嵌套循环连接又视情况又有两种变 ...

  3. mysql range用法_MySQL中Explain的用法总结(详细)

    本篇文章给大家带来的内容是关于MySQL中Explain的用法总结(详细),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 执行计划(query Execution plan) 语法e ...

  4. mysql join图解_MySQL中Join算法实现原理分析[多图]

    在MySQL 中,只有一种 Join 算法,就是大名鼎鼎的 Nested Loop Join,他没有其他很多数据库所提供的 Hash Join,也没有 Sort Merge Join.顾名思义,Nes ...

  5. mysql提取数字_Mysql中实现提取字符串中的数字的自定义函数分享

    因需要在mysql的数据表中某一字符串中的字段提取出数字,在网上找了一通,终于找到了一个可用的mysql函数,可以有效的从字符串中提取出数字. 该mysql提取出字符串中的数字函数如下: 复制代码 代 ...

  6. mysql 关联索引_mysql中关于关联索引的问题——对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引?...

    情况描述:在MySQL的user表中,对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引? 根据查询字段的位置不同来决定,如查询a,     a,b    a,b, ...

  7. mysql getnum函数_Mysql中实现提取字符串中的数字的自定义函数分享

    因需要在MysqL的数据表中某一字符串中的字段提取出数字,在网上找了一通,终于找到了一个可用的MysqL函数,可以有效的从字符串中提取出数字. 该MysqL提取出字符串中的数字函数如下: CREATE ...

  8. mysql regexp边界_MySQL中REGEXP正则表达式使用大全

    以前我要查找数据都是使用like后来发现mysql中也有正则表达式了并且感觉性能要好于like,下面我来给大家分享一下mysql REGEXP正则表达式使用详解,希望此方法对大家有帮助. MySQL采 ...

  9. mysql row_number吗_MySQL中的ROW_NUMBER()是什么?

    MySQL版本8.0中包含的Row_NUMBER().这是一种窗口函数.这可用于为行分配序列号.要了解,请借助CREATE pcommand创建一个表- 建立表格CREATE table rowNum ...

最新文章

  1. AWS攻略——使用CodeBuild进行自动化构建和部署静态网页
  2. 一次难得的分库分表实践
  3. Django使用中常见的错误
  4. c++STL(标准模板库)理论基础
  5. OpenShift 4 之Kafka(2)-配置Kafka Bridge,通过HTTP访问Kafka Topic
  6. 看动画轻松理解「Trie树」
  7. 黄聪:Loopup集合类笔记
  8. Java线程并发与安全性问题详解
  9. XenCenter6.2 配置ISO库
  10. python 区块链_如何用Python快速实现区块链?
  11. IT 工作中常用的英语单词
  12. 游戏设计梦工厂学习笔记(一)
  13. 运动目标识别系统Matlab仿真——附上程序
  14. 小知识(1):关于端口的复用及重映射
  15. python开发中级_针对中级Python开发人员的13个项目构想
  16. 什么是CC攻击?CC攻击的防御措施有哪些?
  17. BERT-MRC论文笔记
  18. 阿里巴巴“相信小的伟大”:用普世情怀传播小力量
  19. 【联合首发】2020年中国线上高增长消费市场白皮书-魔镜市场情报.pdf(附下载链接)
  20. 【Unity植物大战僵尸】太阳花功能基本完善(八)

热门文章

  1. 0,‘0’,‘\0’,null的区别
  2. Android 进程间通信机制(二) mmap 原理
  3. hotspot源码下载
  4. pm2 start 带参数_pm2配置文件介绍
  5. 电脑插了网线连不上网(已解决)
  6. mysql declare 语法_sql_declare等语法 | 学步园
  7. 微信小程序+VUE社区疫情防控(含源码+论文+答辩PPT等)
  8. HTC VIVE Wave 概览
  9. facebook instant game 发布指南-设置智能助手
  10. jquery按钮置灰_Jquery 实现表单提交按钮变灰,防止多次点击提交重复数据