sql注入:
原因:相信用户输入的所有的数据
解决方法;1. 自己手动去判断转义用户的数据 2. 不要拼接sql语句,使用execute方法,防止sql注入
事务:四大特性
1.原子性 2. 一致性 3.隔离性 4.持久性
开启事务的步骤:1.satrt transaction 2.修改或者删除sql的语句操作 3.完成(commit/rollback)
存储引擎:
Innodb:1.5.5版本以上包含 2.支持事务 3.不支持全文索引 4.索引和事务都在同一个文件中
MyIsam:1.5.5版本以下 2.不支持事务 3.支持全文索引
memory
索引:
作用:为了加快查找的速度
类比:新华字典的目录,可以将索引理解成一个特殊的文件,没有这个文件,查找会从前往后一一匹配,速度很慢
分类:
主键索引:加快查找速度+唯一性+不能为空+ primary key
创建:alter table t1 change id id int auto_incremeny primary key
唯一索引:加快查找速度+唯一性+unique(列名)
创建:create unique index 索引名称 on 表名(列名)
普通索引:加快查找速度+index(列名)
创建: create index 索引名称 on 表名(列名)
删除索引:drop 索引名称 on 表名
一般在使用频繁的列上加索引
sql语句使用的规则:
1.不建议使用 like 进行搜索
2.组合索引最左前缀(name,email)
where name and email -- 使用索引
where name -- 使用索引
where email -- 不使用索引
慢日志:
1.show variables like "%query%";
2.set global long_query_time = 1;
3.set global slow_query_log = ON
普通日志:
1.show variables like '%general%';
2. set global general_log = ON
mysql用户权限管理:
创建用户:
create user '用户名'@‘IP地址’ identified by '密码';
删除用户:
rename user '用户名'@‘IP地址’ to ‘新用户名’@‘IP地址’
修改用户
rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
修改密码
set password for '用户名'@'IP地址' = Password('新密码')
授权:
grant 权限 on 数据库.表 to '用户'@'IP地址' -- 授权
grant select on db1.* to 'zekai'@'%';
grant select on *.* to 'zekai'@'%';
grant select, insert, delete on db1.* to 'zekai'@'%';
记住:
flush privileges