MySQL--命令大全(一)

MySQL常用命令

命令 描述
show databases 查看有哪些数据库
use dbname 使用哪个数据库
create database dbname 创建数据库
show tables 查看有哪些表
source 绝对路径(不要有中文!) 导入数据
desc tablename 查看表结构
select * from tablename 查看表中的所有数据
select version() 查看mysql数据库当前版本号
select database() 查看当前数据库
\c 终止一条命令的输入

关于SQL语句的分类

1、DQL:数据查询语言(凡是带有select关键字的都是查询语句)
select……

2、DML:数据操作语言(凡是对表当中的数据进行增删改的都是DML)
insert:增
delete:删
update:改

3、DDL:
数据定义语言
凡是带有create、drop、alter的都是DDL。
DDL主要操作的是表的结构,不是表中的数据。
create:新建,等同于增
drop:删除
alter:修改
这个增删改和DML不同,这个主要是对表结构进行操作。

4、TCL:
事务控制语言
包括:
事务提交:commit
事务回滚:rollback

5、DCL:
数据控制语言
例如:授权grant、撤销权限:revoke……

查询

简单查询

1、查询一个字段
select 字段名 from 表名;
如:查询部门名字
在这里插入图片描述
2、查询两个字段,或者多个字段
使用逗号“,”隔开
如:查询部门编号和部门名称
在这里插入图片描述
3、查询所有字段
第一种方式:把每个字段都写上
第二种方式:可以使用*,因为他会先将*转化为字段所以这种方式存在缺点(效率低、可读性差),在实际开发中不建议。
如:
在这里插入图片描述
4、给查询字段起别名
注意:只是将显示的查询结构列名显示为deptname,原表列名不会变,“select语句是永远都不会进行修改操作的,只负责查询”
在这里插入图片描述
as关键字可以省略掉
在这里插入图片描述

如果起别名时,别名中有空格,需要加引号
注意:单双引号都可以,但标准一般都是单引号
在所有数据库当中,字符串统一采用单引号括起来,单引号是标准,双引号在oracle数据库中用不了,但在mysql中都可以用
在这里插入图片描述
5、进行数学运算
如:计算员工年薪
在这里插入图片描述
如果别名为中文,用单引号括起来

条件查询

1、什么是条件查询
将符合条件的数据查询出来
语法格式:
select
字段1,字段2,字段3……
from
表名
where
条件;

2、都有哪些条件

= : 等于
如:查询薪资等于5000的员工姓名和编号
在这里插入图片描述
<> 或 != : 不等于
如:查询薪资不等于800的员工
在这里插入图片描述

<: 小于
如:查询薪资小于两千的员工
在这里插入图片描述

<= : 小于等于
如:查询薪资小于等于3000的员工
在这里插入图片描述

>: 大于
如:查询薪资大于3000的员工信息
在这里插入图片描述

>= : 大于等于
如:查询薪资大于等于3000的员工信息
在这里插入图片描述

between…and… : 两个值之间等同于 >= and <=
如:查询薪资在2450到3000的员工信息
第一种:>= and <=
在这里插入图片描述
第二种:between…and…
在这里插入图片描述
注意:使用between…and…时,必须遵循左小右大,而且是闭区间,包括两端的值

is null 为 null (is not null 不为空)
如:查询哪些员工的津贴/补助为null?
在这里插入图片描述
注意:在数据库中null不能使用等号进行衡量,需要使用is null,因为数据库当中的null代表什么也没有,它不是一个值,所以不能使用等号

如:查询哪些员工的津贴/补助不为null?
在这里插入图片描述

and:并且
如:查询工作岗位是MANAGER并且工资大于2500的员工信息?
在这里插入图片描述

or:或者
如:查询工作岗位是MANAGER和SALESMAN的员工
在这里插入图片描述
注意:

and和or同时出现的话,存在优先级问题,and优先级比or高,如果想让or先执行,需要加小括号

in:包含,相当于多个or(not in 不在这个范围中)
如:查询工作岗位是MANAGER和SALESMAN的员工
在这里插入图片描述
注意:

in不是一个区间,in后面跟的是具体的值

如:查询薪资是800和5000的员工信息
在这里插入图片描述
如:查询薪资不是800和5000的员工信息
在这里插入图片描述
like:模糊查询,支持%或_匹配
%:匹配任意个字符
_:任意一个字符
(%和_都是一个特殊字符)
如:找出名字中含有O的
在这里插入图片描述
如:找出名字以K开始的
在这里插入图片描述
如:找出第二个字母是A的
在这里插入图片描述
如:找出第三个字母是R的
在这里插入图片描述
如:找出学生表中名字中有‘_’的
在这里插入图片描述
注意:
查询带有特殊字符时需要转义

排序

1、查询所有员工薪资,排序(默认是升序)
在这里插入图片描述
2、薪资降序排序,指定升序:asc
在这里插入图片描述
3、按照两个或者字段排序
如:查询员工名字和薪资,要求按照薪资升序,如果薪资一样的话,再按照名字升序排列
在这里插入图片描述
4、根据字段位置也可以排序
如:按照查询结果的第二列排序
在这里插入图片描述
注意:
了解即可,不建议在开发中这样写,因为不健壮,列的顺序很容易发生改变。

综合案例
找出工资在1250到3000之间的员工信息,要求按照薪资降序排列
在这里插入图片描述
执行顺序:
第一步:from
第二步:where
第三步:select
第四步:order by (排序总是在最后执行!)

数据处理函数

1、数据处理函数又被称为单行处理函数
单行处理函数的特点:一个输入对应一个输出
和单行处理函数相对的是多行处理函数(特点:多个输入,对应1个输出)
2、常见的单行处理函数

lower:转换小写
在这里插入图片描述

upper:转换大写
在这里插入图片描述

substr:取子串(substr(被截取的字符串,起始下标,截取的长度))
select substr(ename,1,1) from emp;
注意:起始下标从1开始,没有0
在这里插入图片描述
如:找出员工名字第一个字母是A的员工信息
第一种方式:模糊查询
在这里插入图片描述
第二种方式:substr函数
在这里插入图片描述
concat:字符串拼接
在这里插入图片描述
案例:首字母大写
在这里插入图片描述
length:取长度
在这里插入图片描述
trim:去空格
在这里插入图片描述
round:四舍五入

select ‘abc’ from emp; select后面直接跟"字面量/字面值",就会根据表的结构生成相对的字面值。
select后面可以跟某个表的字段名(等同看做变量名),也可以跟字面量/字面值(数据)。
如:
在这里插入图片描述
round用法:round(数字,保留小数位)
如:不保留小数
在这里插入图片描述
保留一位1位和2位小数
在这里插入图片描述
保留到十位和百位

保留到十位和百位
rand():生成随机数
在这里插入图片描述
生成100以内的随机数
在这里插入图片描述

ifnull:可以将null转换成一个具体值
注意: ifnull是空处理函数,专门处理空的,在所有的数据库当中,只要有NULL参与的数学运算,最终结果就是NULL
如:
在这里插入图片描述
ifnull用法:ifnull(数据,数据为null要替换的值)

如:计算每个员工的年薪?
年薪 = (月薪 + 月补助) * 12
在这里插入图片描述
case … when …than … when … than … else … end:当…如何…当…如何…否则…结束

如:当员工的工作岗位是MANAGER时,工资上调10%,当工作岗位是SALESMAN的时候,工资上调50%(注意:不修改数据库,只是将查询结果显示为工资上调)
在这里插入图片描述

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

多行处理函数的特点:输入多行,最终输出一行

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

注意:分组函数在使用的时候必须先进行分组,然后才能用,如果你没有对数据进行分组,整张表默认为一组

如:找出最高工资
在这里插入图片描述

找出最低工资
在这里插入图片描述
求工资总和
在这里插入图片描述
求平均薪资
在这里插入图片描述
计算员工数量
在这里插入图片描述
注意事项:
第一点:
分组函数自动忽略null,不需要提前对null进行处理

第二点:
count(具体字段):表示统计字段下所有不为NULL的元素的综述
count(*):统计表当中的总行数。(只要这一行任意列有数据count就+1),因为每一行记录不可能都为NULL,一行数据中有一列不为NULL,则这行数据就是有效的。

第三点:分组函数不能直接使用在where子句中。

第四点:所有的分组函数可以组合起来一起用
如:
在这里插入图片描述

分组查询(非常重要)

1、什么是分组查询
在实际的应用中,可能有这样的需求,需要先进行分组,然后对每一组的数据进行操作。这个时候我们需要使用分组查询,如何进行分组查询
select
……
from
……
group by
……

2、将之间的关键字全部组合起来,找出执行顺序

select

from

where

group by

order by

以上关键字的顺序不能颠倒,需要记忆。
执行的顺序:
1、from
2、where
3、group by
4、select
5、order by

注意:
为什么分组函数不能直接在where后面使用呢?
因为分组函数在使用的时候必须先分组之后才能使用,where执行的时候还没有分组,所以where后面不能出现分组函数,select后面可以用分组函数,因为group by的执行顺序在select之前,如果没有写分组,默认将整张表分为一组。

3、案例
找出每个工作岗位的工资和
在这里插入图片描述

找出每个部门的最高薪资
在这里插入图片描述

找出每个部门,不同工作岗位的最高薪资
在这里插入图片描述
找出每个部门最高薪资,要求显示最高薪资大于3000的

having: 使用having可以对分完组之后的数据进一步过滤,having不能单独使用,having不能代替where,having必须和group by联合使用

方法一:where
在这里插入图片描述
方法二:having
在这里插入图片描述
优化策略: where和having,优先选择where,where实在完成不了,再选择having
比如:
找出每个部门平均薪资,要求显示平均薪资高于2500的
因为要求显示的是平均薪资高于2500,所以 需要在运算完后进行筛选,所以where完成不了,只能选择having
在这里插入图片描述
综上总结:
单表查询
select

from

where

group by

having

order by

以上关键字只能按照这个顺序来!不能颠倒!

执行顺序
1、from
2、where
3、group by
4、having
5、select
6、order by

案例: 找出每个岗位的平均薪资,要求显示平均薪资大于1500的,除MANAGER之外,要求按照平均薪资降序排序
在这里插入图片描述

重点结论:

在一条select语句当中,如果有group by语句的话,select后面只能跟:参加分组的字段,以及分组函数,其他的一律不能跟。

注意
数据库当中是以表格的形式表示数据的,因为表比较直观。

猜你喜欢

转载自blog.csdn.net/zyx13513314194/article/details/114296252