mysql表結構定義 mysql表定義語法詳細介紹

2021-10-17 15:57:30 字數 4499 閱讀 1017

首先我們都知道只有成功建立資料庫後,才能建立資料表,資料表是字段的集合,在表中資料按行和列的格式儲存。

建立表mysql 使用 create table 建立表。其中有多個選擇,主要由表建立定義(create definition)、表選項定義(table options) 和區分選項(partition options)等內容構成。

表建立定義

由表列的名字、列的定義集可能的乙個空值宣告、乙個完整性約束或表索引項組成,表索引項主要定義表的索引、主鍵、外來鍵等。

語法結構create[temporary]table tbl_name

欄位名|資料型別[列級完整性約束條件][預設值]

[,欄位名2 資料型別[列級完整性約束條件][預設值]]

[,表級完整性約束條件]

)[engine=引擎型別]

example:

新建乙個客戶資訊mysql> use mysql_test

database changed

mysql> crate table customers

-> cust_id int not null auto_increment,

-> cust_name char(50) not null,

-> cust_*** char(1) not null default 0,

-> cust_address char(50) null

-> cust_contact char(50) null

-> primary key(cust_id)

query ok, 0 rows affected(0.11 sec)

臨時表與持久表

temporary:表示臨時表,如果不選用則位持久表。

持久表一直存在,多個使用者或應用程式可同時使用持久表,如果只需臨時存放資料可新增 temporary 關鍵字,臨時表只能對建立它的使用者可見,斷開資料庫連線時,表會自動清除。

資料型別

資料型別指系統中所允許的資料的型別。每列都應有適當的資料型別,來限制或允許該列的資料。 建表時必須為每列指定正確的資料型別及資料長度 (char(50))

mysql 主要資料型別:

數值型別:整型 int、浮點 double、布林 bool

日期和時間型別:日期型、時間戳 timestamp、時間型 time

字串型別:定長字元型別char、可變長字元型別varchrar

空間資料型別:單個幾何型別 geometry等

關鍵字 auto_increment

auto_increment: 表中資料型別為整型的列設定自增屬性 (++i),從當前指或 1 開始,表中只能有乙個 auto_increment。

當乙個表列被指定為 auto_increment 後,其值可被覆蓋,即可在表資料插入語句中為該列指定乙個值(必須唯一),則該值將替換系統自動生成的值,後續增量基於該插入的值

指定預設值

default:用於指定mysql在未給值的情況下預設的值(default 0)

如果未指定預設值,則自動為其分配乙個值,如若該列可取值null,則預設null,若定義 not null,則預設取決於該列的型別:

乙個沒有宣告 auto_increment 列 為數字型別,預設 0

乙個 auto_increment 列 預設為順序中的下乙個值

對於除 timestamp 以外的日期和時間型別,預設為該型別適當的'零'值

對於表中第乙個 timestamp 列,預設值為當前日期和時間

null值

null:沒有值或缺值,允許null的列,插入行時可以不給該列的值;不允許null值的列,則該列必須有資料

null 和 ''是不對等的 not null 列中允許'' 不允許 null

主鍵primary key :指定主鍵,主鍵必須唯一且不能為null, 如果是單列,值必須唯一,如果是組合列,則其組合的值必須唯一

更新表通過使用 alter table 來修改資料庫

add[column]:新增表列,可增多列使用逗號分隔即可

example:mysql> alter table mysqle_test.customers

-> add column cust_city char(10) not null default'shenzhen' after cust_***;

query ok,0 rows affected(0.61 sec)

records:0 duplicates:0 warning:0

after:將新增的列新增到cut_***l 列之後

first:將新增的列新增到表的第一列

若使用上述關鍵字則將新增的列新增至表最後

類似的 可以使用 addprimary key 、addforeign key 、add index 新增對應的 主鍵、外來鍵、索引

change[column]: 修改表中列的名稱或資料型別,可修改多列使用逗號分隔即可mysql> alter table mysqle_test.customers

-> change column cust_*** *** char(1) null default 'm'

query ok,0 rows affected(0.66 sec)

records:0 duplicates:0 warning:0

如果將資料型別更換,可能會丟失該列原有的資料,如果檢視改變的資料型別於原有的資料型別不相容,則sql命令不會執行,且丟擲錯誤。

再相容的情況下,該列的資料可能會被截斷,如:一列的資料型別為 varchart(10),改為char(1),則該列中的資料'shenzhen'會變為's'

alter [column]: 修改或刪除指定列的預設值mysql> alter table mysqle_test.customers

-> alter column cust_city set default 'shanghai'

query ok,0 rows affected(0.36 sec)

records:0 duplicates:0 warning:0

modify [column]: 修改指定列的資料型別,通過 'first' 或 'after' 修改列的位置mysql> alter table mysqle_test.customers

-> modify column cust_name char(30) first

query ok,0 rows affected(0.20 sec)

records:0 duplicates:0 warning:0

drop [column]: 刪除列,該列所有資料一併刪除mysql> alter table mysqle_test.customers

-> drop column cust_city

query ok,0 rows affected(0.42 sec)

records:0 duplicates:0 warning:0

同樣 可使用 drop primary key 、drop foreign key、drop index 刪除對應的主鍵、外來鍵、索引

rename[to]:表重新命名mysql> alter table mysqle_test.customers

-> rename toquery ok,0 rows affected(0.42 sec)

重新命名表

除了 alter table 中的 rename to 修改表名,還可通過 rename table 來修改單張和多張表(以逗號分隔)mysql> rename table mysql_test.back.customers to mysqle_test.customers

刪除表drop[temporary]table[if exists]刪除乙個已存在的表,可以刪除多張表,前提操作人必須有許可權,但是操作人在該張表上的許可權不會被刪除

檢視表show [full] tables [db_name] [like'pattern'|where expr]: 顯示指定資料庫中所有表名

example:mysql> use mysql_testdatabase changedmysql> show tables:

tables_in_mysql_test

customers 1 row in set <0.01 sec>

show [full] columns tb_name[db_name] 或 tbl_name[col_name|wild]: 顯示指定資料庫表結構。

mysql 支援使用 describe 代替 show columns from 來檢視表結構

example:mysql> desc mysql_test.custormes

field type null key default extra

cust_id int<11> no pri null auto_increment

cust_name char<50> no null

cust_*** int<1> no 0

3 row in set <1.56 sec>

mysql 表定義 MySQL的表定義語法

mysql 資料庫mysql的表定義語法 表定義只有成功建立資料庫後,才能建立資料表,資料表是字段的集合,在表中資料按行和列的格式儲存 建立表mysql 使用 create table 建立表。其中有多個選擇,主要由表建立定義 create definition 表選項定義 table option...

mysql的表定義 MySQL的表定義語法

表定義 只有成功建立資料庫後,才能建立資料表,資料表是字段的集合,在表中資料按行和列的格式儲存 建立表mysql 使用 create table 建立表。其中有多個選擇,主要由表建立定義 create definition 表選項定義 table options 和區分選項 partition op...

MySQL筆記建立表結構 MySQL表結構筆記9

本篇大綱 mysql資料表 建立表建立主鍵 auto increate 指定預設值 更新表結構 刪除表,重新命名表 01 表 mysql 資料庫的表是乙個二維表,由乙個或多個資料列構成 每個資料列都有它的特定型別,該型別決定了mysql如何看待該列資料 02 建立表 命令 格式 使用create t...