Aprendizaje y resumen de la base de datos mysql

Prefacio

   Soy un ingeniero de pruebas. Para analistas de datos, ingenieros de desarrollo e ingenieros de pruebas, el funcionamiento de la base de datos es la tecnología más básica e importante. Este artículo es un resumen de la base de datos Mysql durante mi proceso de estudio y trabajo.


1. Conceptos básicos

1. Base de datos: Es una colección de datos relacionados con la administración organizados, compartidos y unificados almacenados en una computadora, compuestos por tablas, relaciones y objetos de operación.
2. Las características de las transacciones: atomicidad, consistencia, aislamiento y durabilidad.
3. Sistema de gestión de bases de datos: es un software a gran escala que manipula y gestiona bases de datos, utilizado para crear, utilizar y mantener bases de datos. DDL: lenguaje de definición de datos, DML: lenguaje de manipulación de datos, DCL: lenguaje de control de datos.
4. Características de la base de datos Mysql: alto rendimiento, multiplataforma, soporte para múltiples usuarios, libre y de código abierto, fácil de usar.
5. Clave principal: es el único campo sin un significado comercial específico que puede identificar un registro en una tabla, como foto de identidad, número de tarjeta, número de teléfono móvil, correo electrónico, etc. que pueden utilizarse como claves primarias. Características: a. Los campos de la clave principal son únicos; b. Los campos de la clave principal no pueden estar vacíos; c. La clave principal tiene su propio índice; d. Varios campos pueden formar la clave principal; e. Una tabla tiene solo una clave primaria.
6, clave externa: se utiliza para establecer una relación entre dos tablas, es necesario especificar a qué columna hacer referencia a la tabla principal. Si la clave primaria de la tabla A es un campo en la tabla B, el campo se denomina clave externa de la tabla B, tabla A (tabla primaria), tabla B (tabla esclava). Las claves externas se utilizan para lograr la integridad referencial. Cuando se actualiza la tabla maestra, la tabla esclava también se actualiza. Cuando se elimina la tabla maestra, si la tabla esclava tiene un elemento coincidente, la eliminación falla.
7. Índice: Es una estructura de almacenamiento física única que ordena los valores de una o más columnas en una tabla de base de datos. Ventajas: el uso de índices puede acelerar la velocidad de consulta de datos, desventajas: los índices ocuparán memoria y espacio en disco, y aumentarán el costo de mantenimiento del sistema de administración de la base de datos.
8. Ver:Una tabla virtual no almacena ningún dato. Los datos de la vista provienen de la tabla base cuando se crea la vista. Función: simplificar la operación, simplificar SQL complejo, B. Evitar la redundancia de datos, C. Mejorar la seguridad de los datos, D. Mejorar la independencia lógica de los datos.


Dos, tipo de datos Mysql

Tipo de datos de Mysql: tipo de fecha: fecha / hora / fecha y hora / marca de tiempo, tipo de cadena: char / varchar / text, tipo de coma flotante: decimal / float / double, tipo de entero: tinyint / smallint / mediumint / int / bigint.

En Mysql, excepto que los tipos de cadena necesitan establecer la longitud, otros tipos tienen longitudes predeterminadas.

 


3. Lenguaje de control de datos DCL

1. Operación del sistema

Verifique el puerto de acuerdo con el nombre del proceso: 1.tasklist | Findstr mysql 2.netstat -ano | Findstr pid
Verifique el proceso de acuerdo con el puerto: 1.netstat -ano | Findstr port 2.tasklist | Findstr pid
start mysql service: net iniciar mysql
detener el servicio mysql: net detener mysql para
acceder a mysql: mysql -h localhost -P 3306 -u root -p contraseña
Verificar parámetros: mostrar variables;
establecer parámetros: establecer nombre de parámetro = 'valor';
verificar motores de almacenamiento actuales: mostrar motores ;
modificar los motores de almacenamiento actuales: establecer default_storage_engine = innodb;
verificar el estado: MOSTRAR ESTADO;
verificar la versión: SELECCIONAR VERSIÓN ();

2. Permisos de usuario

Crear usuario: crear usuario `test` @` localhost` identificado por '123456';
modificar contraseña: modificar usuario `test` @` localhost` identificado por '123456'; 
eliminar usuario: eliminar usuario `test` @` localhost`;
actualizar Usuario: eliminar privilegios;
otorgar permisos: otorgar todo en *. * A `test` @` localhost`;
revocar permisos: revocar todo en *. * De `test` @` localhost`;
consultar al usuario actual: seleccionar USER () ;
Ver permisos de usuario: mostrar concesiones para Fox @ localhost;
consultar a todos los usuarios en la base de datos: SELECT * FROM mysql.user;


Cuatro, lenguaje de definición de datos DDL

1. Construye una biblioteca

Verificar todas las bibliotecas: mostrar bases de datos;
verificar la base de datos actual: seleccionar base de datos ();
modificar la base de datos: ALTER DATABASE mybase CHARACTER SET UTF8;
crear una base de datos: crear base de datos nombre de la base de datos juego de caracteres utf8;
verificar la declaración de la base de datos: mostrar crear base de datos nombre;
eliminar biblioteca: eliminar el nombre de la base de datos;
cambiar de base de datos: USE mybase;

2. Construye una mesa

Verificar todas las tablas: mostrar tablas;
crear una tabla: crear examen de tabla (
    id INT (11) PRIMARY KEY AUTO_INCREMENT, - la clave principal se incrementa automáticamente el
    nombre VARCHAR (20) DEFAULT NULL, - el valor predeterminado está vacío
    English INT,
    sal DOUBLE (7, 2), --Dígito entero 7, dígito decimal 2
    Math int NOT NULL - No vacío
);
Agregar clave primaria: modificar tabla stu2 agregar clave PRIMARIA (id, `name`); --Especificar el nombre de id juntos como clave principal para
agregar el valor predeterminado: Alter table stu2 alter COLUMN `gender` set DEFAULT'm ';
agregar restricción única y restricción no nula: ALTER TABLE exam MODIFY NAME VARCHAR (21) UNIQUE NOT NULL;
estructura de búsqueda: nombre de tabla desc
declaración de tabla de búsqueda: mostrar crear nombre de tabla de tabla;
eliminar tabla: soltar nombre de tabla de tabla;
modificar nombre de tabla: RENOMBRAR TABLA examen PARA puntuar;
modificar el juego de caracteres de la tabla: ALTER TABLE puntuación CHARACTER SET GBK;
crear tabla stu4 como stu3; - copiar completamente la estructura de la tabla, excepto los datos
MOSTRAR VARIABLES GLOBALES COMO'innodb_force_primary_key '; - para ver si la clave primaria obligatoria está activada
SET GLOBAL innodb_force_primary_key = off; - para desactivar la clave primaria obligatoria
mysql8 habilitará las restricciones de clave primaria obligatoria de forma predeterminada. Debe desactivar la clave primaria obligatoria. clave para utilizar la siguiente declaración. pd: las empresas generales no pueden desactivar las claves primarias obligatorias.
crear tabla stu5 como seleccionar * de stu3; - Copiar todos los datos de la tabla a la nueva tabla, excepto que la clave principal no se puede
copiar.Crear tabla stu6 como seleccionar id, nombre de stu3; - Copiar algunos campos de la tabla original a la nueva tabla, excepto por la clave primaria,
crea la tabla stu7 como seleccionar * de stu3 donde 1 = 0; -copie la estructura de la tabla de la tabla original a la nueva tabla, excepto por la clave primaria

3. Generar índice

Cree la tabla al crear:
cree el libro de la tabla (
isbn varchar (50) not null,
bookname varchar (100) not null, 
price decimal (8,2),
author varchar (50),
publishhouse varchar (50),
summary text,
PRIMARY clave `pk_isbn` (` isbn`), - Índice de clave principal Índice
ÚNICO `idx_bookname` (` nombre de libro`), - Índice de
índice único `idx_author` (` autor`), - Índice general Índice
FULLTEXT `ft_summary` (` resumen ` ) - Índice de texto completo
);

crear declaración:
crear índice `idx_author` en` libro` (`autor`); - índice ordinario
crear índice ÚNICO` idx_bookname` en `libro` (` nombre de libro`); - índice único
crear índice FULLTEXT `ft_summary` en` libro` (`resumen`); - Índice de texto completo

Alterar la declaración de la tabla:
alterar el libro de la tabla agregar índice `idx_author` (` autor`); - índice ordinario
alterar el libro de la tabla agregar índice ÚNICO `idx_bookname` (` nombre del libro`); - índice único
alterar el libro de la tabla agregar índice FULLTEXT `ft_summary` (` resumen`); - Índice de texto completo

Eliminar índice:
colocar el nombre del índice del índice en el nombre de la tabla;

Ver índice:
MOSTRAR INDICE DESDE el nombre de la tabla;

4. Crea una vista

crear vista nombre de vista (lista de campos) como seleccionar lista de campos de ......
CREAR VISTA v_studentCourseScore (
    alumnono, NOMBRE, nombre de curso, puntaje) AS SELECT
    a.sid, a`name`, b.cname, c.number
DESDE el estudiante a, curso b, puntuación c
DONDE a.sid = c.sid AND b.cid = c.corse_id;

Eliminar vista:
soltar el nombre de la vista de vista;

5. Modificar los campos de la tabla

Agregar campo: alterar la tabla stu2 agregar mayor VARCHAR (20);
modificar el tipo de datos: alterar la tabla stu2 MODIFICAR el carácter principal (20);
modificar el nombre del campo: alterar la tabla stu2 cambiar el carácter profesional principal (20);
eliminar campo: alterar la tabla stu2 soltar profesional ;


Cinco, lenguaje de manipulación de datos DML

1. Insertar datos

Insertar en: insertar datos directamente, insertar
un valor de campo completo: insertar en valores stu2 (1, 'zhangsan', 'm', 20);
insertar un valor de campo parcial: insertar en valores stu2 (id, nombre) (3, ' wangwu ');
Insertar varios datos a la vez: insertar en stu2 (id, nombre) valores (5,' zhao7 '), (6,' zhao8 '), (7,' zhao9 ');
insertar el resultado de consultar una tabla : Inserte en stu3 (id, nombre, género, edad) seleccione id, nombre, género, edad de stu2;

Reemplazar en: primero verifique si existe, actualice si existe e inserte si no existe.
Reemplazar en el nombre de la tabla (lista de campos) valores (lista de valores)
Reemplazar en el nombre de la tabla (lista de campos) seleccionar la lista de campos de la tabla [donde hay restricción]
Reemplazar en el nombre de la tabla establecer campo = valor, campo = valor

2. Actualizar datos

actualizar el nombre de la tabla conjunto campo = valor, campo = valor donde las condiciones de restricción; -
actualizar filas elegibles actualizar el nombre de la tabla conjunto campo = valor, campo = valor; - actualizar todas las filas

3. Eliminar datos

eliminar del nombre de la tabla donde hay condiciones de restricción; - eliminar registros que cumplen las condiciones, los datos se pueden deshacer
eliminar del nombre de la tabla; - eliminar todos los registros, los datos se pueden deshacer
truncar el nombre de la tabla de la tabla; - tabla vacía, los datos no ser revertido.


Seis, lenguaje de consulta de datos DQL

1. Seleccione el formato de sintaxis

seleccione la lista de campos de la tabla 1, tabla 2 donde la condición de restricción agrupa por campo de agrupación que tiene una segunda condición de filtro orden por condición de clasificación cantidad límite

2. Sentencias SQL básicas

Consultar todos los datos: seleccione * de stu;

Tome el alias como: seleccione el nombre como nombre de stu t; - Consulte el nombre de la columna y tome el nombre de alias como nombre, y el nombre de la tabla stu como t;

Ordenar por: asc (orden ascendente) / desc (orden descendente), el valor predeterminado es el orden ascendente.
seleccionar * de stu2 ordenar por edad desc; - especificar orden descendente
seleccionar * de stu2 ordenar por edad asc, peso desc; - ordenar por múltiples campos

palabra clave limit:
seleccionar * de stu2 límite 2; - volver a las 2 primeras filas
seleccionar * de stu2 límite 1,2; - volver a la segunda y tercera, 1 es el índice, el índice comienza desde 0


Distinct elimina registros duplicados: seleccione el nombre DISTINCT de stu2; - devuelva registros con diferentes nombres
seleccione DISTINCT name, age from stu2; - devuelva registros con diferentes nombres y edades

donde condiciones:

Operadores relacionales: => => <= <! = <> <=>
seleccione * de stu2 donde peso = nulo; - los valores nulos no se pueden restringir aquí, y no se pueden encontrar resultados
seleccione * de stu2 donde peso <= > nulo; - puede encontrar todos los registros cuyo peso está vacío
seleccione * de stu2 donde peso> = 100; - encuentre estudiantes cuyo peso sea mayor o igual a 110


Consulta de rango: entre y, no entre y y en, no en seleccionar * de stu2 donde el peso ENTRE 110 y 125; - consulta de rango adecuada para valores continuos
seleccionar * de stu2 donde peso en (110,120,125); - adecuado para valores discretos Consulta de rango


Coincidencia aproximada : me gusta, no me gusta seleccionar * de stu2 donde el nombre es como 'zhang%'; - todos los nombres que comienzan con zhang
seleccionar * de stu2 donde el nombre es como 'zhang_'; - solo 1 carácter después del comienzo de zhang Nombre
seleccionar * de stu2 donde el nombre como '% zhang%'; --- contiene el nombre de zhang
seleccionar * de stu2 donde el nombre como'_zhang _ '; --- es zhang en el medio, y el nombre es 1 carácter antes y después

Determine si está vacío: es nulo, no está
seleccionado * de stu2 donde el peso es nulo; - está vacío
seleccione * de stu2 donde el peso no es nulo; - no está vacío


Consulta de varias condiciones: y, o seleccione * de stu2 donde edad> '18' y sexo = '男'; - registros de consulta cuya edad sea mayor de 18 años y cuyo sexo sea masculino
seleccione * de stu2 donde edad> '18' or sex = 'Male'; - registros de consulta cuya edad es mayor de 18 años o cuyo género es masculino

3. Funciones comunes

Función matemática:
seleccione abs (-1,45); - tome el valor absoluto, salida 1,45
seleccione PISO (1,5); - redondee hacia abajo, salida 1
seleccione TECHO (1,5); - redondee hacia arriba, salida 2
seleccione mod (2,3); - Modulo
seleccionar TRUNCATE (156.567,2); --Truncar a 2 lugares decimales, salida 156.56
seleccionar TRUNCATE (156.567,0); --Truncar a entero, salida 156
seleccionar TRUNCATE (156.567, -2);
--Truncar a 2 enteros, salida 100 seleccione REDONDEAR (156.567,2); --Redondeo a 2 decimales, salida 156.57
seleccione REDONDA (156.567,0); --Redondeo a enteros, salida 157
seleccione REDONDA (156.567, -2); --Redondeo al número entero 2 dígitos, salida 200

Función de cadena:
seleccione CONCAT ('i', 'tengo', 'a', 'sueño'); - Concatenación de cadenas
seleccione CONCAT_WS ('', 'I', 'tengo', 'a', 'sueño'); - Concatenación de cadenas y cada palabra separada por espacios
seleccione izquierda ('Hunan Changsha', 3); - Tome los 3 caracteres de la izquierda
seleccione derecha ('Hunan Changsha', 3); - Tome los 3 caracteres de la derecha
seleccione longitud ('abcdefg'); - Visualice la longitud de la cadena
seleccione ltrim ('Plaza Hunan Changsha Wuyi'); - Elimine el espacio izquierdo
seleccione rtrim ('Plaza Hunan Changsha Wuyi'); - Elimine el espacio derecho
seleccione recorte ('Plaza Hunan Changsha Wuyi'); - eliminar los espacios iniciales y finales,
seleccionar UPPER ('abcd'); - minúsculas a mayúsculas,
seleccionar LOWER ('ABCD'); - mayúsculas a minúsculas
SELECT SUBSTR ('123abcdABCD Hunan Changsha', 4,3); - Empezar desde el 4 dígito, interceptar 3 dígitos y generar abc
SELECT ename, IFNULL (COMMIT, 0) FROM emp; - Si COMMIT tiene un valor nulo, se mostrará como 0
SELECT ename,CAST (sal AS INT) FROM emp; - convierte el campo sal en salida de tipo int
SELECT ename, COALESCE (USER, COMMIT, 0) FROM emp; - Toma el valor de user primero, si el usuario es nulo, toma el valor de commit, y si commit también es nulo, salida 0

Funciones de hora:
seleccione CURDATE (); - verifique la fecha actual 2020-11-18
seleccione CURDATE () +0; - verifique la fecha actual 20201118
seleccione CURTIME (); - verifique la hora actual 17:55:05
seleccione DATE_ADD ('2018-02 -10
10:10:10 ', INTERVALO 1 día); - más 1 día seleccione DATE_ADD (' 2018-02-10 10: 10: 10 ', INTERVAL -1 MES); - menos 1 mes
seleccione DATE_ADD (' 2018- 02-10 10: 10: 10 ', INTERVAL -1 AÑO); - menos 1 año
seleccione DAYOFWEEK (' 2020-11-29 10:10:10 '); - consulte el día de la semana, la salida 1, 1 representa Domingo
seleccione DAYNAME ('2020-11-29 10:10:10'); - Consulte el nombre en inglés de la semana y emite Domingo
seleccione MONTHNAME ('2020-01-29 10:10:10'); - -Query el nombre en inglés del mes y la salida de enero
seleccione AHORA (); - Consultar la hora actual
seleccione UNIX_TIMESTAMP (); - Consultar la marca de tiempo actual

Funciones agregadas:
seleccione 
max (puntaje), - máximo
mínimo (puntaje), -
promedio mínimo (puntaje), -
suma promedio (puntaje), -
recuento de suma (studentNO), - número total
de puntaje;

Función de proceso:
SELECT IF (500 <1000, 5, 10); - Si la condición de 500 <1000 es verdadera, salida 5, de lo contrario salida 10;
SELECT (CASE
WHEN state = '3' THEN'Fail '
WHEN state =' 5 'ENTONCES' éxito ' 
el eLSE' otro 'FIN)' estado '
el DESDE cm_job; - si estado =' 3 'falla de salida, estado =' 5 'salida exitosa

Consulta de grupo:
Sintaxis: Seleccione [Lista de campos de grupo,] Función de estadísticas agregadas (...)
De la Tabla 1, Tabla 2 donde Restricción
Agrupar por campo de agrupación que tiene
Orden de restricción por condiciones de ordenación de campos de clasificación
Ejemplo: consultar el número de pasadores en cada curso excede 3 Individual, número de curso, número de personas
seleccionar especialidad, contar (*) núm de alumno.estudiante 
donde puntuación> = 60 GRUPO POR especialidad teniendo num> 3;

4. Conectar consulta


Selección de producto cartesiano * del estudiante a, clase b;

等值 连接
seleccione a.name, b.classname del estudiante a, clase b donde a.classno = b.classno;

Conexión interna: el conjunto de resultados que cumple la condición de conexión.
seleccione a.name, b.classname del estudiante a, clase b en a.classno = b.classno;
seleccione a.name, b.classname del estudiante a, clase b en a.classno <> b.classno;

Unión izquierda: según la tabla de la izquierda, el resultado mostrará todos los registros de la tabla de la izquierda que coinciden con la tabla de la derecha, y la tabla de la derecha no coincide con NULL.
seleccione a.classname, b.name, c.score de la clase a LEFT JOIN student b 
on a.classNO = b.classNO left join score c on b.studentNO = c.studentNO 
donde b.gender = 'm';

Unión derecha: según la tabla de la derecha, el resultado mostrará todos los registros de la tabla de la derecha que coinciden con la tabla de la izquierda, y la tabla de la izquierda no coincide con NULL.
seleccione a`nombre`, b.nombre
de clase del estudiante a derecho unirse a la clase b en a.classNO = b.classNO;

Auto-conexión: la tabla se conecta consigo misma
seleccione a.empno número de líder, a.nombre nombre de líder, a.posición de líder de trabajo
, b.empno número de empleado, b.nombre nombre de empleado, b.trabajo puesto de empleado
de emp a, emp b
donde a.empno = b.mgr;

5. Subconsulta

Consulta cuántica escalar: El resultado devuelto es 1 columna y 1 fila
-información de la consulta sobre el estudiante con el peso más pesado
seleccione * de stu2 donde peso =
(seleccione max (peso) de stu2);

Subconsulta de mentira: la subconsulta devuelve una sola columna y varias filas de resultados:
para encontrar la información del estudiante con la puntuación de chino más alta,
seleccione * de estudiante donde no está el estudiante (
seleccione s2.studentno
de la puntuación s2, curso c2 donde s2.courseno = c2.courseno y s2.score = (
seleccione s.score
de score s, curso c
donde s.courseno = c.courseno y c.coursename = 'yuwen'
orden por s.score desc limit 1) y c2.coursename = ' Yuwen ')

Subconsulta de fila: devuelve los resultados de una sola fila y varias columnas
. Obtenga el género, número de clase, nombre, etc. de acuerdo con el número de estudiante, y luego obtenga la información detallada del estudiante
seleccione * de stu2 donde (género, clase, nombre) =
(seleccione género, clase, nombre de stu2
donde id = 1);

Subconsulta de tabla: devuelve resultados con varias filas y varias columnas.
Encuentre información sobre los estudiantes con la misma puntuación en cada curso
seleccione * de estudiante donde no está el estudiante (
seleccione s2.studentno de la puntuación s2, curso c2 donde s2.courseno = c2.courseno y (c2. courseno, s2.score) en (
seleccione c.courseno, s.score de la puntuación s, curso c donde s.courseno = c.courseno GROUP BY c.coursename, s.score teniendo s.score> = 2) );

6, existe predicado

Si existe, se ejecutará el siguiente sql, y si no existe, el siguiente sql no se ejecutará.
Si la puntuación de idioma de un estudiante es inferior a 40, actualice la puntuación a 60.
actualizar puntaje conjunto puntaje = 60 donde puntaje <= 40 y courseno =
(seleccione courseno del curso donde coursename = 'yuwen');

7, tabla derivada

Utilice el resultado devuelto por la instrucción sql como una tabla para asociarlo con otras tablas y vuelva a realizar la consulta. Esta es una tabla derivada.
Información sobre el alumno con mayor puntuación en cada curso.
seleccione * del estudiante donde no está el estudiante (
seleccione a.studentno 
del puntaje a, (seleccione courseno, max (puntaje) ma del grupo de puntaje por courseno) b
donde a.courseno = b.courseno y a.score = b.ma);

8. Establecer operaciones

UNION: dos sentencias de consulta fusionan los resultados y eliminan filas duplicadas
UNION ALL: dos sentencias de consulta fusionan los resultados sin eliminar ninguna fila
SELECT a.deptno FROM dept a UNION SELECT deptno b FROM emp; - consulta Debe ser la misma

 

Supongo que te gusta

Origin blog.csdn.net/weixin_46285621/article/details/109983185
Recomendado
Clasificación