openGauss學(xué)習(xí)筆記-35 openGauss 高級(jí)數(shù)據(jù)管理-ALTER TABLE語(yǔ)句
修改表,包括修改表的定義、重命名表、重命名表中指定的列、重命名表的約束、設(shè)置表的所屬模式、添加/更新多個(gè)列、打開/關(guān)閉行訪問控制開關(guān)。
35.1 語(yǔ)法格式
-
在一張已經(jīng)存在的表上添加列。
ALTER TABLE table_name ADD column_name data_type;
-
在一張已經(jīng)存在的表上刪除列。
ALTER TABLE table_name DROP COLUMN column_name;
-
修改表的字段類型。
ALTER TABLE table_name MODIFY column_name data_type;
-
為一張已經(jīng)存在表的列增加/刪除非空約束(NOT NULL)。
ALTER TABLE table_name ALTER column_name { SET | DROP } NOT NULL;
-
重命名表中指定的列。
ALTER TABLE table_name RENAME column_name TO new_column_name;
-
更新多個(gè)列。
ALTER TABLE table_name MODIFY ( { column_name data_type | column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | column_name [ CONSTRAINT constraint_name ] NULL } [, ...] );
-
對(duì)名稱的修改不會(huì)影響所存儲(chǔ)的數(shù)據(jù)。
ALTER TABLE table_name RENAME TO new_table_name;
35.2 參數(shù)說明
-
table_name
table_name是需要修改的表名。
若聲明了ONLY選項(xiàng),則只有那個(gè)表被更改。若未聲明ONLY,該表及其所有子表都將會(huì)被更改。另外,可以在表名稱后面顯示地增加*選項(xiàng)來(lái)指定包括子表,即表示所有后代表都被掃描,這是默認(rèn)行為。
-
column_name
現(xiàn)存的或新字段的名稱。
-
data_type
新字段的類型,或者現(xiàn)存字段的新類型。
-
new_table_name
修改后新的表名稱。
-
new_column_name
表中指定列修改后新的列名稱。
-
constraint_name
約束的名稱。
35.3 示例
表customer_t1的數(shù)據(jù)如下。
openGauss=# SELECT * FROM customer_t1;
c_customer_sk | c_customer_id | c_first_name | c_last_name | amount
---------------+---------------+--------------+-------------+--------
3869 | hello | Grace | | 1000
3869 | hello | Grace | | 1000
3869 | | Grace | |
3869 | hello | | |
3869 | hello | | |
| | | |
6985 | maps | Joes | | 2200
9976 | world | James | | 5000
4421 | Admin | Local | | 3000
6881 | maps | Lily | | 1000
4320 | tpcds | Lily | | 2000
(11 rows)
-
新增列
在上面的表中添加新的列。
openGauss=# ALTER TABLE customer_t1 ADD date time;
查詢表customer_t1的結(jié)構(gòu)如下,新增列date成功。
openGauss=# \d customer_t1 Table "public.customer_t1" Column | Type | Modifiers ---------------+------------------------+----------- c_customer_sk | integer | c_customer_id | character(5) | c_first_name | character(6) | c_last_name | character(8) | amount | integer | date | time without time zone |
-
修改列數(shù)據(jù)類型
修改列c的數(shù)據(jù)類型character(8) 為character(12)。
openGauss=# ALTER TABLE customer_t1 MODIFY c_last_name character(12);
查詢表customer_t1結(jié)構(gòu),列c_last_name修改數(shù)據(jù)類型成功。
openGauss=# \d customer_t1 Table "public.customer_t1" Column | Type | Modifiers ---------------+------------------------+----------- c_customer_sk | integer | c_customer_id | character(5) | c_first_name | character(6) | c_last_name | character(12) | amount | integer | date | time without time zone |
-
新增列約束
刪除列c_customer_sk為空的行。
openGauss=# DELETE FROM customer_t1 WHERE c_customer_sk is NULL;
為列c_customer_sk增加非空約束。
openGauss=# ALTER TABLE customer_t1 ALTER c_customer_sk SET NOT NULL;
查詢表customer_t1結(jié)構(gòu),列c_customer_sk新增約束成功。
openGauss=# \d customer_t1 Table "public.customer_t1" Column | Type | Modifiers ---------------+------------------------+----------- c_customer_sk | integer | not null c_customer_id | character(5) | c_first_name | character(6) | c_last_name | character(12) | amount | integer | date | time without time zone |
-
修改列名稱
修改列date名稱為purchase date。
openGauss=# ALTER TABLE customer_t1 RENAME date TO purchase_date;
查詢表customer_t1結(jié)構(gòu),列date名稱修改成功。
openGauss=# \d customer_t1 Table "public.customer_t1" Column | Type | Modifiers ---------------+------------------------+----------- c_customer_sk | integer | not null c_customer_id | character(5) | c_first_name | character(6) | c_last_name | character(12) | amount | integer | purchase_date | time without time zone |
-
刪除列
刪除列purchase_date。
openGauss=# ALTER TABLE customer_t1 DROP purchase_date;
刪除后,表customer_t1的數(shù)據(jù)如下。
openGauss=# SELECT * FROM customer_t1; c_customer_sk | c_customer_id | c_first_name | c_last_name | amount ---------------+---------------+--------------+-------------+-------- 3869 | hello | Grace | | 1000 3869 | hello | Grace | | 1000 3869 | | Grace | | 3869 | hello | | | 3869 | hello | | | 6985 | maps | Joes | | 2200 9976 | world | James | | 5000 4421 | Admin | Local | | 3000 6881 | maps | Lily | | 1000 4320 | tpcds | Lily | | 2000 (10 rows)
?? 點(diǎn)贊,你的認(rèn)可是我創(chuàng)作的動(dòng)力!
?? 收藏,你的青睞是我努力的方向!
?? 評(píng)論,你的意見是我進(jìn)步的財(cái)富!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-637550.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-637550.html
到了這里,關(guān)于openGauss學(xué)習(xí)筆記-35 openGauss 高級(jí)數(shù)據(jù)管理-ALTER TABLE語(yǔ)句的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!