MySQL學習——有關表的操作語句 摘要:本文主要學習了使用DDL語句對錶進行操作的方法。 創建表 語法 表定義選項 用來創建定義表的結構,由列名(col_name)、列的定義(column_definition)以及可能的空值說明、完整性約束或表索引組成。 實例 查看表結構 語法 實例 說明 Nu ...
MySQL學習——操作表
摘要:本文主要學習了使用DDL語句操作表的方法。
創建表
語法
1 create table 表名 [表定義選項] [表選項] [分區選項];
表定義選項
用來創建定義表的結構,由列名(col_name)、列的定義(column_definition)以及可能的空值說明、完整性約束或表索引組成。
實例
1 mysql> create table test ( 2 -> id int(11) not null comment '編號', 3 -> name varchar(50) default null comment '姓名', 4 -> address varchar(50) default null comment '地址', 5 -> status int(2) default null comment '狀態', 6 -> createtime date default null comment '創建時間', 7 -> updatetime date default null comment '修改時間', 8 -> primary key (id) 9 -> ) engine=innodb default charset=utf8mb4 comment='測試'; 10 Query OK, 0 rows affected (0.01 sec) 11 12 mysql>
查看表的欄位
語法
1 show columns from 表名;
實例
1 mysql> show columns from test; 2 +------------+-------------+------+-----+---------+-------+ 3 | Field | Type | Null | Key | Default | Extra | 4 +------------+-------------+------+-----+---------+-------+ 5 | id | int(11) | NO | PRI | NULL | | 6 | name | varchar(50) | YES | | NULL | | 7 | address | varchar(50) | YES | | NULL | | 8 | status | int(2) | YES | | NULL | | 9 | createtime | date | YES | | NULL | | 10 | updatetime | date | YES | | NULL | | 11 +------------+-------------+------+-----+---------+-------+ 12 6 rows in set (0.00 sec) 13 14 mysql>
說明
Null:表示該列是否可以存儲NULL值。
Key:表示該列是否已編製索引。PRI表示該列是表主鍵的一部分,UNI表示該列是UNIQUE索引的一部分,MUL表示在列中某個給定值允許出現多次。
Default:表示該列是否有預設值,如果有,值是多少。
Extra:表示可以獲取的與給定列有關的附加信息,如:AUTO_INCREMENT等。
查看表結構
語法
1 desc 表名;
實例
1 mysql> desc test; 2 +------------+-------------+------+-----+---------+-------+ 3 | Field | Type | Null | Key | Default | Extra | 4 +------------+-------------+------+-----+---------+-------+ 5 | id | int(11) | NO | PRI | NULL | | 6 | name | varchar(50) | YES | | NULL | | 7 | address | varchar(50) | YES | | NULL | | 8 | status | int(2) | YES | | NULL | | 9 | createtime | date | YES | | NULL | | 10 | updatetime | date | YES | | NULL | | 11 +------------+-------------+------+-----+---------+-------+ 12 6 rows in set (0.00 sec) 13 14 mysql>
說明
Null:表示該列是否可以存儲NULL值。
Key:表示該列是否已編製索引。PRI表示該列是表主鍵的一部分,UNI表示該列是UNIQUE索引的一部分,MUL表示在列中某個給定值允許出現多次。
Default:表示該列是否有預設值,如果有,值是多少。
Extra:表示可以獲取的與給定列有關的附加信息,如:AUTO_INCREMENT等。
查詢所有的表
語法
1 show tables;
實例
1 mysql> show tables; 2 +----------------+ 3 | Tables_in_demo | 4 +----------------+ 5 | test | 6 +----------------+ 7 1 row in set (0.00 sec) 8 9 mysql>
查看表的創建
語法
1 show create table 表名 \G;
實例
1 mysql> show create table test \G; 2 *************************** 1. row *************************** 3 Table: test 4 Create Table: CREATE TABLE `test` ( 5 `id` int(11) NOT NULL COMMENT '編號', 6 `name` varchar(50) DEFAULT NULL COMMENT '姓名', 7 `address` varchar(50) DEFAULT NULL COMMENT '地址', 8 `status` int(2) DEFAULT NULL COMMENT '狀態', 9 `createtime` date DEFAULT NULL COMMENT '創建時間', 10 `updatetime` date DEFAULT NULL COMMENT '修改時間', 11 PRIMARY KEY (`id`) 12 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='測試' 13 1 row in set (0.00 sec) 14 15 ERROR: 16 No query specified 17 18 mysql>
查看表的狀態
語法
1 show table status like from 資料庫 [like '模糊查詢表名'] \G;
實例
1 mysql> show table status from demo \G ; 2 *************************** 1. row *************************** 3 Name: test 4 Engine: InnoDB 5 Version: 10 6 Row_format: Compact 7 Rows: 0 8 Avg_row_length: 0 9 Data_length: 16384 10 Max_data_length: 0 11 Index_length: 0 12 Data_free: 0 13 Auto_increment: NULL 14 Create_time: 2019-09-02 17:21:06 15 Update_time: NULL 16 Check_time: NULL 17 Collation: utf8mb4_general_ci 18 Checksum: NULL 19 Create_options: 20 Comment: 測試 21 1 row in set (0.00 sec) 22 23 ERROR: 24 No query specified 25 26 mysql>
修改表
添加欄位
1 alter table 表名 add column 新欄位名 [數據類型] [約束條件] [first | after 已存在的欄位名];
實例
1 mysql> alter table test add column age int(3) null comment '年齡' after name; 2 Query OK, 0 rows affected (0.01 sec) 3 Records: 0 Duplicates: 0 Warnings: 0 4 5 mysql>
修改欄位
1 alter table 表名 change column 舊欄位名 新欄位名 [新數據類型];
實例
1 mysql> alter table test change column username name varchar(30) not null default 'none' comment '姓名'; 2 Query OK, 0 rows affected (0.01 sec) 3 Records: 0 Duplicates: 0 Warnings: 0 4 5 mysql>
刪除欄位
1 alter table 表名 drop 欄位名;
實例
1 mysql> alter table test drop age; 2 Query OK, 0 rows affected (0.01 sec) 3 Records: 0 Duplicates: 0 Warnings: 0 4 5 mysql>
刪除表
語法
1 drop table [if exists] 表名;
實例
1 mysql> drop table demo; 2 Query OK, 0 rows affected (0.01 sec) 3 4 mysql>
清空表
語法
1 truncate table 表名;
實例
1 mysql> truncate table demo; 2 Query OK, 0 rows affected (0.01 sec) 3 4 mysql>