目录一、表的删除(DROP TABLE 语句)二、表定义的更新(ALTER TABLE 语句)三、向 Product 表中插入数据请参阅 学习要点 使用 DROP TABLE 语句来删除表。 使用 ALTER TABLE 语句向
学习要点
使用
DROP TABLE
语句来删除表。使用
ALTER TABLE
语句向表中添加列或者从表中删除列。
DROP TABLE
语句)此前介绍的都是关于 Product
表的内容的创建,下面我们就来介绍一下删除表的方法。删除表的 sql 语句非常简单,只需要一行 DROP TABLE
语句即可。
KEYWORD
DROP TABLE
语句
语法 3 删除表时使用的 DROP TABLE
语句
DROP TABLE <表名>;
如果想要删除 Product
表,只需要像代码清单 3 那样书写 SQL 语句即可 [1]。
代码清单 3 删除 Product
表
DROP TABLE Product;
DROP
在英语中是“丢掉”“舍弃”的意思。需要特别注意的是,删除的表是无法恢复的 [2]。即使是被误删的表,也无法恢复,只能重新创建,然后重新插入数据。
如果不小心删除了重要的业务表,那就太悲剧了。特别是存储了大量数据的表,恢复起来费时费力,请大家务必注意!
法则 12
删除了的表是无法恢复的。
在执行
DROP TABLE
语句之前请务必仔细确认。
ALTER TABLE
语句)有时好不容易把表创建出来之后才发现少了几列,其实这时无需把表删除再重新创建,只需使用变更表定义的 ALTER TABLE
语句就可以了。 ALTER
在英语中就是“改变”的意思。下面就给大家介绍该语句通常的使用方法。
KEYWORD
ALTER TABLE
语句
首先是添加列时使用的语法。
语法 4 添加列的 ALTER TABLE
语句
ALTER TABLE <表名> ADD COLUMN <列的定义>;
特定的 SQL
oracle 和 SQL Server 中不用写
COLUMN
。
ALTER TABLE <表名> ADD <列名> ;
另外,在 Oracle 中同时添加多列的时候,可以像下面这样使用括号。
ALTER TABLE <表名> ADD (<列名>,<列名>,……);
例如,我们可以使用代码清单 4 中的语句在 Product
表中添加这样一列,product_name_pinyin
(商品名称(拼音)),该列可以存储 100 位的可变长字符串。
代码清单 4 添加一列可以存储 100 位的可变长字符串的 product_name_pinyin
列
DB2 PostgreSQL MySQL
ALTER TABLE Product ADD COLUMN product_name_pinyin VARCHAR(100);
Oracle
ALTER TABLE Product ADD (product_name_pinyin VARCHAR2(100));
SQL Server
ALTER TABLE Product ADD product_name_pinyin VARCHAR(100);
反之,删除表中某列使用的语法如下所示。
语法 5 删除列的 ALTER TABLE
语句
ALTER TABLE <表名> DROP COLUMN <列名>;
特定的 SQL
Oracle 中不用写
COLUMN
。
ALTER TABLE <表名> DROP <列名> ;
另外,在 Oracle 中同时删除多列的时候,可以像下面这样使用括号来实现。
ALTER TABLE <表名> DROP (<列名>,<列名>,……);
例如,我们可以使用代码清单 5 中的语句来删除之前添加的 product_name_pinyin
列。
代码清单 5 删除 product_name_pinyin
列
SQL Server DB2 PostgreSQL MySQL
ALTER TABLE Product DROP COLUMN product_name_pinyin;
Oracle
ALTER TABLE Product DROP (product_name_pinyin);
ALTER TABLE
语句和 DROP TABLE
语句一样,执行之后无法恢复。误添的列可以通过 ALTER TABLE
语句删除,或者将表全部删除之后重新再创建。
法则 13
表定义变更之后无法恢复。
在执行
ALTER TABLE
语句之前请务必仔细确认。
Product
表中插入数据最后让我们来尝试一下向表中插入数据。从下一章开始,大家将会使用插入到 Product
表中的数据,来学习如何编写操作数据的 SQL 语句。
向 Product
表中插入数据的 SQL 语句如代码清单 6 所示。
代码清单 6 向 Product
表中插入数据的 SQL 语句
SQL Server PostgreSQL
-- DML :插入数据
BEGIN TRANSACTioN;------------------①
INSERT INTO Product VALUES ("0001", "T恤衫", "衣服", 1000, 500, "2009-09-20");
INSERT INTO Product VALUES ("0002", "打孔器", "办公用品", 500, 320, "2009-09-11");
INSERT INTO Product VALUES ("0003", "运动T恤", "衣服", 4000, 2800, NULL);
INSERT INTO Product VALUES ("0004", "菜刀", "厨房用具", 3000, 2800, "2009-09-20");
INSERT INTO Product VALUES ("0005", "高压锅", "厨房用具", 6800, 5000, "2009-01-15");
INSERT INTO Product VALUES ("0006", "叉子", "厨房用具", 500, NULL, "2009-09-20");
INSERT INTO Product VALUES ("0007", "擦菜板", "厨房用具", 880, 790, "2008-04-28");
INSERT INTO Product VALUES ("0008", "圆珠笔", "办公用品", 100, NULL,"2009-11-11");
COMMIT;
特定的 SQL
DBMS 不同,代码清单 6 中的 DML 语句也略有不同。
在 Mysql 中运行时,需要把 ① 中的
BEGIN TRANSACTION;
改写成
START TRANSACTION;
在 Oracle 和 DB2 中运行时,无需使用 ① 中的
BEGIN TRANSACTION;
(请予以删除)。这些在不同的 DBMS 中使用的 DML 语句,可以从这里下载。
使用插入行的指令语句 INSERT
,就可以把表 2 中的数据都插入到表中了。开头的 BEGIN TRANSACTION
语句是开始插入行的指令语句,结尾的 COMMIT
语句是确定插入行的指令语句。这些指令语句将会在 数据的插入 中详细介绍,大家不必急于记住这些语句。
专栏
表的修改
本节将名为
Product
的表作为例子进行了讲解,估计会有些读者在匆忙中把表名误写成了Poduct
,创建出了名称错误的表,这可怎么办呢?如果还没有向表中插入数据,那么只需要把表删除,再重新创建一个名称正确的表就可以了。可是如果在发现表名错误之前就已经向表中插入了大量数据,再这样做就麻烦了。毕竟插入大量的数据既费时又费力。抑或起初决定好的表名,之后又觉得不好想换掉,这种情况也很麻烦。
其实很多数据库都提供了可以修改表名的指令(
RENAME
)来解决这样的问题。例如,如果想把Poduct
表的名称变为Product
,可以使用代码清单 A 中的指令。KEYWORD
RENAME
代码清单 A 变更表名
Oracle PostgreSQL
ALTER TABLE Poduct RENAME TO Product;
DB2
RENAME TABLE Poduct TO Product;
SQL Server
sp_rename "Poduct", "Product";
MySQL
RENAME TABLE Poduct to Product;
通常在
RENAME
之后按照 <变更前的名称>、<变更后的名称> 的顺序来指定表的名称。各个数据库的语法都不尽相同,是因为标准 SQL 并没有
RENAME
,于是各个数据库便使用了各自惯用的语法。如上所述,在创建了错误的表名,或者想要保存表的备份时,使用这些语句非常方便。但美中不足的是,由于各个数据库的语法不同,很难一下子想出恰当的指令。这时大家就可以来参考本专栏。
(完)
随后还需使用 Product
表来学习相关知识,请不要删除 Product
表。如果已经删除,请重新创建 Product
表。 ↩︎
其实很多 RDBMS 都预留了恢复的功能,但还是请大家认为是无法恢复的。 ↩︎
--结束END--
本文标题: SQL 表的删除(DROP TABLE)和更新(ALTER TABLE)
本文链接: https://www.lsjlt.com/news/8857.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-07
2024-05-07
2024-05-07
2024-05-07
2024-05-07
2024-05-07
2024-05-07
2024-05-07
2024-05-07
2024-05-07
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0