前面在查建表時key和index的區(qū)別時,發(fā)現(xiàn)建表語句包含了太多信息,于是完整看看官方手冊的這一小節(jié)。 該文章根據(jù)MySQL 5.7的手冊作筆記,而MySQL 8.0該節(jié)地址如下: https://dev./doc/refman/8.0/en/create-table.html ? 〇、概述 CREATE TABLE創(chuàng)建一個使用指定名稱的table,當(dāng)然前提是用戶擁有CREATE權(quán)限。 常用的簡單的建表語句: /*建表的語法*/ create table [if not exist] Table_name( 字段一 數(shù)據(jù)類型 [字段屬性|約束] [索引] [注釋] , 字段二 數(shù)據(jù)類型 [字段屬性|約束] [索引] [注釋] , ......... )[表類型][表字符集][注釋] /*創(chuàng)建一個InnoDB類型,字符集為utf-8,備注為“test Table”的表*/ /*在這里,我驚喜地發(fā)現(xiàn),單引號、雙引號可以使用在comment關(guān)鍵字中!!*/ create table test(id int(4))engine=innodb,charset=utf8,comment="test Table"; 默認情況下,表會創(chuàng)建在當(dāng)前數(shù)據(jù)庫下(use database決定當(dāng)前使用的數(shù)據(jù)庫),并使用默認的存儲引擎(InnoDB)。 以下情況會報錯:
關(guān)于表的物理表示的信息會在第二節(jié)講述。 而創(chuàng)建表時,MySQL會存儲原始的CREATE TABLE語句,包括所有規(guī)范和表選項。這是接下來第一節(jié)的內(nèi)容 現(xiàn)在要談到的是CREATE TABLE的以下幾個方面:
0.1 Table Name 關(guān)于Table_name: 可以被指定為database_name.table_name,就可以直接在指定的數(shù)據(jù)庫中創(chuàng)建表。 當(dāng)然,如果要使用引號,對db_name和tb_name都要使用引號,`da_name`.`tb_name`。 table名的命名規(guī)約在9.2章節(jié)。 ? 關(guān)于 IF NOT EXISTS: 阻止錯誤發(fā)生。盡管并不會驗證已經(jīng)存在的表是否與要創(chuàng)建的表具有完全一致的表結(jié)構(gòu)。 ? 0.2 Temporary Tables 可以在建表時使用“Temporary?”關(guān)鍵字,那么所創(chuàng)建的臨時表只會在當(dāng)前會話中可見,會話關(guān)閉后,就被自動刪除。 ? 0.3 Cloning or Copying a Table Like 使用“create table ... like”來基于其它表的定義創(chuàng)建一個空表,新表包括了列的所有屬性有以及索引。 CREATE TABLE new_tbl LIKE orig_tbl; ? [as] query_expression 根據(jù)一個查詢結(jié)果集,創(chuàng)建一個包含這些數(shù)據(jù)的新表。 CREATE TABLE new_tbl AS SELECT * FROM orig_tbl; ? IGNORE | REPLACE 這兩個選項表明,當(dāng)根據(jù)select語句創(chuàng)建表時,該如何處理復(fù)制唯一鍵值的行。(how to handle rows that duplicate unique key values when copying a table using a SELECT statement.) ? Column Data Types and Attributes 這些就是表的字段定義了。數(shù)據(jù)類型、屬性等。 每個表的硬限制為4096列,但實際上限會小一些,著取決于一些其它因素。 這里的選項太多,稍后再聊。 ? Table Options Table Options被用來對表的行為進行優(yōu)化。 在大多數(shù)情況下,不需要指定任何選項。 這些選項會應(yīng)用于所有的存儲引擎,除非特別指出。若一個表決定不應(yīng)用這些選項,這會被記作表定義的一部分。如果稍后使用ALTER TABLE將表轉(zhuǎn)換為使用不同的存儲引擎,則又可以應(yīng)用這些選項。 表選項也特別多,常見的如指定engine、charset。 ? Creating Partitioned Tables 可用于控制使用CREATE TABLE創(chuàng)建的表的分區(qū)。 選項也很多
Partitioning by Generated Columns 允許根據(jù)生成列進行分區(qū)。 ? 一、CREATE TABLE Statement Retention(語句保留) ? 來源:http://www./content-2-204651.html |
|