select 查询:

赋值:赋值不能应用在where中,因为where操作的是磁盘上的文件,可以应用在having筛选中。

  例:select (market_price-shop_price) as jiesheng from goods;

一、条件查询:where(针对存在磁盘上的数据文件发挥作用)

  select 列名1,列名2... from 表名 where 条件

  1.条件表达式表达式为真,则取出该行

  2.比较运算符 =,!= , <>(不等于) , <= , >=

  3.like,not like ,in ,not in , between,and

    字符匹配:'%'匹配多个字符,'_'匹配任意单个字符

  4. is null,is not null

示例a:在goods表中取出goods大于30的产品,并显示出goods_id,goods_name,market_price

mysql> select goods_id,goods_name,market_price from goods where goods_id >30;
+----------+-----------------+--------------+
| goods_id | goods_name | market_price |
+----------+-----------------+--------------+
| 31 | 摩托罗拉e8 | 1604.39 |
| 32 | 诺基亚n85 | 3612.00 |
+----------+-----------------+--------------+
2 rows in set (0.08 sec)

示例b:在goods表中查找goods_name以"诺基亚"开头的行,并打印

mysql> select goods_id,goods_name from goods where goods_name like "诺基亚%";
+----------+----------------------------------------+
| goods_id | goods_name |
+----------+----------------------------------------+
| 4 | 诺基亚n85原装充电器 |
| 3 | 诺基亚原装5800耳机 |
| 7 | 诺基亚n85原装立体声耳机hs-82 |
| 9 | 诺基亚e66 |
| 13 | 诺基亚5320 xpressmusic |
| 14 | 诺基亚5800xm |
| 23 | 诺基亚n96 |
| 32 | 诺基亚n85 |
+----------+----------------------------------------+
8 rows in set (0.00 sec)

示例c:在goods表中查找goods_name为"诺基亚"开头后面跟着三个字符的行,并打印

mysql> select goods_id,goods_name from goods where goods_name like "诺基亚___";
+----------+--------------+
| goods_id | goods_name |
+----------+--------------+
| 9 | 诺基亚e66 |
| 23 | 诺基亚n96 |
| 32 | 诺基亚n85 |
+----------+--------------+
3 rows in set (0.00 sec)

二、 分组:

  group by

  一般要配合5个统计函数使用:max(),min(),sum(),avg(),count()

avg():求平均值

mysql> select avg(shop_price) from goods;
+-----------------+
| avg(shop_price) |
+-----------------+
| 1232.526774 |
+-----------------+
1 row in set (0.09 sec)

max():求最大

min():求最小

sum():求和

count(*):统计行数

mysql> select cat_id,avg(shop_price) from goods group by cat_id;
+--------+-----------------+
| cat_id | avg(shop_price) |
+--------+-----------------+
| 2 | 823.330000 |
| 3 | 1746.066667 |
| 4 | 2297.000000 |
| 5 | 3700.000000 |
| 8 | 75.333333 |
| 11 | 31.000000 |
| 13 | 33.500000 |
| 14 | 54.000000 |
| 15 | 70.000000 |
+--------+-----------------+
9 rows in set (0.00 sec)
mysql> select cat_id,count(*) from goods group by cat_id;
+--------+----------+
| cat_id | count(*) |
+--------+----------+
| 2 | 1 |
| 3 | 15 |
| 4 | 3 |
| 5 | 1 |
| 8 | 3 |
| 11 | 2 |
| 13 | 2 |
| 14 | 2 |
| 15 | 2 |
+--------+----------+
9 rows in set (0.00 sec)

三、 having 筛选:

  • 掌握having查询,理解having与where的不同

1.筛选出market_price高于shop_price 200以上的商品

mysql> select goods_name,(market_price-shop_price) as jiesheng from goods having jiesheng > 200;
+---------------------------+----------+
| goods_name | jiesheng |
+---------------------------+----------+
| kd876 | 277.60 |
| 诺基亚e66 | 459.60 |
| 索爱c702c | 265.60 |
| 诺基亚5320 xpressmusic | 262.20 |
| 诺基亚5800xm | 525.00 |
| 夏新n7 | 460.00 |
| 夏新t5 | 575.60 |
| 金立 a30 | 400.00 |
| 多普达touch hd | 1199.80 |
| 诺基亚n96 | 740.00 |
| p806 | 400.00 |
| 摩托罗拉e8 | 267.39 |
| 诺基亚n85 | 602.00 |
+---------------------------+----------+
13 rows in set (0.00 sec)

where条件查询是操作磁盘上文件,不能处理内存中的数据,例如赋值操作。

having筛选是是处理内存中的数据,如果where 和having 都存在时,having必须在where后面。

习题:where-having-group综合习题

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

+----------+-----------+-------+
| name | subject | score |
+----------+-----------+-------+
| zhangsan | math | 90 |
| zhangsan | language | 50 |
| zhangsan | geography | 40 |
| lisi | language | 55 |
| lisi | politics | 45 |
| wangwu | politics | 30 |
| zhangsan | english | 100 |
+----------+-----------+-------+

正确答案:

select name,subject,score,avg(score),sum(score<60) as f from report group by name having f>=2;

+----------+----------+-------+------------+------+
| name | subject | score | avg(score) | f |
+----------+----------+-------+------------+------+
| lisi | language | 55 | 50.0000 | 2 |
| zhangsan | math | 90 | 70.0000 | 2 |
+----------+----------+-------+------------+------+

错误案例:

select name,subject,score,avg(score),count(score<60) as f from report group by name having g f<=2; (count用来数行号的,不判断条件)

+--------+----------+-------+------------+---+
| name | subject | score | avg(score) | f |
+--------+----------+-------+------------+---+
| lisi | language | 55 | 50.0000 | 2 |
| wangwu | politics | 30 | 30.0000 | 1 |
+--------+----------+-------+------------+---+

四、 排序:

order by

  • 降序 desc
  • 升序 asc(默认是asc)
  • 多列排序

select goods_id,cat_id,goods_name,shop_price from goods order by cat_id asc,shop_price desc,goods_id asc;

+----------+--------+----------------------------------------+------------+
| goods_id | cat_id | goods_name | shop_price |
+----------+--------+----------------------------------------+------------+
| 16 | 2 | 恒基伟业g101 | 823.33 |
| 22 | 3 | 多普达touch hd | 5999.00 |
| 32 | 3 | 诺基亚n85 | 3010.00 |
| 17 | 3 | 夏新n7 | 2300.00 |
| 9 | 3 | 诺基亚e66 | 2298.00 |
| 21 | 3 | 金立 a30 | 2000.00 |
| 24 | 3 | p806 | 2000.00 |
| 31 | 3 | 摩托罗拉e8 | 1337.00 |
| 10 | 3 | 索爱c702c | 1328.00 |
| 13 | 3 | 诺基亚5320 xpressmusic | 1311.00 |
| 11 | 3 | 索爱c702c | 1300.00 |
| 12 | 3 | 摩托罗拉a810 | 983.00 |
| 19 | 3 | 三星sgh-f258 | 858.00 |
| 15 | 3 | 摩托罗拉a810 | 788.00 |
| 8 | 3 | 飞利浦9@9v | 399.00 |
| 20 | 3 | 三星bc01 | 280.00 |
| 18 | 4 | 夏新t5 | 2878.00 |
| 14 | 4 | 诺基亚5800xm | 2625.00 |
| 1 | 4 | kd876 | 1388.00 |
| 23 | 5 | 诺基亚n96 | 3700.00 |
| 7 | 8 | 诺基亚n85原装立体声耳机hs-82 | 100.00 |
| 3 | 8 | 诺基亚原装5800耳机 | 68.00 |
| 4 | 8 | 诺基亚n85原装充电器 | 58.00 |
| 6 | 11 | 胜创kingmax内存卡 | 42.00 |
| 5 | 11 | 索爱原装m2卡读卡器 | 20.00 |
| 25 | 13 | 小灵通/固话50元充值卡 | 48.00 |
| 26 | 13 | 小灵通/固话20元充值卡 | 19.00 |
| 29 | 14 | 移动100元充值卡 | 90.00 |
| 30 | 14 | 移动20元充值卡 | 18.00 |
| 27 | 15 | 联通100元充值卡 | 95.00 |
| 28 | 15 | 联通50元充值卡 | 45.00 |
+----------+--------+----------------------------------------+------------+

五、 limit 限制取出条目:

  limit 偏移量 条数

习题:查找最新的商品(goods_id最大为最新)

select goods_id,goods_name,shop_price from goods order by goods_id desc limit 0,1;

+----------+--------------+------------+
| goods_id | goods_name | shop_price |
+----------+--------------+------------+
| 32 | 诺基亚n85 | 3010.00 |
+----------+--------------+------------+

mysql select的更多相关文章

  1. mysql select日期格式

    mysql表中datatime类型存储为2016-01-10,C#直接select 后,在datatable里面看,变成01/10/2016,需要还原回去,使用select DATE_FORMAT(列 ...

  2. mysql select 格式化输出

    select * from test\G; MySQL的客户端命令行工具,有很多方便使用者的特性,某些方面甚至可以说比Oracle的sqlplus更加人性化.当然从整体来说,还是sqlplus更加方便 ...

  3. mysql SELECT FOR UPDATE语句使用示例

    以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEATABLE READ,在SELECT 的读取锁定主要分为两种方式:SELECT ... LO ...

  4. MySQL select into 和 SQL select into

    现在有张表为student,我想将这个表里面的数据复制到一个为dust的新表中去,虽然可以用以下语句进行复制,总觉得不爽,希望各位帮助下我,谢谢.  answer 01: create table d ...

  5. mysql SELECT FOUND_ROWS()与COUNT(*)用法区别

    在mysql中 FOUND_ROWS()与COUNT(*)都可以统计记录,如果都一样为什么会有两个这样的函数呢,下面我来介绍SELECT FOUND_ROWS()与COUNT(*)用法区别   SEL ...

  6. php学习之道:mysql SELECT FOUND_ROWS()与COUNT(*)使用方法差别

    在mysql中 FOUND_ROWS()与COUNT(*)都能够统计记录.假设都一样为什么会有两个这种函数呢.以下我来介绍SELECT FOUND_ROWS()与COUNT(*)使用方法差别 SELE ...

  7. mysql select column default value if is null

    mysql select column default value if is null SELECT `w`.`city` AS `city`, `w`.`city_en` AS `city_en` ...

  8. MYSQL SELECT FOR UPDATE

    问题说明: 最近遇到一个问题,多个WORKER同时向MYSQL数据库请求任务,如何实现互斥?例如: SELECT * FROM student WHERE id > 10 LIMIT 100; ...

  9. mysql select 1

    看数据库连接池源码,发现连接池的参数validationQuery(SQL查询,用来验证从连接池取出的连接)设置的值为"SELECT 1",之前很少用这种写法,于是 google一 ...

随机推荐

  1. 委托的N种写法,你喜欢哪种?

    一.委托调用方式 1. 最原始版本: delegate string PlusStringHandle(string x, string y); class Program { static void ...

  2. Windows on Device 项目实践 4 - 智能风扇制作

    在前面的文章中,我们已经学习并且利用Intel Galileo开发板和Windows on Device制作了火焰报警器.感光灯和PWM调光灯.在这个项目中,我们来利用温度传感器和直流电机,完成一个简 ...

  3. JavaWeb开发环境准备之Linux篇

    01 Linux环境准备 (本文在win10上使用 VMware12 + Ubuntu14.04)   1.JDK安装及相关配置 参考:http://blog.csdn.net/sxdtzhaoxin ...

  4. PHP 源码学习之线程安全

    从作用域上来说,C语言可以定义4种不同的变量:全局变量,静态全局变量,局部变量,静态局部变量. 下面仅从函数作用域的角度分析一下不同的变量,假设所有变量声明不重名. 全局变量,在函数外声明,例如,in ...

  5. 【C++】输入多行数字到数组

    前天做某公司笔试题的时候,其输入格式是多行数字,每行以空格为分隔符,以换行符号为结束输入到多个数组.在JAVA中有相应的函数直接将一行拆成数组,感觉在C++中这中输入方式还是挺奇怪的,今天想出一种解决 ...

  6. Jackson轻易转换JSON

    原文http://www.cnblogs.com/hoojo/archive/2011/04/22/2024628.html Jackson可以轻松的将Java对象转换成json对象和xml文档,同样 ...

  7. 记SQL SERVER一次诡异的优化

    最近做的项目快上线了,在做了一次压力测试后发现了不少问题,基本都是因为数据量达到一定级别时(预测系统上线10年后的数据量)SQL查询超时,其中有些是因为索引缺失.有些是因为写法不好,这些在有经验的人眼 ...

  8. 小结-stm32 驱动LED灯

    使用位带操作,位带操作就是把每个比特膨胀成一个32位的字,当访问这些字的时候就访问这些比特位. http://www.cnblogs.com/xiaobo-Linux/ 然后,端口使能: //³õʼ ...

  9. 【转帖】嵌入式4412开发板QT5.7编译安装到arm

    QT5.7.0+UBUNTU16.04+ARM-NONE-LINUX-GNUEABI4.8+busybox最小LINUX系统 Orandragon记录 本文转自迅为4412开发板群:http://to ...

  10. EF With SQLite

    EF 虽说官方声称支持SQLite,但实际用起来还真没有SQLSever好使. 不支持真正的CodeFirst,需要先建表结构. 不支支持Migration 需要修改App.config 文件 安装 ...