PostgreSQL修炼之道:从小工到专家. 3.5 其他SQL语句

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介:

3.5 其他SQL语句

3.5.1 INSERT INTO... SELECT语句

使用INSERT INTO... SELECT语句可以把数据从一张表插入到另一张表中,这个语句属于DML语句。

假设建了一张学生表的备份表:student_bak

CREATE TABLE student_bak(no int primary key, student_name varchar(40), age int, class_no int);

可以使用下面的语句把数据备份到下面这张备份表中:

INSERT INTO student_bak SELECT * FROM student;

实际演示如下:

osdba=# INSERT INTO student_bak SELECT * FROM student;

INSERT 0 8

osdba=# SELECT * FROM student_bak;

 no | student_name | age | class_no

----+--------------+-----+----------

  1 | 张三          |  14 |        1

  2 | 吴二          |  15 |        1

  3 | 李四          |  13 |        2

  4 | 吴三          |  15 |        2

  5 | 王二          |  15 |        3

  6 | 李三          |  14 |        3

  7 | 吴二          |  15 |        4

  8 | 张四          |  14 |        4

(8 rows)

3.5.2 UNION语句

可以将从两张表查询出来的数据整合在一个结果集下,如:

SELECT * FROM student WHERE no = 1 UNION SELECT * FROM student_bak where no = 2;

这里的语法比较简单,把两个SQL用“UNION”关键字连接起来就可以了。

结果如下:

osdba=# SELECT * FROM student WHERE no = 1 UNION SELECT * FROM student_bak where no = 2;

 no | student_name | age | class_no

----+--------------+-----+----------

  1 | 张三          |  14 |        1

  2 | 吴二          |  15 |        1

(2 rows)

注意,UNION可以把结果集中相同的两条记录合并成一条:

osdba=# SELECT * FROM student WHERE no = 1 UNION SELECT * FROM student_bak where no = 1;

 no | student_name | age | class_no

----+--------------+-----+----------

  1 | 张三          |  14 |        1

(1 row)

如果不想合并,请使用UNION ALL,如下:

osdba=# SELECT * FROM student WHERE no = 1 UNION ALL SELECT * FROM student_bak where no = 1;

 no | student_name | age | class_no

----+--------------+-----+----------

  1 | 张三          |  14 |        1

  1 | 张三          |  14 |        1

(2 rows)

3.5.3 TRUNCATE TABLE语句

TRUNCATE TABLE语句的用途是清空表内容。不带WHERE条件子句的DELETE 语句也表示清空表的内容。从执行结果看,两者实现了相同的功能,但两者实现的原理是不一样的。

TRUNCATE TABLE是DDL语句,即数据定义语句,相当于用重新定义一个新表的方法把原先表的内容直接丢弃了,所以TRUNCATE TABLE执行起来很快,而DELETE 是DML语句,可以认为DELETE 是把数据一条一条地删除,若要删除很多行数据,就会比较慢。

如果想把表student_bak中的数据清理掉,则可以使用如下命令:

TRUNCATE TABLE student_bak;

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
4月前
|
存储 SQL 关系型数据库
PolarDB这个sql行存和列存性能差别好大 ,为什么?
PolarDB这个sql行存和列存性能差别好大 ,为什么?
33 0
|
1月前
|
SQL 关系型数据库 分布式数据库
在PolarDB中,如果慢SQL导致了CPU升高,进而又产生了更多的慢SQL
【2月更文挑战第22天】在PolarDB中,如果慢SQL导致了CPU升高,进而又产生了更多的慢SQL
13 1
|
2月前
|
SQL 算法 JavaScript
【数据库SQL server】关系型数据库的基本知识
【数据库SQL server】关系型数据库的基本知识
150 0
|
4月前
|
SQL 关系型数据库 C语言
PostgreSQL【应用 03】Docker部署的PostgreSQL扩展SQL之C语言函数(编写、编译、载入)计算向量余弦距离实例分享
PostgreSQL【应用 03】Docker部署的PostgreSQL扩展SQL之C语言函数(编写、编译、载入)计算向量余弦距离实例分享
45 0
|
4月前
|
SQL 关系型数据库 数据库
PostgreSQL【应用 02】扩展SQL之C语言函数(编写、编译、载入)实例分享
PostgreSQL【应用 02】扩展SQL之C语言函数(编写、编译、载入)实例分享
49 0
|
4月前
|
SQL 关系型数据库 MySQL
MySQL【实践 02】MySQL迁移到PostgreSQL数据库的语法调整说明及脚本分享(通过bat命令修改mapper文件内的SQL语法)
MySQL【实践 02】MySQL迁移到PostgreSQL数据库的语法调整说明及脚本分享(通过bat命令修改mapper文件内的SQL语法)
113 0
|
4月前
|
SQL 关系型数据库 PostgreSQL
PostgreSQL【SQL 01】根据条件更新字段值或追加信息STRPOS(string, substring)函数使用及LIKE函数对比
PostgreSQL【SQL 01】根据条件更新字段值或追加信息STRPOS(string, substring)函数使用及LIKE函数对比
56 0
|
4月前
|
SQL 关系型数据库 PostgreSQL
PostgreSQL【部署 01】离线安装PostgreSQL+PostGIS踩坑及问题解决经验分享(含安装文件PostgreSQL+PostGIS及多个依赖+测试SQL)
PostgreSQL【部署 01】离线安装PostgreSQL+PostGIS踩坑及问题解决经验分享(含安装文件PostgreSQL+PostGIS及多个依赖+测试SQL)
118 0
|
15天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
52 10
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改