代码拉取完成,页面将自动刷新
同步操作将从 panglijing/DBA 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
3 用户管理
1 为什么要要学习用户管理
2添加用的命令格式
grant 权限列表 on 库名 to 用户名@"客户端地址"
identified by "密码" 【 with grant option 】 ;
每部分参数的表示方式
权限表示 usage
库名表示
用户的表示
客户端地址的表示
3继续添加用户 (例子)
休息到 10:15
5撤销用户权限
revoke 权限列表 On 库名 from 用户@“客户端地址”;
练习到 11:34
SELECT, INSERT, UPDATE,delete, CREATE, DROP, RELOAD,
SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER,
SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES,
LOCK TABLES, EXECUTE, REPLICATION SLAVE,
REPLICATION CLIENT, CREATE VIEW, SHOW VIEW,
CREATE ROUTINE, ALTER ROUTINE, CREATE USER,
EVENT, TRIGGER, CREATE TABLESPACE
6删除用户
添加用户 查看用户 权限 修改用户密码 删除用户权限
删除用户
练习到 12:00 下课
授权库MySQL的使用
保存的是grant 命令的执行结果
使用不同的表存储 不的用户信息
user表
grant all on *.* to pljadmin@"%" identified by "123456";
select * from mysql.user where user="pljadmin" \G
show grants for pljadmin@"%";
db 表
tables_priv表
columns_priv表
all on *.* user 表
ON 库名.* db表
on *.* user表
on 库名.表名 tables_priv 表
update(表头名) on 库名.表名 columns_priv表
休息到 16:15
tarena.sql
RDBMS1_DAY04
1 基础查询进阶
函数:MySQL服务自带的命令
练习聚集函数的使用 到 17:00
课间休息到 17:15
2 连接查询 1/2
RDBMS1_DAY04
一、基础查询进阶
常用函数
字符函数
数学函数
日期时间函数
聚集函数
计算符号 + - * / %
判断函数的使用:
查询记录时 根据判断函数的结果输出数据
if(筛选条件,第2列,第3列)
ifnull(第一列,第2列)
练习到 10:28
case
dept_id | dept_name | 部门类型
1 人事部 非技术部
3 运维部 技术部
1.2 查询结果处理
把使用select 命令查询到的数据 再使用其他命令 处理
一下。
有
分组处理 group by 表头名
表头的值相同的为一组 把一样的 仅显示
第1次出现的 。
排序处理 order by 表头名 升序|降序
练习到 14:30
过滤处理 having 筛选条件
select where 筛选条件
分页(限制显示的行数)
默认会显示所有符号查询条件行
limit 数字; 显示查询结果的前几行
limit 数字,数字; 显示指定范围的行
第一个位置的数字 起始行
第二个位置的数字 显示的总行数
练习+ 休息到 15:10
select * from tarena.user order by uid desc limit 1;
二 连接查询 :
笛卡尔积 从多张表里查找数据 查询结果是表中行数相乘的积
select 表头名列表 from 表名,表名 where 筛选条件;
休息到 16:05
select 表头名列 from 表名 inner join 表名 on 连接条件
【where 筛选条件 having 条件 group by 表头名 order by 表缇名
limit 数字】
使用不同的连接方式把2张或2张以上表临时组成
新表 ,然后在新表筛选符合条件数据
内连接
select name , e.dept_id from employees as e inner join
departments as d on e.dept_id = d.dept_id
where d.dept_id = 3;
select employees.employee_id , name, basic+bonus as total from employees inner join salary on employees.employee_id = salary.employee_id
1 A 10000 20000
2 B 20001 35000
C
D
E
左连接
右连接
合并查询结果
嵌套查询
mysql> select gid from user where gid >= 3 group by gid having gid = 996 ;
mysql> select gid from user where gid >= 3 group by gid having gid >= 300 ;
RDBMS1_DAY04
内链接查询中的非等值链接
On 后边的连接条件 不是使用相等判断
连接的表里 没有表头是存储相同数据的表头
employees salary 都有employee_id
工资等级表
行号 id 级别 grade 最低值Low 最高值 high
select name,date,basic,grade from salary inner join
grade on salary.basic between grade.low and grade.high
where year(date) = 2018 and month(date) = 12 ;
员工编号 姓名 基本工资 工资等级 发工资日期
员工表 工资表 wade_grade
b表 right join a表 on 条件;
查询没有员工的部门名
查询没有部门名的员工
练习到 11:45
外连接
联合查询 : 把多个select 查询命令的输出一起显示
交叉连接 与多表查询结果一样 (查询的表 行数相乘的积
是总的查询行数)
嵌套查询 类似于俄罗斯套娃
select查询命令里 包含其他的select查询命令,
把内层的查询结果作为外层查询的查询条件
内层的select查询命令可以出现的位置:
where 命令之后
having命令之后
from命令之后
select命令之后
休息到 15:15
dept_id dept_name 总人数
3 运维部 21
4 开发部 44
select d.* , ( select count(name) from employees where ) as 总人数 from departments as d;
查找 人事部 所有员工的工资
select employee_id , basic from salary
where employee_id in ( select employee_id where employees
where dept_id in ( select dept_id from 部门表 where
dept_name="人事部")) ;
练习+休息到 到 16:20
select dept_id,dept_name,employee_id,name,email
from departments as d
inner join employees as e on d.dept_id=e.dept_id;
一起修改和删除 多张表的数据
休息到 17:05
RDBMS1_DAY05
1MySQL视图 (OK 1/2)
一、视图基础 类似于系统里的给文件创建连接文件ln -s
视图创建 查看 删除
练习到 17:00
连接查询 : 内连接 左右连接 交叉连接 合并查询结果
嵌套查询 : 查询语句里包含其他查询语句 把内层的查询
结果作为外层查询的查询条件
可以用出现在where having from select
多表删除和多表更新:把多张表通过连接组成一张新表
然后对其做 删除或修改
RDBMS1_DAY05
一 视图基础
视图介绍 优点 视图基本使用:视图创建 查看 删除
对视图里看到的数据操作和表的数据一样
二、视图进阶
1 什么情况必须给创建视图时查询的表头定义别名
2 覆盖创建视图(能达到修改已有视图的目的)
3 支持检查选项 with check option
因为默认情况 对视图里的数据做修改,修改的就是创建视图
时 select命令查询的表里的数据。
通过访问视图 对数据做修改时加限制
检查方式有2种 local 和 cascade
local 首先满足自身的限制 ,同时要满足基表的限制
(如果基表本身没有限制无效)
休息到 11:10
2MySQL存储过程 (MySQL服务脚本)
写脚本时可以使用 sql命令 变量 循环结构
循环结构控制语句
一存储过程基础
创建 执行 查看 查看已有的存储过程 查看功能代码 删除
二 存储过程进阶
1 变量的使用
变量?
全局变量
自定义变量
2 自定义的变量
局部变量: 只能在begin 和 end 之间定义 ,仅在
存储过程执行中有效 存储过程执行结束后 变量失效
delimiter //
create procedure tarena.pa()
begin
declare name char(10);
declare age int default 19;
declare school char(10);
set name="plj" , school="tarena" ;
select name ;
select school,age;
end
//
delimiter ;
call tarena.pa ;
用户变量: 登录数据库服务器的用定义的变量 仅对登录
的当前用户有效
休息到 15:15
2 参数的使用
in 传递数据给存储过程处理
out 接收存储过程的处理结果
inout 既有in的功能又有out的功能
创建存储过程 定义参数的格式
create procedure 库.存储过程名(类型 参数名 数据类型,
类型 参数名 数据类型,类型 参数名 数据类型,。。。)
begin
,,,,,
end
call tarena.pa(参数列表);
tarena.pnum 根据输入的部门编号统计部门人数 练习到 15:45
delimiter //
create procedure tarena.pnum(in dept_no int )
begin
select dept_id as 部门编号,count(employee_id) as 总人数
from tarena.employees where dept_id=dept_no group by dept_id;
end
//
delimiter ;
call tarena.pnum(5);
call tarena.pnum(1);
call tarena.pnum(7);
tarena.p4 根据输入的员工名获取对应的邮箱
delimiter //
create procedure tarena.p4(in ename char(10) ,
out yx char(50) )
begin
select email into yx from tarena.employees where name=ename;
end
//
delimiter ;
练习到 16:30
call tarena.p4("汤华",@mail);
call tarena.p4("lishi",@mail);
select @mail ;
3 流程控制 :
判断结构 if case
If case
课间休息到 17:10
循环结构 while loop repeat
loop
代码 。。。。
end loop;
5>4 #判断条件不成立执行循环体,反之循环结束
4 循环结构控制语句
yyy:while 判断条件 do
iterate yyy;
代码 。。。。
end while yyy;
xxx:loop
leave xxx;
代码 。。。。
end loop xxx;
delimiter //
create procedure tarena.p0()
begin
xxx:loop
select sleep(1);
select "one";
leave xxx ;
end loop xxx;
end
//
delimiter ;
delimiter //
create procedure tarena.p2()
begin
declare j int default 1;
zzz:while j <= 5 do
if j = 4 then
set j = j + 1;
iterate zzz ;
end if;
select j , "aaa" ;
set j = j + 1 ;
end while zzz;
end
//
delimiter ;
练习 + 休息到 10:10
RDBMS1_DAY06 数据备份与恢复
相关概念
什么备份:把已有的数据再 弄一份一样的出来
备份的目的: 使用备份文件恢复数据
备份的方式:
按照数据库服务器状态分:
热备份 备份过程中数据库服务一直时运行着的
冷备份 备份时 数据库服务时停止的 备份完成后
才启动服务的
备份的方法:
物理备份 使用系统命令拷贝数据库目录
逻辑备份 使用数据库服务软件自己提供的命令备份
或者是 安装其他软提供的命令做备份
备份策略
完全备份 备份所有数据 (1张表 一个库下的所有表
可以一台服务器上的所有库)
备份新数据
增量备份 备份上次备份后,产生的新数据
差异备份 备份完全备份后, 产生的新数据
完全+差异
完全+增量
计划任务 + 备份脚本
00 23 * * 1 完全备份脚本
00 02 * * 2-7 备份新数据的脚本
休息到 11:10
1物理与恢复 练习到 11:35
2逻辑备份与恢复
使用mysqldump命令对数据做完全备份
]#mysqldump -uroot -p密码 数据库名 > /目录名/文件名.sql
数据库名 的表示方式?
恢复数据的命令格式
]# mysql -uroot -p密码 < /目录名/文件名.sql
使用表的备份文件恢复数据 必须写 库名
]# mysql -uroot -p密码 库名 < /目录名/文件名.sql
00 23 * * 1 mysqldump -uroot -p123456 -B tarena >
/bakdir/`date +%F`_tarena.sql
mysqldump的缺点 备份过程中 和 恢复过程中 会给表加写锁
对表执行 select 和 insert update delete 都是备份拒绝的
什么时候才能访问 备份完成后 或恢复完成后 自动释放写锁
才允许对表做 select 和 insert update delete ;
3 innobackupex 备份与恢复
备份过程中不锁表
3.1 完全备份与恢复
]# innobackupex -uroot -p密码 /备份目录名 [--no-timestamp]
恢复数据的命令格式
准备恢复数据
]# innobackupex --apply-log /备份目录名
拷贝数据到数据库目录下
]# innobackupex --copy-back /备份目录名
具体恢复步骤?
3.2 使用完全备份文件 仅恢复1张表的所有数据
练习 + 休息到 17:15
3.3 innobackupex增量备份与增量恢复
备份命令格式
]#innobackupex -uroot -p密码 --incremental /新数据存放
目录名目录名
--incremental-basedir=/备份数据的参考目录 --no-timestamp
增量恢复数据命令格式
#准备恢复数据
]#innobackupex --apply-log --redo-only /首次备份文件存放的目录
#合并数据 合并的顺序要和备份顺序一致
]#innobackupex --apply-log --redo-only /首次备份文件存放的目录
--incremental-dir=/新数据存放的目录
#拷贝数据到数据库目录下
]#innobackupex --copy-back /首次备份文件存放的目录
具体操作步骤?
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。