MySQL 表选项

表选项–引擎

查看支持的引擎

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

创建一个 SEXES 表,引擎为 MyISAM

CREATE TABLE SEXES
(SEX CHAR(1) NOT NULL PRIMARY KEY)
ENGINE = MYISAM

获得 PLAYERS, PENALTIES,SEXES 的引擎

mysql> SELECT TABLE_NAME, ENGINE
    -> FROM INFORMATION_SCHEMA.TABLES
    -> WHERE TABLE_NAME IN ('PLAYERS', 'PENALTIES', 'SEXES')\G
*************************** 1. row ***************************
TABLE_NAME: penalties
    ENGINE: MyISAM
*************************** 2. row ***************************
TABLE_NAME: players
    ENGINE: MyISAM
*************************** 3. row ***************************
TABLE_NAME: players
    ENGINE: MyISAM
*************************** 4. row ***************************
TABLE_NAME: sexes
    ENGINE: MyISAM
4 rows in set (0.02 sec)

创建分表 PENALTIES_1990, PENALTIES_1991, and PENALTIES_1992,并使用 merge 引擎

CREATE TABLE PENALTIES_1990(
    PAYMENTNO INTEGER NOT NULL PRIMARY KEY
)ENGINE=MYISAM;
INSERT INTO PENALTIES_1990 VALUES (1),(2),(3);

CREATE TABLE PENALTIES_1991(
    PAYMENTNO INTEGER NOT NULL PRIMARY KEY
)ENGINE=MYISAM;
INSERT INTO PENALTIES_1991 VALUES (4),(5),(6);

CREATE TABLE PENALTIES_1992(
    PAYMENTNO INTEGER NOT NULL PRIMARY KEY
)ENGINE=MYISAM;
INSERT INTO PENALTIES_1992 VALUES (7),(8),(9);



CREATE TABLE PENALTIES_ALL(
    PAYMENTNO INTEGER NOT NULL PRIMARY KEY
)ENGINE = MERGE UNION = (PENALTIES_1990,PENALTIES_1991,PENALTIES_1992)  INSERT_METHOD = NO;

mysql> SELECT * FROM PENALTIES_ALL;
+-----------+
| PAYMENTNO |
+-----------+
|         1 |
|         2 |
|         3 |
|         4 |
|         5 |
|         6 |
|         7 |
|         8 |
|         9 |
+-----------+
9 rows in set (0.00 sec)

表选项–AUTO_INCREMENT

CREATE TABLE CITY_NAMES(
    SEQNO INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY,
    NAME VARCHAR(30) NOT NULL
)AUTO_INCREMENT = 10;

INSERT INTO CITY_NAMES VALUES (NULL, 'London');
INSERT INTO CITY_NAMES VALUES (NULL, 'New York');
INSERT INTO CITY_NAMES VALUES (NULL, 'Paris');

mysql> SELECT * FROM CITY_NAMES;
+-------+----------+
| SEQNO | NAME     |
+-------+----------+
|    10 | London   |
|    11 | New York |
|    12 | Paris    |
+-------+----------+
3 rows in set (0.00 sec)

表选项–COMMENT

mysql> SELECT TABLE_NAME, TABLE_COMMENT
    -> FROM INFORMATION_SCHEMA.TABLES
    -> WHERE TABLE_NAME = 'PENALTIES'\G
*************************** 1. row ***************************
   TABLE_NAME: penalties
TABLE_COMMENT:
*************************** 2. row ***************************
   TABLE_NAME: penalties
TABLE_COMMENT: Penalties that have been paid by the tennis club
2 rows in set (0.00 sec)

表选项–AVG_ROW_LENGTH, MAX_ROWS, MIN_ROWS
AVG_ROW_LENGTH 返回表中所有行的平均长度(字节单位)
MAX_ROWS 最大行数
MIN_ROWS 最小行数

当一个表变得比较大且实用MyISAM时指定这些选项可以防止MYSQL 突然指出表满了

创建表MATCHES,指定行数在100万到200万之间

CREATE TABLE MATCHES(
    MATCHNO INTEGER NOT NULL PRIMARY KEY,
    TEAMNO INTEGER NOT NULL,
    PLAYERNO INTEGER NOT NULL,
    WON SMALLINT NOT NULL,
    LOST SMALLINT NOT NULL
)AVG_ROW_LENGTH = 15    MAX_ROWS = 2000000  MIN_ROWS = 1000000

语法

<create table statement> ::=
    CREATE [ TEMPORARY ] TABLE [ IF NOT EXISTS ]
        <table specification> <table structure>[ <table option>... ]

<table specification> ::= [ <database name> . ] <table name>

<table structure> ::= <table schema>

<table schema> ::=
    ( <table element> [ , <table element> ]... )

<table element> ::=
    <column definition> |
    <table integrity constraint> |
    <index definition>

<column definition> ::=
    <column name> <data type> [ <null specification> ]
        [ <column integrity constraint> ]

<null specification> ::= [ NOT ] NULL

<column integrity constraint> ::=
    PRIMARY KEY |
    UNIQUE [ KEY ] |
    <check integrity constraint>

<table integrity constraint> ::=
    <primary key> |
    <alternate key> |
    <foreign key> |
    <check integrity constraint>

<table option> ::=
    ENGINE = <engine name> |
    TYPE = <engine name> |
    UNION = ( <table name> [ , <table name> ]... ) |
    INSERT_METHOD = { NO | FIRST | LAST } |
    AUTO_INCREMENT = <whole number> |
    COMMENT = <alphanumeric literal> |
    AVG_ROW_LENGTH = <whole number> |
    MAX_ROWS = <whole number> |
    MIN_ROWS = <whole number> |
    [ DEFAULT ] CHARACTER SET { <name> | DEFAULT } |
    [ DEFAULT ] COLLATE { <name> | DEFAULT } |
    DATA DIRECTORY = <directory> |
    INDEX DIRECTORY = <directory> |
    CHECK_SUM = { 0 | 1 } |
    DELAY_KEY_WRITE = { 0 | 1 } |
    PACK_KEYS = { 0 | 1 | DEFAULT } |
    PASSWORD = <alphanumeric literal> |
    RAID_TYPE = { 1 | STRIPED | RAID0 } |
    RAID_CHUNKS = <whole number> |
    RAID_CHUNKSIZE = <whole number> |
    ROW_FORMAT = { DEFAULT | DYNAMIC | FIXED | COMPRESSED }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值