MySQL3-DML
一、数据备份
>
指向数据的接收方
二、DML(date manipulation language)
2.1添加数据
1.Insert into 表名(列名1,列名2…)values(列值1,列值2…)
出了错会占用索引值1356
2.Insert into 表名 values(null,‘赵八’,default,‘xx’,1200…)
插入所有列的数据,必须与所有列一一匹配,没有的要去站位,'xx’没有数据可以替换为null
2.2删除
1.delete from 表名(索引不会重置,存在索引记录)
会删除表中所有记录
delete from 表名 where 条件:满足条件的一条记录执行删除操作
2.truncate 表名(索引会重置)
清空表中所有的记录,重置整个表结构,索引会重新开始
2.3修改
update 表名 set 字段名1 = 新的值,字段名2 = 新的值(改变所有的)
新的值可以在原来的基础上计算(±*/%)
改变符合条件的某一条记录
2.4 单表查询(重点)
2.4.1 普通查询
select 常量值:则有原样输出的结果,以result表的形式呈现
select * from 表名: 查新表中所有列的数据
select 列名1,列名2…from 表名:可以查询指定列名
select 列名1(as可省略)别名1,列名2(as可省略)别名2…from 表名:可以查询指定列名,且result按照别名来显示,如下:(公司名,地址)
2.4.2 条件查询
1.比较运算符:>,<,>=,<=,=(用在where中表示条件判断),!=(<>)
select * from 表名 where 条件
日期也可以用大于小于来判断
2.逻辑运算符:
and
or
可以用()来提高优先级
not(取反)
一共四条,对上面取反变成三条
where所有语法也可以用在delete和update中
字段 between min and max 其效果等同于 字段>=min and 字段 <= max
in运算符
in(): 在in范围中进行查询(相当于是一个数组,集合)
not in():不在范围中
is null运算符
is null/is not null(isnull(字段名)/!isnull(字段名))
like模糊查询
通配符:%;_;[abc][!abc]
%:模糊的是任意字符0个或多个
_:模糊一个任意字符
[abc][!abc]
:暂时不去用,mysql没效果
2.4.3去重查询
distinct(列名)
2.4.4聚合函数
把数据聚集在一起做处理
sum()avg()min()max()count()
sum(列名)求和 对数据的某一列进行求和
avg()min()max()同理
2.4.5排序
order by 字段名 (asc):以某个字段进行默认升序排列
order by 字段名 (desc):降序
加第二第三等等的排序条件:(salary相同再比较id…)
一般是对时间和数字进行排序
2.4.6分组
group by (列名):使用了group by,select后面就只能用分组字段(一般是分组的列名)或者聚合函数
分组后的数据字段是唯一的,分组后是一堆相同字段的数据,可聚合处理
可以加第二第三等等的分组条件,相当于几个分组条件同时判断来分组
having:对分组后的结果进行过滤,后面只能用聚合函数和group字段
where用在group by之前,先于group by执行
2.4.7分页
limit 起始索引值 ,每页的个数
起始索引值=(当前页-1)*每页的个数
limit使用时通常放在最后:
//拓展: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自然连接(必须保证两个表列名一致)
2.5.2内连接
1.隐式链接(笛卡尔积)
进行所有链接,在进行查询,效率较低
结果为相乘的关系
select * from company (as) c,department (as) d where c.companyId = d.companyId
2.显示连接 inner(可以省略) join
先判断on的条件,在进行链接查询,效率比较高
多个表:join顺序从左至右
再加where条件
20题
3.外连接(左外连接和右外连接)
连接顺序为从左到右,但谁为主表要看left和right
left (outer) join
right (outer) join
全外连接(默认union去重连接)
union all不去重
2.6子查询
将一个查询结果作为另一个查询条件
最外层用别名.列名来进行select
优先级:
from选中表格(join)>on>where>group by>聚合处理>having>select选中字段>order by>limit
三、MySQL常用函数
3.1数学函数
3.2聚合函数
3.2字符串函数
注意:MySQL中一个汉字三个字节;length()返回的是汉字的字节数,要*3,而char_length()就是返回的汉字个数
3.3日期函数(用的比较多)
substract减去;interval时间间隔
这个月过生日的所有员工
- 作业:41题