php修改mysql數據庫中的表格,如何修改mysql數據庫表?

修改mysql數據庫表的方法:使用“ALTER TABLE”語句,可以改變原有表的結構,例如增加字段或刪減字段、修改原有字段數據類型、重新命名字段或表、修改表字符集等;語法“ALTER TABLE [修改選項]”。

f89ab29fe8d8be0db45c42dec5b60afc.png

修改數據表的前提是數據庫中已經存在該表。修改表指的是修改數據庫中已經存在的數據表的結構。修改數據表的操作也是數據庫管理中必不可少的,就像畫素描一樣,畫多了可以用橡皮擦掉,畫少了可以用筆加上。

不了解如何修改數據表,就相當于是我們只要畫錯了就要扔掉重畫,這樣就增加了不必要的成本。

在 MySQL 中可以使用 ALTER TABLE 語句來改變原有表的結構,例如增加或刪減列、更改原有列類型、重新命名列或表等。

其語法格式如下:ALTER TABLE [修改選項]

修改選項的語法格式如下:{ ADD COLUMN

| CHANGE COLUMN

| ALTER COLUMN { SET DEFAULT | DROP DEFAULT }

| MODIFY COLUMN

| DROP COLUMN

| RENAME TO

| CHARACTER SET

| COLLATE }

修改表名

MySQL 通過 ALTER TABLE 語句來實現表名的修改,語法規則如下:ALTER TABLE RENAME [TO] ;

其中,TO 為可選參數,使用與否均不影響結果。

例 1

使用 ALTER TABLE 將數據表 student 改名為 tb_students_info,SQL 語句和運行結果如下所示。mysql> ALTER TABLE student RENAME TO tb_students_info;

Query OK, 0 rows affected (0.01 sec)

mysql> SHOW TABLES;

+------------------+

| Tables_in_test |

+------------------+

| tb_students_info |

+------------------+

1 row in set (0.00 sec)

提示:修改表名并不修改表的結構,因此修改名稱后的表和修改名稱前的表的結構是相同的。用戶可以使用 DESC 命令查看修改后的表結構,

修改表字符集

MySQL 通過 ALTER TABLE 語句來實現表字符集的修改,語法規則如下:ALTER TABLE 表名 [DEFAULT] CHARACTER SET [DEFAULT] COLLATE ;

其中,DEFAULT 為可選參數,使用與否均不影響結果。

例 2

使用 ALTER TABLE 將數據表 tb_students_info 的字符集修改為 gb2312,校對規則修改為 gb2312_chinese_ci。SQL 語句和運行結果如下所示。mysql> ALTER TABLE tb_students_info CHARACTER SET gb2312 DEFAULT COLLATE gb2312_chinese_ci;

Query OK, 0 rows affected (0.08 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> SHOW CREATE TABLE tb_students_info \G

*************************** 1. row ***************************

Table: tb_students_info

Create Table: CREATE TABLE `tb_students_info` (

`id` int(11) NOT NULL,

`name` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=gb2312

1 row in set (0.00 sec)

MySQL數據表添加字段

MySQL 數據表是由行和列構成的,通常把表的“列”稱為字段(Field),把表的“行”稱為記錄(Record)。隨著業務的變化,可能需要在已有的表中添加新的字段。

MySQL 允許在開頭、中間和結尾處添加字段。

在末尾添加字段

一個完整的字段包括字段名、數據類型和約束條件。MySQL 添加字段的語法格式如下:ALTER TABLE ADD [約束條件];

對語法格式的說明如下: 為數據表的名字;

為所要添加的字段的名字;

為所要添加的字段能存儲數據的數據類型;

[約束條件] 是可選的,用來對添加的字段進行約束。

這種語法格式默認在表的最后位置(最后一列的后面)添加新字段。

注意:本節我們只添加新的字段,不關注它的約束條件。

實例

在 test 數據庫中新建 student 數據表,SQL 語句和運行結果如下:mysql> USE test;

Database changed

mysql> CREATE TABLE student (

-> id INT(4),

-> name VARCHAR(20),

-> sex CHAR(1));

Query OK, 0 rows affected (0.09 sec)

使用 DESC 查看 student 表結構,SQL 語句和運行結果如下:mysql> DESC student;

+-------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id | int(4) | YES | | NULL | |

| name | varchar(20) | YES | | NULL | |

| sex | char(1) | YES | | NULL | |

+-------+-------------+------+-----+---------+-------+

3 rows in set (0.01 sec)

使用 ALTER TABLE 語句添加一個 INT 類型的字段 age,SQL 語句和運行結果如下:mysql> ALTER TABLE student ADD age INT(4);

Query OK, 0 rows affected (0.16 sec)

Records: 0 Duplicates: 0 Warnings: 0

使用 DESC 查看 student 表結構,檢驗 age 字段是否添加成功。SQL 語句和運行結果如下:mysql> DESC student;

+-------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id | int(4) | YES | | NULL | |

| name | varchar(20) | YES | | NULL | |

| sex | char(1) | YES | | NULL | |

| age | int(4) | YES | | NULL | |

+-------+-------------+------+-----+---------+-------+

4 rows in set (0.00 sec)

由運行結果可以看到,student 表已經添加了 age 字段,且該字段在表的最后一個位置,添加字段成功。

在開頭添加字段

MySQL 默認在表的最后位置添加新字段,如果希望在開頭位置(第一列的前面)添加新字段,那么可以使用 FIRST 關鍵字,語法格式如下:ALTER TABLE ADD [約束條件] FIRST;

FIRST 關鍵字一般放在語句的末尾。

實例

使用 ALTER TABLE 語句在表的第一列添加 INT 類型的字段 stuId,SQL 語句和運行結果如下所示。mysql> ALTER TABLE student ADD stuId INT(4) FIRST;

Query OK, 0 rows affected (0.14 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> DESC student;

+-------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| stuId | int(4) | YES | | NULL | |

| id | int(4) | YES | | NULL | |

| name | varchar(20) | YES | | NULL | |

| sex | char(1) | YES | | NULL | |

| age | int(4) | YES | | NULL | |

+-------+-------------+------+-----+---------+-------+

5 rows in set (0.00 sec)

由運行結果可以看到,student 表中已經添加了 stuId 字段,且該字段在表中的第一個位置,添加字段成功。

在中間位置添加字段

MySQL 除了允許在表的開頭位置和末尾位置添加字段外,還允許在中間位置(指定的字段之后)添加字段,此時需要使用 AFTER 關鍵字,語法格式如下:ALTER TABLE ADD [約束條件] AFTER ;

AFTER 的作用是將新字段添加到某個已有字段后面。

注意,只能在某個已有字段的后面添加新字段,不能在它的前面添加新字段。

實例

使用 ALTER TABLE 語句在 student 表中添加名為 stuno,數據類型為 INT 的字段,stuno 字段位于 name 字段的后面。SQL 語句和運行結果如下:mysql> ALTER TABLE student ADD stuno INT(11) AFTER name;

Query OK, 0 rows affected (0.13 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> DESC student;

+-------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| stuId | int(4) | YES | | NULL | |

| id | int(4) | YES | | NULL | |

| name | varchar(20) | YES | | NULL | |

| stuno | int(11) | YES | | NULL | |

| sex | char(1) | YES | | NULL | |

| age | int(4) | YES | | NULL | |

+-------+-------------+------+-----+---------+-------+

6 rows in set (0.00 sec)

由運行結果可以看到,student 表中已經添加了 stuId 字段,且該字段在 name 字段后面的位置,添加字段成功。

MySQL 修改和刪除數據表字段

修改字段名稱

MySQL 中修改表字段名的語法規則如下:ALTER TABLE CHANGE ;

其中:舊字段名:指修改前的字段名;

新字段名:指修改后的字段名;

新數據類型:指修改后的數據類型,如果不需要修改字段的數據類型,可以將新數據類型設置成與原來一樣,但數據類型不能為空。

使用 ALTER TABLE 修改表 tb_emp1 的結構,將 col1 字段名稱改為 col3,同時將數據類型變為 CHAR(30),SQL 語句和運行結果如下所示。mysql> ALTER TABLE tb_emp1

-> CHANGE col1 col3 CHAR(30);

Query OK, 0 rows affected (0.76 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> DESC tb_emp1;

+--------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+-------------+------+-----+---------+-------+

| col3 | char(30) | YES | | NULL | |

| id | int(11) | YES | | NULL | |

| name | varchar(30) | YES | | NULL | |

| deptId | int(11) | YES | | NULL | |

| salary | float | YES | | NULL | |

+--------+-------------+------+-----+---------+-------+

5 rows in set (0.01 sec)

CHANGE 也可以只修改數據類型,實現和 MODIFY 同樣的效果,方法是將 SQL 語句中的“新字段名”和“舊字段名”設置為相同的名稱,只改變“數據類型”。

提示:由于不同類型的數據在機器中的存儲方式及長度并不相同,修改數據類型可能會影響數據表中已有的數據記錄,因此,當數據表中已經有數據時,不要輕易修改數據類型。

修改字段數據類型

修改字段的數據類型就是把字段的數據類型轉換成另一種數據類型。在 MySQL 中修改字段數據類型的語法規則如下:ALTER TABLE MODIFY

其中:表名:指要修改數據類型的字段所在表的名稱;

字段名:指需要修改的字段;

數據類型:指修改后字段的新數據類型。

使用 ALTER TABLE 修改表 tb_emp1 的結構,將 name 字段的數據類型由 VARCHAR(22) 修改成 VARCHAR(30),SQL 語句和運行結果如下所示。mysql> ALTER TABLE tb_emp1

-> MODIFY name VARCHAR(30);

Query OK, 0 rows affected (0.15 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> DESC tb_emp1;

+--------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+-------------+------+-----+---------+-------+

| col1 | int(11) | YES | | NULL | |

| id | int(11) | YES | | NULL | |

| name | varchar(30) | YES | | NULL | |

| col2 | int(11) | YES | | NULL | |

| deptId | int(11) | YES | | NULL | |

| salary | float | YES | | NULL | |

+--------+-------------+------+-----+---------+-------+

6 rows in set (0.00 sec)

語句執行后,發現表 tb_emp1 中 name 字段的數據類型已經修改成 VARCHAR(30),修改成功。

刪除字段

刪除字段是將數據表中的某個字段從表中移除,語法格式如下:ALTER TABLE DROP ;

其中,“字段名”指需要從表中刪除的字段的名稱。

使用 ALTER TABLE 修改表 tb_emp1 的結構,刪除 col2 字段,SQL 語句和運行結果如下所示。mysql> ALTER TABLE tb_emp1

-> DROP col2;

Query OK, 0 rows affected (0.53 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> DESC tb_emp1;

+--------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+-------------+------+-----+---------+-------+

| col1 | int(11) | YES | | NULL | |

| id | int(11) | YES | | NULL | |

| name | varchar(30) | YES | | NULL | |

| deptId | int(11) | YES | | NULL | |

| salary | float | YES | | NULL | |

+--------+-------------+------+-----+---------+-------+

5 rows in set (0.00 sec)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393118.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393118.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393118.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微軟最新GDI漏洞MS08-052安全解決方案

微軟最新GDI漏洞MS08-052安全解決方案 Simeon微軟于九月九日凌晨爆出有史以來最大的安全漏洞MS08-052,通過該漏洞,攻擊者可以將木馬藏于圖片中,網民無論是通過瀏覽器瀏覽、還是用各種看圖軟件打開、或者在即時聊天窗口、電子郵件、Office文檔…

DEM軌跡后處理

方法一:直接在paraview中顯示 首先在輸出顆粒信息的時候保存global ID:然后在paraview中導入vtp數據(不要導入pvd),并使用Temporal Particle To Pathlines這個filter(可以直接ctrlspace調出搜索框搜索&…

Oracle的JDBC Url的幾種方式

1.普通SID方式jdbc:oracle:thin:username/passwordx.x.x.1:1521:SID2.普通ServerName方式 jdbc:Oracle:thin:username/password//x.x.x.1:1522/ABCD3.RAC方式jdbc:oracle:thin:(DESCRIPTION(ADDRESS_LIST(ADDRESS(PROTOCOLTCP)(HOSTx.x.x.1)(PORT1521))(ADDRESS(PROTOCOLTCP)(H…

leetcode945. 使數組唯一的最小增量(排序)

給定整數數組 A,每次 move 操作將會選擇任意 A[i],并將其遞增 1。 返回使 A 中的每個值都是唯一的最少操作次數。 示例 1: 輸入:[1,2,2] 輸出:1 解釋:經過一次 move 操作,數組將變為 [1, 2, 3]。 代碼 …

數據科學 python_如何使用Python為數據科學建立肌肉記憶

數據科學 pythonby Zhen Liu劉震 首先:數據預處理 (Up first: data preprocessing) Do you feel frustrated by breaking your data analytics flow when searching for syntax? Why do you still not remember it after looking up it for the third time?? It…

oracle 管道通信,oracle管道化表函數

轉自:http://pengfeng.javaeye.com/blog/260360在我所做過和參與的大多數項目中,都會有用戶提出的復雜的一些統計報表之內的功能要求,根據統計的復雜程度、效率及JAVA程序調用的方便性方面考慮,主要總結出以下幾種方案: 1、SQL語句 該方案只能實現一些相…

ebtables之BROUTING和PREROUTING的redirect的區別

ebtables和iptables實用工具都使用了Netfilter框架,這是它們一致的一方面,然而對于這兩者還真有一些需要聯動的地方。很多人不明白ebtales的broute表的redirect和nat表PREROUTING的redirect的區別,其實只要記住兩點即可,那就是對于…

LVS的四種模式的實現

LVS 是四層負載均衡,也就是說建立在 OSI 模型的第四層——傳輸層之上,傳輸層上有我們熟悉的 TCP/UDP,LVS 支持 TCP/UDP 的負載均衡。LVS 的轉發主要通過修改 IP 地址(NAT 模式,分為源地址修改 SNAT 和目標地址修改 DNA…

MyISAM與InnoDB兩者之間區別與選擇,詳細總結,性能對比

1、MyISAM:默認表類型,它是基于傳統的ISAM類型,ISAM是Indexed Sequential Access Method (有索引的順序訪問方法) 的縮寫,它是存儲記錄和文件的標準方法。不是事務安全的,而且不支持外鍵,如果執行大量的sel…

leetcode557. 反轉字符串中的單詞 III

給定一個字符串,你需要反轉字符串中每個單詞的字符順序,同時仍保留空格和單詞的初始順序。 示例: 輸入:“Let’s take LeetCode contest” 輸出:“s’teL ekat edoCteeL tsetnoc” 代碼 class Solution {public St…

linux命令數據盤分多個區,pvmove命令 – 移動物理盤區

pvmove命令的作用是可以將源物理卷上的物理盤區移動到一個或多個其他的目標物理卷。使用pvmove命令時可以指定一個源日志或卷。在這種情況下,只有邏輯卷使用的區才會被移動到目標物理卷上的空閑或指定的區。如果沒有指定的物理卷,則使用卷組的默認規則分…

spanning-tree extend system-id

spanning-tree extend system-id 在交換機上啟用extended-system ID 特征使其支持 1024 MAC 地址, 在全局模式下使用 spanning-tree extend system-id命令.禁用時前面加 no。 spanning-tree extend system-id no spanning-tree extend system-id 命令用法 在不提供 1024 MAC 地…

leetcode841. 鑰匙和房間(bfs)

有 N 個房間,開始時你位于 0 號房間。每個房間有不同的號碼:0,1,2,…,N-1,并且房間里可能有一些鑰匙能使你進入下一個房間。 在形式上,對于每個房間 i 都有一個鑰匙列表 rooms[i]&a…

Codeforces 235C Cyclical Quest (后綴自動機)

題目鏈接: https://codeforces.com/contest/235/problem/C 題解: 對大串建后綴自動機 對詢問串復制拆環。這里一定要注意是復制一個循環節不是復制整個串!循環節是要整除的那種 然后要做的實際上是在大串上跑,每經過一個點求出當前的最長公共子串&#x…

泛型型協變逆變_Java泛型類型簡介:協變和逆變

泛型型協變逆變by Fabian Terh由Fabian Terh Java泛型類型簡介:協變和逆變 (An introduction to generic types in Java: covariance and contravariance) 種類 (Types) Java is a statically typed language, which means you must first declare a variable and …

安卓系統換成linux系統軟件,將舊安卓手機打造成“簡易linux”機器,并部署AdGuardHome...

從原教程的安裝Linux Deploy 完成后,在配置 Linux下載鏡像的一些東西時有些許出入。首先,我是用的下載源地址是 http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports 清華的源挺好用的。 其他有出入的配置如圖(記得把源地址改清華的,華中科大…

let與expr命令的用法與實戰案例

let命令的用法 格式: let 賦值表達式 【注】let賦值表達式功能等同于:(賦值表達式) 例子:給自變量i加8 12345678[rootXCN ~]# i2 [rootXCN ~]# let ii8 [rootXCN ~]# echo $i 10[rootXCN ~]# ii8 #去掉let定義 [root…

在使用ToolBar + AppBarLayout,實現上劃隱藏Toolbar功能,遇到了一個坑。

問題:Android5.0以下版本Toolbar不顯示沉浸式狀態欄,沒有這個問題,但是5.0以上版本,就出現了莫名其妙的陰影問題,很是頭疼。 分享一下我的解決方案: 在AppBarLayout中加一個屬性: app:elevation…

leetcode1476. 子矩形查詢

請你實現一個類 SubrectangleQueries ,它的構造函數的參數是一個 rows x cols 的矩形(這里用整數矩陣表示),并支持以下兩種操作: updateSubrectangle(int row1, int col1, int row2, int col2, int newValue) 用 new…

msbuild構建步驟_如何按照以下步驟構建最終的AI聊天機器人

msbuild構建步驟by Paul Pinard保羅皮納德(Paul Pinard) 如何按照以下步驟構建最終的AI聊天機器人 (How to build the ultimate AI chatbot by following these steps) 快速指南,可幫助您避免常見的陷阱 (A quick guide that helps you avoid common pitfalls) Bui…