DataBase - MySQL安全模式、常用语句

陆续补全

目录

  • sql_safe_updates安全模式
  • 常用语句

MySQL中sql_safe_updates安全模式

概念与场景

不论新手还是老手在使用mysql中一般都会有批量操作数据的需求,假设在安全模式关闭的情况下,我们update和delete没有加入where条件,那么我们就会失手将全部数据修改或删除(这个后果不亚于删库跑路了~),故为了防止这种情况,在使用数据库时通常都会加入安全模式

常见场景

在update操作中

  1. 当where条件中列(column)没有索引可用且无limit限制时会拒绝更新
  2. where条件为常量且无limit限制时会拒绝更新

在delete操作中

  1. where条件为常量
  2. where条件为空
  3. 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子句中列可以不是索引列)

  • 借鉴文章

MYSQL的安全模式:sql_safe_updates介绍

发布了247 篇原创文章 · 获赞 97 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/qq_20451879/article/details/97268376
今日推荐