一般有兩種建立表的方法:
為了用程式建立表, 可使用sql的create table語句。
為利用create table建立表, 必須給出以下資訊
create table語句也可能會包括其他關鍵字或選項, 但至少要包括表的名字和列的細節
mariadb [crashcourse
]>
create
table
customers
( cust_id
intnot
null
auto_increment,
cust_name
char(50) not
null
, cust_address
char(50) null
, cust_city
char(50) null
, cust_state
char(5) null
, cust_zip
char(10) null
, cust_country
char(50) null
, cust_contact
char(50) null
, cust_email
char(255) null
,
primary
key(cust_id)
)engine
=innodb;
null就是沒有值或缺值。允許null值的列也允許在插入行時不給出該列的值。不允許null值的列不接受該列沒有值的行, 換句話說, 在插入或更新行時, 該列必須有值。
不要把null值與空串相混淆。null值是沒有值, 它不是空串。如果指定' '(兩個單引號, 期間沒有字元), 這在not null列中是允許的。空串是乙個有效的值, 它不是無值。null值用關鍵字null而不是空串指定。主鍵值必須是唯一的。即, 表中的每個行必須具有唯一的主鍵值。如果主鍵使用單個列, 則它的值必須唯一。如果使用多個列, 則這些列的組合值必須唯一。
為建立由多個列組成的主鍵, 應該以逗號分割的列表給出各列名。
mariadb [crashcourse
]>
create
table
orderitems
( order_num
intnot
null
, order_item
intnot
null
, prod_id
char(10) not
null
, quantity
intnot
null
, item_price
decimal(8, 2) not
null
,
primary
key(order_num, order_item)
)engine
=innodb;
auto_increment告訴mysql, 本列每當增加一行時自動增量。每次執行乙個insert操作時, mysql自動對該列增量, 給該列賦予下乙個可用的值。這樣給每個行分配乙個唯一的id, 從而可以用作主鍵值。
每個表只允許乙個auto_increment列, 而且它必須被索引。
如果在插入行時沒有給出值, mysql允許指定此時使用預設值。預設值用create table語句的列定義中的default關鍵字指定。
mariadb [crashcourse
]>
create
table
orderitems
( order_num
intnot
null
, order_item
intnot
null
, prod_id
char(10) not
null
, quantity
intnot
null
default1,
item_price
decimal(8, 2) not
null
,
primary
key(order_num, order_item)
)engine
=innodb;
mysql不允許使用函式作為預設值, 它只支援常量與其他dbms一樣, mysql有乙個具體管理和處理資料的內部引擎。在使用create table語句時, 該引擎具體建立表, 而在使用select 語句或進行其他資料庫處理時, 該引擎在內部處理請求。
但是不一樣的是, 它具有多種引擎。它打包多個引擎, 這些引擎都隱藏在mysql伺服器內, 全都能執行create table和select命令。
為什麼要發行多種引擎?常見的引擎有:因為它們各自不同的功能和特性, 為不同的任務選擇正確的引擎能獲得良好的功能和靈活性
為更新表定義, 可使用alter table語句。但是理想狀態下, 當表中儲存資料以後, 該錶就不應該再被更新。
為了使用alter table更改表結構, 必須給出以下資訊
新增列
mariadb [crashcourse
]>
alter
table vendors add vend_phone char(20);query ok, 0 rows affected (0.027
sec)
records:
0 duplicates: 0 warnings: 0
mariadb
[crashcourse
]>
刪除列
mariadb [crashcourse
]>
alter
table vendors drop
column
vend_phone;
query ok,
0 rows affected (0.030
sec)
records:
0 duplicates: 0 warnings: 0
mariadb
[crashcourse
]>
複雜的表結構更改一般需要手動刪除過程, 它涉及以下步驟
刪除表(刪除整個表而不是其內容)非常簡單, 使用drop table語句即可。
mariadb [crashcourse
]>
drop
table customers2;
使用rename table語句可以重新命名乙個表
mariadb [crashcourse
]> rename table customer2 to customer;
MySQL 建立和操縱表
create table users id int not null auto increment,name char 50 not null,address char 50 not null,email char 50 not null default 11 primary key id engi...
MYSQL學習筆記 建立和操縱表
建立表的兩種方法 使用互動式建立和管理表的工具 直接用mysql語句操縱 表建立基礎 create table products prod id int not null,vend id char10 not null,prod name char 254 not null,prod price d...
c 建mysql表 MySQL建立和操縱表
表建立基礎 create table customers cust id int not null auto increment cust name char 50 not null cust address char 50 null cust city char 50 null cust stat...