小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

MySQL create table語法詳解

 印度阿三17 2019-05-24

  前面在查建表時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";

  默認(rèn)情況下,表會創(chuàng)建在當(dāng)前數(shù)據(jù)庫下(use database決定當(dāng)前使用的數(shù)據(jù)庫),并使用默認(rèn)的存儲引擎(InnoDB)。

  以下情況會報錯:

  • 當(dāng)前沒有使用任何數(shù)據(jù)庫,或者要使用的數(shù)據(jù)庫不存在;
  • 數(shù)據(jù)庫中已經(jīng)存在同名表

  關(guān)于表的物理表示的信息會在第二節(jié)講述。

  而創(chuàng)建表時,MySQL會存儲原始的CREATE TABLE語句,包括所有規(guī)范和表選項。這是接下來第一節(jié)的內(nèi)容

  現(xiàn)在要談到的是CREATE TABLE的以下幾個方面:

  • Table name
  • Temporary Tables
  • Cloning or Copying a Table
  • Column Data Types and Attributes
  • Indexes and Foreign Keys
  • Table Options
  • Creating Partitioned Tables

  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

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多