跟我一起学习MySQL技术内幕(第五版):(第二章学习日记3)

2.6表的创建删除索引和修改

2.6.1存储引擎的特性
2.6.2创建表

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

1.存储引擎的特性
MySQL支持多种搜索引擎,每一种存储引擎所实现的表都具有一组特定的属性或特性。接下来主要介绍
InnoDB和MyISAM

show  engine\g

这个命令可以查出服务器的搜索引擎

mysql> show engines\g
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.02 sec)

suppot栏的值为yes或者no 分别代表了该存储引擎是否可用
disabled的意思是该存储引擎存在,但是已被关闭,default表示它是服务器默认使用的存储引擎。
另外transactions栏表示的是存储引擎是否支持事务处理。
XA和Savepoints栏表示的是存储引擎是否支持分布式事务和部分事务回滚(本书未涉及)。

select engine from information_schema.engines where transactions = 'yes';

这句查询语句会使用engines表来检查有哪些可用引擎支持事务处理。

+--------+
| engine | +--------+
| InnoDB | +--------+
1 row in set (0.00 sec)

表的磁盘存储方式了解即好,这一节并没有具体分析

书本接下来对四种存储引擎进行了介绍

我们主要使用的是InnoDB是MySQL的默认存储引擎,如果暂时不打算对数据库操作系统具体了解的话这里可以稍作查看。

今天的主要内容是创建表

2.创建表

create table mytable { name char(20), birth date not null, weight int , sex enum('F','M') };

这是最基础的创建表命令。

create table mytable1 (.....) engine=engine_name;

如果想改变某个表的存储特性,可以如上创建表。
存储引擎的名字不区分大小写。如果不给出这句命令,服务器将使用默认的存储引擎来创建表。
如果你想更改默认的存储引擎 ,需要去看12.5.2节的指导内容。

show create table;

show table status;

inforamation_schema.tables;

通过这三条语句,可以查看存储引擎。

alter table mytable1 engine =engine_name;

通过这条语句可以修改存储引擎。

创建暂时性表

create table if not exists

使用暂时性表可以适应许多程序的功能,第二次运行程序时会自动忽略创建表的过程,并且不会报错。
需要注意的是,使用if not exists时,MySQL不会把创建的表和已有表相比较 ,无哦一如果想避免出错的话
可以

drop table if exists

temporary表

顾名思义 临时性表 会话终止时该表会自动消失

create temporary table table_name;

也可以为其加上engines 选项来创建使用某种临时存储引擎的临时表。

对于temporary表有几点需要注意
1.最好能够使用完后显式删除,这样可以让服务器尽快释放与之相关的资源,这是一个良好的习惯。
2.这种表只对创建该表的客户端可见。所以可以创建具有相同名字的表
3.可以创建与永久表相同名字的temporary表,这时永久表就会被隐藏起来,当drop这个表后,原来的永久
表才能重新允许被访问(终端服务器连接后,该表会自动消失)。
4.无法创建两个相同名字的temporary表
5.删除的时候,尽量使用drop temporary table语句来代替drop table 避免发生意外。

书上有说连接池机制,大致就是程序终止了,但是与MySQL 的链接不一定会关闭,所以在这里需要注意
但是还不知道连接池是什么 所以这里先记下来。

这一节还剩两部分没有学习完,后天继续。

你可能感兴趣的:(mysql)