河南城源建设工程有限公司网站,手机回收网站开发,怎么开公众号,后台查看网站容量《SQL命令#xff08;含例句#xff09;精心整理版#xff08;4#xff09;》 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中两个存储过程报错… 《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 RANSACTION15.2 ROLLBACK15.3 COMMIT15.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 CHAR20 -------给Vendors表增加一个名为vend_phone的列数据类型为CHAR3、删除表
DROP TABLE CustCopy4、重命名表
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_idOrders.cust_idAND OrderItems.order_numOrders.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 NUMBER109. SQLSTATE42884报错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 NUMBER12. SQLSTATE4272315 事务处理
15.1 RANSACTION
定义 事务transaction指一组SQL语句 事务处理transaction processing用来管理必须成批执行的SQL操作保证数据库不包含不完整的操作结果。 示例
数据库格式SQL ServerBEGIN TRANSACTION … COMMIT TRANSACTIONMariaDB 和 MySQLSTART TRANSACTION …OracleSET TRANSACTION …PostgreSQLBEGIN …
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 ServerBEGIN TRANSACTION DELETE OrderItems WHERE order_num12345 DELETE Order WHERE order_num12345 COMMIT TRANSACTIONOracleSET TRANSACTION DELETE OrderItems WHERE order_num12345 DELETE Order WHERE order_num12345 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 TRANSACTION2、MariaDB、MySQL和Oracle 创建
SACEPOINT delete1回滚
ROLLBACK TO delete1