mysql入门学习笔记
最近在软件测试培训班内学习嘛 刚好在教这方面的东西 就把现有的笔记复制上来 就当云备份了
但毕竟不是专业的 应付普通的增删改查完全够用了 就没学数据库的设计规范
mysql
数据库(DB)
是按照 数据结构 来组织 存储 和管理数据的仓库
数据库管理系统(DBMS)
是指数据库系统中对数据进行管理的软件系统
数据库类型
1关系型数据库(SQL server Oracle MySQL DB2 Access sybase)
2非关系形数据库(nosql mongodb redis HBase)
关系型数据库的特点
建立在关系模型上的数据库
借助集合 代数 等数学概念 和 方法来处理数据库中的数据
RDBMS 关系数据库管理系统 的特点(Relational Database Management System )
- 数据以表格的形式出现
- 每行为各种记录名称
- 每列为记录名称所对应的数据域
- 许多的行和列组成一张表单
- 若干的表单组成database
什么是mysql
- 关系型数据库管理系统 由瑞典mysqlAB公司开发 目前属于oracle
- 关联数据库将数据保存在不同的表中 而不是将所有数据放在一个大仓库内
- 结果:增加了速度并提高了灵活性
mysql的优点
- mysql是开源免费的 无需支付额外费用
- 支持大型数据库 可以处理拥有上千万条记录的大型数据库
- mysql使用标准的SQL数据语言形式
- 可以运行于多个系统 支持多种语言。这些语言包括 C C++ Python Java perl php eiffel ruby TCL等
- mysql对PHP有很好的支持 php是最流行的Web开发系统
- mysql支持大型数据库 可以支持5000万条记录的数据仓库,32为系统表文件最大可支持4GB,64位系统支持最大的表为8TB
- Mysql是可以定制的 采用GPL协议 可通过修改源码来开发自己的mysql系统
Mysql基础操作
杂项
目录介绍
如何查看mysql端口号
进入安装路径 找到my.ini文件 记事本打开 查看端口号 默认为3306
如何启动和关闭mysql
services.msc 手动启动或者关闭mysql服务
cmd关闭 net stop mysql
cmd启动 net start mysql
查看mysql版本号
MySQL -V
登录mysql
-u 后接用户名
-p 后接密码
-V 输出版本号
-h 主机地址
退出mysql
\q quit exit ctrl+c 退出
mysql -uroot -p -h127.-0.0 .1
常用命令
1修改密码
mysqladmin -u用户名 -p密码 password 新密码
2显示所有数据库
show databases;
3使用指定数据库
use 数据库名;
4显示当前连接的数据库名字
select database();
5进入mysql显示mysql版本
select version();或者status
6进入mysql显示系统时间
select now();
7进入mysql显示当前身份
select user();
8进入mysql显示登入账号密码
select password('用户名'); 密码加密
第二天
创建数据库语法
create database if not exists 库名 DEFAULT character set 字符集;
修改数据库字符集
alert database 数据库名 character set 字符集;
查看数据库字符集
使用库 之后 show variables like ‘character%’
show create database 数据库;
删除数据库
drop database [if exists] 库名;
if exitsts 是否存在 存在就删除 不存在也不会直接报错 有提示
mysql数据类型(概念 不记)
什么是数据类型
数据类型是指
数据列 存储过程参数 表达式 和局部变量的数据特征 它决定了数据的存储格式 代表了不同的信息类型
整形
TINYINT 有符号-128--127 无符号 0-255
SMALLINT -32768 32767 无符号0-65535
MEDIUMINT
INT
BIGINT
浮点型
FLOAT(M,D)
DOUBLE(M,D)
定点型
DECIMAL(M,D)
M是精度=整数+小数位
D是标度(小数点后位数)
日期时间形
YEAR YYYY
TIME HH:MM:SS
DATE YYYY-MM-DD
DATETIME YYYY-MM-DD HH:MM:SS
TIMESTAMP YYYY-MM-DD HH:MM:SS
字符型
char(M)
varchar
tinytext
text
mediumtext
longtext
ENUM(' ',' ')
SET(' ',' ')
数据表
是数据库最重要的组成部分之一 是其他对象的基础
mysql常见的整型数据类型 笔记记录
tinyint smallint mediumint int bigint
浮点型
float double decimal
时间型
year time date datetime
字符型
char varchar text enum(' ',' ')枚举型
创建表的命令
create table 表名(表头 数据类型,表头2 数据类型,表头3 数据类型);
显示数据库表格
show tables from 库名字;
显示表结构
show columns from 表名;
describe 表名;
desc 表名;
show create table 表名;
查看数据库表创建语句
show create table 表名字;
第三天
修改数据库表的结构(增加字段)
alter table 表名 add 表头 数据类型 [约束条件 first|after 表头];
修改列名 (改表头)
alter table 表名 change 旧列名 新列名 数据类型; 可以用这改数据类型 新旧列名一样
修改列的数据类型
alter t able 表名 modify 列名 数据类型;
修改列的排列位置
alter table 表名 modify 表头 数据类型 first|after 表头2;
删除列
alter table 表名 drop 表头;
第四天
修改表名字
alter table 旧表名 rename to 新表名;
删表
DROP TABLE [IF EXISTS] 表1,表2,表3 删除没有被关联的表 如果多表关联 得解除外键关联关系之后才能删表
表分区
表承载数据量很大时 得去考虑优化 进行表分区
将一张表的数据分成多个区块 区块可以放在同一个磁盘 也可以放在多个磁盘 但是数据必须在一个表中
前提是数据库得支持
显示是否支持分区
show plugins;
分区有两种方式 水平和垂直
创建表分区
partition by 类型(字段)
range分区
指定某列范围值来进行分区
使用 values less than来定义分区
partition by range(表头)(
partition 区块名 value less than(数值),可同时分多个区
);
select * from 表名 partition(区块名);
约束类型 放在建表语句最后
约束的介绍
约束是一种限制 对表的行或列的数据做出限制 来确保表的数据的完整性 唯一性
非空约束
NOT NULL
添加数据时设置了非空字段的值不能为空 否则会报错
主键约束
PRIMARY KEY
要求主键列的数据唯一 并且不能为空 唯一标识表中的一条记录
分为单字段主键 和 多字段联合主键
唯一约束
UNIQUE
唯一约束 保证该字段值唯一,但可为空
主键和唯一键的区别:
①都可以保证唯一性②主键不允许为空,唯一允许为空(只能插入一个null)③一个表中至多一个主键,唯一键可以有多个④都可以组合使用(不推荐)
默认约束
DEFAULT
默认约束 用于保证该字段有默认值
外键约束
FOREIGN KEY
①要求在从表设置外键关系
②从表的外键列类型和主表的关联列类型要求一致或兼容,名称无要求
③主表的关联列必须是一个key(一般是主键)
④要求插入数据时,先插入主表,再插入从表,删除数据时,先删除从表,再删除主表。
修改表时添加约束:
[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…]
REFERENCES <主表名> 主键列1 [,主键列2,…]
---------------------------------------------------------------------------------------------------------
创建表并给某个字段设置约束
1.create table 表名字(
表头 数据类型 约束
);
2.在列定义后边指定约束
constraint 约束名 (primary key) 表头;
删除约束
alter table 表名 modify 表头 数据类型;
建表之后 给某个字段设置约束
- alter table 表名 modify 表头 数据类型 约束;
- alter table 表名 add 约束(表头);
- alter table 表名 add constraint 约束名 约束(表头);
删除主键
alter table 表名 DROP primary key;
多字段联合主键
parmary key (表头1,表头2,表头3);
create table 表名(
表头 数据类型,
表头2 数据类型,
表头3 数据类型,
parmary key (表头1,表头2,表头3);
);
添加非空约束:
alter table 表名 modify column 列名 数据类型 not null
添加默认约束:
alter table 表名 modify column 列名 数据类型 default 默认值
添加主键约束(主键支持列级约束和表级约束):
alter table 表名 modify column 列名 数据类型 primary key
alter table 表名 add primary key(列名)
添加唯一约束(唯一键支持列级约束和表级约束):
alter table 表名 modify column 列名 类型 unique
alter table 表名 add unique(列名)
添加外键约束:
alter table 子表表名 add foreign key(列名) references 主表表名(列名)
删除非空约束:
alter table 表名 modify column 列名 类型 null
删除默认约束:
alter table 表名 modify column 列名 类型
删除主键约束:
alter table 表名 drop primary key
删除唯一键约束:
alter table 表名 drop index 键名
删除外键约束:
alter table 表名 drop foreign key 键名
insert 插入数据
基础插入
insert into 表名(表头1)values(字段1,字段2)
insert into 表名 values(字段1,字段2);
过滤 插入查询数据
insert into 表名 select * from 表名 where 条件;
设置自动增长
auto_increment;创表时直接当成约束使用
alter table 表名 modify 表头 数据类型 auto_increment
设置自增初始值
alter table 表名 auto_increment=初始值
单表数据记录更新
update 表名 set column_name1 = value1, column_name2 = value2 where 条件
删除单表记录
delete from 表名
truncate [table] 表名
区别
delete后面可以带条件 truncate 不能带条件
delete速度低 效率慢 truncate 速度快 效率高
查询数据
查询单表数据
select * from table
查询单表多字段内容
select 表头1,表头2 from table
查询过滤重复数据内容
select distinct 表头 from table
查询空数据
select * from table where 表头 is null
group by分组查询
group by 列名字 having 条件表达式
select * from table group by 表头 having 条件
group分组 having 过滤
先分组再过滤
order by排序
ORDER BY column ASC/DESC;默认升序
limit 查看指定数量表单数据
select * from table limit 数字;
asc升序 默认 desc降序
limit 指定条(默认第0条) , 数量
limit 0,3
limit 数量 offset 指定条开始;
limit 3 offset 0
运算符
+,-,*,/,%(取余)
比较运算符
< , > ,>= , <= ,= , <> != (不等于) , is(not)NULL(判断是否为空)
between and 判断一个值是否在两个值之间 大于等于 小于等于
(not)in 判断一个值是(或不是)IN列表中的值 where 表头 in(' ',' ',' ',)
like 通配符 like '张_' 查 张* _充当字符
模糊查询‘%’ 例如
select * from table where 表头 like ‘%6666%’ 两端模糊查询中间有6666就匹配
select * from table where 表头 like ‘%66’ 匹配66结尾的数值
select * from table where 表头 like ‘66%’ 匹配66开头的数值
双重否定是肯定
select * from table where not 表头 != 300;
逻辑运算符
and 与
or 或
not 非
逻辑运算优先级
where age>18 or balance<500 and sex='男'
and 优先考虑 之后是or
not最先 and第二 or最后
函数
数学函数
数值函数
1 ceil(x) 返回大于x的最小整数
ceil(28.55) 返回29
2 floor(x) 返回小于x的最大整数
floor(28.55) 返回28
3 round(x) 返回最接近x的整数 四舍五入
round(28.97) 返回29 round(28.49)返回28
4round(x,y) 返回最接近于x的数 保留y位 若y为负 保留x值到小数点左边y位
round(28.55,1) 28.6
round(28.55,0) 29
round(28.55,-1) 左移1位 2.9 四舍五入3.0 移动回去 输出 30
5truncate(x,y) 截断函数
返回被舍弃到小数点y位的数字x 若y位0为整数 y为负 左移y位
truncate(28.55,-1)左移1位 2.9 四舍五入3.0 移动回去 输出 30
6mod(x,y)取模 返回 y/x 后的余数
mod(11 , 2 ) 返回1
mod(a,b) 在sql中的意思是 a / b 的余数
mod(id, 2)=1 是指id是奇数。
mod(id, 2)=0 是指id是偶数。
7rand 随机数字random
字符函数
1.concat('',''); 字符函数
主要用来处理数据库中的字符数据 输入参数为空 则输出为空
2.concat_ws('连接符',‘参数1’,‘参数2’);
链接符为null 输出结果就为null
3.lower('')转变为小写
lower(‘’)
4.upper('')转变为大写
upper('')
5.length('')统计长度
6.trim('')删除空格函数
ltrim(' test')删除左边空格
rtrim('test ')删除右边空格
trim(' ')删除全部空格
7.SUB STRING(S,N,LEN)截取字符串
N开始 len结束 n为正数从左往右 为负数从右往左
8left('string','n'),right('string','n')获取指定长度的字符串
left从左边开始获取n个字符
right从右边开始获取n个字符
9replace(‘被替换的词’,'替换目标','替换词')替换函数
replace('abc','bc','de') 输出为ade
10 format(x,n) 格式化函数 x为输入值 n为小数点后位数 n>=0
日期时间函数
获取日期函数
CURDATE();
current_date();
获取时间函数
curtime();
current_time();
默认输出为hh:mm:ss 加数字为hhmmss
获取当前时间
now() | sysdate()
输出格式为yyyy-mm-dd-ss
date_add('date',interval expr type)执行日期加运算
date参数yyyy-mm-dd
interval添加 expr(数值) type(属性) month|year|day|hour|week
计算时间差
datediff('time1','time2');
time1-time2
日期格式化
DATE_FORMAT(date,format)
%b 月份 英文缩写
%c 月份 单数字
%m 月份 双数字
%M 月份 全英文
%d 日期 双数字
%e 日期 单数字
%Y 年份 4位数
%y 年份 2位数
聚合函数
聚合函数 分组函数
1 AVG()返回平均值
2 count()计数
3 MAX()返回某列的最大值
4 MIN()返回某列的最小值
5 SUM()返回某列的和
系统信息函数
version() 返回当前mysql服务器版本号
connection_ID() 返回Mysql 服务器当前链接的次数
database() 和 schema();返回当前数据库名字
user() 返回当前登录用户
加密函数
md5(str);信息摘要算法
加密后位32位十六进制数字的二进制字符串形式返回 参数为null则返回null
password();密码算法
password(str)从原明文密码str计算并返回加密后的密码字符
set password = password('新密码')
查询另一个库user表的例子
select user,password from mysql.user
子查询
子查询是指嵌套在其他sql语句中的查询语句
any all some关键字子查询
any some同义词 表示满足内层子查询中的任何一个条件
all表示需要满足所有内层查询的条件
not in exists
exists 如果存在
多表链接查询
内链接
[inner] join
例 select 表头 from table [inner] join table2 on 表1.表头 = 表2.表头
外连接
left right full
例 select 表头 from table [left|right| full] join table2 on 表1.表头 = 表2.表头
两表以上连接
例 select 表头 from table [inner] join table2 on 表1.表头 = 表2.表头 [inner] join table3 on 表1.表头 = 表3.表头
多表更新
update 表1 inner join 表2 on 表1.id=表2.id set 条件 where 表1.表头=‘’;
复制表到新表
create table table2 as select * from table1;
多表删除的语法
delete t1,t2 from table inner table2 on table.id=table2.id where 条件
函数
自定义函数
1 直接写
create function 函数名(传入数据 数据类型)
returns 数据类型
return DATE_FORMAT(传入数据,'%Y-%m');
2 函数体修饰
DELIMITER //
create function 函数名(传入数据 数据类型)
returns 数据类型
BEGIN
return DATE_FORMAT(传入数据,'%Y-%m');
END //
DELIMITER;
函数类型
3 无参函数
create function 函数名()
returns 数据类型
return DATE_FORMAT(传入数据,'%Y-%m');
4 通过变量的形式创建自定义函数
create function show_name_store(bid int)
returns varchar(50)
return select concat_ws('---',book_name,store) from bookinfo where bid=book_id
删除函数
drop funciton [if exist] function_name
流程控制
1声明变量
DECLARE VAR_NAME date_type[]
例如
declare num int default 10;
2变量赋值 声明后赋值
1 set VAR_NAME=expr [,var_name = expr]
例如 set num = 100
2 select col_name[,....] into var_name[,.....] table_expr
例如 select store INTO num From bookinfo;
3 if选择
在bengin end之间
格式
if 条件 then
触发后执行事件;
elseif 条件 then
触发后执行事件;
else
触发后执行事件;
end if;
return
DELIMITER //
CREATE FUNCTION level(CID VARCHAR(18))
RETURNS VARCHAR(20)
BEGIN
DECLARE VLEVEL VARCHAR(10);
DECLARE MONEY DECIMAL(7,3);
SELECT BALABCE INTO MONEY FROM bookreader where custom_id=CID;
IF MONEY >=500 THEN
SET VLEVEL = '金牌';
ELSEIF MONEY>=300 THEN
SET VLEVEL = '银牌';
ELSEIF MONEY>=200 THEN
SET VLEVEL = '普通';
ELSE
set vlevel = '非会员';
end if;
return vlevel;
end//
delimiter ;
4 CASE分支语句
1 CASE CASE_EXPR
WHEN when_value THEN statement_list
ELSE 条件语句
END CASE
5 while 循环
DELIMITER //
create function get_avg(n int)
returns int
begin
declare num1 int default 0;
declare num2 int default 0;
while num1<n do
set num1 = num1 + 1;
set num2 = num2 + num1;
end while;
return num2;
end //
DELIMITER ;
6 loop循环
[lab1:]LOOP
set num1 = num1 + 1;
set num2 = num2 + num1
IF num1 >100 then
leave [lab1]
end if;
end loop [lab1]
7 repeat
repeat
set num1 = num1 + 1;
set num2 = num2 + num1
until num>=n
end repeat;
return sum;
mysql常见流程函数
case while......do....... loop repeat
存储过程
什么是存储过程
存储过程是 sql语句 和 流程控制语句 的预编译集合 并以一个名称存储 并作为一个单元进行处理
语法结构
create procedure 存储过程名称([ IN|OUT|INOUT ] 传入参数 类型)
routine_body [过程体]
in 必须在调用存储过程时被指定
out该参数的值可以被存储过程改变 并且可以返回
inout 表示该参数调用时指定并且可以被改变和返回
call 存储过程名称(); 调用存储过程
过程体
过程体是合法sql语句
过程体可以是任意sql语句
过程体如果为复合结构就使用begin......end语句
复合结构可以包含声明,流程控制语句
例子
无参
create procedure proc()
select * from readerinfo;
call proc()调用
有参
create procedure proc1(in cid char(18),out num int)
delete from readerinfo where card_id=cid;
select count(card_id) into num from readerinfo;
call proc1('cid',@num)
标准格式
delimiter //
create procedure proc1(in cid char(18),out num int)
begin
delete from readerinfo where card_id=cid;
select count(card_id) into num from readerinfo;
end //
delimiter ;
call proc1('cid',@num)
两数互换
delimiter //
create procedure proc2(in num1 int,out num2,int)
begin
declare temp int default 0; 函数内声明
set temp = num1;
set num1 = num2;
set num2 = temp;
end //
delimiter;
set @num1 = 1; 全局定义
set @num2 = 2;
call proc2(@num1,@num2)
select @num1,@num2;
往表内添加100条数据
delimiter //
create procedure proc3(in num int)
begin
declare id int default 0 ;
declare temp int default 0;
select max(category_id) into id from bookcategory;
set temp = id;
while id <= num + temp do
set id = id + 1;
insert into bookcategory value(id,concat('test',num),floor(rand()*num));
end while;
end//
delimiter ;
删除
drop procedure 函数名()
存储过程和函数的区别
1功能上
存储过程实现的功能更复杂 存储函数实现的功能针对性比较强
存储过程 一般来说 存储过程实现的功能要更复杂 功能强大 可以执行包括修改表等一系列数据库操作
存储函数 实现功能的针对性比较强
2 返回值
存储过程可以返回多个值 也可以不返回值; 存储函数必须有返回值 而且只能有一个返回值
存储过程 可以返回多个值 也可以不返回值 只是实现某种效果或动作
存储函数 必须有返回值 而且只能有一个返回值
3 参数类型不同
存储过程可以允许三种参数 in,out,input 而存储函数的参数只有一种类似in
存储过程有三种 IN OUT INOUT
存储函数 参数只有一种 类似 in函数 调用函数需要按照参数指定值调用
4语法结构不同
存储过程可以允许三种参数:in,outinput;而存储函数的参数类型只有一种 类似in参数
存储过程 声明时不需要指定返回类型
存储函数 函数声明需要指定返回类型(returns type) 且在函数体中必须包含一个有效的return语句
5调用方式不同
存储过程调用时使用call关键字; 而存储函数调用时使用select关键字
存储过程 一般作为独立部分调用 用call调用
存储函数 嵌入在sql中使用可以在select调用
事务
事务由一个或者多个sql语句组成一个不可分割的整体
sql语句之间相互依赖 要么全部执行 要么全都不执行
事务必须满足的四个条件
Atomicity原子性
Consistency一致性
Isolation隔离性
Durability持久性
ROLLBACK 回滚事务 并撤销正在执行的所有未提交的修改
COMMIT 提交事务 并对数据库进行的所有修改称为永久性的
SAVEPOINT identifier(存档名字) 允许在事务中创建一个保存点,一个事务中可以由多个SAVEPOINT;(存档)
ROLLBACK TO identifier(存档名字) 事务回滚到标记点(回档)
处理事务的方法
1 begin rollback commit来实现
begin start transaction开始事务
rollback事务回滚
commit事务确认
2 set改变mysql的自动提交
set autocommit = 0;
set autocommit = 1; 开启自动提交
存储引擎
数据库引擎是数据库底层软件组件
数据库管理系统使用数据库引擎进行 创建查询 更新和删除数据的操作
mysql的核心就是存储引擎
mysql支持的存储引擎
InnoDB ,MyIsAM Memory
show engines语句查看支持的引擎
innoDB存储引擎
1 提供具有提交回滚和崩溃恢复能力的事务安全存储引擎
2 对于处理巨大数量的数据拥有很好的性能
3innoDB 存储引擎支持外键完整性约束
4InnoDB 被用在众多需要高性能的大型数据库站点上
MyISAM存储引擎
拥有较高的插入 查询速度 但不支持事务
MEMORY存储引擎
出发点是速度
MEMORY引擎将表中数据存储到内存中 为查询和引用其他表提供快速访问
特点速度快 逻辑存储介质是系统内存 能获得高性能 当mysql守护程序崩溃时
所有的Memory数据都会丢失 获得速度同时带来缺陷
存储引擎的选择
innodb 提供提交回滚崩溃恢复能力的事务安全能力 可以实现并发控制
MyISAM 数据表主要用来插入和查询记录 用MyISAM引擎 可以提供较高的处理效率
Memory 临时存放数据 数据量不大 并且不需要较高的数据安全性 可以选择将数据存放在内存的memory中
设置存储引擎
1配置文件修改
my.ini文件
default-storage-engine = InnoDB
重启
2客户端修改
set default_storage_engine = InnoDB
3创表设置
create table name(
id int primary key,
name varchar(10)
) engine = InnoDB;
4后续修改设置
alter table 表名 engine = ’innoDB‘
查看创表引擎
show table status from tablewhere name='myengine'
用户管理
mysql用户分为普通用户和root用户
root是超级管理员
普通用户只有被授予的基本权限
权限表
mysql服务器通过权限表来控制用户队数据库的访问 权限表存放在mysql数据库中
存储用户权限信息的表主要有 user .db host tables_priv columns_priv 和 procs_priv
user 表是最重要的一个权限表 记录允许连接到服务器的账户信息 权限是全局级的
db和host 是mysql中非常重要的权限表
db 表存储 了 用户对某个数据库的操作权限
host表存储了 某个主机对数据库的操作权限
tables_priv 表用来对表设置权限
columns_priv 表用来对表某一列设置权限
procs_priv 表可以对存储过程和存储函数设置操作权限
创建用户
create 创建的用户没权限
create USER 'user'@’host‘
IDENTIFIED BY [PASSWORD] 'PASSWORD'
grant语句创建新用户(授权)
grant 权限 on 数据库.数据表 to 'user' @ 'host' [ identified by 'password';]
刷新权限
flush privileges;
查看用户已有权限
shou grant for ’user‘@’localhost‘;
给用户所有权限
grant all privileges on 库.表 to 'user'@'loaclhost'
授权之后都要刷新权限
收回权限
revoke 权限 on 库.表 from 'user'@'localhost';
删除用户
drop user 'rose'@'localhost';
创建用户时设置密码为哈希值 数据库展示时显示的是明文密码
用delete from mysql.user where host='hostname' and user= 'username';
查看mysql数据库中user表的所有用户名和主机名
select user,host from mysql.user;
数据库日志管理
mysql的日志记录了mysql数据库的运行情况,用户操作 错误信息等 可以为MySQL和管理和优化提供必要信息
日志分类
错误日志
记录启动运行和停止mysql服务时出现的问题
show variables like 'log_error' 找错误日志的存储位置
删除错误日志
运行时间较长 错误日志可能较大可以将日志文件删除 在创建新的错误日志文件
mysql的错误日志是以文本的形式存储在文件系统中 可以直接删除
删除后刷新 生成新的errorlog日志
mysqladmin -uroot -p flush-logs
查询日志
记录了mysql的所有用户操作 包括启动和关闭服务 执行查询和更新语句等
二进制日志
记录所有更改数据的语句
慢查询日志
记录所有执行时间超过long_query_time的所有查询或不使用索引(约束)的查询
数据库备份与恢复
目的
目的保证数据安全的最重要的一个措施是确保数据进行定期备份,如果数据库的数据丢失或者出现错误 可以使用备份数据进行恢复 就尽可能的降低了意外原因导致的损失
备份命令
在本地电脑或者终端备份
mysqldump -u user -p password -h localhost 数据库名>指定路径
mysqldump -u user -p password -h localhost 数据库名 库内表名>指定路径
mysqldump -u user -p password -h localhost --databases 数据库名 数据库名>指定路径
mysqldump -u user -p password -h localhost --all -databases >指定路径
恢复备份
mysql -uroot -proot 表名<指定路径
source恢复备份
进入mysql
进入指定恢复 数据库中
source 路径
将数据库内表格以表格样式排列导出
dos命令行中
mysql -uroot -p --execute "select * from 表名" 库名>路径
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)