<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 填写工程信息 添加标准库到工程 标…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...