陆续补全
目录
- sql_safe_updates安全模式
- 常用语句
MySQL中sql_safe_updates安全模式
概念与场景
不论新手还是老手在使用mysql中一般都会有批量操作数据的需求,假设在安全模式关闭的情况下,我们update和delete没有加入where条件,那么我们就会失手将全部数据修改或删除(这个后果不亚于删库跑路了~),故为了防止这种情况,在使用数据库时通常都会加入安全模式
常见场景
在update操作中
- 当where条件中列(column)没有索引可用且无limit限制时会拒绝更新
- where条件为常量且无limit限制时会拒绝更新
在delete操作中
- where条件为常量
- where条件为空
- where条件中 列(column)没有索引可用且无limit限制时拒绝删除
安全模式Sql语句
- 查看当前安全模式状态
show variables like'sql_safe_updates';
MySQL输出效果
Value : ON 开启
Value :OFF 关闭
- 设置安全模式状态
打开安全模式状态
set sql_safe_updates=1;
关闭安全模式状态
set sql_safe_updates=0;
常用语句
- 增
- 删
- 改
- 查
- 去重
- 唯一约束
- 重复数据查询
- 查询表内数据总数
- 取表内的前五条数据
以下数据均需换成自己的数据库数据
my_table:虚拟表名
键:虚拟字段
值:虚拟数据
增
单字段新增
insert into my_table(键)VALUES(值);
多字段新增
insert into my_table(键1,键2) values( 值1,值2);
删
单条件删除
delete from my_table where 键1 in(值1);
多条件删除
delete from my_table where 键1 in(值1,值2) and 键2 in(值2) ;
改
单字段修改
update my_table set 键2=值2 where 键1= 值1;
多字段修改
update my_table set 键2=值2,键3=值3 where 键1=值1;
查
语法
select 查询列表 from 表名;
查表内所有字段数据
select * from my_table
查表内部分字段数据
select 键1,键2 from my_table ;
去重
select distinct 键1 from my_table;
唯一约束
- 建表时加唯一约束(此处借鉴即可)
CREATE TABLE `my_table` (
`键1` int(11) NOT NULL AUTO_INCREMENT, -- 自增
`键2` varchar(18) NOT NULL unique, -- 唯一性约束
PRIMARY KEY (`键1`) --主键
- 已有表加唯一约束
alter table my_tableadd unique(键);
重复数据查询
select 键,count(*) as count from my_table by 键 having count>1;
查询表内数据总数
select count(*) from my_table ;
取表内的前五条数据
select * from table limit 5
借鉴部分
- 借鉴总结
安全模式部分
如果设置了sql_safe_updates=1,那么update语句必须满足如下条件之一才能执行成功
1)使用where子句,并且where子句中列必须为prefix索引列
2)使用limit
3)同时使用where子句和limit(此时where子句中列可以不是索引列)
delete语句必须满足如下条件之一才能执行成功
1)使用where子句,并且where子句中列必须为prefix索引列
2)同时使用where子句和limit(此时where子句中列可以不是索引列)
- 借鉴文章