myql笔记(简略增删改查)
查看mysql中有哪些数据库:
show databases; // 以分号结尾
怎么选择使用哪个数据库:
use 数据库名字
怎么查看表中所有数据:
selelct * from 表名;
desc 表名;
SQL语句(不区分大小写)
DQL语句(查询语句)
查询语句只负责查询
查询一个字段
select 字段名 from 表名;
查询多个字段:
使用逗号隔开
select a , b from emp (a,b为字段名,emp为表名)
查询所有字段:
-
select * from 表名(效率低,可读性差)
-
select a,b,c... from emp;
给查询的列起别名:
select a as b select emp;
as关键字起别名
只是将现实的查询结果列名显示为b,原列表名还是叫:a;
as可以省略
select a b from emp;
如果起的别名之间有空格,可以使用单引号或者双引号括起来
数据库中的字符串都是使用单引号括起来
查询语句中可以有数学运算(字段可以使用数学表达式);
别名如果是中文用单引号括起来
条件查询
select
字段1,字段2....
from
表名
where
条件;
= 等于
<>或!= 不等于
< 小于
》 大于
between...and... 两个值之间,等同于>=and <=, 遵循左小右大的原则。
is null 为空(is not null 不为空)
and 并且
or 或者
in 包含,相当于多个or(not in 表示不再这个范围中)
like 模糊查询,支持%或下划线匹配
%匹配任意个字符
下划线,一个下划线只匹配一个字符
and和or同时出现时有优先级,先执行and在执行or
like:模糊查询
找出名字中含有x的
select ename from emp where ename like '%x%';
找出名字以T结尾的
select ename from emp where ename like '%T';
找出名字以K开头的
select ename from emp where ename like 'K%';
找出第二个字母是A的
select ename from emp where ename like '_A%';
找出名字中含有下划线de"_"
select ename from emp where ename like '%_%';
'/'为转义字符
排序
默认升序
select
sal
from
emp
order by
sal;
//默认是升序
降序
order by
sal desc;//指定降序
sal asc;//指定升序
多个字段排序
查询名字和薪资,薪资升序排序,薪资相同再按照名字升序排序;
order by
sal asc , ename esc;//sal在前起主导
关键字顺序
select
...
from
...
where
...
group by
...
order by
...
以上关键字执行顺序
from
where
select
order by
数据处理函数/单行处理函数
特点:一个输入对应一个输出
相对的是多行处理函数,其特点:多个输入对于一个输出。
常见单行函数
lower 转换小写
select lower(ename) as name from emp;
upper 转换大写
substr 截取字符串(substr(被截取到字符串,起始下标,截取的长度))
contact 字符串拼接(contact(字符串1,字符串2))
lenght 字符串长度//select lenght(ename).....
trim 去除前后空白
select * from emp where trim('');
select后面跟一个常量,查询的结果都是该常量.
round() 四舍五入(round(a,0)保留整数位,1保留一个小数,-1保留到十分位)
rand() 生成随机数//select round() from emp;roud()可进行数学运算
ifnull 空处理函数,处理数据为空的,
只要有NULL参与的运算,结果都为NULL,为了避免这个现象.
ifnull用法: ifnull(数据 , 被当做哪个值).
case...when...then...when....then,..else...end;
当员工的工作岗位是manager的时候,工资上调10%,当工作各岗位为salesman,工资上调50%;
select ename,job (case job when 'manager' then sal1.1 when 'salesman' then sal1.5 else end) as newsal from emp;
分组处理函数
多行处理函数特点: 输入多行,最终输出一行
5个:
count 计数
sum 求和
avg 平均值
max 最大值
min 最小值
注意:分组函数使用时必须先分组,然后在使用,
如果,没有分组那么就整张表为一组
select sum(sal) from emp;//max(sal).....
分组函数使用时注意事项:
null不是一个值。
第一: 分组函数自动忽略null,不需要提前处理null.
第二: 分组函数中count(*)和count(具体字段)区别
count(具体字段):统计该字段下不为null的元素的总和.
count(*): 统计表中的总行数.//每一行数据不可能都为null.
第三: 分组函数不能直接使用在where子句中
第四: 所有的分组函数可以组合在一起使用
分组查询:
需要先进行分组,在对每一组的数据进行查询
select
...
from
...
group by
关键字执行顺序:
from
where
group by
select
order by
having
重点结论:
在一条select语句当中,如果有group by语句的话.
select后面只能跟:参加分组的字段,以及分组函数,其他的一律不能跟.
可以多个字段一起分组
having:对分完组之后的数据进一步过滤,
不能单独使用,必须使用在group by后面.
where和having优先使用where
distinct关键字: 去重
select distinct job from;
distinct只能·出现在所有字段的最前方
连接查询(多表连接查询)
根据表连接方式分类:
内连接:
等值连接//条件是一个等量关系(=)
非等值连接//条件不是一个等量关系
自连接//将一张表看成两张或者多张表
外连接:
左外连接:
右外连接:
全连接(了解)
内连接之等值连接:
查询员工所在的部门名称,显示员工名和部门名
select
e.ename,d.dname
from
emp e
join
dept d
on
e.deptno = d.deptno;
语法:
select
...
from
a
join
b
on
a和b的连接条件
where
筛选条件
外连接:
select
e.ename,d.dname
from
emp e right outer join dept d //outer可省略,加上可读性强
on
e.deptno = d.deptno;
right:表示将join关键字右边的这张表看成主表,主要是为了讲这张表的数据源全部查询出来,捎带着关联查询左边的表
left:表示将join关键字左边的这张表看成主表,主要是为了讲这张表的数据源全部查询出来,捎带着关联查询右边的表
带有right的是右外连接,又叫做右连接
三张以及以上表的连接
select
...
from
a
join
b
on
a和b的连接条件
join
d
on
a和d的连接条件
子查询
select语句中嵌套select语句,被嵌套的select语句称为子查询
from子句中的子查询,可以将子查询的查询结果当做一张临时表。
limit:分页
limit在order by之后执行
limit(a,b)从第a+1条记录开始,显示b条记录。
每页显示pageSize条记录
第pageNo页:limit (pageNo - 1) * pageSize , pageSize
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?