mysql數據庫表增添字段,刪除字段,修改字段的排列等操作
修改表指的是修改數據庫之後中已經存在的數據表的結構。
mysql
使用alter table
語句修改表。常用的修改表的操作有修改表名、修改字段數據類型或者字段名、增加和刪除字段、修改字段的排列位置、更改表的存儲引擎、刪除表的外鍵約束等。
一、mysql修改表名
語法:
ALTER TABLE <舊表名> RENAME [to] <新表名>
上面語句中的to
為可選,存在與否不影響運行結果。
舉個栗子:
將test_user_2
這個數據表,改名為test_user_two
;
首先我們查看下原來的內容;
mysql> show tables; +-------------------+ | Tables_in_test_db | +-------------------+ | test_dept | | test_user | | test_user_2 | | test_user_3 | | test_user_4 | | test_user_5 | | test_user_6 | | test_user_7 | | test_user_8 | | test_user_9 | +-------------------+ 10 rows in set (0.00 sec) mysql>
然後我們執行語句:
mysql> alter table test_user_2 rename test_user_two; Query OK, 0 rows affected (0.03 sec) mysql>
然後再看下是否修改完畢瞭;
mysql> show tables; +-------------------+ | Tables_in_test_db | +-------------------+ | test_dept | | test_user | | test_user_3 | | test_user_4 | | test_user_5 | | test_user_6 | | test_user_7 | | test_user_8 | | test_user_9 | | test_user_two | +-------------------+ 10 rows in set (0.00 sec) mysql>
註意:修改的隻是數據表名,實際上字段和數據內容都沒有發生變化。
二、mysql修改數據的字段類型
修改字段的數據類型,就是把字段的數據類型轉換成另一種數據類型。
語法:
alter table <表名> modify <字段名> <數據類型>
舉個栗子:
修改test_user_two
這個表中的money
字段的數據類型,由float
改為int
類型。
首先看下這個表中的數據結構;
mysql> desc test_user_two; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptid | int | YES | | NULL | | | money | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.01 sec) mysql>
然後執行如下語句進行修改;
mysql> alter table test_user_two modify money int; Query OK, 0 rows affected (0.09 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
修改完畢之後我們再看下test_user_db
這個表中的數據結構是否發生變化瞭。
mysql> desc test_user_two; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptid | int | YES | | NULL | | | money | int | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) mysql>
三、mysql修改字段名
語法:
alter table <表名> change <舊字段名> <新字段名> <新數據類型>;
舉個栗子:
將test_user_two
表中的money
字段改成howmoney
,數據類型為int
;
執行語句:
mysql> alter table test_user_two change money howmoney int; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
然後我們再看下此時這個test_user_two
數據庫的數據結構是什麼;
mysql> desc test_user_two; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptid | int | YES | | NULL | | | howmoney | int | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) mysql>
可以看到,已經將字段修改完畢瞭。
四、mysql添加字段
語法:
alter table <表名> add <新字段名> <數據類型> [約束條件] [first | after 已存在字段名]
新字段名為需要添加的字段的名稱;first
為可選參數,其作用是將新添加的字段設置為表的第一個字段;after
為可選參數,其作用是將新添加的字段添加到指定的“已存在字段名” 的後面。
first
或after 已存在字段名
用於指定新增字段在表中的位置,如果SQL
語句中沒有這兩個參數,則默認將新添加的字段設置為數據表的最後一列。
舉幾個栗子:
1、添加沒有約束性的字段
在數據表test_user_two
中添加一個沒有完整性約束的int
類型的字段year
(入職幾年);
執行sql
如下:
mysql> alter table test_user_two add year int; Query OK, 0 rows affected (0.04 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
然後我們查看下修改之後的表結構;
mysql> desc test_user_two; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptid | int | YES | | NULL | | | howmoney | int | YES | | NULL | | | year | int | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 5 rows in set (0.00 sec) mysql>
2、添加一個有約束性的字段
在test_user_two
表中添加一個名為year1
,數據類型是int
,且不可為空的字段;
執行相關sql
語句;
mysql> alter table test_user_two add year1 int not null; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
看下表結構;
mysql> desc test_user_two; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptid | int | YES | | NULL | | | howmoney | int | YES | | NULL | | | year | int | YES | | NULL | | | year1 | int | NO | | NULL | | +----------+-------------+------+-----+---------+-------+ 6 rows in set (0.00 sec) mysql>
3、在表的第一列添加一個字段
在test_user_two
數據表第一列添加一個名字year2
,數據類型是int
的字段。
執行相關sql
語句;
mysql> alter table test_user_two add year2 int first; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
看下修改之後的表結構是什麼;
mysql> desc test_user_two; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | year2 | int | YES | | NULL | | | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptid | int | YES | | NULL | | | howmoney | int | YES | | NULL | | | year | int | YES | | NULL | | | year1 | int | NO | | NULL | | +----------+-------------+------+-----+---------+-------+ 7 rows in set (0.00 sec) mysql>
4、在數據表中指定列之後添加一個字段
在test_user_two
這個數據庫中name
字段之後,添加一個名為name2
,數據類型是varchar(50)
的字段;
執行sql
語句;
mysql> alter table test_user_two add name2 varchar(50) after name; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
可以再次看下表結構;
mysql> desc test_user_two; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | year2 | int | YES | | NULL | | | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | name2 | varchar(50) | YES | | NULL | | | deptid | int | YES | | NULL | | | howmoney | int | YES | | NULL | | | year | int | YES | | NULL | | | year1 | int | NO | | NULL | | +----------+-------------+------+-----+---------+-------+ 8 rows in set (0.00 sec) mysql>
可以看到,每次我們都會對這個表結構進行相關的修改。
五、mysql刪除字段
語法:
alter table <表名> drop <字段名>;
舉個栗子;
比如我們想將test_user_two
數據庫中剛添加的year2
字段刪除;
執行sql
語句為:
看下表結構;
mysql> desc test_user_two; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | name2 | varchar(50) | YES | | NULL | | | deptid | int | YES | | NULL | | | howmoney | int | YES | | NULL | | | year | int | YES | | NULL | | | year1 | int | NO | | NULL | | +----------+-------------+------+-----+---------+-------+ 7 rows in set (0.00 sec) mysql>
可以看到已經將名為year2
的字段進行刪除瞭。
六、mysql修改字段的排列位置
有時候我們會面臨修改數據表中某些字段的排列位置,比如說將某一個字段排到第一個,或者是將某個字段後移,看下如何操作。
語法:
alter table <表名> modify <字段1> <數據類型> first | after <字段2>;
“字段1” 指要修改位置的字段;“數據類型” 指 “字段1” 的數據類型;“First
” 為可選參數,指將 “字段1” 修改為表的第一個字段;“after
字段2” 指將 “字段1” 插入到 “字段2” 後面。
舉兩個栗子;
1、修改字段為表的第一個字段
比如我們將test_user_two
這個數據表中名為name2
的字段,修改成這個對應數據表中第一個字段;
執行sql
語句;
mysql> alter table test_user_two modify name2 varchar(50) first; Query OK, 0 rows affected (0.08 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
查看下表結構;
mysql> desc test_user_two; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | name2 | varchar(50) | YES | | NULL | | | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptid | int | YES | | NULL | | | howmoney | int | YES | | NULL | | | year | int | YES | | NULL | | | year1 | int | NO | | NULL | | +----------+-------------+------+-----+---------+-------+ 7 rows in set (0.00 sec) mysql>
可以看到我們已經成功將name2
這個字段修改成第一個字段瞭;
2、修改字段為指定列後面
比如我們將test_user_two
這個表中的name2
字段,讓他移動到year
這個字段後面;
執行sql
語句;
mysql> alter table test_user_two modify name2 varchar(50) after year; Query OK, 0 rows affected (0.06 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
看下表結構;
mysql> desc test_user_two; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptid | int | YES | | NULL | | | howmoney | int | YES | | NULL | | | year | int | YES | | NULL | | | name2 | varchar(50) | YES | | NULL | | | year1 | int | NO | | NULL | | +----------+-------------+------+-----+---------+-------+ 7 rows in set (0.00 sec) mysql>
可以發現,已經將test_user_two
這個數據庫中的name2
字段,移動到瞭year
字段之後。
七、mysql更改表的存儲引擎
存儲引擎是
mysql
中的數據存儲在文件或者內存中時采用的不用技術實現。可以根據自己所需,選擇不同的引擎,也可以為每一張表選擇不用的存儲引擎。可以使用show engines;
語句來查看系統支持的存儲引擎。
mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 9 rows in set (0.00 sec) mysql>
更改表的存儲引擎的語法:
alter table <表名> engine=<更改後的存儲引擎名>
到此這篇關於mysql數據庫表增添字段,刪除字段,修改字段的排列等操作的文章就介紹到這瞭,更多相關mysql字段操作內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- MySQL 字段默認值該如何設置
- MySQL非空約束(not null)案例講解
- MySQL 8.0 之不可見列的基本操作
- MySQL外鍵約束(FOREIGN KEY)案例講解
- Mysql 索引該如何設計與優化