(2) MySQL ------ DML, DDL, tipos de datos, las limitaciones, y la transacción

1, lenguaje de manipulación de datos

2, el lenguaje de definición de datos

3 Tipos de datos,

4, la restricción

5, asuntos

Lenguaje de manipulación de datos

  • DML (Data Manipulation Language - lenguaje de manipulación de datos) puede llevarse a cabo bajo las siguientes condiciones:
    - insertar datos en una tabla
    - Modificar los datos existentes
    - de borrado de datos existentes

  • La transacción se completa con el trabajo de una serie de sentencias DML

1, de otra copia de la tabla de datos:
INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM employees WHERE job_id LIKE '%REP%';
2, truncados y borrar dos tipos de formas de eliminar la diferencia entre:
  • Después de truncar quita cuando la reinserción, la columna de identidad, eliminar eliminar desde el principio después de 1, si la inserción, la columna de identidad desde el punto de interrupción inicio
  • Eliminar se puede agregar condiciones de filtro, no se puede truncar añadir condiciones de filtro
  • truncado alta eficiencia
  • truncar no devuelve ningún valor, elimine puede devolver el número de filas afectadas
  • truncado no se puede deshacer, borrar se puede revertir

Data Definition Language

1, gestión de bibliotecas:
  • Crear una biblioteca
create databaseif not exists】 库名【 character set 字符集名】;
  • Modificar la biblioteca
alter database 库名 character set 字符集名;
  • Eliminar una biblioteca
drop databaseif exists】 库名;
2, mesa de operaciones:
  • Crear una tabla
create tableif not exists】 表名(
	字段名 字段类型 【约束】,
	字段名 字段类型 【约束】,
	。。。
	字段名 字段类型 【约束】 

)
  • Modificar la tabla

       Añadir columna

alter table 表名 add column 列名 类型 【first|after 字段名】;

       Restricciones o modificar el tipo de una columna

alter table 表名 modify column 列名 新类型 【新约束】;

       Modificar el nombre de la columna

alter table 表名 change column 旧列名 新列名 类型;

       quitar columnas

alter table 表名 drop column 列名;

       Modificar el nombre de la tabla

alter table 表名 renameto】 新表名;
  • tabla de borrado
drop tableif exists】 表名;
  • Copiar la tabla

       tablas replicadas

create table 表名 like 旧表;
  • Copiar estructura de datos de la tabla +
create table 表名 
select 查询列表 from 旧表【where 筛选】;

Tipos de datos

1, número entero:
tipo entero byte
tinyint 1
smallint 2
MEDIUMINT 3
int / número entero 4
Empezando 8
  • características:

    ①, se puede establecer sin firmar y firmado, firmado por defecto, establecer el sin firmar por firmar

    ②, si fuera de rango, una excepción será reportada a cabo o rango, insertar umbral

    ③, la longitud no puede ser especificado, el valor predeterminado será una longitud

    Representa la longitud de la anchura máxima de la pantalla, si no, entonces permanecerán llenos de ceros, pero la necesidad de emparejar ZEROFILL, y se convierte en el entero sin signo por defecto

2, flotar:
  • punto de ajuste: decimal (M, D)

  • Float:
    . Un flotador (M, D) 4
    . Doble (M, D) 8

  • características:

    ①, M representa una porción entera del número de partes fraccionarias de +, D representante de la parte fraccionaria

    ②, si fuera de rango, el mensaje anormal a cabo o rango, y el umbral de inserción

    ③, M y D pueden ser omitidos, pero el punto fijo, el valor predeterminado es M 10, D 0 es el valor predeterminado

    ④, si una alta precisión, se da prioridad a la utilización de punto fijo

3, carácter:
  • char, varchar, binary (binario más corto), varbinary (binario más corto), enumeración (excepto para la enumeración), juego (juego Guardar), texto (texto más largo), gota (binario grande)

  • Char: caracteres de longitud fija, escrito como char (M), no puede exceder la longitud máxima M, donde M puede ser omitido, el valor predeterminado es 1

  • varchar: un carácter de longitud variable, escrito como VARCHAR (M), no puede exceder la longitud máxima M, donde M no se puede omitir

4, el tipo de fecha:
  • En años (1 byte)
  • Fecha Fecha (4 bytes)
  • tiempo Time (3 bytes)
  • fecha y hora fecha y hora + (8 bytes)
  • marca de tiempo en tiempo la fecha + (4 bytes) más fácil, patrones de gramática, husos horarios de versión refleja mejor el tiempo real de la zona horaria actual

restricción

1. ¿Cuál es la restricción?
  • Para garantizar la coherencia y la integridad, datos de especificación SQL de una manera restringida limitaciones adicionales a los datos de la tabla.
  • restricciones a nivel de tabla son obligatorios para el
  • Las restricciones pueden ser especificados al crear una tabla (a través de la sentencia CREATE TABLE), o después de la tabla también se pueden crear (a través de instrucción ALTER TABLE)
  • Después de seis limitaciones:

      ①, restricción NOT NULL no vacía, las disposiciones de un campo no puede estar vacío

      ②, restricción UNIQUE único, las disposiciones de un campo es único en la tabla

      ③, clave primaria PRIMARY KEY (y sólo no vacío)

      ④, clave externa FOREIGN KEY

      ⑤, cheques restricción CHECK

      ⑥, el valor por defecto por defecto

  • Nota: MySQL no soporta restricciones de comprobación, pero se puede usar restricciones de comprobación, sin ningún efecto

  • La restricción de columna de datos de limitación de limitación se puede dividir en:
    única restricción: Cada restricción única restricción que fila
    restricción multi-columna: Las restricciones pueden limitar cada uno de la pluralidad de columnas de datos

  • El alcance de la restricción, la restricción se puede dividir en:
    restricciones a nivel de columna sólo puede actuar sobre una columna, con la columna después de la definición de
    restricciones a nivel de tabla puede actuar en una pluralidad de columnas, con las columnas no son, pero define por separado

2, restricciones NOT NULL
  • restricciones de valor no nulos utilizados para asegurar que la columna actual no es nulo, la restricción de que no esté vacía solo pueden aparecer en la lista de objetos.
  • Llene Null en el que:
    los valores de todos los tipos pueden ser nulos, incluyendo int, tipos de datos float
    cadena vacía "" no es igual a null, 0 no es igual a nulo
  • Crear una restricción no nula
CREATE TABLE emp(
id INT(10) NOT NULL,
NAME VARCHAR(20) NOT NULL DEFAULT 'abc',
sex CHAR NULL
);
  • Aumentar la restricción no nula
ALTER TABLE emp MODIFY sex VARCHAR(30) NOT NULL;
  • Cancela No limitaciones nulos, aumente el valor por defecto
ALTER TABLE emp MODIFY NAME VARCHAR(15) DEFAULT 'abc' NULL;
3, restricciones UNIQUE
  • La única restricción, lo que permite una pluralidad de valores nulos: NULL
  • La misma tabla puede tener múltiples restricciones únicas, limitación de la pluralidad de combinaciones de columnas. Al crear una restricción única, único nombre de restricción si no se dan los mismos nombres de columna y predeterminado
  • MySQL se pondrá por defecto en la restricción única crea un índice único
CREATE TABLE USER(
id INT NOT NULL,
NAME VARCHAR(25),
PASSWORD VARCHAR(16),
#使用表级约束语法,表示用户名和密码组合不能重复
CONSTRAINT uk_name_pwd UNIQUE(NAME,PASSWORD)
);
  • La adición de una restricción única
ALTER TABLE USER ADD UNIQUE(NAME,PASSWORD);

ALTER TABLE USER ADD CONSTRAINT uk_name_pwd UNIQUE(NAME,PASSWORD);

ALTER TABLE USER MODIFY NAME VARCHAR(20) UNIQUE;
  • eliminar las limitaciones
ALTER TABLE USER DROP INDEX uk_name_pwd;
4, restricción PRIMARY KEY
  • Corresponde a una clave primaria única restricción restricción restricción + combinación no vacío de columnas debe ser único restricción de clave principal, los valores nulos no se les permite
  • Modo de nivel de columna
CREATE TABLE emp(
id INT AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(20)
);
  • el modo de nivel de tabla
CREATE TABLE emp(
id INT NOT NULL AUTO_INCREMENT,
NAME VARCHAR(20),
CONSTRAINT emp_id_pk PRIMARY KEY(id)
);
  • modo combinado
CREATE TABLE emp(
id INT NOT NULL,
NAME VARCHAR(20),
pwd VARCHAR(15),
CONSTRAINT emp_pk PRIMARY KEY(NAME,pwd)
);
  • Eliminar la restricción de clave primaria
ALTER TABLE emp DROP PRIMARY KEY;
  • Añadir una restricción de clave primaria
ALTER TABLE emp ADD PRIMARY KEY(NAME,pwd);
  • Modificar la restricción de clave primaria
ALTER TABLE emp MODIFY id INT PRIMARY KEY;
5, FOREIGN KEY restricción
  • restricción de clave externa es asegurar la integridad referencial entre dos tablas o una relación de clave externa está entre los dos campos de referencia para construir una tabla de dos tablas o dos campos.
  • Se debe encontrar en la tabla primaria o nulos valores de clave externa de la tabla. Cuando la grabación de la tabla tabla maestra que se hace referencia, no se eliminará los principales registros de la tabla, si desea borrar los datos, la necesidad de eliminar el registro de datos de dependencia de la mesa, y luego se puede borrar datos en la tabla principal.
  • Otro está eliminaciones en cascada los datos de la tabla hijo.
    Nota: Las columnas de referencia restricción de clave externa se hace referencia en la tabla principal son solamente columna de restricción de clave principal o único
  • La misma tabla puede tener múltiples restricciones de clave externa
  • Crear una restricción de clave externa

       Mesa principal :

CREATE TABLE dept(
dept_id INT AUTO_INCREMENT PRIMARY KEY,
dept_name VARCHAR(20)
);

       A partir de la tabla :

CREATE TABLE emp(
emp_id INT AUTO_INCREMENT PRIMARY KEY,
last_name VARCHAR(15),
dept_id INT,
CONSTRAINT emp_dept_id_fk FOREIGN KEY(dept_id) REFERENCES dept(dept_id)
); 
  • Eliminar la restricción de clave externa
ALTER TABLE emp DROP FOREIGN KEY emp_dept_id_fk;
  • Aumento de la restricción de clave externa
alter table emp add constraint emp_dept_id_fk foreign key(dept_id) references dept(dept_id);
  • FOREIGN KEY: columnas de tabla se designan a nivel de tabla
  • REFERENCIAS: indicadas en las columnas de las tablas de los padres
  • ON DELETE CASCADE (eliminación en cascada): Cuando se elimina la columna de la tabla primaria, la tabla secundaria correspondiente a las columnas borradas son también
  • EN NULL DELETE SET (cascada en blanco): sub-tabla correspondiente de supresión columna
CREATE TABLE student(
id INT AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(20),
classes_name VARCHAR(20),
classes_number INT,
/*表级别联合外键*/
FOREIGN KEY(classes_name, classes_number)
REFERENCES classes(NAME, number) ON DELETE CASCADE);

negocios

1, el concepto de transacción
  • Transacción consiste en una sola unidad o más sentencias SQL, en esta unidad, cada declaración es MySQL interdependientes. La unidad entera como un solo todo integral, si la unidad es una instrucción SQL o realizar de error en caso de fallo, la unidad entera se deshace. Todos los datos serán afectados por las cosas comenzaron a volver al estado anterior, si la unidad de todas las sentencias SQL que se ejecutan con éxito, las cosas se ejecutan sin problemas.
  • Por los motores de la demostración; ver el apoyo del motor de almacenamiento de MySQL
2, las propiedades ACID de las transacciones

      ①, atomicidad (atomicidad) : medios Atomicidad que una transacción es una unidad indivisible de operaciones de trabajo en una transacción o bien ocurrir o no ocurrir

      ②, consistencia (Consistencia) : base de datos de transacciones debe transformarse de un estado coherente a otro actuador estado.

      ③, aislamiento (aislamiento) : aislamiento de transacción se refiere a una ejecución de la transacción no puede ser perturbado por otras transacciones, es decir, la operación y el uso de un conjunto de datos de transacción internos a otro concurrencia transacción es aislado, las operaciones individuales de ejecución concurrente inter no puede interferir entre sí

      ④, persistentes (Durabilidad Rev) : medios de persistencia que una vez que se confirma una transacción, se cambió de datos en la base de datos es permanente, entonces las demás operaciones y fallos de bases de datos deben no tienen ningún impacto en su

3, utilizando los asuntos pasos
-- 开启事务
set autocommit = 0;
start transaction;
-- 编写一组事务的语句
update account set balance = 10000 where username = 'Tommey周';
update account set balance = 10000 where username = 'Tommey';
-- 结束事务
rollback;
-- commit;
4, problemas de concurrencia de transacciones
  • Sucia leer: Para dos transacciones T1, T2, T1 T2 leídos se han actualizado pero todavía no se ha presentado un campo, después de la reversión si T2, T1 lee el contenido es temporal e ineficaz.
  • lectura no repetible: para dos transacciones T1, T2, T1 leer un campo, y luego actualizar el campo T2 y, a continuación, Tl de nuevo lee desde el mismo campo, el valor es diferente.
  • Phantom leer: Para Después de dos transacciones T1, T2, T1 se lee de un campo en una tabla, y luego insertado T2 nueva fila en la tabla, si la tabla T1 de nuevo leer la misma, será más unas pocas líneas.

El aislamiento de transacción de la base de datos : sistema de base de datos debe tener la capacidad de aislar las transacciones individuales se ejecutan simultáneamente, por lo que no se afectan entre sí, evitar todo tipo de problemas de concurrencia

5, cuatro tipos de niveles de aislamiento de transacción de base de datos proporcionados
Niveles de aislamiento descripción lectura sucia lectura no repetible la magia de lectura
La lectura no confirmada (leer datos sin confirmar) Asuntos no se les permite leer otros cambios de la confirmación de transacción
Lectura confirmada (leer datos presentados) Se refiere a permitir que las transacciones de lectura a los cambios han sido presentadas por otras transacciones ×
REPETIBLE READ (lectura repetible) Asegúrese de que la transacción pueda ser leído muchas veces el mismo valor de un campo, la duración de la transacción, otras transacciones prohibido en este campo para actualizarse × ×
SERIALIZABLE (serialización) Asegúrese de que la transacción puede leer las mismas filas de una tabla, la duración de la transacción, otras transacciones prohibida la inserción de la mesa, actualizar y operaciones de borrado, todos los problemas de concurrencia se pueden evitar, pero el rendimiento es muy bajo × × ×
  • Oracle soporta dos tipos de nivel de aislamiento: LEER COMPROMETIDOS, SERIALIZABLE. Oracle nivel de aislamiento de las transacciones: el LEER
    COMPROMETIDOS
  • MySQL soporta cuatro niveles de transacción por defecto nivel de aislamiento de aislamiento de transacción mysql :. REPETIBLE LEER
  • Cada MySQL iniciar un programa, podrás conseguir una conexión de base de datos independiente para cada conexión de base de datos tiene una @@ tx_isolation variable global, indica que el nivel de aislamiento actual.
  • Ver el nivel de aislamiento actual: SELECT @@ tx_isolation;
  • Ajuste del nivel de aislamiento para la conexión de MySQL en uso:
 set transaction isolation level read committed;
  • La creación de un sistema de base de datos de nivel de aislamiento mundial:
 set global transaction isolation level read committed;
6, el uso SAVEPOINT
set autocommit = 0;
start transaction;
delete from account where id = 1;
savepoint a;-- 设置保存点
delete from account where id = 2;
rollback to a;
Publicado 74 artículos originales · ganado elogios 21 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/qq_41530004/article/details/105152009
Recomendado
Clasificación