表定義
只有成功建立資料庫後,才能建立資料表,資料表是字段的集合,在表中資料按行和列的格式儲存
建立表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...