MYSQL【所有基础知识包括代码实战】

MYSQL数据库

数据库(DB)

*定义:数据库是长期存储在计算机内、按照一定的组织方式存储在一起、可共享的大量相关数据的集合。

数据库管理系统(DBMS)

定义:位于用户和操作系统之间的一层数据管理软件,是数据库和用户之间的一个接口。

数据库系统

构成:数据库、数据库管理系统、软件平台、硬件平台、用户
特点:数据结构化(数据存储结构化,数据联系的机构化,采用某种数据模型)
	数据共享性高,冗余度低,易扩充(多用户、多应用、面向整个系统)
	数据独立性高
	数据有DBMS同一管理和控制

系统结构

模式就是数据库中
概念模式:是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公用数据视图
外模式:子模式或用户模式,,它是对数据库用户看见和使用的局部数据的逻辑结构和特征的描述,是数据库
内模式:对数据物理结构和存储方式的描述,是数据在数据库的表现

在这里插入图片描述

在这里插入图片描述

数据模型

数据模型

定义:对现实世界中客观事务及事物之间联系的抽象,并用数学描述进行模拟表示
三要素:
	数据结构:DDL
	数据操作:DML
	完整性约束:{实体完整性、参照完整性、用户自定义完整性}
数据模型不同的应用层次可分为三类:概念,物理,逻辑模型

关系模型

R(U,D,Dom,F)
R为关系名称
u为该关系的属性集合
D为属性组U中的属性来自的域
Dom属性集合U与D的映射

关系操作语言

关系代数语言:
关系演算语言
结构化查询语言

完整性约束

实体完整性:一个基本关系通常对应现实世界的一个实体集,实体完整性规则能够区分显示世界中的每一个实体。
参照完整性:参照完整性规则就是定义
用户自定义完整性:

关系代数

概述:
	三要素:运算对象预算福、预算结果。

在这里插入图片描述

应用

字符集

1.查看字符集
show character set select * from information_schema.character_sets
2.查看校对规则 
show collation select * from information_schema.character_sets 
3.查询默认情况下所采用的服务器字符集和校对规则命令
show variables like 'character_set_server' show variables like 'collation_server' 
4.显示当前数据库字符集和数据库校验规
show variables like 'character_set_database' show variables like 'collation_database'
5.显示当前数据库中数据表的存储引擎、字符集、校对规则、创建时间等内容
show table status from company like '%dept%' 
6.设置字符集
SET character_set_client = utf8 ;
SET character_set_connection = utf8 ;
SET character_set_database = utf8 ;
SET character_set_results = utf8 ; 
SET character_set_server = utf8 ;
SET collation_connection = utf8 ;
SET collation_database = utf8 ; 
SET collation_server = utf8 ;
6.查询客户端、服务器端、数据库、数据表
show variables like '%char%'

DDL


1.创建数据库
 
create database if not exists studentinfo default character set utf8 collate utf8_bin

-- 2、修改数据库
alter DATABASE studentinfo CHARACTER set gbk 


-- 3、 删除数据库
drop database  studentinfo 


-- 4、打开数据库
use studentinfo 

~~~

~~~ 
1.查看sdept表结构 use studentinfo desc sdept
2.建表需要定义哪些内容 表名、字段、数据类型、约束、引擎、字符集、校对规则 
3.SQL语言有哪些类型?
DDL:create alter drop 
DML:select insert update delete
DCL:grant revoke//权限管理
~~~

~~~ 
1、修改院系表的telephone字段长度
alter table sdept modify telephone char(20)

2、student表添加字段address,同时为sname字段添加唯一约束
alter table student add(address char(30), CONSTRAINT un_stusname unique(sname))

3、修改score表的存储引擎、字符集、
alter table score engine=INNODB DEFAULT CHARACTER set gbk COLLATE gbk_bin

4、删除student表中的address字段和sname的唯一约束
alter table student drop address 
alter table student drop index un_stusname

1、查看约束
select * from information_schema.KEY_COLUMN_USAGE 

2、复制数据表
(1)全表复制
只能复制表的结构
CREATE tbale sc like score

(2)部分复制
可以复制表中的数据
create table stu as select sno,sname from student



实战代码

建表


1. 创建student表
 create table student(
	sno char(15),
	sname char(8) not null,
	ssex enum('男','女'), 
	sage tinyint default 18, 
	deptno char(2),
    spwd char(10),
	constraint pk_stu primary key(sno),
	constraint fk_stu foreign key(deptno) references sdept(deptno), 
	constraint ck_stuage check(sage>=15 and sage<=35) 
)engine=INNODB default charset=utf8 collate=utf8_bin


2.创建course表
create table course( 
	cno char(8) ,
	cname char(30) not null unique,
	ccredit float(3,1),
	institute char(2), 
	constraint pk_cour primary key(cno),
	constraint fk_coudeptno foreign key(institute) references sdept(deptno)
) engine=INNODB default charset=utf8 collate=utf8_bin 



3.创建score表 
create table score( 
	sno char(15),
	cno char(8),
	grade float(6,2),
	primary key(sno,cno),
	constraint fk_sc1 foreign key(sno) references student(sno) ,
	constraint fk_sc2 foreign key(cno) references course(cno),
	constraint ck_grade check (grade<=100 and grade>=0)
) engine=INNODB default charset=utf8 collate=utf8_bin 


4.创建teacher 
create table teacher( 
	tno char(15), 
	tname char(8) not null,
	tsex enum('男','女'), 
	grad char(30), 
	title char(20),
	deptno char(2), 
	tpwd char(10),
	constraint pk_tea primary key(tno),
	constraint fk_tea foreign key (deptno) references sdept(deptno)
) engine=INNODB default charset=utf8 collate=utf8_bin



update

update 表名 set 列名=值。。。where 条件表达式

查询实例

1in('','')1)查询计算机学院和人文学院的详细信息
	select * from sdept where aname in('计算机与信息工程学院','人文学院')
	2is not null/ is NULL1)某些学生选修课程后没有参加考试 ,所以有选课记录,
但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。
insert into score(sno,cno) values('0802020133','C002')
select *  from score where grade is NULL; 
SELECT * from score where cno='C002' and grade is not NULL


3like3)查询所有姓“张”的学生
	select * from student where sname like '张%'4)查询所有姓“张”,且名字为两个字的学生
select * from student where sname like '张_'


4distinct 消除重复行
(5)查询选修了课程的学生学号
	select DISTINCT sno from score


5、列表名
查询是讲该表的sno、cno、grade更改为学号、课程号、成绩
SELECT sno 学号,cno 课程号,grade as 成绩 from score 

6. 对查询结果排序
(1)查询课程号为A002所有学生的成绩,查询结果成绩升序排列    
select grade from score where cno ='A002' ORDER BY grade
(2)查询课程的基本情况,学分降序排列   
select * from course ORDER BY ccredit DESC


7. 使用集合函数
count(*)bu会忽略nullcount(具体字段)会忽略null1)查询学生总人数
SELECT COUNT(sno) from student
(2)查询选修了课程的学生人数
SELECT COUNT(DISTINCT sno) from score 
(3)查询选修了’A001’课程的学生人数
select count(sno) from score where cno='A001'4) 查询课程号为A002的所有学生的总成绩
select SUM(grade ) from score where cno='A002'5)查询课程号为A002的所有学生的平均成绩
select avg(grade ) from score where cno='A002'6)查询课程号为A002的所有学生的最高分和最低分
select max(grade ) from score where cno='A002'
select min(grade ) from score where cno='A002'

7. 使用分组函数
(1)查询‘01’系的男生、女生各多少人
select ssex ,count(*) from student where deptno='01'2)查询每个院系的男女生人数
select deptno,ssex,count(*) from studnet GROUP BY deptno,ssex


二、多表查询
 1. 笛卡儿积连接
(1)连接教师表和院系表(有相同的连接字段)
select * from student,sdept
2. 有条件的连接查询
(1)查询每名学生及其所属院系的基本情况(等值连接)
select  * from student,sdept where student.deptno=sdept.deptno

(2)查询每名女生学号、姓名及其院系情况
select  sno,sname,student.deptno,dname,address,telephone 
from student,sdept 
where student.deptno=sdept.deptno and ssex='女'3)查询计算机每名教师的编号、姓名、毕业学校、职称、电话等内容
select tno,tname,grad,title,telephone from teacher,sdept
where teacher.deptno=sdept.deptno 
and dname like'%计算机%'4)查询非计算机学院所有学生信息
select student.* from student,sdept 
where student.deptno=sdept.deptno 
and dname!='计算机与信息工程学院'


三、使用join连接字段的查询
1. 内连接查询
使用inner join可以获得表中的共有字段
(1)查询每个学生的基本信息和成绩情况
select  *  from student,score 
where student.sno=score.sno
 
select * from student inner join score
on student.sno=score.sno

(2)使用内连接INNER JOIN查询每名学生及所属院系的信息(等值连接)
select * from student inner join sdept
on student.deptno=sdept.deptno

(3)使用内连接INNER JOIN查询选修了课程的所有学生的姓名、课程名称以及成绩。
select sname,cname,grade from student inner join score on student.sno=score.sno
  inner join course on course.cno=score.cno

2. 自然连接查询natural join
(1)查询每个学生的基本信息和成绩情况
select * from student natural join score 

(2)使用自然连接查询每名学生及所属院系的信息
select * from student natural join sdept 

3. 左外连接和右外连接
(1)查询所有学生的选课情况(包括选课和没选课两种情况)
select * from student left outer join score on student.sno=score.sno

(2)查询所有学生的选课情况(包括选课和没选课两种情况),使用右外连接
select * from student score right join student on student.sno=score.sno
一、复合查询
1.嵌套查询select ... from ... where ...(select ... from ...where...)1)查询计算机学院开设的所有课程
	SELECT   CNAME FORM COURSE WHERE INSTITUTE IN( SELECT DEPTNO  from adept where dname like '计算机%' )2)查询通信学院、计算机学院所有学生的基本情况

SELECT * from student where deptno in(select deptno from sdept where aname like '计算机%' or aname like '通信%')3)查询选修了A001这门课程的学生信息
SELECT * from student where sno in(select sno from score where cno='A001')4)使用any查询选修了A001这门课程的学生信息


(5)查询4系中年龄小于1系学生最小年龄的学生信息
select * from student where deptno='04'and sage<all(SELECT sage from student where deptno='01')



2. 综合训练
(1)将不及格学生的成绩录入到failsc表中

insert into failsc (sno,cno,grade) 
SELECT * from  score where grade<602)修改字段排序,将cname字段的顺序修改到id之后
alter table failse modify cno char(8) after id
(3)删除表中数据
DELETE from failsc where sno=4)清空表中数据
-- 具有是放表空间的作用,delete没有 
truncate failsc 

视图

一、视图
1. 创建视图
(1)创建计算机学院的所有学生的学号、姓名、性别、年龄等基本信息
视图v_computerstu,要求为视图定义相应字段
CREATE or REPLACE view v_computerstu(cpno,cpname,cpsex,cpage)
as select sno,sname,ssex,sage from student where deptno=(select deptno FROM sdeptno WHERE dname LIKE '%计算机%')2)创建所有女生的基本信息视图v_femalest,并且检查该视图设置的条件
 	
2. 查询视图
(1)查询视图数据的语句
select* from v_femalestu
(2) 查询视图结构
desc v_computerstu
(3)获取视图信息
show table status like'v_computerstu'4)查询视图创建语句
show create view v_computerstu
(5)显示当前数据库中的所有视图信息
select * from information_schema.VIEWS
修改视图可以使用create or replace view语句重新创建并覆盖原视图。

3. 操作视图
(1) 更新v_femalest视图中姓名为张新的年龄为17
update  v_demalest set sage=17 where sname='张新'2)通过视图v_femalestu插入学生记录,信息如下:('12345','张楠','女',20,'01') 
insert into v_femalestu (sno,sname,ssex,sage,deptno)
VALUES('12345','张楠','女',20,'01')3)删除视图
drop view v_femalestu

4.使用视图应注意事项
(1update v_femalestu set ssex='男' where sname='张新'
insert into v_femalestu(sno,sname) values('55555','王立')2update v_femalestu set deptno='01' where sno='0601010127'3update v_femalestu set deptno='12' where sno='0601020212'```

数据库引擎

innodb:索引默认B+树形式

索引

类型

普通
唯一性
全文
单列
多列
空间

实战代码

1.创建索引
(1) 建表时创建索引
创建存储不及格成绩表failsc,要求在sno列建立普通索引
create table falisc(
id int(4) PRIMARY key auto_increment,
sno char(15),
sname char(8),
cname char(30),
grade float(6,2),
index INDEX_falisno(sno(6))

)engine=myisam


insert into falisc(sno,sname,cname,grade)
select student.sno,sname,cname,grade from student,course,score
where student.sno=score.sno and course.cno=score.cno
and grade<602)在已存在的数据表上创建索引
在不及格成绩表,要求在cname列建立普通索引
create index index_failsccname on falisc(cname)3)使用alter命令添加索引
在不及格成绩表,要求在sname列添加普通索引
alter table falisc add index index_failscsname(sname)

2.查看索引
(1)查看select 语句使用了failsno_index索引
EXPLAIN select * from falisc where sno='0701010132'

(2)查看数据库中数据表索引的使用情况
show index  from falisc


3.删除索引
drop INDEX index_failsccname on falisc
(2)alter table falisc drop INDEX index_failscsname

函数与存储结构

课堂代码

一、系统函数
1.数学函数
select ceil(7.6),floor(7.6),power(3,4),sqrt(16)
2.字符串函数
select char_length('你好  123'),length('你好  123');
select sno,replace(substr(sno,3,2),'0','1') from student
select avg(grade) from score where cno=upper('c001')
3.时间函数
select now(),curdate(),sysdate()
4.系统信息函数
select database(),schema(),version(),connection_id(),system_user()
5.加密函数
select password('123abc')

二、自定义函数
1.创建函数f_tname,能够根据教师名字获得所属院系的负责
人名字。若教师名字不存在,给出‘没有此人’提示。
delimiter//通知系统语句结束符变成// 看到才能编译去执行
drop function if exists f_tname;
create function f_tname(x char(10))
  returns char(6)
BEGIN
  declare n varchar(10);
  select tname into n from teacher where 
    deptno=(select deptno from teacher where tname=x)
    and title='院长';
  if n is null  THEN
     return '查无此人';
  ELSE
     return n;
  end if;
end;
运行函数:
(1)select f_tname('王丽')

存储过程

定义: MySQL5.0版本开始支持存储过程,存储过程就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法,存储过就是数据库SQL与层层面的代码封装与重用
优点:增强了sql语言的功能和灵活性
	允许标准组件是编程。
	能实现较快的执行速度
	减少网络流量。
	作为一种安全机制来充分利用。

结构

delimiter 自定义结束符号
create procedure 储存名([in,out,inout] 参数名 数据类型)
begin 
	sql语句
end 自定义的结束符号
delimiter ;

定义变量

局部变量
用户自定义,仅在begin/end块中有效
格式:declare var_name type[default var_value];
	eg:decalre var_name01 varchar(20) default 'aaa'
用户变量
在当前会话有效,类比java的成员变量
格式:@ var_name

eg:
delimiter $$
create procedure proc04()
begin
	set @var_name01 = 'beijing';
	select @var_name01;
end $$
dilimiter ;
call proc04();
select @var_name01; -- 外部也是可以使用用户变量

系统变量

分为全局变量和会话变量
1、全局变量在MYSQL启动的时候由服务器自动将他的初始化为默认值,这些默认值可以通过更改my.ini这个文件来更改

2、会话变量在每次建立一个新的连接的时候,由MYSQL来初始化,MYSQL会将当前所有全局变量的值复制一份,来作为会话变量

3、也就是说,如果在建立会话以后,没有手动更改过会话变量与全局变量的值,那所有这些变量的值都是一样的

4、全局变量与会话变量的区别在于,对全局变量的修改会影响整个服务器,但是对会话变量的修改,只会影响到当前的会话(也就是当前的数据库连接)

5、有些系统变量的值是可以利用语句来动态进行更改的,但是有些系统变量的值缺是只读的,对于那些可以更改的系统变量,我们可以利用set语句进行更改
全局变量
-- 查看全局变量
show global variables
-- 查看某全局变量
select @@global.auto_increment_increment;
--修改全局变量的值
set global sort_buffer_size=40000;
set @@global.sort_buffer_size=40000;

存储过程

存储过程传参——in
in表示传入的参数,可以传入数值或者变量,即使传入变量,并不会改变变量的值,可以内部更改,仅仅作用在函数范围内
存储过程传参——out
out表示从存储过程内部传值给调用者
代码实例:
delimiter $$
create PROCEDURE roc03(in in_sno varchar(15),out out_sname varchar(20))
BEGIN
	select sname into out_sname from student where sno=in_sno;
END $$
delimiter ;
call roc03('0601010127',@out_sname);
select @out_sname;
存储过程传参——inout
inout表示从外部传入的参数经过修改后可以返回的变量,既可以使用传入变量的值也可以修改变量的值(即使函数执行完)

代码


二、存储过程
1.创建存储过程,能够实现通过学号获得学生的姓名。 
(1)创建存储过程
drop procedure p_stu;
create procedure p_stu(in xh char(15),out xm char(8))
BEGIN
  select sname into xm from student where sno=xh;
end;
(2) 执行存储过程
set @name=null;
call p_stu('0601010127',@name)
(3)查询变量
select @name
2.创建存储过程,可以实现对sdept表数据的录入
drop procedure if exists p_insdept ;
create procedure p_insdept(dno char(2),dname varchar(30),
addr varchar(30),tele char(15))
BEGIN
   insert into sdept values(dno,dname,addr,tele);
end;
执行:
call p_insdept('12','电子','北京路8号','111111')
select * from sdept

3.实现根据学院的名称对sdept表数据的删除操作
drop procedure if exists p_delsdept;
create procedure p_delsdept(dname varchar(30))
BEGIN
  delete from sdept where dname=dname;
end;
执行:
call p_delsdept('电子')
select * from sdept

流程控制

if
-- 存储过程-if
-- 案例1
-- 输入学生的成绩,来判断成绩的级别
/*
score<60:不及格
score>=60 , score<80 :及格
score>=80 , score<90 :良好
score>=90 , score<=100 :优秀
score>100 :成就错误
*/
delimiter $$
create procedure proc_12_if (in score int)
begin
	if score<60 then select '不及格';
	elseif score>=60 and score<80 then select '及格';
	elseif score>=80 and score<90 then select '良好';
	elseif score>=90 and score<=100 then select '优秀';
	else select '成绩错误'
	end if;
end $$
delimiter ;
 
set @score=55;
call proc_12_if(@score)
-- 输入员工的名字,判断工资的情况
/*
sal<10000 :适用薪资
sal>=10000 and sal<20000 :转正薪资
sal>=20000 :元老薪资
*/
delimiter $$
create procedure proc_13_if(in in_ename varchar)
begin
	declare var_sal decimal(7,2);  -- 定义局部变量,7个长度,2个小数 
	declare result varchar(20);
	select sal into var_sal from emp where ename=in_eanme;  -- 将值赋给局部变量
	if var_sal <10000 then set result ='适用薪资';
	elseif var_sal <20000 then set result ='转正薪资';
	else set result ='元老薪资';
	end if;
	select result;
end$$
delimiter ;
 
-- 调用
call proc_13_if('刘备');
case
CASE是另一个条件判断语句,类似于编程语言中的switch语法

语法一:当case后面的语句与when后面的语句相等时,则会执行then后面的语句,如果均不匹配则执行else

语法二:直接写case 当when后面的条件成立则执行then后面的语句,如果都不成立,则执行else
-- 流程控制语句:case
/*
支付方式:
	1.微信支付
	2.支付宝支付
	3.银行卡支付
	4.其他支付
*/
-- 格式1
delimiter $$
create procedure proc14_case(in pay_type int)
begin
	case pay_type 
	when 1 then select '微信支付';
	when 2 then select '支付宝支付';
	when 3 then select '银行卡支付';
	else select '其他方式支付';
	end case;
end$$
delimiter ;
 
call proc14_case(2);
call proc14_case(3);
-- 语法二
-- 输入学生的成绩,来判断成绩的级别
/*
score<60:不及格
score>=60 , score<80 :及格
score>=80 , score<90 :良好
score>=90 , score<=100 :优秀
score>100 :成就错误
*/
delimiter $$
create procedure proc_15_case (in score int)
begin
	case
	when score<60 then select '不及格';
	when score>=60 and score<80 then select '及格';
	when score>=80 and score<90 then select '良好';
	when score>=90 and score<=100 then select '优秀';
	else select '成绩错误';
	end case;
end $$
delimiter ;
 
call proc_15_case(88);
循环
while
[标签:] while 循环条件 do
	循环体;
end while[标签]
-- 需求:向表中添加指定条数据
-- while+leave
delimiter $$
create procedure proc16_while(in insertCount int)
begin
	declare i int default 1;  -- 设置循环的增量
	label:while i<=insertCount do insert into user(id,username,password) values(i,concat('user-',i),'123456');
	if i=5 then leave label;   -- 如果i=5则跳出循环
	set i=i+1;
end while label;
end$$
delimiter ;
 
 
call proc16_while(10);
repeat
【标签:】repeat
	循环体;
until 条件表达式
end repeat【标签】;
-- 存储过程-循环控制-repeat
 
delimiter $$
create procedure proc18_repaet(in insertCount int)
begin
	declare i int default 1;
	label:repeat
		insert into user(uid,username,password)values(i,concat('user-',i),'123456');
		set i = i+1;
		until i>inserCount  -- 这里不能写; 表示跳出循环
		end repeat label;
		select '循环结束';
end$$
delimiter ;
 
call proc18_repeat(100);
loop
【标签】 loop
	循环体
	if 条件表达式 then
		leave【标签】
	end if;
end loop;
-- 存储过程-循环控制-loop
 
delimiter $$
create procedure proc19_loop(in insertCount int)
begin
	declare i default 1;
	label:loop insert into user (uid,username,password) values (i,concat('user-')i,'123456');
	set i= i+1;
	if i>insertCount then leave label;
	end if;
	end loop label;
end$$
delimiter ;
 
call proc19_loop()

游标

安全控制

系统权限表
常用的表有user、db、tables_priv、columns_priv、column_priv、procs_priv
user:查看数据库所有用户
db:存储了用户对某个数据库的操作权限
tables_priv:可以对单个表进行权限设置
columns_priv:对表中某一列进行权限设置
procs_priv:对存储过程和函数进行权限设置
一、系统表
1.userselect * from mysql.user
select select_priv from mysql.user
2.db、host
select * from mysql.host
select * from mysql.db
3.权限
select * from mysql.tables_priv
select * from mysql.columns_priv

二、用户
1.创建
(1)create user system@localhost identified by '123'
(2)insert  into user
(host,user,authentication_string,ssl_cipher,x509_issuer,x_509_subject) 
values('localhost','sysman','123','','','')
2.刷新
flush privileges
3.修改操作
(1)修改用户名
rename user system@localhost to  sam@localhost
rename user sam@localhost to system@localhost2)修改密码
set password for system@localhost=password('12345');
update mysql.user set password=password('123') where user='system'
4.删除用户
(1drop user system@localhost2delete from mysql.user where user='system'

三、授权
1.授权
(1grant select on studentinfo.* to system@localhost
flush PRIVILEGES2grant update(deptno) on studentinfo.student to system@localhost
2.权限的转移
(1create user my@localhost identified by '123'2grant select on studentinfo.* to system@localhost
     with grant option3)System用户操作
 grant select on studentinfo.student to my@localhost4)测试
四、回收权限
revoke select on studentinfo.student from system@localhost
五、查看权限
show grants

日志

分类:慢查询、二进制、错误、通用

通用日志

1.查看当前通用日志是否开启,并获得日志文件的物理位置
show variables like '%general%';
2.开启或关闭通用日志查询
(1)set命令
set global general_log=on
set global general_log=1
set global general_log=off
set global general_log=0
(2)修改my.ini文件
管理员模式、记事本
3.查看日志文件的输出格式
show variables like'%log_output%'
4.删除通用日志文件
设置为关闭状态:set global general_log=0
外部删除命令:mysqladmin -u root -p123 flush -logs

慢查询日志

默认状态下10s
show variables like '%query%'
long_query_time:确定查询语句超过指定时间后激活写入慢查询日志的操作
开启慢查询日志:
set global show_query_log=ON(开启)
set global show query_log=0
3、查看产生慢查询的语句
show global status like '%slow%'
select * from mysql.slow_log

二进制日志

1.查询二进制日志
show variables like '%log_bin%'
2.开启二进制日志文件
(1)设置sql_log_bin
set sql_log_bin=on
(2)启用log_bin
修改my.ini,重启mysql服务
[mysqld]
#二进制日志
log-bin=mysql_log
3.查看二进制日志文件及内容
(1)查看二进制,验证是否启动
show variables like '%log_bin%'
show master logs
show variables like '%binlog%'2)查看二进制文件内容
更操:insert into studentinfo.sdept values('20','智能制造','11','13')
commit
查看:mysqlbinlog mysql_log.000001
4.删除二进制日志文件
(1)purge master logs to 'mysql_log.000001'
(2)reset master

错误日志

1.查询错误日志
show variables like '%log_err%';
2.修改my.ini
[mysqld]
#二进制日志
log-error
log-warning

ariables like’%log_output%’
4.删除通用日志文件
设置为关闭状态:set global general_log=0
外部删除命令:mysqladmin -u root -p123 flush -logs


### 慢查询日志

~~~ sql
默认状态下10s
show variables like '%query%'
long_query_time:确定查询语句超过指定时间后激活写入慢查询日志的操作
开启慢查询日志:
set global show_query_log=ON(开启)
set global show query_log=0
3、查看产生慢查询的语句
show global status like '%slow%'
select * from mysql.slow_log

二进制日志

1.查询二进制日志
show variables like '%log_bin%'
2.开启二进制日志文件
(1)设置sql_log_bin
set sql_log_bin=on
(2)启用log_bin
修改my.ini,重启mysql服务
[mysqld]
#二进制日志
log-bin=mysql_log
3.查看二进制日志文件及内容
(1)查看二进制,验证是否启动
show variables like '%log_bin%'
show master logs
show variables like '%binlog%'2)查看二进制文件内容
更操:insert into studentinfo.sdept values('20','智能制造','11','13')
commit
查看:mysqlbinlog mysql_log.000001
4.删除二进制日志文件
(1)purge master logs to 'mysql_log.000001'
(2)reset master

错误日志

1.查询错误日志
show variables like '%log_err%';
2.修改my.ini
[mysqld]
#二进制日志
log-error
log-warning
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值