数据库学习(MySql)【二】【查询语句1】

简单的查询语句(DQL)

基本语法格式

select 字段名1,字段名2... from 表名;


给查询结果的列重命名

select 字段名1 as 重命名 from 表名;

注意
1、重命名中有中文,用单引号
2、字段可以进行运算
3、as可以省略,用空格代替

例:
select ename,sal*12 as '年薪' from emp;


条件查询

语法格式:
select 字段,字段... from 表名 where 条件;

执行顺序:先from,然后where,最后select

条件:

= < > betwenn...and...(闭区间) and or<=>in


in(1,2)代表的是1和2两个值而不是1-2之间

not(1,2)代表的是没有1,2两个值


在数据库当中NULL不是一个值,代表什么也没有,为空。空不是一个值,不能用等号衡量。必须使用 is null或者is not null


模糊查询like

在模糊查询当中,必须掌握两个特殊的符号,一个是%,一个是_

%代表任意多个字符,_代表任意1个字符。

找出名字当中含有O的?

select ename from emp where ename like '%O%';

找出名字中第二个字母是A的?

select ename from emp where ename like '_A%';

找出名字中有下划线的?

select name from t_user where name like '%\_%';(用转义字符\)

找出名字中最后一个字母是T的?

select ename from emp where ename like '%T';

排序

按照工资升序,找出员工名和薪资?
select ename,sal from emp order by sal;

注意:默认是升序。怎么指定升序或者降序呢?asc表示升序,desc表示降序。
select ename , sal from emp order by sal; // 升序
select ename , sal from emp order by sal asc; // 升序
select ename , sal from emp order by sal desc; // 降序。

按照工资的降序排列,当工资相同的时候再按照名字的升序排列。

select ename,sal from emp order by sal desc;
select ename,sal from emp order by sal desc , ename asc;
注意:越靠前的字段越能起到主导作用。只有当前面的字段无法完成排序的时候,才会启用后面的字段。

找出工作岗位是SALESMAN的员工,并且要求按照薪资的降序排列。

	select 
		ename,job,sal
	from
		emp
	where 
		job = 'SALESMAN'
	order by
		sal desc;

分组函数

count 计数
sum 求和
avg 平均值
max 最大值
min 最小值

记住:所有的分组函数都是对“某一组”数据进行操作的。

找出工资总和?

	select sum(sal) from emp;

找出最高工资?

	select max(sal) from emp;

找出最低工资?

	select min(sal) from emp;

找出平均工资?

	select avg(sal) from emp;

找出总人数?

	select count(*) from emp;
	select count(ename) from emp;

分组函数还有另一个名字:多行处理函数。
多行处理函数的特点**:输入多行,最终输出的结果是1行。**

  • 分组函数自动忽略NULL。 (重点)

    count(*)和count(具体的某个字段),他们有什么区别?
    count(*):不是统计某个字段中数据的个数,而是统计总记录条数。(和某个字段无关)
    count(comm): 表示统计comm字段中不为NULL的数据总数量。
    

group by 和 having

group by : 按照某个字段或者某些字段进行分组。
having : having是对分组之后的数据进行再次过滤。

注意:分组函数一般都会和group by联合使用,这也是为什么它被称为分组函数的原因。
并且任何一个分组函数(count sum avg max min)都是在group by语句执行结束之后才会执行的。
当一条sql语句没有group by的话,整张表的数据会自成一组。
记住一个规则:当一条语句中有group by的话,select后面只能跟分组函数和参与分组的字段

总结一个完整的DQL语句怎么写?

select			5
	..
from			1	
	..
where			2
	..
group by		3
	..
having			4
	..
order by		6
	..

关于查询结果集的去重?

select distinct job from emp; // distinct关键字去除重复记录。

mysql> select ename,distinct job from emp;
以上的sql语句是错误的。

记住:distinct只能出现在所有字段的最前面。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值