武昌区建设局网站,网站内容设置,wordpress栏目,电商零基础从哪儿开始学MYSQL是个好东西啊#xff0c;只是比较会折腾人#xff0c;所以我先记录一下MySQL 数据备份的基础知识#xff0c;省得以后又去东找西找Windows文件名、目录名不区分大小写#xff0c;Linux区分大小写查看MySQL中的数据库这里有一个shop的数据库#xff0c;information_sc…MYSQL是个好东西啊只是比较会折腾人所以我先记录一下MySQL 数据备份的基础知识省得以后又去东找西找Windows文件名、目录名不区分大小写Linux区分大小写查看MySQL中的数据库这里有一个shop的数据库information_schema(系统数据库定义了所有数据库对象的元数据信息)、mysql(记录MySQL账号信息以及账户的访问权限)、performance_schema(收集MySQL服务器的性能数据)、sys(这个库是通过视图的形式把information_schema 和performance_schema结合起来查询出更加令人容易理解的数据存储过程可以可以执行一些性能方面的配置也可以得到一些性能诊断报告内容存储函数可以查询一些性能信息)查看数据库放置路径路径下的shop文件夹中的db.opt记录着当前数据库默认字符集及字符序等信息可直接对其修改或者 MySQL命令行alter database shop character set gbk;查看shop数据库信息删除shop再来创建一个shop创建表(记得先指明数据库use shop;)执行sql脚本使用的资料可以去这里下载查看表指明要查看表的结构查看存储引擎可以看到InnoDB是默认的存储引擎如果想临时修改会话的引擎可以使用如果想要更改表的存储引擎可以使用以shop数据库shohin表为例MyISAM的文件结构shop文件夹中shohin.frm 记录了表的结构shohin.MYD 表数据文件shohin.MYI 表索引文件工作原理MyIASM记录首先在MySQL服务器内存上产生然后写入到外存中的MYD中最后将索引信息写入到MYI中产生时间延迟主要是缓存的原因MyIASM备份很简单直接复制shop文件夹即可InnoDB的文件结构shop文件夹中shohin.frm 记录了表的结构db.opt 数据库的字符集和字符序等信息table_name.ibd 独享表空间存放另一个表的数据文件shop文件同级目录下ibdata1 表空间文件存放数据(共享的)后面还有独享的ib_logfile0、ib_logfile1 重做日志文件信息不知道重做日志故百度内容如下重做日志redo log file是LGWR进程从Oracle实例中的redo log buffer写入的是循环利用的。就是说一个redo log file(group) 写满后才写下一个。归档日志archive log是当数据库运行在归档模式下时一个redo log file(group)写满后由ARCn进程将重做日志的内容备份到归档日志文件下然后这个redo log file(group)才能被下一次使用。不管数据库是否是归档模式重做日志是肯定要写的。而只有数据库在归档模式下重做日志才会备份形成归档日志。一般来说归档日志结合全备份用于数据库出现问题后的恢复使用。重做日志是循环使用的。比如说有三个重做日志组A、B、C。那么当A写满后系统就调用ARCn进程将A备份为归档日志同时B已经开始使用了。工作原理InnoDB记录首先在MySQL服务器内存上产生然后写入到外存中的ibdata1中最后将重做日志信息写入到ib_logfile0、ib_logfile1中基本没有时间延迟InnoDB备份首先复制shop文件夹然后复制ibdata1、ib_logfile0、ib_logfile1文件值得注意的是ibdata1是InnoDB的共享表空间InnoDB的表空间共享表空间存放了所有InnoDB表的数据信息、索引信息、各种元数据信息以及事务回滚信息默认情况下存放在data根目录下的ibdata1中独享表空间存放的是该表的信息一般命名为table_name.ibd路径是本文在shop数据库中默认是关闭独享表空间可使用set global.innodb_file_per_tableON;开启但操作独享表空间依然会影响到ibdata1、ib_logfile0、ib_logfile1文件变量分为系统变量(全局变量、会话变量)、用户自定义变量(以后有时间再说)查看系统变量全局变量(393个) show global variables;会话变量(39312)show session variables;能标记会话系统变量若会话系统变量不存在则标记全局变量查看会话变量不存在时返回全局变量备份时flush tables with read lock; 可以禁止更新但无法禁止查询unlock tables; 可以解锁前面的禁止表结构先来看看MySQL的数据类型好家伙还挺多。。。日期时间型的datetime和timestamp区别每次启动前记得. E:\mysql\init.sql设置一下字符集如有不懂可参照MYSQL之字符问题探究创建一个表实验一下插入数据(数据只能一行一行的插入)timestamp是记录当前服务器的时间所以即使插入null它也是会记录当前时间的事实上日期时间型属于数值类型可进行简单加减运算通过show variables like ‘time_zone%’;可查看当前MySQL的时间设置MySQL复合类型(set、enum)enum只能从集合中取一个值set可以取多个值例子创建一个含set、和enum集合的表插入数据(报错ERROR 1265 (01000): Data truncated for column ‘interest’ at row 1)解决 MySQL默认strict mode即严格sql语句模式可以临时修改为”ansi”模式语句set sql_mode’ansi’;修改成功选择因为只能选择set集合里面的东西所以上面的音乐就忽略掉了。MySQL约束(6种)1、主键约束字段名 数据类型[其他约束条件] primary key若为复合主键primary key(字段名1字段名2)2、非空约束字段名 数据类型 not null3、检查约束MySQL事实上不支持检查约束若为字符串类型则可用enum或set实现检查约束若为数值类型则用触发器实现若为其他类型最好用触发器实现4、默认值约束字段名 数据类型[其他约束条件] default 默认值5、唯一性约束字段名 数据类型 unique6、外键约束外键约束只要用于定义表与表之间的关系表A外键字段要么是NULL要么函数依赖于表B主键字段的值(此时将表A称为表B的子表表B称为表A的父表)constraint 约束名 foreign key (表A字段名或者字段名列表) references 表B (字段名或字段名列表)[on delete级联选项][on update级联选项]级联选项4种取值如下cascade:父表记录的删除或者更新操作会自动删除或更新子表中与之对应的记录set null:父表记录的删除(delete)或者更新会将子表中与之对应记录的外键值自动设置为null值no action:父表记录的删除或更新操作如果子表存在与之对应的记录那么删除或更新操作将失败restrict 与no action功能相同且为级联选项的默认值注意 如果某个字段存在多种约束条件则约束条件的顺序是任意的。自增型字段字段名 数据类型 auto_increment注意 自增型字段的数据类型必须为整数若向自增型字段插入一个NULL值或0字段值会被自动设置为比前一个值大1即字段值总是比前一个字段值大最好将自增型字段设置为主键否则可能将出现一些错误创建表时可以在表的括号外面设置engine存储引擎类型 default charset字符集类型 (若省略则将沿用character_set_database的默认值)ps: 仅对MyISAM存储引擎有用的选项pack_keys压缩类型0 取消所以索引中所以关键字的压缩1 将压缩索引中所有关键字的存储空间default 表示只压缩索引中字符串类型的关键字但不压缩数值类型的关键字复制一个表结构法一create table new_table like old_table;法二create table new_table select * from old_table小结MySQL确实很实在对我而言命令行操作也确实十分的带劲各种炫酷的语句很快好使不错加油