SQL教學
SQL RDBMS概念
SQL簡介
SQL NOT NULL約束
SQL DEFAULT約束
SQL唯一約束
SQL主鍵
SQL外鍵
SQL CHECK約束
SQL示例數據庫
SQL索引約束
SQL NULL值
數據庫 - 第一範式(1NF)
數據庫 - 第二範式(2NF)
數據庫 - 第三範式(3NF)
SQL RDBMS數據庫
SQL語法
SQL數據類型
SQL操運算符
SQL算術運算符
SQL比較運算符
SQL邏輯運算符
SQL表達式
SQL創建數據庫(CREATE DATABASE)
SQL丟棄或刪除數據庫(DROP DATABASE)
SQL選擇數據庫(SELECT Database, USE語句)
SQL創建表(CREATE Table)
SQL從現有表創建表
SQL刪除表(DROP或DELETE Table)
SQL INSERT INTO插入查詢
SQL SELECT查詢語句
SQL WHERE子句
SQL AND和OR運算符
SQL UPDATE更新查詢
SQL DELETE刪除查詢
SQL LIKE子句
SQL TOP,LIMIT,ROWNUM子句
SQL ORDER BY排序子句
SQL GROUP BY(分組)
SQL Distinct關鍵字
SQL排序結果
SQL約束
SQL Join聯接
SQL INNER JOIN(內部連接)
SQL LEFT JOIN(左連接)
SQL RIGHT JOIN(右連接)
SQL FULL JOIN(全連接)
SQL自連接
SQL笛卡爾或交叉連接
SQL UNION子句/操作符
SQL INTERSECT子句
SQL EXCEPT子句
SQL別名語法
SQL索引
SQL ALTER TABLE(修改表)
SQL TRUNCATE TABLE(截斷表)
SQL View(視圖)
SQL Having子句
SQL事務
SQL通配符運算符
SQL日期函數
SQL ADDDATE()函數
SQL ADDTIME()函數
SQL CONVERT_TZ()函數
SQL CURDATE()函數
SQL CURRENT_DATE()函數
SQL CURTIME()函數
SQL CURRENT_TIME()函數
SQL CURRENT_TIMESTAMP()方法
SQL DATE(expr)函數
SQL DATEDIFF()方法
SQL DATE_ADD()和DATE_SUB()方法
SQL DATE_FORMAT()函數
SQL DATE_SUB()方法
SQL DAY()函數
SQL DAYNAME()函數
SQL DAYOFMONTH()函數
SQL DAYOFWEEK()函數
SQL DAYOFYEAR()函數
SQL EXTRACT()函數
SQL FROM_DAYS()函數
SQL FROM_UNIXTIME()函數
SQL HOUR()方法
SQL LAST_DAY()函數
SQL LOCALTIME和LOCALTIME()函數
SQL LOCALTIMESTAMP和LOCALTIMESTAMP()函數
SQL MAKEDATE()函數
SQL MAKETIME()函數
SQL MICROSECOND()函數
SQL MINUTE()函數
SQL MONTH()函數
SQL MONTHNAME()函數
SQL NOW()函數
SQL PERIOD_ADD()函數
SQL PERIOD_DIFF()函數
SQL QUARTER()函數
SQL SECOND()函數
SQL SEC_TO_TIME()函數
SQL STR_TO_DATE()函數
SQL SUBDATE()函數
SQL SUBTIME()函數
SQL SYSDATE()函數
SQL TIME()函數
SQL TIMEDIFF()函數
SQL TIMESTAMP()函數
SQL TIMESTAMPADD()函數
SQL TIMESTAMPDIFF()函數
SQL TIME_FORMAT()函數
SQL TIME_TO_SEC()函數
SQL TO_DAYS()函數
SQL UNIX_TIMESTAMP()函數
SQL UTC_DATE()函數
SQL UTC_TIME()函數
SQL UTC_TIMESTAMP()函數
SQL WEEK()函數
SQL WEEKDAY()函數
SQL WEEKOFYEAR()函數
SQL YEAR()函數
SQL YEARWEEK()函數
SQL臨時表
SQL克隆表
SQL子查詢
SQL使用序列(自動遞增)
SQL DISTINCT重複處理
SQL注入
SQL實用函數
SQL MAX()函數
SQL MIN()函數
SQL AVG()函數
SQL SUM()函數
SQL SQRT()函數
SQL RAND()函數
SQL CONCAT()函數
SQL數值函數
SQL ABS()函數
SQL ACOS()函數
SQL ASIN(X)函數
SQL ATAN(X)函數
SQL ATAN2()函數
SQL BIT_AND()函數
SQL BIT_COUNT()函數
SQL BIT_OR()函數
SQL CEIL()函數
SQL CONV()函數
SQL COS()函數
SQL COT()函數
SQL DEGREES()函數
SQL EXP(X)函數
SQL FLOOR(X)函數
SQL FORMAT(X,D)函數
SQL GREATEST()函數
SQL INTERVAL()函數
SQL LEAST()函數
SQL LOG()函數
SQL LOG10(X)函數
SQL MOD()函數
SQL OCT(N)函數
SQL PI()函數
SQL POW()函數
SQL RADIANS()函數
SQL ROUND()函數
SQL SIGN(X)函數
SQL SIN(X)函數
SQL SQRT(X)函數
SQL STD()函數
SQL TAN(X)函數
SQL TRUNCATE()函數
SQL字符串函數
SQL ASCII(str)函數
SQL BIN(N)函數
SQL BIT_LENGTH()函數
SQL CHAR()函數
SQL CHAR_LENGTH()函數
SQL CHARACTER_LENGTH()函數
SQL字符串CONCAT()函數
SQL CONCAT_WS()函數
SQL CONV(N,from_base,to_base)函數
SQL ELT()函數
SQL EXPORT_SET()函數
SQL FIELD()函數
SQL FIND_IN_SET()函數
SQL FORMAT()函數
SQL HEX()函數
SQL INSERT()函數
SQL INSTR()函數
SQL LCASE()函數
SQL LEFT()函數
SQL LENGTH()函數
SQL LOAD_FILE()函數
SQL LOCATE()函數
SQL LOWER()函數
SQL LPAD()函數
SQL LTRIM()函數
SQL MAKE_SET()函數
SQL MID()函數
SQL OCT()函數
SQL OCTET_LENGTH()函數
SQL ORD()函數
SQL POSITION()函數
SQL QUOTE()函數
SQL REGEXP模式
SQL REPEAT()函數
SQL REPLACE()函數
SQL REVERSE()函數
SQL RIGHT()函數
SQL RPAD()函數
SQL SOUNDEX()函數
SQL SPACE()函數
SQL STRCMP()函數
SQL SUBSTRING()函數
SQL SUBSTRING_INDEX()函數
SQL TRIM()函數
SQL UCASE()函數
SQL UNHEX()函數
SQL UPPER()函數

SQL Alter Table

本教程介紹如何使用SQL ALTER TABLE更改數據庫中現有表的結構。

創建新表後,您可能希望更改其結構,因爲業務需求會發生變化。 要修改表的結構,請使用ALTER TABLE語句。 ALTER TABLE語句用於對現有表執行以下操作:

  • 使用ADD子句添加新列。
  • 使用MODIFY子句修改列的屬性,例如:約束,默認值等。
  • 使用DROP子句刪除列。

我們將在以下部分詳細學習每個操作。

1. SQL ALTER TABLE ADD列

以下語句說明了帶有ADD子句的ALTER TABLE,該子句用於向表中添加一個或多個列。

ALTER TABLE table_name
ADD new_colum data_type column_constraint [AFTER existing_column];

要向表中添加一個或多個列,需要執行以下步驟:

  • 首先,在ALTER TABLE子句之後指定要添加table_name,表示列所在的表。
  • 其次,將新列定義放在ADD子句之後。 如果要在表中指定新列的順序,可以使用可選子句AFTER existing_column

注意,如果省略AFTER子句,則將在表的最後一列之後添加新列。

下面來看看如何將一些新列添加到在create table教程中創建的courses表的示例。

以下語句將一個名稱爲credit_hours的新列添加到courses表中。

ALTER TABLE courses ADD credit_hours INT NOT NULL;

使用單個ALTER TABLE語句向表中添加多個列。 例如,以下語句一次將feemax_limit列添加到courses表中,並將這些列放在course_name列之後。

ALTER TABLE courses 
ADD fee NUMERIC (10, 2) AFTER course_name,
ADD max_limit INT AFTER course_name;

2. SQL ALTER TABLE MODIFY列

MODIFY子句用於更改現有列的某些屬性,例如,NOT NULL,UNIQUE和數據類型。

以下語句顯示帶有MODIFY子句的ALTER TABLE語句的語法。

ALTER TABLE table_name
MODIFY column_definition;

請注意,應該修改沒有數據的表的列的屬性。 因爲更改已包含數據的表中列的屬性可能會導致永久性數據丟失。

例如,如果列的數據類型爲VARCHAR,並且將其更改爲INT,則數據庫系統必須將數據從VARCHAR轉換爲INT。 如果轉換失敗,數據庫系統可能會使用列的默認值,這可能與預期不符。

以下ALTER TABLE MODIFY語句將fee列的屬性更改爲NOT NULL

ALTER TABLE courses 
MODIFY fee NUMERIC (10, 2) NOT NULL;

3. SQL ALTER TABLE DROP列

當表的列已過時且未被任何其他數據庫對象(如觸發器,視圖,存儲過程和存儲過程)使用時,需要將其從表中刪除。

要刪除一個或多個列,請使用以下語法:

ALTER TABLE table_name
DROP column_name,
DROP colum_name,
...

例如,要刪除courses表中的fee列,請使用以下語句。

ALTER TABLE courses DROP COLUMN fee;

若要同時刪除多個列,請使用以逗號(,)分隔的多個DROP COLUMN子句。

例如,以下語句刪除courses表中的max_limitcredit_hours

ALTER TABLE courses 
DROP COLUMN max_limit,
DROP COLUMN credit_hours;

在本教程中,我們逐步學習瞭如何使用SQL ALTER TABLE語句在表中添加,修改和刪除一個或多個列。