概述
一、分页
分页
查询语句 limit a,b;
a:想要显示的起始行索引
b:显示的行数
//查询student表的前5行数据(0-4行)
select * from student limit 0,5;
二、DCL(数据操作语言)
1、创建新用户
创建新用户
create user '用户名'@'IP' identified by '密码';
新创建的用户只有登录权限
//创建一个gy用户,密码为123456
create user 'gy'@'localhost' identified by '123456';
查询用户权限
show grants for '用户名'@'IP';
show grants for 'gy'@'localhost';
2、给新用户赋予权限
给用户授权
grant 权限 on 数据库名.表 to '用户名'@'IP';
//给gy授于操作所有数据库的所有表格的所有权限
grant all on *.* to 'gy'@'localhost';
注意
赋予权限之后最好做一个刷新
flush privileges;
//刷新
flush privileges;
3、回收权限
回收权限
revoke 权限 on 数据库名.表名 from '用户名'@'IP';
//回收gy对student表的所有操作权限
revoke all on study.student from 'gy'@'localhost';
4、修改用户密码
修改用户密码
update user表 set authentication_string = password('密码') where user = '用户名';
//修改gy的密码为gy123
update user set authentication_string = password('gy123') where user = 'gy';
5、删除用户
删除用户
drop user '用户名'@'IP';
drop user 'gy'@'localhost';
6、常用mysql权限
数据库/数据表/数据列权限
Create | 建立新的数据库或数据表 |
Alter | 修改已存在的数据表(例如增加/删除列) |
Drop | 删除数据表或数据库 |
Insert | 增加表的记录 |
Delete | 删除表的记录 |
Update | 修改表中已存在的记录 |
Select | 显示/搜索表的记录 |
References | 允许创建外键 |
Index | 建立或删除索引 |
Create View | 允许创建视图 |
Create Routine | 允许创建存储过程和包 |
Execute | 允许执行存储过程和包 |
Trigger | 允许操作触发器 |
Create User | 允许更改、创建、删除、重命名用户和收回所有权限 |
全局管理MySQL用户权限
Grant Option | 允许向其他用户授予或移除权限 |
Show View | 允许执行SHOW CREATE VIEW语句 |
Show Databases | 允许账户执行SHOW DATABASE语句来查看数据库 |
Lock Table | 允许执行LOCK TABLES语句来锁定表 |
File | 在MySQL服务器上读写文件 |
Process | 显示或杀死属于其它用户的服务线程 |
Reload | 重载访问控制表,刷新日志等 |
ShutDown | 关闭MySQL服务 |
特别的权限
All | 允许做任何事(和root一样) |
Usage | 只允许登录,其它什么也不允许做 |
三、设计范式
1、概述
- 范式:设计数据库时,遵循的不同规范,这些规范统称为范式
- 目的:减少数据库中的冗余,使管理表格变得容易
2、设计范式
- 1NF
要求数据保证原子性,每一个表格的每一个列都是不可分割,每一个表格必须有主键约束。
- 2NF
在满足第一范式的前提下,不允许出现部分依赖性。即非主键列不能受到主键列或主键的一部分影响。
- 3NF
在满足前两个范式的前提下,不允许出现传递依赖性。即非主键列不能受到非主键列或非主键的一部分影响。
四、事务(Transaction)
1、事务概述
事务可以理解为是让数据库做的事情。有些时候事情之内不止一条sql,存在多个组成单元,如银行转账,包括存款与取款,而一件事情中的所有操作应该是统一的,即要么都成功,要么都失败。
事务的本质可以理解成多线程并发操作同一张表格可能带来的安全问题。
2、事务的四大特性(ACID)
原子性(Atomicity)
- 一个事务中的所有操作是一个整体,不可再分
- 事务中的所有操作要么都成功,要么都失败
一致性(Consistency)
- 一个用户操作了数据,提交以后,另一个用户看到的数据与之前用户看到的效果是一致
隔离性(Isolation)
- 多个用户并发访问数据库时,一个用户操作数据库,另一个用户不能有所干扰
- 多个用户之间的数据事务操作要互相隔离
持久性(Durability)
- 一个用户操作数据的事务一旦被提交(缓存-->文件),他对数据库底层真实的改变是永久性的,不可返回
3、更改数据库事务管理默认效果
查看数据库是否自动commit
show variables like '%commit%';
如果是OFF即不自动commit,需要手动commit操作(命令行可以直接“commit;“命令),否则是自动commit。
show variables like '%commit%';
查看数据库自动提交状态
show variables like 'autocommit';
show variables like 'autocommit';
关闭自动提交
set autocommit = off;
set autocommit = off;
4、进行事务管理
(1)开启一个事务
每一次执行的一条sql语句之前,mysql数据库都会默认的开启
begin;或者
start transaction;
(2)执行一些操作
如insert、update、delete、select,可能不止一条语句
(3)事务的处理
提交/回滚/保存还原点等等,mysql数据库会默认的执行提交事务
5、安全隐患
事务的隔离性可能会产生多线程并发操作同一个数据库表格的问题,会带来数据的安全隐患
(1)脏读
一个人读到了另外一个人还没有提交的数据。比如,A,B在操作同一张表格,A修改了数据,还没有提交,却被B读取到了,A突然不提交了,回滚回来,B刚刚读取到的那些数据就是无用的----脏数据。
(2)不可重复读
A,B在操作同一张表格,A先读取了一些数据,读完之后B此时将数据做了修改/删除,A再按照之前的条件重新读一遍,与第一次读取的不一致。
(3)幻读
A,B在操作同一张表格,A先读取了一些数据,读完之后B此时将数据做了新增,A再按照之前的条件重新读一遍,与第一次读取的不一致。
6、解决方案——设置事务的隔离级别
(1)Serializable
最高可以避免所有出现的问题性能很慢
(2)Repeatable Read
可重复读(避免脏读,不可重复读)
(3)Read Committed
读已提交(避免脏读)
(4)Read UnCommitted
读取未提交(所有效果均无法保证)
MySQL数据库提供默认隔离级别 Repeatable Read
Oracle数据库提供默认隔离级别 Read Committed
查看数据库的隔离级别
select @@tx_isolation;
修改数据库中的隔离级别
set session transaction isolation level xxx;
最后
以上就是欣喜麦片为你收集整理的学习笔记03——MySQL(三)的全部内容,希望文章能够帮你解决学习笔记03——MySQL(三)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复