<SQL>《Comandos SQL (incluidas oraciones de ejemplo) Edición bien organizada (4)》

14 objetos de base de datos

14.1 Tabla

1. Crea una tabla

	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. Actualizar tabla

ALTER TABLE Vendors ADD vend_phone CHAR20-------给Vendors表增加一个名为vend_phone的列,数据类型为CHAR

3. Eliminar tabla

DROP TABLE CustCopy

4. Cambiar el nombre de la tabla

DB2/MariaDB/MySQL/Oracle/PostgreSQL

RENAME TABLE DB2INST1.TBL_BANKCODE20170822 TO TBL_BANKCODE

<注意1>重命名表时,源表不能在任何现有定义(视图或具体化查询表)、触发器、SQL函数或约束中引用。它也不能具有任何生成列(标识列除外),或者不能是父表或从属表。目录条目更新以反映新表名。
<注意2>后面的表不能加schame。

servidor SQL

sp_rename存储过程

SQLite

ALTER TABLE语句

14.2 Vistas

1. Crear una vista

CREATE VIEW ProductCustomers AS
		SELECT cust_name,cust_contact,prod_id
		FROM Customers,Orders,OrderItems
		WHERE Customers.cust_id=Orders.cust_id
		AND OrderItems.order_num=Orders.order_num;

2. Las vistas, como las tablas, deben tener nombres únicos.

14.3 Procedimientos almacenados

14.3.1 Concepto

definición ilustrar
definición Un procedimiento almacenado es una o más declaraciones SQL guardadas para su uso posterior.
ilustrar Piense en los procedimientos almacenados como archivos por lotes, pero no se limitan al procesamiento por lotes.
ilustrar Ventajas y desventajas de los procedimientos almacenados
Ventaja
1: encapsular el procesamiento en unidades simples puede simplificar operaciones complejas.
2- No requiere el establecimiento repetido de una serie de pasos de procesamiento, lo que garantiza la consistencia de los datos. Los desarrolladores utilizan el mismo procedimiento almacenado para garantizar la coherencia del código y evitar errores.
3- Simplificar la gestión de cambios. Es decir, si cambia el nombre de la tabla, el nombre de la columna, etc., solo se debe cambiar el código del procedimiento almacenado.
4-El procedimiento almacenado se almacena en forma compilada, lo que puede reducir la carga de trabajo requerida para que el DBMS procese los comandos y mejore el rendimiento.
Desventaja
1: la sintaxis del procedimiento almacenado es diferente en diferentes DBMS, escribir un procedimiento almacenado que sea realmente portátil es casi imposible. Sin embargo, la autoinvocación del procedimiento almacenado (el nombre y cómo se pasan los datos) puede seguir siendo relativamente portátil. Si se requiere la migración a otro DBMS, al menos no es necesario mover el código de la aplicación del cliente.
2- Escribir procedimientos almacenados es más complicado que escribir declaraciones SQL, lo que requiere mayores habilidades y una experiencia más rica.

14.3.2 Creación de procedimientos almacenados

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 Llamar a procedimientos almacenados

CALL WHJH.PRO_LOG('PR_HANDLE_CHECK_RESULT',1,9,'更新错误/疑问正式表中的“最终数据状态”');

14.3.3 Método de llamada en la herramienta DbVisualizer

Descripción: Ejecuta el procedimiento almacenado directamente en la herramienta.
Formato:

--/ 
 存储过程
/

Aviso:

1 No se puede agregar después de FIN; símbolo
2 CREAR O REEMPLAZAR EL PROCEDIMIENTO "WHJH". "PR_PER_TIMELESS" ( ) Para eliminar O REEMPLAZAR
3 Hacer una copia de seguridad del antiguo procedimiento almacenado
4 Eliminar el antiguo procedimiento almacenado y luego crear un nuevo procedimiento almacenado
5 Procedimiento almacenado: Procedimientos almacenados
6 La segmentación de procedimientos almacenados solo se puede ejecutar con scripts

14.3.3 Método de llamada de script de línea de mandatos de DB2

	db2 -td@ -vf 1.sql

Aviso:

1 La ejecución de sql debe estar conectada a la base de datos, y cada procedimiento almacenado está separado por @.
Se pueden ejecutar 2 procedimientos almacenados segmentados. Ejemplo: P2:COMENZAR

14.3.4 Dos procedimientos almacenados en DB2 informan errores.

Error 1: falta de permiso. Falta el permiso para el método.

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

Error 2: el procedimiento almacenado que se va a crear ya existe y se informa de un error cuando se vuelve a ejecutar.

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 Procesamiento de transacciones

15.1 TRANSACCIÓN

definición:

Transacción se refiere a un conjunto de declaraciones SQL;
el procesamiento de transacciones se utiliza para administrar operaciones SQL que deben ejecutarse en lotes para garantizar que la base de datos no contenga resultados de operaciones incompletos.

Ejemplo:

base de datos Formato
servidor SQL COMENZAR TRANSACCIÓN
...
COMPROMETER TRANSACCIÓN
MariaDB y MySQL INICIAR TRANSACCIÓN

Oráculo FIJAR TRANSACCIÓN
postgresql COMENZAR

15.2 RETROCESO

Definición: Revertir se refiere al proceso de deshacer una declaración SQL específica;
Explicación: el procesamiento de transacciones se utiliza para administrar las declaraciones INSERT/UPDATE/DELETE, y no puede revertir las declaraciones SELECT, ni puede revertir las operaciones CREATE o DROP.
Ejemplo:

DELETE FROM Orders;
ROLLBACK;

15.3 COMPROMISO

Definición: compromiso (commit) se refiere a no escribir los resultados de la declaración SQL almacenada en la tabla de la base de datos;
Nota: Generalmente, las declaraciones SQL se ejecutan y escriben directamente para la tabla de la base de datos, que es una confirmación implícita (compromiso implícito), es decir, se realiza automáticamente cuando se confirma la operación.
Explicación: en el bloque de procesamiento de transacciones, la confirmación no se realizará de forma implícita y se debe utilizar COMMIT para realizar una confirmación explícita.
Ejemplo:

base de datos Formato
servidor SQL COMENZAR TRANSACCIÓN
ELIMINAR artículos de pedido WHERE order_num=12345
ELIMINAR pedido WHERE order_num=12345
COMPROMETER TRANSACCIÓN
Oráculo SET TRANSACTION
DELETE OrderItems WHERE order_num=12345
DELETE Order WHERE order_num=12345
COMMIT

15.4 PUNTO DE GUARDAR

Definición: SAVEPOINT se refiere a un marcador de posición temporal (marcador de posición) establecido en una transacción, que se puede revertir (diferente de revertir la transacción completa).
Descripción: también conocido como marcador de posición.
Ejemplo: Crear un punto de retención (marcador de posición) delete1

1.
Crear servidor SQL

SAVE TRANSACTION delete1

Retroceder

ROLLBACK TRANSACTION delete1

entero

BEGIN TRANSACTION
			INSERT 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. Creación de MariaDB, MySQL y Oracle

SACEPOINT delete1

Retroceder

ROLLBACK TO delete1

Supongo que te gusta

Origin blog.csdn.net/tangcoolcole/article/details/130810212
Recomendado
Clasificación