MySQL基础总结(一)- 常用的命令、单表查询

一、SQL的分类

名称英文作用代表关键字
DQL(数据查询语言)Query查询语句select
DML(数据操作语言)Manipulation增、删、改表中的数据insert、delete 、update
DDL(数据定义语言)Denifition对表结构的增删改create、drop、alter
TCL(事务控制语言)Trasactional Control提交事务,回滚事务commit、rollback
DCL(数据控制语言)Control授权、撤销权限等grant、revoke

(链接:本文数据下载 , 提取码:1jvg )

二、常用的命令:

在DOS窗口启动MySQL服务:net start mysql


登录mysql数据库管理系统: mysql -uroot -p密码


查看有哪些数据库: show databases;


创建属于我们自己的数据库: create database 数据库名;


使用A数据库数据: use A;


查看当前使用的数据库中有哪些表: show tables;


初始化数据: mysql> source 文件的索引;


删除数据库A: drop database A;


查看表结构: desc 表名;


获取表中的数据: select * from 表名;


查询当前使用的数据库: select database();


查询当前使用的版本: select version();


终止一条语句: \c


退出MySQL: exit


查看表的创建语句: show create table 表名;


三、单表查询

选择经典工资表emp作为示例:
在这里插入图片描述


人名和入职日期

select ename,hiredate from emp;

在这里插入图片描述


人名和年薪

select enmae, sal*12 from emp;

在这里插入图片描述

把‘sal*12’ 显示为‘年薪‘(重命名为中文时最好加单引号,不要用双引号)。

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

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

在这里插入图片描述


条件查询
语法格式:select 字段,字段… from 表名 where 条件;(执行顺序:先from,然后where,最后select)

查询部门编号为10的员工

select ename,deptno from emp where deptno=10;

在这里插入图片描述
查询King的工资

select ename ,sal from emp where ename='king';

查询工资>、<、=3000的员工

select ename,sal from emp where sal<3000;
select ename ,sal from emp where sal>3000;
select ename,sal from emp where sal=3000;

查询工资在2000到3000之间的员工

select ename,sal from emp where sal>2000 and sal<3000;

查询工资在2000到3000之间的员工,包括2000和3000([2000,3000]闭区间)。

select ename,sal from emp where sal>=2000 and sal<=3000;

select ename,sal from emp where sal between 2000 and 3000;

between and除了可以使用在数字方面之外,还可以使用在字符串方面(左闭右开)。

select ename from emp where ename between 'a' and 'k';

查询津贴是null的员工

select ename from emp where comm is null;

在这里插入图片描述


查询薪资大于1000的并且部门编号是20或30部门的员工

select ename,sal,deptno from emp where sal>1000 and (deptno=20 or deptno=30);

查询工作岗位是MANAGER和SALESMAN的员工

select ename,job from emp where job='MANAGER' or job='SALESMAN';

select ename,job from emp where job in ('MANAGER','SALESMAN');

not in: 不在这几个值当中。

select ename,job from emp where sal not in(800, 5000);

模糊查询like
找出名字当中含有O的?

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

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

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

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

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

=====> 排序

按照工资升序,查询员工名
order by默认是升序

select ename,sal from emp order by sal;

降序输出:

select ename,sal from emp order by sal desc;

查询部门编号是20或30的员工,并按薪水升序输出:

ename,deptno,sal from emp where deptno=20 or deptno=30 order by sal;

=====>分组函数(多行处理函数)

共5个。多行处理函数的特点:输入多行,最终输出的结果是1行。
分组函数自动忽略NULL。
分组函数不可直接使用在where子句当中

名称作用
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;

分组函数也能组合起来用:

select count(*),sum(sal),avg(sal),max(sal),min(sal) from emp;

找出工资高于平均工资的员工?

select ename,sal from emp where sal>(select avg(sal) from emp);

=====>单行处理函数

输入一行,输出一行。

计算每个员工的年薪?

select ename,sal,comm,(sal+ifnull(comm,0))*12 as yearsal from emp;

ifnull(可能为NULL的数据,被当做什么处理) : 属于单行处理函数。


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

找出每个工作岗位的最高薪资

select max(sal),job from emp group by job;

找出每个部门的最高薪资

select max(sal),deptno from emp group by deptno;

分组函数一般都会和group by联合使用
并且任何一个分组函数(count sum avg max min)都是在group by语句执行结束之后才会执行的。
当一条sql语句没有group by的话,整张表的数据会自成一组。

当一条语句中有group by的话,select后面只能跟分组函数和参与分组的字段。

每个工作岗位的平均薪资?

select job,avg(sal) from emp group by job;

找出每个部门不同工作岗位的最高薪资。

select deptno,max(sal),job from emp group by deptno,job;

找出每个部门的最高薪资,要求显示薪资大于2900的数据。

select deptno ,max(sal) from emp where sal>2900 group by deptno;

找出每个部门的平均薪资,要求显示薪资大于2000的数据。

select avg(sal),deptno from emp group by deptno having avg(sal)>2000;

where后面不能使用分组函数


关于查询结果集的去重

select distinct job from emp;

在这里插入图片描述

select count(distinct job) from emp;

结果为5


完整的DQL语句的执行顺序

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

参考资料

[1]https://www.bilibili.com/video/BV1fx411X7BD (动力节点杜老师)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值