1.数据库授权命令: GRANT<权限> on 表名(或列名) to 用户。
举例: 授予用户SQLTest对数据库Sales的CUSTOMERS表的列cid、cname的查询权限
grant select on CUSTOMERS(cid,cname) to SQLTest;
2.MySQL索引(index)
什么是索引?
为了提升查询速度而建立的数据结构
为什么要使用索引?
为了提升查询速度
索引如何分类?
01.实现数据结构(B+树/哈希表)
02.主键/唯一键/普通索引/全文索引
3.Storage Engine 聚簇索引/非聚簇索引
索引的优势和成本:成本空间变大+增删改的速度适度下降
使用索引过程中要注意什么?
1.建索引的原则—保守原则
01.数据量大
02.key一定是查用查询字段
3.MySQL事务
事务是什么?
业务上的一个动作–多条SQL,这组SQL就是事务(比如借书,借书大的动作要分为先在书籍库存表,数据量减一,然后在借阅记录表记录中插入一条记录,这组借书的SQL统称为借书的事务)
为什么要使用事务?
需要保持这个动作(借书动作)的一致性,所以诞生了SQL事务
如何做到事务的正确性?
ACID
原子性(A):强调事务是密不可分的
一致性(C):数据库+开发者修改的数据表现出来是一致的
隔离性(I):同时执行一张表,互不干扰,隔离性高,并发性差,隔离性差,并发性高
持久性(D):事务的修改是不可恢复的
SQL练习
SELECT 姓名,COUNT()from 借阅记录表(WHERE>=昨天零点AND WHERE<今天零点) GROUP BY 姓名(ORDER BY COUNT()DESC LIMIT3;排序一般是默认升序排。
select name,sum(money) from t group by name having sun(money)>20 order by sum(money) desc;
order by和group by的区别:
order by
order by比较简单,作用就是排序
asc 从上到下慢慢升序
desc 从上到下慢慢降序
默认为升序(就是sql后面不写order by 它就是升序)
order by后面跟多个字段时,排序按就近原则依次而来
2. group by
group by我的理解是:聚合分组,值相等即为一组