create(創建表)標準的建表語句: create table [模式名.]表名 ( #可以有多個列定義 columnName1 dataType [default expr(這是預設值)], ... ) 圓括弧里可以包含多個列定義,每個列定義之間用英文逗號(,)隔開,最後一個列定義不需要逗號,直... ...
-
create(創建表)
標準的建表語句:create table [模式名.]表名 ( #可以有多個列定義 columnName1 dataType [default expr(這是預設值)], ... )
圓括弧里可以包含多個列定義,每個列定義之間用英文逗號(,)隔開,最後一個列定義不需要逗號,直接以圓括弧結束。
建立表只是建立表結構,就是定義數據表有多少列,列包含列名、類類型、可選的預設值(使用default關鍵字定義)。MySQL支持的列類型 列類型 說明 tinyint/smallint/mediumint/int(integer)/bigint
1位元組/2位元組/3位元組/4位元組/8位元組正數,又可分為有符號和無符號兩種。 這些正數類型的區別僅僅是表數範圍不同。 float/double
單精度、雙精度浮點類型 decimal(dec)
精確小數類型,相對於float和double不會產生精度丟失問題 date
日期類型,不能保存時間。把java.util.Date對象保存進date列時,時間部分將丟失 time
時間類型,不能保存日期。把java.util.Date對象保存進time列時,日期部分將丟失 datetime
日期、時間類型 timestamp
時間戳類型 year
年類型,僅僅保存時間的年份 char
定長字元串類型 varchar
可變長度字元串類型 binary
定長二進位字元串類型,它以二進位形式保存字元串 varbinary
可變長度的二進位字元串類型,它以二進位形式保存字元串 tinyblob/blob/mediumblob/longblob
1位元組/2位元組/3位元組/4位元組的二進位大對象,可用於存儲圖片、音樂等二進位數據,分別 可存儲:255B/64KB/16MB/4GB的大小 tinytext/text/mediumtext/longtext
1位元組/2位元組/3位元組/4位元組的文本對象,可用於存儲超長長度的字元串,分別可儲存: 255B/64KB/16MB/4GB大小的文本 enum('value1','value2',...)
枚舉類型,該列的值只能是enum後括弧里多個值的其中之一 set('value1','value2',...)
集合類型,該列的值可以是set後括弧里多個值的其中幾個
#例句: create table t_test ( #整形通常用int test_id int, #小數定義 test_price decimal, #定義普通文本,使用default關鍵字指定預設值 test_name varchar(255) default 'xxx', #定義大文本類型 test_desc text, #定義圖片 test_img blob, #定義日期 test_date datetime );
上面這種常見的建表語句只是創建一個空表,該表裡沒有任何數據。
如果使用子查詢建表語句,則可以在建表的同時插入數據。 語法如下:create table [模式名.]表名 [column1[, column2, ...] as subQuery;
上面語法中新表的欄位列表必須與子查詢中的欄位列表數量匹配,創建新表時的欄位列表可以省略,如果省略了該欄位列表,則新 表的列名與選擇結果完全相同,如下:create table user2 as select * from user;
上面的語句相當於把user表複製了一份,取名為user2。
-
alter(修改表結構):
包括增加列定義、修改列定義、刪除列、重命名列等增加列定義:
alter table tableName add ( #可以有多個列定義 columnName dataType [default expr], ... );
上面的語句表示將圓括弧里的列追加到指定表的列定義後面。如果只是新增一列,則可以省略圓括弧。#例句:
#為t_test表增加一個add_id欄位,該欄位的類型為int alter table t_test add add_id int;
#為t_test表增加add_name、add_address欄位,類型都為varchar alter table t_test add ( add_name varchar(255) default 'this is name', add_address varchar(255) );註意:SQL語句中的字元串不是用雙引號,而是用單引號;增加欄位時,如果數據表中已有數據記錄,除非給新增的列指定了預設值,
否則新增的數據列不可指定為非空約束,因為那些已有的記錄在新增列上肯定是空。 (只要新增的約束與已有的數據衝突,修改數據表結構就會失敗)。修改列定義:
alter table tableName modify columnName dataType [default expr] [first | after columnName];
上面語法中的first或者after columnName表示將目標列修改到指定的位置。#例句: #將t_test表中的add_id列的類型修改成varchar(255)類型 alter table t_test modify add_id varchar(255); #將t_test表中的add_name列修改成int類型 alter table t_test modify add_name int;
刪除列定義:
alter table tableName drop columnName;
刪除列,只需要在drop關鍵字後跟上要刪除的列名即可。#刪除t_test表中的add_name列 alter table t_test drop add_name;
重命名數據表名:
alter table tableName rename to newTableName;
#例句: #將t_test數據表重命名為t_demo alter table t_test rename to t_demo;
重命名數據表中的列名:
alter table tableName change old_column_name new_column_name dataType [default expr] [first | after column_name];
-
drop(刪除表):
#語法: drop table tableName;
#例句: #刪除t_demo數據表 drop table t_demo;
註意:刪除數據表後,表結構被刪除,表對象不再存在;表裡的所有數據也被刪除;該表所有相關的索引、約束也被刪除。
-
truncate(截斷表)
刪除表裡的全部數據,但保留表結構。truncate只能一次性刪除整個表的全部記錄。
#語法: truncate tableName;