mysql创建用户并赋予某个数据库的权限
create user 'ads'@'localhost' identified by 'ads'; #创建ads用户
grant all privileges on ads.* to ads@localhost identified by 'ads'; #赋予所有权限给用户ads 对应的数据库是ads
修改root密码
> use mysql;
> updateuserset password=PASSWORD('密码') whereUser='root';
> flush privileges;
mysql取消密码登录
vim /etc/my.cnf
skip-grant-table
三日留存
7日留存
根据用户id查询用户对应的角色,角色对应怎么的权限菜单。
索引
mysql支持的存储引擎主要有四种?
InnoDB 支持事务,行级锁定,外键,是事务型数据库引擎的首选
MyISAM 拥有较高的插入, 查询速度, 但不支持事务
Memory 基于散列 存储在内存中,对临时表有用。
Archive 支持高并发的插入操作。 本身不是事务安全, 如记录日志信息可以使用Archive
mysql支持的索引有哪些?
普通索引: 用表中的普通列构建的索引,没有任何限制
唯一索引:列的值必须唯一,但允许有空值
主键索引:是一种特殊的唯一索引,根据主键建立索引,不允许重复 不允许有空值
全文索引:通过建立倒序索引,快速匹配文档的方式
组合索引:联合索引 用多个列组合构建的索引,这多个列中的值不允许有空值。
索引的使用场景有哪些 哪些情况下不适合创建索引?哪些情况不应该创建索引?
主键应该创建索引
频繁作为查询条件的字段应该创建索引
查询中需要与其他表进行关联的字段应该创建索引
需要排序的字段需要创建索引
需要统计和分组的字段应该创建索引
优先考虑创建组合索引
不适合创建索引: 频繁更新的字段不适合创建索引,
查询条件中用不到的字段不适合创建索引
不应该创建索引的场景: 数据记录较少的表
经常需要增删改操作的字段
数据记录重复较多 且分布平均的字段(如 性别,状态等)
索引什么时候会失效?索引失效的原因是什么?
1 条件中有or
2 like 查询 (%开头)
3 如果列类型是字符串 在使用时 一定要“ 引号(字段)” 引用起来 否则会失效
4 对列进行函数运算 (where md5(password) ='xxxx')
5 负向查询条件会导致无法使用索引( NOT IN , NOT LIKE !=) 等
6 对应组合索引 不使用第一个 则索引会失效 因为最左匹配原则
7 如果MySQL评估使用全表扫描比使用索引快,则不使用索引。
索引有什么缺点?
1 索引需要额外占用物理空间,索引越多 所需空间越多
2 当对表中的数据进行增加,删除,修改操作的时候,索引也要动态的维护,降低了数据的写入速度
锁 9种锁
共享锁
排它锁
模式锁
更新锁
批量更新锁
键范围锁
行级锁
页锁
表锁
功能样例
外键:一张表中有一个非主键的字段只想另一张表的主键,该字段成为外键。
建表的时候 新增外键
外键关联查询 user 表 一对一关联查询 userinfo 表
SQL 总结
添加外键
alter table user_infos ADD FOREIGN KEY fk_user_infos REFERENCES sys_user(id);
alter table userinfo表 ADD FOREIGN KEY 子表的外键名称 REFERENCES 父表的主键名称;