mysql的存储引擎:
1、 Myisam :不支持事务,在磁盘上存储三个文件 .frm 存储表结构,.MYD(MY DATA) 存储数据,.MYI(MY Index)存储索引。
2、InnoDB :提供事务,但是相比于Myisam 读写速度要慢,并且占用更多的空间存储数据和索引,支持外键。
3、Memory:将数据存储在内存中,访问速度快,但是服务重启数据不会保存。
MEMORY默认使用哈希索引。速度比使用B型树索引快。当然如果你想用B型树索引,可以在创建索引时指定。
注意,MEMORY用到的很少,因为它是把数据存到内存中,如果内存出现异常就会影响数据。如果重启或者关机,所有数据都会消失。因此,基于MEMORY的表的生命周期很短,一般是一次性的。
4、Merge :可以让DBA将一系列等同的Myisam表 以逻辑方式组合在一起,并作为一个对象引用他们。
图片来源网络:
创建表时指定存储引擎:
create table blog (id int,name varchar(20)) engine = 'memory';
查看表的存储引擎:
show create table blog;
修改表的存储引擎:
alter table user engine= myisam;
char & varchar的区别::
char是固定长度的,varchar是可变长度的。
例如:char(10) 如果 字符串长度不足10 会在后面补空格,varchar不会。
查看mysql支持的字符集:
show character set;
查看数据库字符集:
show create database database_name;
查看表字符集:
show create table table_name;
查看字段字符集:
show full columns from table_name;
查看事务隔离级别:
select @@global.tx_isolation;
创建用户:
create user 'wangxh'@localhost identified by 'root';
给用户授权:
grant privileges on databasename.tablename to ’username‘@‘host’;
mysql删除表:
1、delete:删除表数据,支持条件过滤,支持回滚。记录日志,所以比较慢。
delete from table_name;
2、truncate:仅删除所有数据,不支持条件过滤,不支持回滚。不记录日志,所以比delete快。
truncate table table_name;
3、drop:删除表的同时删除数据,将表所有占得空间都删掉,效率最高。
drop table table_name;
like 走索引吗?
xxx% 走, %xxx不走。
随机获取一条数据:
select * from table_name order by rand() limit 1;
查看当前表有哪些索引:
show index from table_name;
获取sql语句执行计划
explain sql;
count() 在不同引擎上的不同实现。
myisam:表一个表的总行数存储在磁盘上,查询时直接返回,效率很高、
InnoDB:执行count() 的时候,需要把数据一行一行的查出来然后累积计数。