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

2021-10-17 16:50:26 字數 4550 閱讀 1635

表定義

只有成功建立資料庫後,才能建立資料表,資料表是字段的集合,在表中資料按行和列的格式儲存

建立表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 to

query 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_test

database changed

mysql> 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表操作常用語法

檢查表 check table table name 修復表repair table table name 優化表optimize table table name 分析表analyze table table name 清空表truncate table name 刪除表drop table na...

mysql表的語法

1 建立表 creater table 表名 列名 列型別,列名 列型別,列名 列型別,列名 列型別 2 檢視當前資料庫中所有的表名稱 use tables 3 檢視指定表的建立語句 show create table 表名 4 檢視表結構 desc 表名 5 刪除表 drop table 表名 6...

mysql 表定義 MySQL的表定義語法

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