<SQL>《SQL命令(含例句)精心整理版(4)》
《SQL命令(含例句)精心整理版(4)》
- 14 数据库对象
- 14.1 表
- 14.2 视图
- 14.3 存储过程
- 14.3.1 概念
- 14.3.2 创建存储过程
- 14.3.2 调用存储过程
- 14.3.3 DbVisualizer工具中调用方法
- 14.3.3 DB2命令行脚本调用方法
- 14.3.4 DB2中两个存储过程报错.
- 15 事务处理
- 15.1 RANSACTION
- 15.2 ROLLBACK
- 15.3 COMMIT
- 15.4 保留点SAVEPOINT
14 数据库对象
14.1 表
1、创建表
CREATE TABLE OrderItems(order_num INTEGER NOT NULL,Order_date DATETIME NOT NULL,Cust_id CHAR(10) NOT NULL,Quantity INTEGER NOT NULL DAFAULT 1, -------指定默认值)
2、更新表
ALTER TABLE Vendors ADD vend_phone CHAR(20) -------给Vendors表增加一个名为vend_phone的列,数据类型为CHAR
3、删除表
DROP TABLE CustCopy
4、重命名表
DB2/MariaDB/MySQL/Oracle/PostgreSQL
RENAME TABLE DB2INST1.TBL_BANKCODE20170822 TO TBL_BANKCODE<注意1>重命名表时,源表不能在任何现有定义(视图或具体化查询表)、触发器、SQL函数或约束中引用。它也不能具有任何生成列(标识列除外),或者不能是父表或从属表。目录条目更新以反映新表名。
<注意2>后面的表不能加schame。
SQL Server
sp_rename存储过程
SQLite
ALTER TABLE语句
14.2 视图
1、创建视图
CREATE VIEW ProductCustomers ASSELECT cust_name,cust_contact,prod_idFROM Customers,Orders,OrderItemsWHERE Customers.cust_id=Orders.cust_idAND OrderItems.order_num=Orders.order_num;
2、视图和表一样,必须唯一名。
14.3 存储过程
14.3.1 概念
定义 | 说明 |
---|---|
定义 | 存储过程就是为以后使用而保存的一条或多条SQL语句。 |
说明 | 可将存储过程视为批文件,但作用不仅限于批处理。 |
说明 | 存储过程的优缺点 优点 1-将处理封装在简易单元可以简化复杂的操作。 2-不用要求反复建立一系列的处理步骤,保证了数据的一致性。开发人员使用同一存储过程,则能保证代码的一致性,防止错误。 3-简化对变动的管理。即如果表名、列名等有变化,只需要更改存储过程的代码。 4-存储过程以编译过的形式存储,可以是DBMS 处理命令所需的工作量少,提高性能。 缺点 1-不同DBMS存储过程语法有所不同,编写真正可移至的存储过程几乎是不可能的。不过,存储过程的自我调用(名字以及数据如何传递)可以相对保持可移植。如果需要移植到别的DBMS,至少客户端应用代码不需要移动。 2-编写存储过程比编写SQL语句复杂,需要更高的技能和更丰富的经验。 |
14.3.2 创建存储过程
CREATE OR REPLACE PROCEDURE "WHJH"."PR_UPDATE_LAST_STATE" ( )BEGIN --6、开始CALL WHJH.PRO_LOG('PR_HANDLE_CHECK_RESULT',1,9,'更新错误/疑问正式表中的“最终数据状态”');--单位基本情况信息表CALL WHJH.PRO_LOG('PR_HANDLE_CHECK_RESULT',1,91,'更新单位表错误/疑问正式表中的“最终数据状态”');UPDATE WHJH.TBL_BIZCHECK_CUSTINFO_DOU_OFF T SET (LAST_STATE,DEALDATE,DEALTYPE) = (SELECT LAST_STATE,CURRENT DATE,'A' FROM WHJH.TBL_LAST_STATE_TMP A WHERE T.CUSTCODE = A.DATANO fetch first 1 rows only)where exists(SELECT 1 FROM WHJH.TBL_LAST_STATE_TMP A WHERE T.CUSTCODE = A.DATANO);commit;END;
14.3.2 调用存储过程
CALL WHJH.PRO_LOG('PR_HANDLE_CHECK_RESULT',1,9,'更新错误/疑问正式表中的“最终数据状态”');
14.3.3 DbVisualizer工具中调用方法
说明:在工具中直接执行存储过程。
格式:
--/ 存储过程
/
注意:
1 END后面不能加;符号
2 CREATE OR REPLACE PROCEDURE “WHJH”.“PR_PER_TIMELESS” ( ) 要去掉OR REPLACE
3 备份旧的存储过程
4 删除旧的存储过程后再执行建立新的存储过程
5 存储过程:stored Procedures
6 存储过程分段只能用脚本执行
14.3.3 DB2命令行脚本调用方法
db2 -td@ -vf 1.sql
注意:
1 sql的执行,需要连接上数据库,每个存储过程上放@隔开。
2 分段的存储过程可以执行。例:P2:BEGIN
14.3.4 DB2中两个存储过程报错.
报错1:缺少权限。缺少方法的权限。
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0440N No authorized routine named "FN_USDREATE" of type "FUNCTION" having
compatible arguments was found. LINE NUMBER=109. SQLSTATE=42884
报错2:要创建的存储过程已存在,再次执行时报错。
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0454N The signature provided in the definition for routine
"TYCJ.SP_DIS_CFA" matches the signature of some other routine that already
exists in the schema or module. LINE NUMBER=12. SQLSTATE=42723
15 事务处理
15.1 RANSACTION
定义:
事务(transaction)指一组SQL语句;
事务处理(transaction processing)用来管理必须成批执行的SQL操作,保证数据库不包含不完整的操作结果。
示例:
数据库 | 格式 |
---|---|
SQL Server | BEGIN TRANSACTION … COMMIT TRANSACTION |
MariaDB 和 MySQL | START TRANSACTION … |
Oracle | SET TRANSACTION … |
PostgreSQL | BEGIN … |
15.2 ROLLBACK
定义:回退(rollback)指撤销指定SQL语句的过程;
说明:事务处理用来管理INSERT/UPDATE/DELETE语句,不能回退SELECT语句,也不能回退CREATE或DROP操作。
示例:
DELETE FROM Orders;
ROLLBACK;
15.3 COMMIT
定义:提交(commit)指未将存储的SQL语句结果写入数据库表;
说明:一般SQL语句都是针对数据库表直接执行和编写的,是隐式提交(implicit commit),即提交操作时自动进行的。
说明:事务处理块中,提交不会隐式进行必须使用COMMIT进行明确的提交。
示例:
数据库 | 格式 |
---|---|
SQL Server | BEGIN TRANSACTION DELETE OrderItems WHERE order_num=12345 DELETE Order WHERE order_num=12345 COMMIT TRANSACTION |
Oracle | SET TRANSACTION DELETE OrderItems WHERE order_num=12345 DELETE Order WHERE order_num=12345 COMMIT |
15.4 保留点SAVEPOINT
定义:保留点(SAVEPOINT)指事务处理中设置的临时占位符(placeholder),可以对他发布回退(与回退整个事务处理不同)。
说明:又称为占位符。
示例:创建保留点(占位符)delete1
1、SQL Server
创建
SAVE TRANSACTION delete1
回滚
ROLLBACK TRANSACTION delete1
完整
BEGIN TRANSACTIONINSERT INTO Customers(cust_id,cust_name) VALUES('1000000010','Toys Emporium');SAVE TRANSACTION StartOrder;INSERT INTO Orders(order_num,order_date,cust_id) VALUES(20100,'2001/12/1','1000000010');IF @@ERROR <> 0 ROLLBACK TRANSACTION StartOrder;INSERT INTO OrderItems(order_num,order_item,prod_id,quantity,item_price) VALUES(20100,1,'BR01',100,5.49);IF @@ERROR <> 0 ROLLBACK TRANSACTION StartOrder;INSERT INTO OrderItems(order_num,order_item,prod_id,quantity,item_price) VALUES(20100,2,'BR03',100,10.99);IF @@ERROR <> 0 ROLLBACK TRANSACTION StartOrder;COMMIT TRANSACTION
2、MariaDB、MySQL和Oracle
创建
SACEPOINT delete1
回滚
ROLLBACK TO delete1
相关文章:
<SQL>《SQL命令(含例句)精心整理版(4)》
《SQL命令(含例句)精心整理版(4)》 14 数据库对象14.1 表14.2 视图14.3 存储过程14.3.1 概念14.3.2 创建存储过程14.3.2 调用存储过程14.3.3 DbVisualizer工具中调用方法14.3.3 DB2命令行脚本调用方法14.3.4 DB2中两个存储过程报错…...
C++死锁
死锁是指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的状态称为死锁。 死锁通常发生…...

[自学记录02|百人计划]纹理压缩
一、什么是纹理压缩 纹理压缩是为了解决内存、带宽问题,专为在计算机图形渲染系统中存储纹理而使用的图像压缩技术。 1.图片格式和纹理格式的区别 (1)图片格式 图片格式是图片文件的存储格式,通常在磁盘、内存中储存和传输文件时使用;例如…...

C++泛型编程之模板
目录 一、什么是泛型编程 二、函数模板 2.1函数模板的概念 2.2函数模板格式 2.3函数模板的原理 2.5函数模板的实例化 2.6模板参数的匹配原则 三、类模板 3.1类模板的定义格式 3.2 类模板的实例化 四、非类型模板参数 五、模板的特化 5.1模板特化的概念:…...

极氪汽车 APP 系统云原生架构转型实践
作者:极氪汽车 前言 新能源汽车已经成为我国汽车市场再次崛起的关键支柱,随着新能源汽车市场的快速发展,不同类型的品牌造车厂商呈现出百花齐放的态势。极氪汽车是吉利控股集团旗下高端纯电汽车新品牌,2021 年 4 月极氪发布首款…...
一个UDP下载服务器的实现(模拟下载文件)
本期分享的主要是使用UDP实现文件下载功能,需要自己编写服务器和客户端,实现的功能主要有以下几个: (1)服务器可以为请求的用户下发文件数据(前提是服务器得有这个数据文件) (2&…...
01.hadoop上课笔记之hadoop介绍
1.大数据介绍 可以对未来数据预测 google通过搜索预测流感,足球球员有一 定关联…caict可以得到数据hbase hive林子雨mooc数据要进行挖掘(推断更多信息) 2.大数据是非结构化数据多:声音,图片… 3.大数据影响因素 大多快低 tb pb eb zb 1.硬件 2.网络带宽 4.大数据的特征 数据量…...

小鹏汽车Q1财报:押注G6、大力降本,明年智驾BOM降半
作者 | 德新编辑 | 王博 小鹏汽车本周发了Q1财报,数据不好看,以致于在微博端也发了公开信。 那后续呢? 小鹏第二季度指引是,总交付数量约为2.1 - 2.2万辆,收入预计约为45 - 47亿元;四季度,…...

VMware ESXi 8.0U1a 发布 - 领先的裸机 Hypervisor
VMware ESXi 8.0U1a 发布 - 领先的裸机 Hypervisor 请访问原文链接:https://sysin.org/blog/vmware-esxi-8-u1/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 2023-06-01, VMware vSphere 8.0U1a 发布。 详见&am…...
Unity的IPreprocessBuild:深入解析与实用案例
Unity IPreprocessBuild Unity IPreprocessBuild是Unity引擎中的一个非常有用的功能,它可以让开发者在构建项目时自动执行一些操作。这个功能可以帮助开发者提高工作效率,减少手动操作的时间和错误率。在本文中我们将介绍Unity IPreprocessBuild的使用方…...

htmlCSS-----CSS选择器(下)
目录 前言: 2.高级选择器 (1)子代选择器 (2)伪类选择器 (3)后代选择器 (4)兄弟选择器 相邻兄弟选择器 通用兄弟选择器 (5)并集选择器 &am…...

RDK X3 Module发布,全新软硬件平台加速实现量产级产品落地
机器人开发是一段美妙的旅程。GEEKROS创始人杨状状是地平线社区的一名开发者,热衷于鼓捣各类机器人,2022年,状状第一时间就拿到了地平线旭日X3派(简称旭日X3派),基于TogetheROS™.Bot机器人操作系统&#x…...
【面试实战】Redis缓存设计
文章目录 Redis缓存出现的问题🙎♂️面试官:什么是缓存雪崩?🙎♂️面试官:怎样解决缓存雪崩?🙎♂️面试官:什么是缓存击穿?🙎♂️面试官:怎样解决缓存击穿?🙎♂️面试官:什么是缓存穿透?🙎♂️面试官:怎样解决缓存穿透?🙎♂️面试官:…...
如何解决js定时器不准确问题
为什么会出现定时器不准确呢? 这个其实就得提到js执行机制了,叫做事件循环Eventloop 循环机制中,异步事件 setInterval 到时后会把回调函数放入消息队列中Event Queue,主线程的宏任务执行完毕后依次执行消息队列的微任务ÿ…...

学习笔记——vue中使用el-dropdown组件报错
今天在工作中,发现使用el-select做的下拉框,下拉菜单展开后,鼠标点击下拉框之外的区域时,下拉菜单没有收起。然后,我打开控制台,发现了这个错误。 Uncaught TypeError: Cannot read properties of null (re…...
Java之旅(八)
Java 条件运算符 Java 条件运算符用于根据一个条件表达式的布尔值来决定程序执行的流程。条件运算符有三种类型:if、else 和 switch。 if 语句的一般格式如下: if (condition) {// 条件为 true 执行的代码块 } 其中,condition 是一个 bool…...
华为OD机试真题(Java),四则运算(100%通过+复盘思路)
一、题目描述 输入一个表达式(用字符串表示),求这个表达式的值。 保证字符串中的有效字符包括[‘0’-‘9’],‘+’,‘-’, ‘*’,‘/’ ,‘(’, ‘)’,‘[’, ‘]’,‘{’ ,‘}’。且表达式一定合法。 数据范围:表达式计算结果和过程中满足∣val∣≤1000 ,字符串长度满…...

HTML表单标签form分析
说明:在html的标签中,表单标签与后台联系密切,像用户登录、注册,都是用到页面的表单标签,用户将信息填入到表单中,提交到后端业务中校验处理,再将结果反馈给前端页面。 表单内的标签分别有&…...
Qt 项目文件Pri详解
在Qt项目中,pri文件(.pri)是一种类似于makefile的文件,用于定义Qt项目中的编译规则。通常可以用pri文件来配置Qt库、头文件、源文件、链接库等信息,这样可以把这些信息定义在一个文件中,避免在每个工程中都进行重复配置࿰…...

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)
用STCubeIDE进行标准库开发 1、CubeIDE介绍 https://www.stmcu.com.cn/ecosystem/Cube/STM32CubeIDE 2、CubeIDE下载 点击上面的链接,登录即可下载 3、搭建Demo工程 新建一个工作空间 创建一个工程 选择芯片-STM32F103C8T6 填写工程信息 添加标准库到工程 标…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...