MySQL3-DML

一、数据备份

MySQL3-DML

>指向数据的接收方

MySQL3-DML

二、DML(date manipulation language)

2.1添加数据

1.Insert into 表名(列名1,列名2…)values(列值1,列值2…)

MySQL3-DML

MySQL3-DML

出了错会占用索引值1356

2.Insert into 表名 values(null,‘赵八’,default,‘xx’,1200…)

插入所有列的数据,必须与所有列一一匹配,没有的要去站位,'xx’没有数据可以替换为null

2.2删除

1.delete from 表名(索引不会重置,存在索引记录)

会删除表中所有记录

MySQL3-DML

delete from 表名 where 条件:满足条件的一条记录执行删除操作

2.truncate 表名(索引会重置)

清空表中所有的记录,重置整个表结构,索引会重新开始

2.3修改

update 表名 set 字段名1 = 新的值,字段名2 = 新的值(改变所有的)

新的值可以在原来的基础上计算(±*/%)

MySQL3-DML

改变符合条件的某一条记录

MySQL3-DML

2.4 单表查询(重点)

2.4.1 普通查询

select 常量值:则有原样输出的结果,以result表的形式呈现

select * from 表名: 查新表中所有列的数据

select 列名1,列名2…from 表名:可以查询指定列名

MySQL3-DML

select 列名1(as可省略)别名1,列名2(as可省略)别名2…from 表名:可以查询指定列名,且result按照别名来显示,如下:(公司名,地址)

MySQL3-DML

2.4.2 条件查询

1.比较运算符:>,<,>=,<=,=(用在where中表示条件判断),!=(<>)

MySQL3-DML

select * from 表名 where 条件

MySQL3-DML

日期也可以用大于小于来判断

2.逻辑运算符

and

MySQL3-DML

or

MySQL3-DML可以用()来提高优先级

not(取反)

MySQL3-DML

一共四条,对上面取反变成三条

where所有语法也可以用在delete和update中

字段 between min and max 其效果等同于 字段>=min and 字段 <= max

MySQL3-DML

in运算符

in(): 在in范围中进行查询(相当于是一个数组,集合)

not in():不在范围中

is null运算符

is null/is not null(isnull(字段名)/!isnull(字段名))

like模糊查询

​ 通配符:%;_;[abc][!abc]

MySQL3-DML

%:模糊的是任意字符0个或多个

_:模糊一个任意字符

[abc][!abc]:暂时不去用,mysql没效果

2.4.3去重查询

distinct(列名)

MySQL3-DML

2.4.4聚合函数

把数据聚集在一起做处理

MySQL3-DML

sum()avg()min()max()count()

MySQL3-DML

MySQL3-DML

sum(列名)求和 对数据的某一列进行求和

avg()min()max()同理

2.4.5排序

order by 字段名 (asc):以某个字段进行默认升序排列

order by 字段名 (desc):降序

加第二第三等等的排序条件:(salary相同再比较id…)

MySQL3-DML

MySQL3-DML

一般是对时间和数字进行排序

2.4.6分组

group by (列名):使用了group by,select后面就只能用分组字段(一般是分组的列名)或者聚合函数

分组后的数据字段是唯一的,分组后是一堆相同字段的数据,可聚合处理

MySQL3-DML

可以加第二第三等等的分组条件,相当于几个分组条件同时判断来分组

MySQL3-DML

having:对分组后的结果进行过滤,后面只能用聚合函数和group字段

MySQL3-DML

where用在group by之前,先于group by执行

MySQL3-DML

2.4.7分页

limit 起始索引值 ,每页的个数

起始索引值=(当前页-1)*每页的个数

limit使用时通常放在最后:

MySQL3-DML

//拓展:sql server中的分页,用top关键字

不在前10条记录中的前10条记录,就是每页10条记录

select top(10)*from 表名 where id not in (select top(10) id from 表名)

*(当前页-1)每页的个数:10

2.5 多表查询(重点)

自然连接,内连接(隐式链接,显示连接),外连接(左外连接,右外连接),全连接(左右外连接)

多个表之间连接查询(至少是两个表,是有主外键关联关系的表)

2.5.1自然连接(必须保证两个表列名一致)

MySQL3-DML

2.5.2内连接

1.隐式链接(笛卡尔积)

进行所有链接,在进行查询,效率较低

MySQL3-DML

结果为相乘的关系

select * from company (as) c,department (as) d where c.companyId = d.companyId

2.显示连接 inner(可以省略) join

先判断on的条件,在进行链接查询,效率比较高

MySQL3-DML

多个表:join顺序从左至右

MySQL3-DML

再加where条件

MySQL3-DML

MySQL3-DML

20题

MySQL3-DML

3.外连接(左外连接和右外连接)

连接顺序为从左到右,但谁为主表要看left和right

left (outer) join

MySQL3-DML

right (outer) join

MySQL3-DML

全外连接(默认union去重连接)

MySQL3-DML

union all不去重

MySQL3-DML

2.6子查询

将一个查询结果作为另一个查询条件

MySQL3-DML

MySQL3-DML

MySQL3-DML

最外层用别名.列名来进行select

优先级:

from选中表格(join)>on>where>group by>聚合处理>having>select选中字段>order by>limit

三、MySQL常用函数

3.1数学函数

MySQL3-DML

MySQL3-DML

3.2聚合函数

MySQL3-DML

3.2字符串函数

注意:MySQL中一个汉字三个字节;length()返回的是汉字的字节数,要*3,而char_length()就是返回的汉字个数

MySQL3-DML

MySQL3-DML

MySQL3-DML

MySQL3-DML

3.3日期函数(用的比较多)

MySQL3-DML

MySQL3-DML

MySQL3-DML

MySQL3-DML

substract减去;interval时间间隔

MySQL3-DML

这个月过生日的所有员工

MySQL3-DML

  • 作业:41题