首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

常用 SQL 语句大全[通俗易懂]

—语 句 功 能 —数据操作 SELECT —从数据库表中检索数据行和列 INSERT —向数据库表添加新数据行 DELETE —从数据库表中删除数据行 UPDATE —更新数据库表中的数据 —数据定义 CREATE TABLE —创建一个数据库表 DROP TABLE —从数据库中删除表 ALTER TABLE —修改数据库表结构 CREATE VIEW —创建一个视图 DROP VIEW —从数据库中删除视图 CREATE INDEX —为数据库表创建一个索引 DROP INDEX —从数据库中删除索引 CREATE PROCEDURE —创建一个存储过程 DROP PROCEDURE —从数据库中删除存储过程 CREATE TRIGGER —创建一个触发器 DROP TRIGGER —从数据库中删除触发器 CREATE SCHEMA —向数据库添加一个新模式 DROP SCHEMA —从数据库中删除一个模式 CREATE DOMAIN —创建一个数据值域 ALTER DOMAIN —改变域定义 DROP DOMAIN —从数据库中删除一个域 —数据控制 GRANT —授予用户访问权限 DENY —拒绝用户访问 REVOKE —解除用户访问权限 —事务控制 COMMIT —结束当前事务 ROLLBACK —中止当前事务 SET TRANSACTION —定义当前事务数据访问特征 —程序化SQL DECLARE —为查询设定游标 EXPLAN —为查询描述数据访问计划 OPEN —检索查询结果打开一个游标 FETCH —检索一行查询结果 CLOSE —关闭游标 PREPARE —为动态执行准备SQL 语句 EXECUTE —动态地执行SQL 语句 DESCRIBE —描述准备好的查询 —局部变量 declare @id char(10) –set @id = ‘10010001’ select @id = ‘10010001’

01

OushuDB-PL 过程语言-PL/pgSQL - SQL过程语言

OushuDB兼容PostgreSQL,允许使用除了 SQL 和 C 之外的其他语言编写用户定义的函数。这些其他的 语言通常被称作过程语言(Procedural Language, PL)。对于一个用过程语言编写的函数,数据库服务 器没有关于如何解释该函数的源文本的内建知识。因此,这个任务被交给一个了解语言细节的特殊处理 器。该处理器能够自己处理所有的解析、语法分析、执行工作,或者它可以作为一种PostgreSQL和编程 语言既有实现之间的“粘合剂”。就像任何其他 C 函数一样,处理器本身是一个编译到共享对象并且按需 载入的 C 语言函数。 在OushuDB的标准发布中当前有四种过程语言可用: PL/pgSQL、 PL/Perl、 PL/Python以及 PL/Java, 其中PL/pgSQL是默认安装可用的。 另外还有其他过程语言可用,但是它们没有被包括在核心发布中, 如PL/R等,我们可以在第三方开源网站来获取它们的源码。 接下来我们主要看一下 PL/pgSQL - SQL过程语言。 PL/pgSQL - SQL过程语言 PL/pgSQL 是 PostgreSQL 数据库系统的一个可加载的过程语言,它的设计目标是创建一种可加载的过 程语言,可以: 用于创建函数和触发器过程 为 SQL 语言增加控制结构 执行复杂的计算 继承所有用户定义类型、函数、操作符 定义为被服务器信任的语言 容易使用 除了用于用户定义类型的输入/输出转换和计算函数以外,任何可以在 C 语言函数里定义的东西都可以在 PL/pgSQL 里使用。比如,可以创建复杂的条件计算函数,并随后将之用于定义操作符或者用于函数索 引中。 一、概述: PL/pgSQL函数在第一次被调用时,其函数内的源代码(文本)将被解析为二进制指令树,但是函数内的表 达式和SQL命令只有在首次用到它们的时候,PL/pgSQL解释器才会为其创建一个准备好的执行规划,随 后对该表达式或SQL命令的访问都将使用该规划。如果在一个条件语句中,有部分SQL命令或表达式没 有被用到,那么PL/pgSQL解释器在本次调用中将不会为其准备执行规划,这样的好处是可以有效地减少 为PL/pgSQL函数里的语句生成分析和执行规划的总时间,然而缺点是某些表达式或SQL命令中的错误只 有在其被执行到的时候才能发现。 由于PL/pgSQL在函数里为一个命令制定了执行计划,那么在本次会话中该计划将会被反复使用,这样做 往往可以得到更好的性能,但是如果你动态修改了相关的数据库对象,那么就有可能产生问题,如:

01

批量 SQL 之 FORALL 语句

对PL/SQL而言,任何的PL/SQL块或者子程序都是PL/SQL引擎来处理,而其中包含的SQL语句则由PL/SQL引擎发送SQL语句转交到SQL引擎来处 理,SQL引擎处理完毕后向PL/SQL引擎返回数据。Pl/SQL与SQL引擎之间的通信则称之为上下文切换。过多的上下文切换将带来过量的性能负载。 因此为减少性能的FORALL与BULK COLLECT的子句应运而生。即仅仅使用一次切换多次执行来降低上下文切换次数。本文主要描述FORALL子句。 一、FORALL语法描述     FORALL loop_counter IN bounds_clause            -->注意FORALL块内不需要使用loop, end loop     SQL_STATEMENT [SAVE EXCEPTIONS];     bounds_clause的形式     lower_limit .. upper_limit                                     -->指明循环计数器的上限和下限,与for循环类似     INDICES OF collection_name BETWEEN lower_limit .. upper_limit  -->引用特定集合元素的下标(该集合可能为稀疏)     VALUES OF colletion_name                                       -->引用特定集合元素的值     SQL_STATEMENT部分:SQL_STATEMENT部分必须是一个或者多个集合的静态或者动态的DML(insert,update,delete)语句。     SAVE EXCEPTIONS部分:对于SQL_STATEMENT部分导致的异常使用SAVE EXCEPTIONS来保证异常存在时语句仍然能够继续执行。 二、使用 FORALL 代替 FOR 循环提高性能

02
领券