Module 06 · Bonus Module: Advanced SQL for Data Engineers
SQL Cheat Sheet: Views, Stored Procedures and TransactionsSQL 速查表:视图、存储过程和事务
Views 视图
| Topic 主题 | Syntax 语法 | Description 描述 | Example 示例 |
|---|---|---|---|
| Create View 创建视图 | CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition; |
A CREATE VIEW is an alternative way of representing data that exists in one or more tables.视图( CREATE VIEW )是表示存在于一个或多个表中的数据的一种替代方法。 |
CREATE VIEW EMPSALARY AS SELECT EMP_ID, F_NAME, L_NAME, B_DATE, SEX, SALARY FROM EMPLOYEES; |
| Update a View 更新视图 | CREATE OR REPLACE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition; |
The CREATE OR REPLACE VIEW command updates a view.CREATE OR REPLACE VIEW 命令用于更新视图。 |
CREATE OR REPLACE VIEW EMPSALARY AS SELECT EMP_ID, F_NAME, L_NAME, B_DATE, SEX, JOB_TITLE, MIN_SALARY, MAX_SALARY FROM EMPLOYEES, JOBS WHERE EMPLOYEES.JOB_ID = JOBS.JOB_IDENT; |
| Drop a View 删除视图 | DROP VIEW view_name; |
Use the DROP VIEW statement to remove a view from the database.使用 DROP VIEW 语句从数据库中删除视图。 |
DROP VIEW EMPSALARY; |
Stored Procedures in IBM Db2 using SQL IBM Db2 中使用 SQL 的存储过程
| Topic 主题 | Syntax 语法 | Description 描述 | Example 示例 |
|---|---|---|---|
| Stored Procedures 存储过程 | --#SET TERMINATOR @ CREATE PROCEDURE PROCEDURE_NAMELANGUAGEBEGINEND@ |
A stored procedure is a prepared SQL code that you can save, so the code can be reused over and over again.一个 stored procedure 是一段预编译的 SQL 代码,可以保存下来,以便反复使用。The default terminator for a stored procedure is semicolon(;). To set a different terminator we use SET TERMINATOR clause followed by the terminator such as ‘@’.存储过程的默认终止符是分号(;)。要设置不同的终止符,我们使用 SET TERMINATOR 子句,后跟终止符,例如“@”。 |
--#SET TERMINATOR @ CREATE PROCEDURE RETRIEVE_ALLLANGUAGE SQLREADS SQL DATADYNAMIC RESULT SETS 1BEGINDECLARE C1 CURSORWITH RETURN FORSELECT * FROM PETSALE;OPEN C1;END@ |
Stored Procedures in MySQL using phpMyAdmin 使用 phpMyAdmin 的 MySQL 存储过程
| Topic 主题 | Syntax 语法 | Description 描述 | Example 示例 |
|---|---|---|---|
| Stored Procedures 存储过程 | DELIMITER //CREATE PROCEDURE PROCEDURE_NAMEBEGINEND //DELIMITER ; |
A stored procedure is a prepared SQL code that you can save, so the code can be reused over and over again.一个 stored procedure 是一段预编译的 SQL 代码,可以保存下来,以便反复使用。The default terminator for a stored procedure is semicolon (;). To set a different terminator we use DELIMITER clause followed by the terminator such as 或 //。 |
DELIMITER //CREATE PROCEDURE RETRIEVE_ALL()BEGINSELECT * FROM PETSALE;END //DELIMITER ; |
Transactions with Db2 与 Db2 的交易
| Topic 主题 | Syntax 语法 | Description 描述 | Example 示例 |
|---|---|---|---|
| Commit command 提交命令 | COMMIT; |
A COMMIT command is used to persist the changes in the database.一个 COMMIT command 用于持久化数据库中的更改。The default terminator for a COMMIT command is semicolon (;). COMMIT 命令的默认终止符是分号(;)。 |
CREATE TABLE employee(ID INT, Name VARCHAR(20), City VARCHAR(20), Salary INT, Age INT);INSERT INTO employee( ID, Name, City, Salary, Age) VALUES( 1, ‘Priyanka pal’, ‘Nasik’, 36000, 21), (2, ‘Riya chowdary’, ‘Bangalor’, 82000, 29);SELECT *FROM employee;COMMIT; |
| Rollback command 回滚命令 | ROLLBACK; |
A ROLLBACK command is used to rollback the transactions which are not saved in the database.一个 ROLLBACK command 用于回滚未保存到数据库中的事务。The default terminator for a ROLLBACK command is semicolon (;). ROLLBACK 命令的默认终止符是分号(;)。 |
As auto-commit is enabled by default, all transactions will be committed. We need to disable this option to see how rollback works.For db2, we have to disable auto-commit manually. Click the gear icon located on the right side of the SQL Assistant window. Next, select the “On Success” drop-down and choose “commit after the last statement in the script” Remember to save your changes!![]() INSERT INTO employee VALUES (3, ‘Swetha Tiwari’, ‘Kanpur’, 38000, 38);SELECT *FROM employee;ROLLBACK;SELECT *FROM employee; |
Transactions with MySQL 与 MySQL 的交易
| Topic 主题 | Syntax 语法 | Description 描述 | Example 示例 |
|---|---|---|---|
| Commit command 提交命令 | COMMIT; |
A COMMIT command is used to persist the changes in the database.A COMMIT command 用于在数据库中持久化更改。The default terminator for a COMMIT command is semicolon (;). COMMIT 命令的默认终止符是分号(;)。 |
CREATE TABLE employee(ID INT, Name VARCHAR(20), City VARCHAR(20), Salary INT, Age INT);START TRANSACTION;INSERT INTO employee( ID, Name, City, Salary, Age) VALUES( 1, ‘Priyanka pal’, ‘Nasik’, 36000, 21), (2, ‘Riya chowdary’, ‘Bangalor’, 82000, 29);SELECT *FROM employee;COMMIT; |
| Rollback command 回滚命令 | ROLLBACK; |
A ROLLBACK command is used to rollback the transactions which are not saved in the database.A ROLLBACK command 用于回滚未保存到数据库中的事务。The default terminator for a ROLLBACK command is semicolon (;). ROLLBACK 命令的默认终止符是分号(;)。 |
As auto-commit is enabled by default, all transactions will be committed. We need to disable this option to see how rollback works. For MySQL use the command “SET autocommit = 0;”INSERT INTO employee VALUES (3, ‘Swetha Tiwari’, ‘Kanpur’, 38000, 38);SELECT *FROM employee;ROLLBACK;SELECT *FROM employee; |
Db2 Transactions using Stored Procedure 使用存储过程进行 Db2 事务
| Topic 主题 | Syntax 语法 | Description 描述 | Example 示例 |
|---|---|---|---|
| Commit command 提交命令 | –#SET TERMINATOR @CREATE PROCEDURE PROCEDURE_NAMEBEGINCOMMIT;END@ |
A COMMIT command is used to persist the changes in the database.COMMIT command 用于将数据库中的更改持久化。The default terminator for a COMMIT command is semicolon (;). 提交命令的默认终止符是分号(;)。 |
--#SET TERMINATOR @ CREATE PROCEDURE TRANSACTION_ROSE LANGUAGE SQL MODIFIES SQL DATABEGINDECLARE SQLCODE INTEGER DEFAULT 0;DECLARE retcode INTEGER DEFAULT 0;DECLARE CONTINUE HANDLER FOR SQLEXCEPTIONSET retcode = SQLCODE;UPDATE BankAccountsSET Balance = Balance-200WHERE AccountName = ‘Rose’;UPDATE BankAccountsSET Balance = Balance-300WHERE AccountName = ‘Rose’;IF retcode < 0 THENROLLBACK WORK;ELSECOMMIT WORK;END IF;END@ |
| Rollback command 回滚命令 | --#SET TERMINATOR @CREATE PROCEDURE PROCEDURE_NAMEBEGINROLLBACK;COMMIT;END@ |
A ROLLBACK command is used to rollback the transactions which are not saved in the database.一个 ROLLBACK command 用于回滚未保存到数据库中的事务。The default terminator for a ROLLBACK command is semicolon (;). ROLLBACK 命令的默认终止符是分号 (;)。 |
--#SET TERMINATOR @ CREATE PROCEDURE TRANSACTION_ROSE LANGUAGE SQL MODIFIES SQL DATABEGINDECLARE SQLCODE INTEGER DEFAULT 0;DECLARE retcode INTEGER DEFAULT 0;DECLARE CONTINUE HANDLER FOR SQLEXCEPTIONSET retcode = SQLCODE;UPDATE BankAccountsSET Balance = Balance-200WHERE AccountName = ‘Rose’;UPDATE BankAccountsSET Balance = Balance-300WHERE AccountName = ‘Rose’;IF retcode < 0 THENROLLBACK WORK;ELSECOMMIT WORK;END IF;END@ |
MySQL Transactions using Stored Procedure 使用存储过程进行 MySQL 事务
| Topic 主题 | Syntax 语法 | Description 描述 | Example 示例 |
|---|---|---|---|
| Commit command 提交命令 | DELIMITER //CREATE PROCEDURE PROCEDURE_NAMEBEGINCOMMIT;END //DELIMITER ; |
A COMMIT command is used to persist the changes in the database.A COMMIT command 用于持久化数据库中的更改。The default terminator for a COMMIT command is semicolon (;). 提交命令的默认终止符是分号(;)。 |
DELIMITER //CREATE PROCEDURE TRANSACTION_ROSE()BEGINDECLARE EXIT HANDLER FOR SQLEXCEPTIONBEGINROLLBACK;RESIGNAL;END;START TRANSACTION;UPDATE BankAccountsSET Balance = Balance-200WHERE AccountName = ‘Rose’;UPDATE BankAccountsSET Balance = Balance-300WHERE AccountName = ‘Rose’;COMMIT;END //DELIMITER ; |
| Rollback command 回滚命令 | DELIMITER //CREATE PROCEDURE PROCEDURE_NAMEBEGINROLLBACK;COMMIT;END //DELIMITER ; |
A ROLLBACK command is used to rollback the transactions which are not saved in the database.一个 ROLLBACK command 用于回滚未保存到数据库中的事务。The default terminator for a ROLLBACK command is semicolon (;). ROLLBACK 命令的默认终止符是分号 (;)。 |
DELIMITER //CREATE PROCEDURE TRANSACTION_ROSE()BEGINDECLARE EXIT HANDLER FOR SQLEXCEPTIONBEGINROLLBACK;RESIGNAL;END;START TRANSACTION;UPDATE BankAccountsSET Balance = Balance-200WHERE AccountName = ‘Rose’;UPDATE BankAccountsSET Balance = Balance-300WHERE AccountName = ‘Rose’;COMMIT;END //DELIMITER ; |
