-
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;
MySQL中的DDL(Data Definition Language,資料定義語言)
相關文章
- MySQL之資料定義語言(DDL)MySql
- MySQL - DDL詳解(Data Definition Language)MySql
- 資料定義語言(DDL)
- 資料庫實驗3 資料定義語言DDL資料庫
- MySQL全面瓦解4:資料定義-DDLMySql
- HIVE 資料定義 DDLHive
- Hive(一)資料型別以及DDL資料定義Hive資料型別
- hive從入門到放棄(二)——DDL資料定義Hive
- 【實驗】【MySQL】MySQL的DDL語言演示MySql
- MYSQL中的DDL(用來操縱資料庫物件的語言)1MySql資料庫物件
- 資料庫操作語言DDL資料庫
- 資料查詢語句:DQL(Data Query Language)
- MySQL-DML(Data Manipulation Language)詳解MySql
- DML(Data Manipulation Language、資料操作語言),用於新增、刪除、更新和查詢資料庫記資料庫
- 不做“語言律師”(language lawyers)
- MySQL 4.1.0 中文參考手冊 --- 6.5 資料定義: CREATE、DROP、ALTER (轉)MySql
- 你需要知道的7個大資料定義大資料
- MySQL的DDL和DML操作語法MySql
- 類定義(class definition)
- MySQL入門---(一)SQL的DDL語句MySql
- 大型語言模型(Large Language Models)的介紹模型
- MySQL學習筆記之資料定義表約束,分頁方法總結MySql筆記
- DDL,DML,DCL,TCL四種語言的簡介
- mysql中建庫、建表、增刪改查DDL語句MySql
- 1901:The C programming language !(C語言)C語言
- C語言巨集定義中#define中的井號#的使用C語言
- ClickHouse資料庫資料定義手記之資料型別資料庫資料型別
- MySQL — 資料查詢語言MySql
- MySql中的資料查詢語言(DQL)三:連線查詢MySql
- SQL(Structured Query Language,結構化查詢語言)SQLStruct
- 【Mysql】MySQL 5.6中如何定位DDL被阻塞的問題MySql
- oracle使用dbms_metadata.get_ddl包檢視DDL語句定義Oracle
- GoldenGate replication using a data definition file and DEFGEN utilityGo
- Oracle 儲存過程中的DDL語句Oracle儲存過程
- MySQL 中如何定位 DDL 被阻塞的問題MySql
- Oracle中獲取TABLE的DDL語句的方法Oracle
- R語言data manipulation學習筆記之subset dataR語言筆記
- MySQL — DCL語言MySql