14.6.1 Creating InnoDB Tables 创建InnoDB 表:
来源:互联网 发布:网络招聘哪个好 编辑:程序博客网 时间:2024/05/29 10:05
14.6.1 Creating InnoDB Tables 创建InnoDB 表:创建一个InnoDB 表,使用CREATE TABLE 语句,你不需要指定 ENGINE=InnoDB子句 如果InnoDB 定义为默认的存储引擎, 在MySQL 5.5是默认的版本。你仍旧可以使用ENGINE=InnoDB 子句如果你计划使用mysqldump或者复制来replay CREATE TABLE 语句在一个服务器上,默认的存储引擎不是InnoDB.-- Default storage engine = InnoDB.CREATE TABLE t1 (a INT, b CHAR (20), PRIMARY KEY (a));-- Backward-compatible with older MySQL.CREATE TABLE t2 (a INT, b CHAR (20), PRIMARY KEY (a)) ENGINE=InnoDB;一个InnoDB 表和它的索引可以被创建在系统表空间或者在一个单独的file-per-table tablespace. 当 innodb_file_per_table 被启用, 在MySQL 5.6.6是默认设置,一个InnoDB 表是隐含创建在一个单独的file-per-table tablespace.相反, 当 innodb_file_per_table 被禁用,一个InnoDB 表是隐式的创建在system tablespace.当你创建一个InnoDB 表, MySQL 创建一个.frm 文件在数据库目录在MySQL 数据目录下。一个表创建在file-per-table tablespace, 一个.ibd文件也会被创建。[root@wx03 DEVOPS]# ls -ltr machine_info.*-rw-rw---- 1 mysql mysql 8640 May 6 15:21 machine_info.frm-rw-rw---- 1 mysql mysql 114688 May 6 15:21 machine_info.ibd一个表创建在system tablespace 是创建在存在的系统表空间ibdata 文件里。ibd是MySQL数据文件、索引文件,无法直接读取。frm是表结构文件,可以直接打开。在内部,InnoDB 增加一个条目对于每个表在InnoDB 数据目录。条目包含数据库名字。比如, 如果table t1创建在test 数据库, 数据目录条目是'test/t1'.这意味着你能创建一个相同名字的表在不同的数据库, 表名字在InnoDB里不冲突查看InnoDB 表的属性:mysql> SHOW TABLE STATUS FROM test LIKE 't%' \G;*************************** 1. row *************************** Name: t1 Engine: InnoDB Version: 10 Row_format: Compact Rows: 0 Avg_row_length: 0 Data_length: 16384Max_data_length: 0 Index_length: 0 Data_free: 0 Auto_increment: NULL Create_time: 2015-03-16 16:26:52 Update_time: NULL Check_time: NULL Collation: latin1_swedish_ci Checksum: NULL Create_options: Comment: 1 row in set (0.00 sec)在状态输出下,你可以看到表t1的Row 格式属性Row_format: Compactmysql> SHOW TABLE STATUS FROM zjzc LIKE 'Client' \G;*************************** 1. row *************************** Name: Client Engine: InnoDB Version: 10 Row_format: Compact Rows: 13013 Avg_row_length: 444 Data_length: 5783552Max_data_length: 0 Index_length: 3588096 Data_free: 4194304 Auto_increment: 13538 Create_time: 2016-06-16 18:28:54 Update_time: NULL Check_time: NULL Collation: utf8_general_ci Checksum: NULL Create_options: Comment: 用户表1 row in set (0.00 sec)ERROR: No query specified尽管设置是好的对于基本的实验,考虑使用动态的或者压缩的行格式来利用InnoDB 功能比如表压缩和关闭页面存储对于长的列。使用那些行格式需要启用innodb_file_per_tablemysql> show variables like '%innodb_file_format%';+--------------------------+----------+| Variable_name | Value |+--------------------------+----------+| innodb_file_format | Antelope || innodb_file_format_check | ON || innodb_file_format_max | Antelope |+--------------------------+----------+3 rows in set (0.00 sec)InnoDB 表的属性可以被查询使用InnODB 信息Schema system tables:mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME='zjzc/Client' \G*************************** 1. row *************************** TABLE_ID: 4533 NAME: zjzc/Client FLAG: 1 N_COLS: 25 SPACE: 4519 FILE_FORMAT: Antelope ROW_FORMAT: CompactZIP_PAGE_SIZE: 01 row in set (0.01 sec)定义主键:总是设置一个主键对于每个InnoDB表, 指定一列或者多列:1. 涉及最重要的查询2.永远不会空的3.不会有重复值4. 很少改变插入的值例如, 一个表包含信息关于people, 你不会创建一个主键在(firstname,lastname)因为不止一个人有相同的名字, 有些人 最后名字是空的,有些人会改变它们的名字。有这么多的束缚,通常没有一个列来作为主键,因此你需要创建一个数字ID列来作为主键或者主键的一部分。你可以定义一个自动增长列,递增的值会自动天出作为记录插入尽管表工作正常在没有定义主键, 主键是设计许多方面的性能,对于大表和经常访问的表是重要的。推荐你总是指定一个primary key 在CREATE TABLE语句。如果你创建表,load data,运行 ALTER TABLE 来增加主键
0 0
- 14.6.1 Creating InnoDB Tables 创建InnoDB 表:
- 14.8.1 Creating InnoDB Tables 创建InnoDB 表
- 14.5.1 Creating InnoDB Tables
- 14.6.7?Limits on InnoDB Tables InnoDB 表的限制
- 8.5.1 Optimizing Storage Layout for InnoDB Tables InnoDB表的存储布局优化
- 14.5.7 Limits on InnoDB Tables InnoDB 表的限制
- InnoDB 中文参考手册 --- InnoDB Tables 概述
- 14.6.2 Moving or Copying InnoDB Tables to Another Machine 移动或者copy InnoDB 表到另外的机器
- 从Hibernate创建InnoDB表
- innodb tables doesn't exist?
- innoDB
- InnoDB
- innodb
- 8.5.5 Bulk Data Loading for InnoDB Tables 批量数据加载到InnoDB 表
- 14.8.3 Physical Row Structure of InnoDB Tables InnoDB 表的物理行结构
- 8.5.1 Optimizing Storage Layout for InnoDB Tables
- 15.2.5. 创建InnoDB表空间
- MYSQL 无法创建innodb类型的表
- 浅析android应用增量升级
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- MySQL数据库入门操作积累
- iOS中的几种数据存储方式
- js手机浏览器video标签会一直置顶,遮盖住弹出层问题
- 14.6.1 Creating InnoDB Tables 创建InnoDB 表:
- MVC设计模式总结
- NSDate 与 NSString 之间的相互转换
- poj 2481
- java程序设计第一课 jdk安装与配置 java可以执行javac却不可以的解决方法
- C++, Define A Type Member
- 重新温习1--数学归纳法
- IOS NSPredicate 查询、搜索
- Leetcode-set-matrix-zeroes