mysql学习笔记(2)

来源:互联网 发布:在线端口扫描器 编辑:程序博客网 时间:2024/06/07 14:34
InnoDB存储引擎有以下功能:

1、支持提交和回滚,确保数据在事务操作过程中万无一失。还可以创建保存点来实现部分回滚。
2、在系统崩溃后可自动恢复。
3、外键和引用完整性支持,包括递归式删除和更新。
4、数据行级别的锁定和多版本共存,这使得INNODB数据表在需要同时进行检索和更新操作的复杂查询里表现出非常好的并发性能。
5、在默认情况下,innodb 会将数据表集中存放在一个共享的表空间里,而不是像大多数存储引擎那样为不同的数据表创建不同的文件。
   innodB 表空间可以由多个文件构成,还可以包括多个原始分区。
   实际上,innodB的表空间就是一个虚拟的文件系统,它存储和管理所有innodB数据表的内容。这样一来,数据表的长度就可以超过文件系统对各个文件最大长度的限制。
   你也可以把innodB存储引擎配置成每一个表分别创建一个表空间的样子,此时,每个数据表在它的数据库子目录里都有一个对应的.ibd文件。
   
   对于INNODB而言,二进制可移植性需要一个条件:数据库和数据表的名字必须都是小写字母,所以,在创建数据库和数据表的名字的时候,一定要用小写字母。
    
//从其他数据表或者查询结果里创建数据表  CREATE TABLE ……LIKE  CREATE TABLE ……SELECT

使用CREATE TABLE ……LIKE为一个现有的数据库表创建一个空白的副本:
 CREATE TABLE new_table_name LIKE tb_name;
 
 为副本导入数据: INSERT INTO new_table_name SELECT * FROM tb_name;这样做不会把原来数据表的所有属性都复制过去,比如说 索引。  如果只想将部分数据导入,可以加 WHERE 选择条件。
 
 如果想创建的是临时副本  可以加入 TEMPORARY 关键字
 CREATE TEMPORARY TABLE new_table_name LIKE tb_name;
 
//删除数据表
DROP tb_name
DROP IF EXIST tb_name

//为数据表编制索引

你可以在CREATE TABLE 的时候创建索引,在已有的数据表中创建索引 用 ALERT TABLE 或者 CREATE INDEX。

索引有很多类型:唯一索引,普通(非唯一)索引,FULLTEXT索引,SPATIAL索引,HASH索引。不同的索引对应着不同的关键字。
ALERT TABLE tb_name ADD INDEX index_name (index_colums);
ALERT TABLE tb_name ADD UNIQUE index_name (index_colums);
ALERT TABLE tb_name ADD PRIMARY KEY index_name (index_colums);
ALERT TABLE tb_name ADD FULLTEXT index_name (index_colums);
ALERT TABLE tb_name SPATIAL INDEX index_name (index_colums);
其中,PRIMARY KEY 和 SPATIAL索引的值不能为 NULL

除了PRIMARY KEY 以外,其他的索引都可以用 CREATE INDEX来添加。

CREATE INDEX index_name ON tb_name (index_colums);

CREATE TABLE 时直接添加即可,类似 PRIMARY KEY 那种形式

BLOB 或 TEXT数据类型只能用前缀索引,

//删除索引

使用 DROP INDEX 或者 ALERT TABLE 完成

DROP INDEX index_name ON tb_name

如果是删除PRIMARY KEY 必须生命 PRIMARY
DROP INDEX 'PRIMARY' ON tb_name

使用 ALERT TABLE :

ALERT TABLE tb_name DROP INDEX index_name
ALERT TABLE tb_name DROP PRIMARY KEY

//改变数据表的结构   使用 ALERT TABLE 语句
原创粉丝点击