线上操作12条规避误操作:
1,修改或删除数据前先备份
2,线上变更一定要有回退方案
3,批量操作中间添加 sleep
4,DDL 操作要谨慎,对于大表的 alter 操作最好使用 pt-online-schema-change。
5,变更操作先在测试环境测试
6,重启数据库前先刷脏页
7,禁止批量删除大量的 binlog
8,对于变更操作一定要写详细的操作步骤,并 review
9,按 enter 之前再进行一次环境确认
10,如果你的操作可能会使状况变得更糟,请停止操作
11,快速处理磁盘满,使用 tune2fs 释放文件系统保留块
12,连接数满先修改内存变量,而不是重启,修改方式如下:
gdb -p pid -ex "set max_connections=1000" -batch#pid是mysqld的对应的pid
后期创建数据库表时加判断 CREATE TABLE IF NOT EXISTS 表名()
删除表内数据用DELETE
清除表内数据,保存表结构 同TRUNCATE
删除表用DROP
更新表内的数据UPDATE 表名 SET 字段名=新值 WHERE 条件
更新id=3的title字段中的c++替换为python
UPDATE runoob_tbl SET title = REPLACE(title, 'C++', 'Python') where id = 3;
LINK的用法 通常跟通配符%一起模糊匹配使用在 WHERE语句中 比如 WHRER 字段名 LINK '%xx'
UNION (DISTINCT)或者为空 默认删除结果中重复的数据; ALL 返回重复的数据
排序 ORDER BY 升序ASC 降序DEASC
分组 GROUP BY 跟COUNT,SUM,AVG等函数使用
连接
内连接 INNER JOIN获取两个表中字段匹配关系的记录
FROM 表1 JOIN 表2 ON 条件
等价于 FROM 表1,表2 WHERE 条件
左连接 LEFT JOIN 获取左表所有记录,即使右表没有对应匹配的记录为空
FROM 表1 LEGT JOIN 表2 ON 条件
右连接 RIGHT JOIN 获取右表所有记录,即使左表没有对应匹配的记录为空
FROM 表1 RIGHT JOIN 表2 ON 条件
事务条件:院子性 一致性 隔离性 持久性
修改表名或者字段名时用ALTER
删除字段名:
使用ALTER跟DROP语句删除表中的字段,但如果剩余一个字段无法使用DROP删除
添加字段名:
用ADD 字段名 字段类型 默认添加到末尾
也可指定位置使用ADD 字段名 字段类型FIRST || ADD 字段名字段类型 AFTER 原有的字段名
修改字段类型: MODIFY 原字段名 新字段类型
修改字段名: CHANGE 原字段名 新字段名 新字段名类型
修改表名 RENAME TO 新表名
修改存储引擎 ALTER TABLE tablename engine=新存储引擎
删除外键约束ALTER TABLE tablename FROP foreign key keyname
索引 应用于查询语句(一般是where语句)
索引也是一张表 保存主键跟索引字段,并指向是实体表的记录
sql攻击:输入的是sql语句片段,与DAO中sql语句合成一个完整的sql语句
防止sql攻击:
过滤输入的数据是否含非法字符
分步校验
使用preparedstatement
oracle查询sid_name
conn/ as sysdba
select instance_name from v$instance;