transacciones de base de datos, vistas, triggers, índices, procedimientos almacenados, funciones, tres paradigmas principales

transacción

Una transacción es un conjunto lógico de las operaciones en cualquiera de realizar o no realizar

Métodos de transacción

  • transacción abierta: Transacción de inicio
  • Confirmar la transacción: cometer
  • Deshacer la transacción: rollback

Características de la operación: el ácido

  • La atomicidad (atomicidad): operaciones en la transacción incluidas, puede ejecutar con éxito, o todos fallan.
  • La consistencia (Consistencia): El número total de base de datos desde un estado coherente a otro estado coherente. (Total siempre sigue siendo el mismo)
  • Aislamiento (aislamiento): operación de una transacción no realiza otras operaciones que afectan a los datos y las operaciones internas, las transacciones de ejecución concurrente independientes uno de otro.
  • Persistente (Durabilidad): Tras las confirmaciones de transacción, los cambios a los datos en la base de datos es permanente y no se perderán debido a un fallo del sistema.

Estado de transacciones simultáneas

  • Sucia de lectura: cuando una transacción está accediendo a los datos, otro modifica transacción se somete estos mismos datos, antes de la operación lee los datos modificados, a saber: "datos sucios" .

Leer un hilo en los asuntos de otro actualizar datos en un hilo transacción no confirmada.

  • lectura no repetible: cuando una transacción accede a los datos, otro modifica de transacción los datos, después de la presentación, antes de la transacción lee datos con diferentes datos antes de la modificación.

Leer un hilo en los asuntos de otra actualización de datos en un hilo de transacciones que se han presentado.

  • Perder (lectura fantasma): Cuando una transacción está accediendo a una mesa, los demás datos en un tiempo de transacción de datos antes de leer de nuevo, a más datos que antes.

Un hilo de Asuntos leen un hilo de inserción transacción de datos adicional se ha presentado.

notas :

MySQL nivel de aislamiento predeterminado: lectura repetible

ORACLE nivel de aislamiento predeterminado: lectura confirmada

Consulta de transacciones nivel de aislamiento

mysql 5
select @@session.tx_isolation;//查询当前会话事务隔离级别
select @@global.tx_isolation;//查询全局会话事务隔离级别

mysql 8
select @@session.transaction_isolation;//查询当前会话事务隔离级别
select@@global.transaction_isolation;//查询全局会话事务隔离级别
select @@transaction_isolation;//查询事务隔离级别

Establecer el nivel de aislamiento de transacción

set session transaction isolation level 隔离登记;

nivel de aislamiento

  • la lectura no confirmada (lectura no confirmada): nivel de aislamiento más bajo, permitiendo que los cambios en los datos de lectura no se han presentado, podría dar lugar a lecturas sucias, lectura no repetible, las lecturas fantasma .
  • Lectura confirmada (lectura confirmada): Permite leer comprometida cambios de datos, lectura anti-sucio, pero también puede ocurrir no repetible de lectura, lectura fantasma
  • lectura repetible (grados repetibles): resultados de la misma lectura de datos es siempre el mismo, a menos que la propia empresa se modifica. De lo contrario el extremo frontal de la transacción, los datos son los mismos, después del final de la transacción, los datos leídos va a cambiar , anti-sucio lee, lectura no repetible, lectura fantasma todavía puede ocurrir
  • Serializable (serializable): el nivel de aislamiento más alta, todas las transacciones se ejecutan secuencialmente uno a uno, es imposible interferencia productos entre dichas operaciones, la baja eficiencia, puede prevenir sucio lee, no repetible de lectura y fantasma de lectura .
Niveles de aislamiento lectura sucia lectura no repetible fantasma de lectura
LEER-UNCOMMITTED
LEER-COMPROMETIDOS ×
REPETIBLE-READ × ×
SERIALIZABLE × × ×

vista

create [algorithm = {undefined | merge | temptable}]
View 视图名
AS
select 查询语句

--删除视图
drop View 视图名;
  • algorithm Un algoritmo de selección de vistas.
  • undefined Esto significa que el algoritmo de selección automática
  • merge Muestra una vista utilizando la sentencia definición de vista combinado, de manera que una vista parcial de una parte de la declaración correspondiente sustituido.
  • temptable Se dijo que ver los resultados en una tabla temporal, a continuación, utilizar la tabla temporal instrucción de ejecución
  • with check optionAl actualizar el fin de asegurar una representación dentro del alcance de la vista.
    En términos simples, por lo que puede ser explicado: hecho modificando la vista, la vista debe ser visto a través del resultado modificado.

gatillo gatillo

create trigger 触发器名
after/before insert/update/delete on 表名
for each row
begin
	sql语句;
end;

sql语句操作;

-- 删除触发器
drop trigger 触发器名;

Ejemplo:

create trigger tg4
after update on tbl_order
for each row
begin

 update goods set num = num + old.much-new.much where id= old.gid/new.gid;
end;

-- 会发现商品1的数量又变为8了
update tbl_order set much = 4 where oid= 4;
  • Nuevo: gama: se puede utilizar en insertar, activador de actualización
  • Edad: Rango: se puede utilizar en la cancelación, activador de actualización

Índice Índice

CREATE TABLE table_name [col_name data type]
[unique|fulltext] [index|key] [index_name](col_name[length])[asc|desc]
  • única | Todo el texto es opcional, representan un índice único, la indexación de texto completo
  • índice y la clave son sinónimos, ambos tienen el mismo efecto, para crear el índice especificado
  • index_name especifica el nombre del índice, es opcional, si no se especifica, el valor por defecto para el índice de col_name
  • col_name crear se desea campos índice de la columna, la columna debe ser seleccionado de una pluralidad de columnas de los datos definidos en la tabla
  • parámetro de longitud opcional que indica la longitud del índice, solamente el campo de tipo de cadena para especificar la longitud del índice
  • asc o desc especifica ascendente o descendente de almacenamiento de valor de índice
#查看:
show indexes from `表名`;
#或
show keys from `表名`;
 
#删除
alter table `表名` drop index 索引名;

### índice general

(1) crear directamente un índice

CREATE INDEX index_name ON table_name(col_name);

Adición de un índice (2) modificar la estructura de la tabla

ALTER TABLE table_name ADD INDEX index_name(col_name);

(3) crear una tabla al crear un índice al mismo tiempo

CREATE TABLE `news` (
    `id` int(11) NOT NULL AUTO_INCREMENT ,
    `title` varchar(255)  NOT NULL ,
    `content` varchar(255)  NULL ,
    `time` varchar(20) NULL,
    PRIMARY KEY (`id`),
    INDEX index_name (title(255))
);


(4) eliminar el índice

DROP INDEX index_name ON table_name;
或者
alter table `表名` drop index 索引名;

### índice compuesto (índice de combinación)

Índice Compuesto: Índice compuesto es un índice creado en múltiples campos. Los índices compuestos para cumplir con el principio "el prefijo-izquierda más" , a saber, el uso del índice compuesto del primer campo en la consulta, se utilizará el índice . Por lo tanto, el orden en el índice compuesto en la columna de índice es esencial.

(1) crear un índice compuesto

create index index_name on table_name(col_name1,col_name2,...);

El único índice

índice único: índice único y el índice ordinario similares, la diferencia principal es que un único valores límite de índice en la columna deben ser únicos, pero permitir valores nulos (sólo se permite un valor nulo) .

(1) crear índice único

# 创建单个索引
CREATE UNIQUE INDEX index_name ON table_name(col_name);

# 创建多个索引
CREATE UNIQUE INDEX index_name on table_name(col_name,...);

(2) crear la tabla cuando el índice especificado directamente

CREATE TABLE `news` (
    `id` int(11) NOT NULL AUTO_INCREMENT ,
    `title` varchar(255)  NOT NULL ,
    `content` varchar(255)  NULL ,
    `time` varchar(20) NULL DEFAULT NULL ,
    PRIMARY KEY (`id`),
    UNIQUE index_name_unique(title)
)


índice de clave principal

índice de clave principal es un índice único especial, una tabla puede tener sólo una clave principal, no permite valores nulos. Por lo general, al mismo tiempo crear un índice de clave principal cuando la construcción de la tabla:

(1) primaria índice de clave (añadido al crear una tabla)

CREATE TABLE `news` (
    `id` int(11) NOT NULL AUTO_INCREMENT ,
    `title` varchar(255)  NOT NULL ,
    `content` varchar(255)  NULL ,
    `time` varchar(20) NULL DEFAULT NULL ,
    PRIMARY KEY (`id`)
)

índice de texto

Crear una tabla para añadir un índice de texto

CREATE TABLE `news` (
    `id` int(11) NOT NULL AUTO_INCREMENT ,
    `title` varchar(255)  NOT NULL ,
    `content` text  NOT NULL ,
    `time` varchar(20) NULL DEFAULT NULL ,
     PRIMARY KEY (`id`),
    FULLTEXT (content)
)


(2) crear un índice directamente

CREATE FULLTEXT INDEX index_fulltext_content ON table_name(col_name)

Procedimientos almacenados

Un procedimiento almacenado es un conjunto de funciones programables, con el fin de lograr un conjunto específico de instrucciones SQL, los usuarios pueden asignar parámetros y ser llamados por el nombre de la ejecución del procedimiento almacenado.

Crear un procedimiento almacenado

create procedure 过程名(in/out/inout 参数名 参数类型)
begin
	sql语句 --> 一段业务逻辑
	可用sql语法
end;
create procedure demo_inout_parameter(inout p_inout int)
begin
 select p_inout;
 set p_inout=2;
 select p_inout;
end;

-- 调用存储过程
set @p_inout=1;
call demo_inout_parameter(@p_inout);
select @p_inout;

drop procedure 存储过程名

Los IN : valores de los parámetros pueden cambiar durante el almacenamiento ( SET ), un nombre de variable para seleccionar los valores de los parámetros. El valor del parámetro no puede ser devuelto.

OUT : valores de los parámetros pueden cambiar durante el almacenamiento, y vuelve

INOUT : al llamar especificada y puede ser cambiado y vuelto

función

 -- 如果有这个函数,就删除
drop function if exists 函数名;

-- 创建一个无参的函数
create function hello () 
 -- 设置函数的返回类型
returns 参数类型,如:varchar (255)
begin-- 函数头
    -- 中间的是函数体
    return '一个简单的mysql函数'; -- 函数的返回值
end; -- 函数结尾

--调用函数
select hello();   -- select 函数名

La diferencia entre los procedimientos y funciones almacenadas

  • Esencialmente no hay diferencia, sólo la función devuelve un solo valor o un objeto de tabla de instrucción de retorno

    Procedimiento almacenado no permite de retorno, pero puede volver a través de una pluralidad de valores de parámetros

    La función puede utilizarse en SQL incrustado puede seleccionar la llamada; no procedimiento almacenado

  • Función sólo en el tipo de procedimiento almacenado de entrada / salida / inout Tipo

Tres Formas de base de datos

  • El primer paradigma : Sea R cuando todos los atributos no se descomponen en una unidad de datos más básica, dijo satisface R del primer paradigma se abrevia como 1NF.

    ** ** columna no se puede dividir atributo requerido es atómica, la descomposición ya no;

  • El segundo paradigma : Si la primera forma relacional esquema R y R normales tienen todos los atributos no primarios son totalmente dependientes de las propiedades de cada uno de la clave candidata de R, R, dicho segundo normal, abreviado como 2NF. A saber: una tabla sólo puede preservar un conjunto de datos, no se puede poner una variedad de datos almacenados en la misma tabla de base de datos

    Conoce acerca de paradigma, los atributos no primarios totalmente dependiente de la código, eliminar parcialmente dependiente.

  • Tercer patrón : Sea R un modelo relacional de la primera condición es satisfecha Paradigm, R X es un conjunto arbitrario de propiedades, si X es dependiente de no transmisión de un candidato palabra clave any R, satisface R dicho tercer paradigma, denominado simplemente como 3NF . los datos de cada columna están directamente relacionados con la clave principal y, aunque no directamente relacionado.

    Por ejemplo, hay una mesa de información del departamento, donde cada departamento tiene un número de departamento (dept_id), nombre del departamento, reuniones de información del departamento y otra información. A continuación, una lista del número de departamento después de la tabla de información de los empleados ya no puede con la información del departamento sobre el nombre del departamento, departamento, etc. Acerca de la adición tabla de información personal .

    Satisfacer las dos paradigmas, eliminando la transferencia de la dependencia

Publicado 12 artículos originales · ganado elogios 0 · Vistas 54

Supongo que te gusta

Origin blog.csdn.net/DavinDeng/article/details/104918585
Recomendado
Clasificación