单标查询

  单表查询语句

  关键字执行的优先级

  简单查询

  where约束

  group by

  聚合函数

  HAVING过滤

  order by 查询排序

  LIMIT限制查询的记录数

  使用正则表达式查询

单表查询语句

SELECT DISTINCT 字段1,字段2... FROM 表名WHERE 条件GROUP BY fieldHAVING 筛选ORDER BY fieldLIMIT 限制条数

关键字执行的优先级                                                                                                                                                          

from
where
group by
select
distinct
having
order by
limit

1.找到表 :from2.拿着where指定的约束条件,去文件/表中取出一条条记录3.将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组4.这行select(去重)5.将分组的结果进行having过滤6.将结果按条件排序:order by7.限制结果的显示条数

简单查询 

#简单查询
select 字段名字,字段名字 ,字段名字 from 表名   ----名字查询select * from 表名   -----查询所有#避免重复DISTINCT
select distinct 字段名字 from 表名;#定义显示格式

concat() 函数用于连接字符串
select concat('姓名:',字段名) from 表名;concat_ws() 第一个参数为分隔线
select concat_ws(':',字段名) from 表名;#通过四则运算查询
select 字段名, salary*12(月薪*12) as annual_salary(年薪) from 表名#运算加重新定义名字

where 约束

where字句中可以使用:

1.比较运算符:>< >= <= <> !=

2.between 80 and 100  #值在80到100之间

3.in(80,10)  #值是80或10

4.like 'e%'

  通配符可以是%或_,

  %表示任意多字符

  _表示一个字符

5.逻辑运算符 and or not

#单条件查询select 字段名 from 表名 where 条件;
例:select emp_name from employee where post='sale';#多条件查询

select 字段名 from  employee where 条件 and 条件例:SELECT emp_name,salary FROM employee WHERE post='teacher' AND salary>10000;#关键字between and
例: SELECT emp_name,salary FROM employee WHERE salary BETWEEN 10000 AND 20000;SELECT emp_name,salary FROM employee WHERE salary NOT BETWEEN 10000 AND 20000;#关键字 IS NULL(判断某个字段是否为null不能用等号,需要用IS)
例:SELECT emp_name,post_comment FROM employee WHERE post_comment IS NULL;SELECT emp_name,post_comment FROM employee WHERE post_comment IS NOT NULL;
注意是空字符串,不是null#关键字IN集合查询
例:SELECT emp_name,salary FROM employee WHERE salary=3000 OR salary=3500 OR salary=4000 OR salary=9000 ;SELECT emp_name,salary FROM employee WHERE salary IN (3000,3500,4000,9000) ;SELECT emp_name,salary FROM employee WHERE salary NOT IN (3000,3500,4000,9000) ;
#关键字like模糊查询
例:  通配符’%’SELECT * FROM employee WHERE emp_name LIKE 'eg%';通配符’_’SELECT * FROM employee WHERE emp_name LIKE 'al__';

group by   

#单独使用group by 关键字分组
select post from employee group by post;#group by关键字和group_concat()函数一起使用

select post,group_concat(emp_name) from employee group by post;#按照岗位分组,并查询组内成员名字#group by 与聚合函数一起使用
select post,count(id) from employee group by post;#按照岗位分组,并查看每个有多少人'''
强调:
如果我们用unique的字段作为分组的依据,则每一条记录自成一组,这种分组没有意义
多条记录之间的某个字段值相同,该字段通常用来作为分组的依据
'''

聚合函数

#强调:聚合函数聚合的是组的内容,若是没有分组,则默认一组

示例:SELECT COUNT(*) FROM employee;SELECT COUNT(*) FROM employee WHERE depart_id=1;SELECT MAX(salary) FROM employee;SELECT MIN(salary) FROM employee;SELECT AVG(salary) FROM employee;SELECT SUM(salary) FROM employee;SELECT SUM(salary) FROM employee WHERE depart_id=3;

HAVING过滤   

HAVING与WHERE不一样的地方在于!!!!!!#!!!执行优先级从高到低:where > group by > having
#1. Where 发生在分组group by之前,因而Where中可以有任意字段,但是绝对不能使用聚合函数。
#2. Having发生在分组group by之后,因而Having中可以使用分组的字段,无法直接取到其他字段,可以使用聚合函数

mysql> select @@sql_mode;
+--------------------+
| @@sql_mode         |
+--------------------+
| ONLY_FULL_GROUP_BY |
+--------------------+
row in set (0.00 sec)mysql> select * from emp where salary > 100000;
+----+------+------+-----+------------+---------+--------------+------------+--------+-----------+
| id | emp_name | sex  | age | hire_date  | post    | post_comment | salary     | office | depart_id |
+----+------+------+-----+------------+---------+--------------+------------+--------+-----------+
|  2 | alex | male |  78 | 2015-03-02 | teacher | NULL         | 1000000.31 |    401 |         1 |
+----+------+------+-----+------------+---------+--------------+------------+--------+-----------+
row in set (0.00 sec)mysql> select post,group_concat(emp_name) from emp group by post having salary > 10000;#错误,分组后无法直接取到salary字段
ERROR 1054 (42S22): Unknown column 'salary' in 'having clause'
mysql> select post,group_concat(emp_name) from emp group by post having avg(salary) > 10000;
+-----------+-------------------------------------------------------+
| post | group_concat(emp_name) |
+-----------+-------------------------------------------------------+
| operation | 程咬铁,程咬铜,程咬银,程咬金,张野 |
| teacher | 成龙,jinxin,jingliyang,liwenzhou,yuanhao,wupeiqi,alex |
+-----------+-------------------------------------------------------+
rows in set (0.00 sec)验证

验证

order by 查询排序                                                                                                                                                                 

按单列排序SELECT * FROM employee ORDER BY salary;SELECT * FROM employee ORDER BY salary ASC;  #升序SELECT * FROM employee ORDER BY salary DESC;#降序

按多列排序:先按照age排序,如果年纪相同,则按照薪资排序SELECT * from employeeORDER BY age,salary DESC;

LIMLT 限制查询的记录数                                                                                                                                                       

示例:SELECT * FROM employee ORDER BY salary DESC LIMIT 3;                    #默认初始位置为0
    SELECT * FROM employee ORDER BY salary DESCLIMIT 0,5; #从第0开始,即先查询出第一条,然后包含这一条在内往后查5条
SELECT * FROM employee ORDER BY salary DESCLIMIT 5,5; #从第5开始,即先查询出第6条,然后包含这一条在内往后查5条

使用正则表达式查询                                                                                                                                                                

SELECT * FROM employee WHERE emp_name REGEXP '^ale';   #以ale开头SELECT * FROM employee WHERE emp_name REGEXP 'on$';   #以on结尾SELECT * FROM employee WHERE emp_name REGEXP 'm{2}';   #连续的两个m

  

转载于:https://www.cnblogs.com/tianshuai1/p/10994335.html

mysql数据库之单表查询相关推荐

  1. Mysql数据库的单表查询

    我们在使用Mysql数据库存储数据时,对数据的查询方法是至关重要的,此博客主要介绍Mysql数据库的查询数据方法. 单表查询 单表查询就是我们仅对一个表进行查询,我们可以首先创建一个名为table的表 ...

  2. MySQL数据库之单表查询--示例

    注释.*.条件查询.as取别名.比较-逻辑-算术运算符. and.or.模糊匹配(%._)--示例 1 /* 2 sql中有三种注释方式: 3 1.#:单行注释 4 2.--:代表单行注释,横杠后面要 ...

  3. mysql关键字使用顺序_MySQL数据库之单表查询中关键字的执行顺序

    MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from where group by having order by limit 2 执行顺序 from ...

  4. mysql数据库查询关键字级别_MySQL数据库之单表查询中关键字的执行顺序

    MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from where group by having order by limit 2 执行顺序 from ...

  5. mysql数据库实验3查询_MySQL数据库实验:任务三 数据库的单表查询设计

    任务三 数据库的单表查询设计 文章目录任务三 数据库的单表查询设计[实训目的与要求][实训原理][实训步骤]一.简单查询二.按条件查询1.比较大小查询2.带in关键字的查询(确定集合)3.带BETWE ...

  6. MySQL数据库实验:任务三 数据库的单表查询设计

    任务三 数据库的单表查询设计 文章目录 任务三 数据库的单表查询设计 [实训目的与要求] [实训原理] [实训步骤] 一.简单查询 二.按条件查询 1.比较大小查询 2.带in关键字的查询(确定集合) ...

  7. mysql 性别以女生升序_MySQL数据库实验:任务三 数据库的单表查询设计

    任务三 数据库的单表查询设计 文章目录 任务三 数据库的单表查询设计 [实训目的与要求] [实训原理] [实训步骤] 一.简单查询 二.按条件查询 1.比较大小查询 2.带in关键字的查询(确定集合) ...

  8. 7.数据库-查-单表查询

    7 .数据库-查-单表查询 因为查询有很多分支 所以分 单表查询 和 多表查询: 简单查询 1.1 SELECT语句 在MySQl中查询语句 最基本就是SELECT语句了,可以用不用的条件来查询表中的 ...

  9. 数据库实验3 数据库的单表查询

    数据库的单表查询 3.1实验目的及要求 掌握简单表的数据查询.数据排序和表链接查询的操作方法 3.2实验内容 简单查询操作和连接查询方式. 3.3实验步骤 3.3.1单表查询: 1.查询全体学生的学号 ...

最新文章

  1. 装了VS2005再装IIS的小问题
  2. 在AWS上搭建NEO私有链(1)
  3. 粤桂协作消费对接活动 农业大健康·李喜贵:功能性农业合作研究
  4. Rime在linux下面的安装-还没写完
  5. Eclipse+jetty+maven+Struts2+Spring2+Hibernate3+annotation注册系统V1.0
  6. mysql set 常用参数_mysql常见配置参数
  7. 如何在Microsoft Word中插入签名
  8. python 标签数量_python实现的批量分析xml标签中各个类别个数功能示例
  9. windows2003管理组创建
  10. 悟透JavaScript引子
  11. vs code 前端如何以服务器模式打开 [安装服务器] server insteall
  12. 硬盘格式化了的数据找到方案
  13. 关于Kafka幂等producer的讨论
  14. mysql压缩版8.0安装_mysql8.0压缩版安装和配置教程
  15. 计算机丢失d3d10,“怎样解决d3dx10_42.dll丢失造成的游戏打不开”的解决方案
  16. MATLAB学习笔记 imagesc函数使用
  17. MIT 18.01 单变量微积分总结
  18. MDM主数据平台使用总结
  19. 一看就会的侧方位停车技巧 见了就收了吧
  20. 路由器和三层交换机区别

热门文章

  1. PHP store session with couchbase
  2. Flutter与JS的双向调用、Flutter中Widget与Html混合加载
  3. Flutter UiKitView 嵌入iOS原生View
  4. Android 自定义下拉刷新
  5. MySQL_(Java)分页查询MySQL中的数据
  6. jQuery插件编写基础之“又见弹窗”
  7. 如何pspice模型转成saber模型
  8. vue中使用FullCalendar日历组件
  9. 第五章:几个重要技术总结
  10. JavaScript JSON数据格式