您好,登錄后才能下訂單哦!
這篇文章主要講解了“mysql數據庫表增添字段,刪除字段,修改字段的方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“mysql數據庫表增添字段,刪除字段,修改字段的方法”吧!
修改表指的是修改數據庫之后中已經存在的數據表的結構。
mysql
使用alter table
語句修改表。常用的修改表的操作有修改表名、修改字段數據類型或者字段名、增加和刪除字段、修改字段的排列位置、更改表的存儲引擎、刪除表的外鍵約束等。
語法:
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>
注意:修改的只是數據表名,實際上字段和數據內容都沒有發生變化。
修改字段的數據類型,就是把字段的數據類型轉換成另一種數據類型。
語法:
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>
語法:
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>
可以看到,已經將字段修改完畢了。
語法:
alter table <表名> add <新字段名> <數據類型> [約束條件] [first | after 已存在字段名]
新字段名為需要添加的字段的名稱;first
為可選參數,其作用是將新添加的字段設置為表的第一個字段;after
為可選參數,其作用是將新添加的字段添加到指定的“已存在字段名” 的后面。
first
或after 已存在字段名
用于指定新增字段在表中的位置,如果SQL
語句中沒有這兩個參數,則默認將新添加的字段設置為數據表的最后一列。
舉幾個栗子:
在數據表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>
在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>
在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>
在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>
可以看到,每次我們都會對這個表結構進行相關的修改。
語法:
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
的字段進行刪除了。
有時候我們會面臨修改數據表中某些字段的排列位置,比如說將某一個字段排到第一個,或者是將某個字段后移,看下如何操作。
語法:
alter table <表名> modify <字段1> <數據類型> first | after <字段2>;
“字段1” 指要修改位置的字段;“數據類型” 指 “字段1” 的數據類型;“First
” 為可選參數,指將 “字段1” 修改為表的第一個字段;“after
字段2” 指將 “字段1” 插入到 “字段2” 后面。
舉兩個栗子;
比如我們將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
這個字段修改成第一個字段了;
比如我們將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
中的數據存儲在文件或者內存中時采用的不用技術實現。可以根據自己所需,選擇不同的引擎,也可以為每一張表選擇不用的存儲引擎。可以使用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數據庫表增添字段,刪除字段,修改字段的方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。