SQL:其他操作

1 INSERT 插入操作

INSERT用来将行插入(或添加)到数据库表。插入有几种方式:

插入完整的行;

插入行的一部分;

插入某些查询的结果。

1.1 插入完整的行

存储到表中每一列的数据在VALUES子句中给出,必须给每一列提供一个值。

如果某列没有值,则应该使 用NULL值(假定表允许对该列指定空值)。

各列必须以它们在表定义中出现的次序填充。

未指定列名:INSERT INTO employees VALUES (1,'李四',30), (2,'王五',28);

提供了列名,VALUES必须以其指定的次序匹配指定的列名,不一定按各列出现在表中的实际次序。其优点是,即使表的结构改变,这 条INSERT语句仍然能正确工作。

指定列名:INSERT INTO employees (name, age) VALUES ('张三', 25);

1.2 插入部分行

使用INSERT的推荐方法是明确给出表的列名。使用这种语法,还可以省略列,这表示可以只给某些列提供值,给其他列不提供值。

如果表的定义允许,则可以在INSERT操作中省略某些列。省略的列必须满足以下某个条件。

该列定义为允许NULL值(无值或空值)。

在表定义中给出默认值。这表示如果不给出值,将使用默认值。

如果对表中不允许NULL值且没有默认值的列不给出值,DBMS将产生错误消息,并且相应的行插入不成功。

1.3 插入检索出的数据

INSERT还存在另一种形式,可以利用它将SELECT语句的结果插入表中,这就是所谓的INSERT SELECT。

顾名思义,它是由一条INSERT语句和一条SELECT语句组成的。

示例

假如想把另一表中的顾客列合并到Customers表中。不需要每次读取一行再将它用INSERT插入,可以如下进行:

INSERT INTO Customers(cust_id,

                      cust_contact,

                      cust_email,

                      cust_name,

                      cust_address,

                      cust_city,

                      cust_state,

                      cust_zip,

                      cust_country)

SELECT cust_id,

        cust_contact,

        cust_email,

        cust_name,

        cust_address,

        cust_city,

        cust_state,

        cust_zip,

        cust_country

FROM CustNew;

为简单起见,这个例子在INSERT和SELECT语句中使用了相同的列名。但是,不一定要求列名匹配。

1.4 从一个表复制到另一个表

有一种数据插入不使用INSERT语句。要将一个表的内容复制到一个全 新的表(运行中创建的表),可以使用SELECT INTO语句。

INSERT SELECT与SELECT INTO它们之间的一个重要差别是前者导出数据,而后者导入数据。

/*

创建一个名为CustCopy的新表,并把Customers表的整个内容复制到新表中。

因为这里使用的是SELECT *,所以将在CustCopy表中创建(并填充)与Customers表的每一列相同的列。

要想只复制部分的列,可以明确给出列名,而不是使用*通配符。

*/

SELECT *

INTO CustCopy

FROM Customers;

/* MariaDB、MySQL、Oracle、PostgreSQL和SQLite使用的语法*/

CREATE TABLE CustCopy AS

SELECT * FROM Customers;

2 UPDATE 更新操作

更新(修改)表中的数据,可以使用UPDATE语句。有两种使用UPDATE 的方式:

更新表中的特定行;

更新表中的所有行

‼️ 不要省略WHERE子句,如果没有,将更新所有行

基本的UPDATE语句由三部分组成UPDTATE 表名 SET 新值 WHERE 筛选条件,分别是:

要更新的表;

列名和它们的新值;

确定要更新哪些行的过滤条件。

更新所有行:UPDATE products SET price = price * 1.1;

条件更新:UPDATE orders SET status = 'shipped' WHERE id = 1001;

UPDATE可以采用子查询:使得能用SELECT语句检索出的数据更新列数据。

3 DELETE 删除操作

从一个表中删除(去掉)数据,使用DELETE语句。有两种使用DELETE 的方式:

从表中删除特定的行;

从表中删除所有行。

‼️ 不要省略WHERE子句,如果没有,将删除所有行

删除所有数据:DELETE FROM logs;(慎用!)

条件删除:DELETE FROM users WHERE last_login < '2020-01-01';

注意点:

DELETE不需要列名或通配符。

DELETE删除整行而不是删除列。要删除指定的列,请使用UPDATE语句。

DELETE语句从表中删除行,甚至是删除表中所有行。但是,DELETE不删除表本身。



我是文熠,一个正在找工作的95后算法工程师

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容