首页 / MYSQL / mysql的查询基础
mysql的查询基础
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql的查询基础,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3780字,纯文字阅读大概需要6分钟。
内容图文
![mysql的查询基础](/upload/InfoBanner/zyjiaocheng/891/be119a28ffea434c854582aa83901060.jpg)
1. 查询的语法:
- distinct用于去除重复记录 where后面不支持别名的查询
select distinct 字段 from 表名;
- 我们在sql语句的操作中,可以直接对列进行运算。
select pname,price+10000 from product;
2. 条件查询
比较运算符 |
> < <= >= = <> |
大于、小于、大于(小于)等于、不等于 |
BETWEEN ...AND... |
显示在某一区间的值(含头含尾) |
|
IN(set) |
显示在in列表中的值,例:in(100,200) |
|
LIKE 通配符 |
模糊查询,Like语句中有两个通配符: % 用来匹配多个字符;例first_name like ‘a%’; _ 用来匹配一个字符。例first_name like ‘a_’; |
|
IS NULL |
判断是否为空 is null; 判断为空 is not null; 判断不为空 |
|
逻辑运算符 |
and |
多个条件同时成立 |
Or 相对于where 来说的 |
多个条件任一成立 |
|
not |
不成立,例:where not(salary>100);
|
- 查询出金额在2000-5000之间的账务信息
SELECT * FROM zhangwu WHERE money BETWEEN 2000 AND 5000;
- 查询出金额是1000或5000或3500的商品信息
SELECT * FROM zhangwu WHERE money =1000 OR money =5000 OR money =3500;
或
SELECT * FROM zhangwu WHERE money IN(1000,5000,3500);
- 查询出账务名称包含”支出”的账务信息。
SELECT * FROM zhangwu WHERE name LIKE "%支出%";
- 查询出账务名称中是无五个字的账务信息
SELECT * FROM gjp_ledger WHERE ldesc LIKE "_____"; -- 五个下划线_
- 查询出账务名称不为null账务信息
SELECT * FROM zhangwu WHERE name IS NOT NULL;
SELECT * FROM zhangwu WHERE NOT (name IS NULL);
3. 查询,对结果集进行排序
- limit(限制结果数) limit 0,2 如果是排序指的就是前二位
select * from com where usemoney like '%支出%' order by gongzi desc limit 0,2;
4. 使用聚合函数查询计算
- 查询统计账务表中,一共有多少条数据
SELECT COUNT(*)AS'count' FROM zhangwu
count(列名)只查询指定列中不为null的记录总数。
mysql> select count(name) from com;
- sum求和,对一列中数据进行求和计算 sum(列名) 字符默认不计算
SELECT SUM(zname) FROM zhangwu WHERE zname LIKE'%收入%'
- -- max 函数,对某列数据,获取最大值
SELECT MAX(zmoney) FROM zhangwu
- -- avg 函数,计算一个列所有数据的平均数 字符串作为空,不计算总量,但是个数还是计算的
SELECT AVG(zmoney)FROM zhangwu
Select max(sal) as ‘最高’ min(sal) as ‘最低’ round(avg(sal ),2) as ’平均工资 from emp;
3. 分组查询:
group by 被分组的列名 必须跟随聚合函数
select 查询的时候,被分组的列,要出现在select 选择列的后面
having...子句必须与group by...搭配,表示对分组后的结果进行筛选。
oracle不支持 group by 和 having 后面别名查询
分组前 where 字段(源码本来就有),分组后 having 字段, 是在分组查询完的临时表中筛选字段
-- 对zname内容进行分组查询求和,但是只要支出, 显示金额大于5000
-- 结果集是分组查询后,再次进行筛选,不能使用where, 分组后再次过滤,关键字 having
SELECT SUM(zmoney)AS 'getsum',zname FROM zhangwu WHERE zname LIKE'%支出%'
GROUP BY zname HAVING getsum>5000
eg:1. 按照员工姓名的长度进行分组, 并筛选员工个数大于五的组
select count(*) c, length(last_name ) L from employees
group by L having c>5;
2. 查询每个部门,每个工种的员工平均工资
select avg(salary), department_id, job_id from employees
group by department_id, job_id;
3. 查询每个管理者中员工的最低工资, 最低工资不低于3000,没有管理者的员工不算
select min(salary), mangager_id from employees
where mangager_id is NOT NULL
group by mangager_id having min(salary)>3000;
4: 子查询
子查询指嵌套在查询内部,且必须始终出现在圆括号内子查询可以包含多个关键字或条
子查询经常作为主查询的条件,通常是将子查询作为主查询的where条件来使用
多个查询的的组合,将查询的结果作为查询的条件。
例子:
select avg(a.price) from(select *from product where type='1') as a;
| avg(a.price) |
+--------------------+
| 13851.403333333334 |
select *from (select *from product where type='1') as a where a.price<5000
Empty set (0.00 sec)
查询与员工7566从事同一工作且领导相同的全部员工的信息
Select * from emp where ( job,mgr)=( select job,mgr from emp where empno=7566);
多行用in 关键字
Select * from emp where ( job,mgr) in ( select job,mgr from emp where empno in(7566,5656));
查询语句书写顺序:select – from- where- groupby- having- order by-limit
查询语句执行顺序:from - where -group by -having - select - order by-limit
内容总结
以上是互联网集市为您收集整理的mysql的查询基础全部内容,希望文章能够帮你解决mysql的查询基础所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。