表定義
只有成功建立資料庫後,才能建立資料表,資料表是字段的集合,在表中資料按行和列的格式儲存
建立表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的表定義語法
mysql 資料庫mysql的表定義語法 表定義只有成功建立資料庫後,才能建立資料表,資料表是字段的集合,在表中資料按行和列的格式儲存 建立表mysql 使用 create table 建立表。其中有多個選擇,主要由表建立定義 create definition 表選項定義 table option...
mysql表的語法技巧 MySQL的表定義語法
表定義 只有成功建立資料庫後,才能建立資料表,資料表是字段的集合,在表中資料按行和列的格式儲存 建立表mysql 使用 create table 建立表。其中有多個選擇,主要由表建立定義 create definition 表選項定義 table options 和區分選項 partition op...
mysql表結構定義 mysql表定義語法詳細介紹
首先我們都知道只有成功建立資料庫後,才能建立資料表,資料表是字段的集合,在表中資料按行和列的格式儲存。建立表mysql 使用 create table 建立表。其中有多個選擇,主要由表建立定義 create definition 表選項定義 table options 和區分選項 partition...