1.查看某數據庫中的表
SHOW [FULL] TABLES [FROM db_name] [LIKE 'pattern']

SHOW TABLES列舉了給定數據庫中的非TEMPORARY表。也可以使用mysqlshow db_name命令得到此清單。
本命令也列舉數據庫中的其它視圖。支持FULL修改符,這樣SHOW FULL TABLES就可以顯示第二個輸出列。對於一個表,第二列的值為BASE TABLE;對於一個視圖,第二列的值為VIEW。
2.查看數據表的詳細信息
SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern']

3.查看建表語句
SHOW CREATE TABLE tbl_name

4.建表語句
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] [partition_options] CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [partition_options] [IGNORE | REPLACE] [AS] query_expression CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name { LIKE old_tbl_name | (LIKE old_tbl_name) }
建表語句內容比較多,先來一張圖看看整體結構。

在創建表格時,您可以使用TEMPORARY關鍵詞。只有在當前連接情況下,TEMPORARY表才是可見的。當連接關閉時,TEMPORARY表被自動取消。這意味着兩個不同的連接可以使用相同的臨時表名稱,同時兩個臨時表不會互相沖突,也不與原有的同名的非臨時表沖突。(原有的表被隱藏,直到臨時表被取消時為止。)您必須擁有CREATE TEMPORARY TABLES權限,才能創建臨時表。
create_definition: --列名 列定義 col_name column_definition --主鍵約束(主鍵索引) | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) [index_option] ... | {INDEX|KEY} [index_name] [index_type] (index_col_name,...) [index_option] ... --唯一約束 | [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) [index_option] ... | {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...) [index_option] ... --外鍵約束 | [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition --自定義檢查約束 | CHECK (expr)
列定義
column_definition: data_type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string'] [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}] [STORAGE {DISK|MEMORY|DEFAULT}] [reference_definition] | data_type [GENERATED ALWAYS] AS (expression) [VIRTUAL | STORED] [UNIQUE [KEY]] [COMMENT comment] [NOT NULL | NULL] [[PRIMARY] KEY]
1)一個整數列可以擁有一個附加屬性AUTO_INCREMENT。當您向一個已編入索引的AUTO_INCREMENT列中插入一個NULL值(建議)或0時,此列被設置為下一個序列的值。通常情況下為value+1,此處value是當前在表中的列的最大值。AUTO_INCREMENT序列從1開始。為了讓MySQL與部分ODBC應用軟件相兼容,您可以使用以下查詢方法找到最后一個插入行的AUTO_INCREMENT值:SELECT * FROM tbl_name WHERE auto_col IS NULL。
2)DEFAULT子句用於為列指定一個默認值。默認值必須為一個常數,不能為一個函數或一個表達式,有一種情況例外。例如,一個日期列的默認值不能被設置為一個函數,如NOW()或CURRENT_DATE。不過,有一種例外,您可以對TIMESTAMP列指定CURRENT_TIMESTAMP為默認值。BLOB和TEXT列不能被賦予默認值。
3)對於列的評注可以使用COMMENT選項來進行指定。評注通過SHOW CREATE TABLE和SHOW FULL COLUMNS語句顯示。
4)在UNIQUE索引中,所有的值必須互不相同。
5)PRIMARY KEY是一個唯一KEY,一個表只有一個PRIMARY KEY。PRIMARY KEY可以是一個多列索引。但是,在列規約中使用PRIMARY KEY關鍵字屬性無法創建多列索引。這么做只能把一個列標記為主列。您必須使用一個單獨的PRIMARY KEY(index_col_name, ...)子句。
實數據類型
data_type: BIT[(length)] | TINYINT[(length)] [UNSIGNED] [ZEROFILL] | SMALLINT[(length)] [UNSIGNED] [ZEROFILL] | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL] | INT[(length)] [UNSIGNED] [ZEROFILL] | INTEGER[(length)] [UNSIGNED] [ZEROFILL] | BIGINT[(length)] [UNSIGNED] [ZEROFILL] | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL] | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL] | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL] | DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL] | NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL] | DATE | TIME[(fsp)] | TIMESTAMP[(fsp)] | DATETIME[(fsp)] | YEAR | CHAR[(length)] [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name] | VARCHAR(length) [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name] | BINARY[(length)] | VARBINARY(length) | TINYBLOB | BLOB | MEDIUMBLOB | LONGBLOB | TINYTEXT [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name] | TEXT [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name] | MEDIUMTEXT [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name] | LONGTEXT [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name] | ENUM(value1,value2,value3,...) [CHARACTER SET charset_name] [COLLATE collation_name] | SET(value1,value2,value3,...) [CHARACTER SET charset_name] [COLLATE collation_name] | JSON | spatial_type
索引與約束
index_col_name: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH} index_option: KEY_BLOCK_SIZE [=] value | index_type | WITH PARSER parser_name | COMMENT 'string' reference_definition: REFERENCES tbl_name (index_col_name,...) [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE] [ON DELETE reference_option] [ON UPDATE reference_option] reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION
表基本屬性設置
table_options: table_option [[,] table_option] ... table_option: ENGINE [=] engine_name | AUTO_INCREMENT [=] value | AVG_ROW_LENGTH [=] value | [DEFAULT] CHARACTER SET [=] charset_name | CHECKSUM [=] {0 | 1} | [DEFAULT] COLLATE [=] collation_name | COMMENT [=] 'string' | COMPRESSION [=] {'ZLIB'|'LZ4'|'NONE'} | CONNECTION [=] 'connect_string' | DATA DIRECTORY [=] 'absolute path to directory' | DELAY_KEY_WRITE [=] {0 | 1} | ENCRYPTION [=] {'Y' | 'N'} | INDEX DIRECTORY [=] 'absolute path to directory' | INSERT_METHOD [=] { NO | FIRST | LAST } | KEY_BLOCK_SIZE [=] value | MAX_ROWS [=] value | MIN_ROWS [=] value | PACK_KEYS [=] {0 | 1 | DEFAULT} | PASSWORD [=] 'string' | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} | STATS_AUTO_RECALC [=] {DEFAULT|0|1} | STATS_PERSISTENT [=] {DEFAULT|0|1} | STATS_SAMPLE_PAGES [=] value | TABLESPACE tablespace_name | UNION [=] (tbl_name[,tbl_name]...)
表分區:
partition_options: PARTITION BY { [LINEAR] HASH(expr) | [LINEAR] KEY [ALGORITHM={1|2}] (column_list) | RANGE{(expr) | COLUMNS(column_list)} | LIST{(expr) | COLUMNS(column_list)} } [PARTITIONS num] [SUBPARTITION BY { [LINEAR] HASH(expr) | [LINEAR] KEY [ALGORITHM={1|2}] (column_list) } [SUBPARTITIONS num] ] [(partition_definition [, partition_definition] ...)] partition_definition: PARTITION partition_name [VALUES {LESS THAN {(expr | value_list) | MAXVALUE} | IN (value_list)}] [[STORAGE] ENGINE [=] engine_name] [COMMENT [=] 'comment_text' ] [DATA DIRECTORY [=] 'data_dir'] [INDEX DIRECTORY [=] 'index_dir'] [MAX_ROWS [=] max_number_of_rows] [MIN_ROWS [=] min_number_of_rows] [TABLESPACE [=] tablespace_name] [(subpartition_definition [, subpartition_definition] ...)] subpartition_definition: SUBPARTITION logical_name [[STORAGE] ENGINE [=] engine_name] [COMMENT [=] 'comment_text' ] [DATA DIRECTORY [=] 'data_dir'] [INDEX DIRECTORY [=] 'index_dir'] [MAX_ROWS [=] max_number_of_rows] [MIN_ROWS [=] min_number_of_rows] [TABLESPACE [=] tablespace_name]
依據某個查詢建立新表:
query_expression: SELECT ... (Some valid select or union statement)
對建表舉例:
CREATE TABLE `students` ( `id` int(11) NOT NULL AUTO_INCREMENT, `stu_num` varchar(30) NOT NULL, `stu_name` varchar(30) NOT NULL, `sex` enum('M','F') DEFAULT 'M', `major` varchar(50) DEFAULT NULL, `grade` tinyint(4) DEFAULT NULL, --主鍵 PRIMARY KEY (`id`), --唯一約束 UNIQUE KEY `stu_num` (`stu_num`) ) --指定存儲引擎和字符集 ENGINE=InnoDB DEFAULT CHARSET=utf8;
依據某個查詢建立新表:
CREATE TABLE students_clone SELECT * FROM students;
按照此方式建立的students_clone表表結構將與students一致,且數據一致。
CREATE TABLE students_clone_1 LIKE students;
按照此方式建立的students_clone表表結構將與students一致,新建的數據表為空。
5.刪除數據表
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name]
DROP TABLE用於取消一個或多個表。您必須有每個表的DROP權限。所有的表數據和表定義會被取消,所以使用本語句要小心。
6.清空表數據
TRUNCATE [TABLE] tbl_name
TRUNCATE TABLE用於完全清空一個表。
