myql笔记(简略增删改查)

mysql常用命令:

查看mysql中有哪些数据库:

show databases; // 以分号结尾

怎么选择使用哪个数据库:

use 数据库名字

怎么查看表中所有数据:

selelct * from 表名;

不看表数据,只看表结构;

desc 表名;

SQL语句(不区分大小写)

DQL语句(查询语句)

查询语句只负责查询

查询一个字段

select 字段名 from 表名;

查询多个字段:

使用逗号隔开

select a , b from emp (a,b为字段名,emp为表名)

查询所有字段:
  1. select * from 表名(效率低,可读性差)

  2. 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

DML语句:

insert语句:

语法格式:

insert into 表名(字段名1,字段名2,...) values(值1,值2,....)

注意:字段名和值要一一对应(数量对应,数据类型对应)

insert语句执行成功,表中就会多出一条记录,没有给其他字段赋值默认为NULL

update语句:

语法格式:

update 表名 set 字段名11=值1,字段名2=值2,字段名3=值3,.....where 条件;
注意:没有限制条件会导致所有数据全部更新

delete语句

语法格式:

delete from 表名 where 条件;

注意: 没有条件,整张表的数据会全部删除!

posted @   明澈·  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示