InnoDB存储引擎
- 优点:提供了事务管理、回滚、崩溃修复能力、和多版本并发控制的事务安全
- 缺点:读写稍微差点,占用的数据空间相对较大,从3.23.34a开始包含InnoDB存储引擎
InnoDB支持Auto_INCREMENTAL 自动增长的列值不能为空 且唯一 且为主键
支持外键Foreign KEY 外键所在的表为子表 依赖父表
表结构在.frm文件中 数据和索引存储在innodb_data_home_dir 和innodb_data_file_path定义的表空间中
MyISAM存储引擎:
- 优点:占用空间小。处理速度快
- 缺点:不支持事务的完整性和并发性
生成三个文件
- .frm 文件存储表的结构
- .myd 文件存储数据文件
- .myi 文件存储索引
表支持3种存储格式:
- 静态型: 字段是固定不变的
- 动态型: 字段不算固定的
- 压缩型: 需要使用myisampack工具创建,占用空间小
Memory存储引擎:
- 优点:处理速度非常快
- 缺点:数据易丢失,生命周期短
memory存储引擎使用存储在内存中的内容创建表,而且所有数据放在内存中
每个memory存储引擎的表实际对应一个磁盘文件,类型为frm类型,该文件只有表的结构没有数据文件都是存储在内存中,有利于数据的快速处理,前提是要有足够的内存维持memory存储引擎的表的使用,如果不需要了可以释放这些内存,甚至可以删除不需要的表
一般没有用这个引擎的,如果内存异常或者机器重启数据就没有了,生命周期很短
技巧:
同一个数据库中可以使用多种存储引擎的表,如果一个表要求较高的事务处理,可以选择InnoDB这个数据库可以将查询要求比较高的表选择MyISAM存储引擎,如果需要数据库中一个用于查询的临时表,可以选择Memory存储引擎
从事务安全、存储限制、空间使用、内存使用、插入数据的速度、对外键的支持
查看数据库:
1
2
3
4
5
6
7
8
|
mysql>show databases;
#默认有information_schema [si gei me] mysql test example [ei ge zan pao] 四个数据库
查看默认存储引擎
查看支持的存储引擎类型
mysql>show variables like "storage_engine" ; [very bao si]
查看支持的存储引擎类型
mysql>show engines\G;
|
创建、删除数据库
1
2
3
|
create database school;
Drop database school;
|
修改存储引擎:
1
2
3
4
|
vi /etc/my.cnf 在mysqld 下面添加
default-storage-engine=INNODB
|
利用三种方法找出所使用的mysql数据库的默认存储引擎?
- show engines\G;
- show variables like "storage_engine"
- cat /etc/my.cnf看下default-storage-engine="INNODB"
存储引擎InnoDB MyISAM MEMORY 优缺点?
1.InnoDB优点支持事务处理、回滚、崩溃修复处理以及多并发控制 缺点:速度略慢 占用空间大
2、MyISAM 优点存储速度快、占用空间小 缺点:不支持事务处理 并发
3.Memory 存储速度非常快,缺点: 数据易丢失
增删改查基本操作
9、熟悉mysql的调优和增删改查基本操作, 数据备份和恢复,主从同步
优化MySQL数据库的几个步骤 、
1 开启慢查询日志
2 修改mysql 数据库配置文件, 这个步骤一般都由DBA 运维来做
比如设置查询缓冲区大小
增删改查
改toor 用户密码
方法1 mysqladmin -uroot -p原密码 passwd 新密码
方法2 SET PASSWD FOR 'root'@'localhost' = '新密码'
创建用户
1 CREAT user 'chen'@'localhost' identified by 'chenhao'
2 GRANT all privileges ON databsername TO 'username'@'host' identified by 'chenhao'
新建一个用户test2 密码abc 只可localhost登录,可对chen 数据库增删改查操作
GRANT select,insert,update,delete on chen.* to 'test'@'localhost' by 'abc' (取消密码 '' 填空即可)
刷新表
flush privileges;
创建表
creat database test;
显示所有的数据库
show databases;
删除库test
drop databases test;
连接数据库
use test;
查看当前使用的数据库
select databaes();
查看表
show tables; 操作前先连接某个数据库
建立表
creat table table123 (coll type1 [not null] [prinmary]);
根据已有库创建新表
creat table newtable like oldtable; 只有表结构
creat table newtable as select * from oldtable; 即包含结构,还包含数据
获取表结构
DESC table;
删除表名为table3的表
DROP table table3;
更改表名
rename table table22 to table44;
在表中增加字段
在myclass 中添加一个字段passtest 类型位 int4 默认值为0
alter table myclass add passtrst int(4) default '0';
查询表中所有的数据
select * from myclass;
SELECT * FROM myclass where name='chen'
查看表中第二行的数据
select * from myclass limit 2;
删除表中编号为4的记录
delete from myclass where id=4;
修改 myclass 表中编号为1 的记录, 将abcd改为99.99
update myclass set abcd=99.99 where id=1;
*** *
*****
数据库备份和还原
备份 mysqldump -uroot -p 库名 表名 > /var/lib/mysql/mydb.sql
还原MariaDB [mydb]> source /var/lib/mysql/mydb.sql;