[ 轉 ] mysql修改表結構alter
mysql修改表結構alter
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] alter_specification: ALTER TABLE允許你修改一個現有表的結構。例如,你可以增加或刪除列、創造或消去索引、改變現有列的類型、或重新命名列或表本身。你也能改變表的注釋和表的類型。見7.7 CREATE TABLE句法。 如 果你使用ALTER TABLE修改一個列說明但是DESCRIBE tbl_name顯示你的列并沒有被修改,這可能是MySQL因為在7.7.1 隱含的列說明改變中描述的原因之一而忽略了你的修改。例如,如果你試圖將一個VARCHAR改為CHAR,MySQL將仍然使用VARCHAR,如果表包 含其他變長的列。 ALTER TABLE通過制作原來表的一個臨時副本來工作。修改在副本上施行,然后原來的表被刪除并且重新命名一個新的。這樣做使得所有的修改自動地轉向到新表,沒 有任何失敗的修改。當ALTER TABLE正在執行時,原來的桌可被其他客戶讀取。更新和寫入表被延遲到新表準備好了為止。 為了使用ALTER TABLE,你需要在表上的select、insert、delete、update、create和drop的權限。 如果你想要改變列的類型而非名字,就算他們是一樣的,CHANGE語法仍然需要2個列名。例如: mysql> ALTER TABLE t1 CHANGE b b BIGINT NOT NULL; 然而,在MySQL3.22.16a,你也可以使用MODIFY來改變列的類型而不是重命名它: mysql> ALTER TABLE t1 MODIFY b BIGINT NOT NULL; 如果你使用CHANGE或MODIFY縮短一個列,一個索引存在于該列的部分(例如,如果你有一個VARCHAR列的頭10個字符的索引),你不能使列短于被索引的字符數目。 mysql> CREATE TABLE t1 (a INTEGER,b CHAR(10)); 重命名表,從t1到t2: mysql> ALTER TABLE t1 RENAME t2; 為了改變列a,從INTEGER改為TINYINT NOT NULL(名字一樣),并且改變列b,從CHAR(10)改為CHAR(20),同時重命名它,從b改為c: mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20); 在列d上增加一個索引,并且使列a為主鍵: mysql> ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a); 刪出列c: mysql> ALTER TABLE t2 DROP COLUMN c; 增加一個新的AUTO_INCREMENT整數列,命名為c: mysql> ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, 注意,我們索引了c,因為AUTO_INCREMENT柱必須被索引,并且另外我們聲明c為NOT NULL,因為索引了的列不能是NULL。 當你增加一個AUTO_INCREMENT列時,自動地用順序數字填入列值。
修改表某字段長度 ALTER TABLE writerfloor MODIFY images varchar(240);
添加 area 表的字段 latitude 類型是 char(20)不為空 ALTER TABLE area ADD latitude char(20) NOT NULL;
ALTER TABLE kejiyuan CHANGE klongitude longitude char(20);
|
posted on 2008-12-04 15:29 星期五 閱讀(731) 評論(0) 編輯 收藏 所屬分類: 數據庫