MySQL tabla CRUD

Tabla de contenido

1. Crear

1.1 Datos de una sola fila + inserción de columna completa

1.2 Datos de varias filas + inserción de columna especificada

1.3 insertar otra actualización

1.4 Datos de reemplazo

ejemplo, recuperar

2.1 SELECCIONAR columnas

2.2 Condición DONDE

2.3 Clasificación de resultados

2.4 Filtrar resultados de paginación

3. Actualizar

4. Eliminar

4.1 Eliminar datos 

4.2 Tabla truncada

5. Insertar resultados de consulta

6. Funciones de agregación

Siete, consulta de grupo

7.1 Tabla de prueba de consulta de grupo - tabla de información de empleados

7.2 TENER condiciones


  • La adición, eliminación, consulta y modificación de tablas se conocen como CRUD: Crear (nuevo), Recuperar (búsqueda), Actualizar (modificación), Eliminar (eliminar)
  • El objeto de operación de CRUD son los datos de la tabla, que es un lenguaje típico de manipulación de datos DML (lenguaje de manipulación de datos).

1. Crear

INSERT [INTO] table_name [(column1 [, column2] ...)] VALUES (value_list1) [, (value_list2)] ...;
  • Las mayúsculas en SQL representan palabras clave y [] representa elementos opcionales
  • Cada value_list en SQL representa un registro insertado, y cada value_list consta de varios valores de columna para insertar
  • La lista de columnas en SQL se usa para especificar en qué columna de la tabla se debe insertar cada valor de columna en cada lista de valores.

A continuación, cree una tabla de estudiantes para la demostración, que contiene la identificación de la clave principal que aumenta automáticamente, el número de estudiante, el nombre y el número de QQ

Ver la estructura de la tabla después de crear la tabla

1.1 Datos de una sola fila + inserción de columna completa

Lo siguiente usa insert para insertar registros en la tabla de estudiantes, insertando un registro en la tabla cada vez, y no especifica una lista de columnas al insertar registros, lo que significa que todas las columnas se insertan de acuerdo con el orden de columnas predeterminado en la tabla, por lo que las columnas en cada registro insertado Los valores deben enumerarse secuencialmente en orden tabular

1.2 Datos de varias filas + inserción de columna especificada

La declaración de inserción también se puede usar para insertar múltiples registros en la tabla a la vez. Los múltiples registros que se insertarán están separados por comas, y solo se pueden especificar ciertas columnas para insertar al insertar registros.

Nota:  Al insertar registros, solo se pueden insertar columnas que pueden estar vacías o campos de crecimiento automático sin especificar un valor, y las columnas que no pueden estar vacías deben insertarse con un valor específico; de lo contrario, se informará un error.

1.3 insertar otra actualización

Al insertar registros en la tabla, si la clave principal o la clave única en el registro que se va a insertar ya existe, la inserción fallará debido a un conflicto de clave principal o un conflicto de clave única.

En este punto, puede realizar opcionalmente una operación de actualización síncrona:

  • Si no hay datos en conflicto en la tabla, inserte los datos directamente
  • Si hay datos en conflicto en la tabla, actualice los datos en la tabla
INSERT ... ON DUPLICATE KEY UPDATE column1=value1 [, column2=value2] ...;
  • Las mayúsculas en SQL representan palabras clave y [] representa elementos opcionales
  • La sintaxis después de INSERT en SQL es la misma que la instrucción INSERT anterior
  • column=value after UPDATE indica el valor de la columna que debe actualizarse cuando hay un conflicto en el registro insertado

Al insertar registros en la tabla de estudiantes, si no hay un conflicto de clave principal, inserte el registro directamente; si hay un conflicto de clave principal, actualice el número de estudiante y el nombre del registro en conflicto en la tabla

Después de ejecutar el SQL para insertar o actualizar, puede juzgar el estado de inserción de estos datos por el número de filas de datos afectados:

  • 0 filas afectadas: hay datos en conflicto en la tabla, pero el valor de los datos en conflicto es el mismo que el valor de la actualización especificada
  • 1 fila afectada: no hay datos en conflicto en la tabla y los datos se insertan directamente
  • 2 filas afectadas: hay datos en conflicto en la tabla y los datos se han actualizado

1.4 Datos de reemplazo

  • Si no hay datos en conflicto en la tabla, inserte los datos directamente
  • Si hay datos en conflicto en la tabla, primero elimine los datos en conflicto en la tabla y luego inserte los datos

Para lograr el efecto anterior, simplemente cambie INSERT en la instrucción SQL a REPLACE al insertar datos

  • 1 fila afectada: no hay datos en conflicto en la tabla y los datos se insertan directamente
  • 2 filas afectadas: hay datos en conflicto en la tabla, y los datos en conflicto se eliminan y se reinsertan

ejemplo, recuperar

SELECT [DISTINCT] {* | {column1 [, column2] ...}} FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...];
  • Las mayúsculas en SQL representan palabras clave y [] representa elementos opcionales
  • El | en { } significa que puede elegir la declaración de la izquierda o la declaración de la derecha

Cree una tabla de puntuación para la demostración, que contenga la identificación de la clave principal autoincrementable, el nombre y la puntuación en chino, matemática y en inglés del alumno.

Ver la estructura de la tabla después de crear la tabla

Insertar varios registros de prueba en la tabla

2.1 SELECCIONAR columnas

consulta de columna completa

Al consultar datos, use * para reemplazar la lista de columnas, lo que significa una consulta de columna completa, y luego se mostrará toda la información de columna de los registros filtrados

Nota:  En general, no se recomienda realizar *una consulta de columna completa, porque los datos consultados deben transmitirse desde el servidor MySQL al host a través de la red, y más columnas para consultar significa una mayor cantidad de datos para transmitir Las consultas de columna también pueden afectar el uso de índices.

Consulta de columna especificada

Al consultar datos, también puede consultar solo las columnas especificadas. En este momento, enumere las columnas que se consultarán en la lista de columnas.

El campo de consulta es una expresión.

Al consultar datos, además de enumerar los nombres de las columnas en la lista de columnas, las expresiones también se pueden enumerar en la lista de columnas. Si la expresión aparece en la lista de columnas, la expresión se ejecutará cuando se filtre cada registro y luego el resultado del cálculo de la expresión se mostrará como un valor de columna de este registro.

Porque select puede usarse no solo para consultar datos, sino también para calcular ciertas expresiones o ejecutar ciertas funciones

La expresión en la lista de columnas puede contener los campos existentes en la tabla. En este momento, cada vez que se filtra un registro, el valor de la columna correspondiente en el registro se proporcionará a la expresión para el cálculo.

Especificar un alias para los resultados de la consulta

SELECT column [AS] alias_name [...] FROM table_name;

Por ejemplo, al consultar los datos en la tabla de calificaciones, agregue las tres calificaciones en cada registro y luego asigne el alias de la columna correspondiente al resultado del cálculo a "puntaje total".

Deduplicación de resultados

Al consultar la tabla de puntajes, especifique la columna correspondiente al puntaje matemático de consulta, y podrá ver que hay puntajes repetidos en el puntaje matemático

Si desea deduplicar los resultados de la consulta, puede agregar distintos después de seleccionar en SQL

2.2 Condición DONDE

La diferencia de agregar una cláusula where:

  • Si no se especifica la cláusula where al consultar los datos, todos los registros de la tabla se utilizarán directamente como fuente de datos para ejecutar la instrucción de selección de forma secuencial.
  • Si se especifica la cláusula where al consultar los datos, entonces, al consultar los datos, los registros que cumplen las condiciones se filtrarán de acuerdo con la cláusula where, y luego la declaración de selección se ejecutará secuencialmente utilizando los registros que cumplan las condiciones como datos. fuente

Se pueden especificar una o más condiciones de filtro en la cláusula where, y los operadores lógicos AND u OR se utilizan para asociar cada condición de filtro.

Operadores de comparación:

Operadores logicos:

Consulta los alumnos que reprobaron en inglés y sus puntuaciones en inglés

En la cláusula where, indique que la condición del filtro es que la puntuación en inglés sea inferior a 60, y en la lista de columnas de selección, especifique la columna que se consultará como nombre y puntuación en inglés

Consulte a los estudiantes cuyas puntuaciones en chino están entre 80 y 90 y sus puntuaciones en chino

En la cláusula where, indique que la condición del filtro es que la puntuación del idioma sea mayor o igual a 80 y menor o igual a 90, y en la lista de columnas de selección, especifique la columna a consultar como nombre y puntuación del idioma.

También puede usar ENTRE a0 Y a1 para indicar el rango de la puntuación del idioma

Consultar a los estudiantes cuyas puntuaciones en matemáticas son 58 o 59 o 98 o 99 y sus puntuaciones en matemáticas

En la cláusula where, especifique la condición de filtro como puntuación matemática igual a 58 o 59 o 98 o 99, y especifique la columna que se consultará como nombre y puntuación matemática en la lista de columnas de selección

También puede usar IN(58,59,98,99) para juzgar si los puntajes de matemáticas cumplen con los requisitos de evaluación.

Búsqueda de alumnos con el apellido Sol

En la cláusula where, use la coincidencia aproximada para determinar si el apellido del compañero de clase actual es Sun ( %coincidencia de varios caracteres), y especifique la columna que se consultará como nombre en la lista de columnas de selección

Preguntar sobre el Sr. Sun

En la cláusula where, use la coincidencia aproximada para juzgar si el compañero de clase actual es Sun (que _coincida estrictamente con un solo carácter) y especifique la columna que se consultará como nombre en la lista de columnas de selección

Consultar a los estudiantes cuyos puntajes en chino son mejores que los puntajes en inglés

En la cláusula where, indique que la condición del filtro es que la puntuación en chino sea mayor que la puntuación en inglés, y en la lista de columnas de selección, especifique las columnas que se consultarán como nombre, puntuación en chino y puntuación en inglés.

Consulta de estudiantes cuya puntuación total es inferior a 200 puntos

Agregue una consulta de expresión a la lista de columnas de selección. La expresión de la consulta es la suma de las puntuaciones de chino, matemáticas e inglés. Para facilitar la observación, puede especificar un alias para la columna correspondiente a la expresión como "puntuación total". y especifique el filtro en la cláusula where La condición es que la suma de los tres sujetos sea inferior a 200

El alias especificado en select no se puede utilizar en la cláusula where:

  • Al consultar datos, primero filtre los registros calificados de acuerdo con la cláusula where
  • Luego use los registros calificados como la fuente de datos para ejecutar la declaración de selección en secuencia

Es decir, la cláusula where se ejecuta antes que la instrucción select, por lo que no se pueden usar alias en la cláusula where.Si se usa un alias en la cláusula where, se informará un error al consultar los datos.

Consulta para estudiantes cuya puntuación en chino sea superior a 80 y cuyo apellido no sea Sun

En la cláusula where, indique que la condición del filtro es que la puntuación de chino sea superior a 80, y utilice coincidencias parciales y no para asegurarse de que el apellido del estudiante no sea Sun, y especifique la columna que se consultará como nombre y puntuación de chino en el lista de columnas de selección

Consulte al Sr. Sun, de lo contrario, se requiere que el puntaje total sea mayor a 200 puntos y el puntaje en chino sea menor que el puntaje en matemáticas y el puntaje en inglés sea mayor a 80 puntos

El requisito de este tema es comprobar los resultados. La persona consultada es Sun, o la puntuación total es superior a 200 puntos y la puntuación en chino es inferior a la puntuación en matemáticas y la puntuación en inglés es superior a 80 puntos. , la consulta de expresión y las operaciones lógicas son necesarias para la consulta.

consulta por NULL

Use la tabla de estudiantes que demostró los datos recién agregados para demostrar la consulta NULL. El contenido de la tabla de estudiantes es el siguiente:

En la cláusula where, indique que la condición del filtro es que el número QQ no sea NULO, y en la lista de columnas de selección, indique que la columna a consultar es nombre y número QQ, y puede consultar estudiantes con números QQ conocidos

Especifique la condición de filtro en la cláusula where ya que el número QQ es NULL, especifique la columna que se consultará como nombre y número QQ en la lista de columnas de selección, y puede consultar a los estudiantes con números QQ desconocidos

Nota: El operador <=> debe usarse cuando se compara con valores NULL , y =los resultados de consulta correctos no se pueden obtener usando el operador

El operador = es NULL inseguro, el operador = compara cualquier valor con NULL y el resultado es NULL

Pero el operador <=> es NULL seguro. El operador <=> compara NULL con NULL para obtener VERDADERO (1), y compara valores que no son NULL con NULL para obtener FALSO (0)

2.3 Clasificación de resultados

SELECT ... FROM table_name [WHERE ...] ORDER BY column [ASC | DESC] [, ...];
  • Las mayúsculas en SQL representan palabras clave y [] representa elementos opcionales
  • ASC y DESC representan orden ascendente y descendente respectivamente, el valor predeterminado es ASC

Nota:  si no hay una cláusula order by en la consulta SQL, el orden devuelto no está definido

Consulte a los estudiantes y sus puntajes de matemáticas, y muéstrelos en orden ascendente de puntajes de matemáticas

En la lista de columnas de selección, indique que la columna a consultar es el nombre y la calificación de matemáticas, y en la cláusula order by, indique que la calificación de matemáticas está ordenada en orden ascendente

Consulte a los estudiantes y sus números de QQ y muéstrelos en orden ascendente de números de QQ

En la lista de columnas de selección, indique que las columnas a consultar son nombre y número de QQ, y en la cláusula order by, indique que están ordenadas en orden ascendente por número de QQ

Los valores NULL se consideran más pequeños que cualquier valor, por lo que aparecen en la parte superior al ordenar de forma ascendente

Consulte las calificaciones de los estudiantes en varias materias y muéstrelas en orden descendente de matemáticas, orden ascendente de inglés y orden ascendente de chino.

En la lista de columnas de selección, indique que las columnas que se consultarán son nombre, puntuación matemática, puntuación en inglés y puntuación en chino, y en la cláusula order by, indique que la puntuación matemática se ordena en orden descendente, la puntuación en inglés se ordena en orden ascendente, y la puntuación china se ordena en orden ascendente

 Se puede ver que los resultados de la pantalla se ordenan en orden descendente de acuerdo con los puntajes de matemáticas, mientras que los mismos puntajes de matemáticas se ordenan en orden ascendente de acuerdo con los puntajes de inglés.

  • La cláusula order by puede indicar la clasificación por varios campos, y cada campo puede indicar la clasificación en orden ascendente o descendente. Cada campo está separado por una coma, y ​​la prioridad de clasificación es la misma que el orden de escritura
  • Como se muestra en el SQL anterior, cuando los puntajes matemáticos de los dos registros son iguales, se ordenarán de acuerdo con los puntajes de inglés. Si los puntajes de inglés de los dos registros también son iguales, se seguirán ordenando de acuerdo con las puntuaciones chinas, y así sucesivamente.

Consulte a los estudiantes y sus puntajes totales, y muéstrelos en orden descendente de puntajes totales

En la lista de columnas de selección, indique que la columna a consultar es nombre y puntaje total (consulta de expresión), y en la cláusula order by, indique que la columna está ordenada en orden descendente por puntaje total

El alias especificado en select se puede utilizar en la cláusula order by:

  • Al consultar datos, primero filtre los registros calificados de acuerdo con la cláusula where
  • Luego use los registros calificados como la fuente de datos para ejecutar la declaración de selección en secuencia
  • Finalmente, ordene los resultados de ejecución de la instrucción select a través de la cláusula order by

Es decir, la ejecución de la cláusula order by es posterior a la instrucción select, por lo que se puede usar un alias en la cláusula order by.

Consulte a los estudiantes de apellido Sun o estudiantes de apellido Cao y sus puntajes de matemáticas, y muéstrelos en orden descendente de puntajes de matemáticas

  • La primera mitad de la oración del título describe la consulta, y la segunda mitad de la oración describe la clasificación.
  • Debe haber datos al ordenar, por lo que puede completar primero la acción de consulta anterior y luego ordenar de acuerdo con los requisitos del tema.

Al consultar datos, especifique la condición de filtro como apellido Sun o apellido Cao (coincidencia aproximada) en la cláusula where, y especifique la columna que se consultará como nombre y puntuación matemática en la lista de columnas de selección.

Después de consultar los datos de destino, agregue una cláusula order by después de consultar el SQL y especifique en la cláusula order by para ordenar en orden descendente de acuerdo con los puntajes matemáticos.

2.4 Filtrar resultados de paginación

A partir del registro 0, filtre n registros hacia atrás

SELECT ... FROM table_name [WHERE ..] [ORDER BY ...] LIMIT n;

Comenzando desde el registro sth, filtre n registros hacia atrás

SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;

Comenzando desde el registro sth, filtre n registros hacia atrás

SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
  • Las mayúsculas en SQL representan palabras clave y [] representa elementos opcionales
  • El orden de ejecución de cada declaración en la consulta SQL es: donde, seleccionar, ordenar por, limitar
  • Cuando la cláusula de límite filtra registros, el subíndice del registro comienza desde 0

Sugerencia:  al consultar tablas desconocidas, es mejor agregar un límite después de consultar SQL, para evitar que la base de datos se atasque debido a datos demasiado grandes en la tabla al consultar los datos de la tabla completa.

Paginación por id, 3 registros por página, mostrando las páginas 1, 2 y 3 respectivamente

Aquí, los datos de la tabla de puntuación se utilizan para demostrar la consulta de paginación. El contenido de la tabla de puntuación es el siguiente:

Al consultar los registros en la página 1, después de consultar el SQL de todos los datos de la tabla, agregue una cláusula de límite para indicar que, a partir del registro 0, filtre 3 registros hacia atrás

Al consultar los registros en la página 2, después de consultar el SQL de los datos en toda la tabla, agregue una cláusula de límite para indicar que, a partir del tercer registro, filtre 3 registros hacia atrás.

Al consultar los registros en la página 3, agregue la cláusula de límite después de consultar el SQL de todos los datos de la tabla para indicar que, a partir del sexto registro, filtre 3 registros hacia atrás.

Si hay menos de n registros filtrados de la tabla, muestre tantos como filtre

3. Actualizar

UPDATE table_name SET column1=expr1 [, column2=expr2] ... [WHERE ...] [ORDER BY ...] [LIMIT ...];
  • Las mayúsculas en SQL representan palabras clave y [] representa elementos opcionales
  • column=expr en SQL significa modificar el valor de la columna denominada column en el registro a expr
  • Antes de modificar los datos, primero debe encontrar el registro que se va a modificar. El lugar, el orden por y el límite en la declaración de actualización se utilizan para ubicar los datos.

Modificar la puntuación de matemáticas de Sun Wukong a 80 puntos

En la declaración de actualización, especifique que la puntuación matemática de los registros filtrados debe cambiarse a 80 puntos

Cambie la puntuación de matemáticas de Cao Mengde a 60 puntos y la puntuación de chino a 70 puntos

Agregue 30 puntos a los puntajes de matemáticas de los tres estudiantes con los tres puntajes totales inferiores

Antes de modificar los datos, primero verifique los puntajes de matemáticas de los tres mejores estudiantes con los puntajes totales de los tres últimos.

En la declaración de actualización, especifique que la puntuación matemática de los registros filtrados debe agregarse en 30 puntos y verifique los datos nuevamente después de la modificación para asegurarse de que los datos se hayan modificado correctamente.

Nota: MySQL no admite el operador de asignación compuesto +=. Al ver los datos actualizados, no puede ver los tres mejores estudiantes con la puntuación total más baja, porque los tres estudiantes con las tres puntuaciones totales más bajas antes pueden no ser los tres mejores estudiantes después de agregar 30 puntos a sus puntuaciones de matemáticas.

4. Eliminar

4.1 Eliminar datos 

DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...];
  • Las mayúsculas en SQL representan palabras clave y [] representa elementos opcionales
  • Antes de eliminar los datos, debe encontrar el registro que desea eliminar. Donde, el orden por y el límite en la declaración de eliminación se utilizan para ubicar los datos.

Eliminar los puntajes de las pruebas de Sun Wukong

Antes de eliminar los datos, primero verifique la información relevante de Sun Wukong, luego especifique en la declaración de eliminación para eliminar el registro correspondiente a Monkey King, y verifique nuevamente después de la eliminación para asegurarse de que se eliminen los datos.

Eliminar todos los datos de la tabla

Cree una tabla de prueba que contenga una identificación y un nombre de clave principal que aumentan automáticamente

Inserte algunos datos de prueba en la tabla para eliminarlos

En la declaración de eliminación, solo se especifica el nombre de la tabla cuyos datos se eliminarán, y no se especifican las condiciones de filtro a través de where, order by y limit.En este momento, se eliminarán los datos de toda la tabla.

Inserte algunos datos en la tabla nuevamente y no especifique el valor del campo de crecimiento propio al insertar los datos. En este momento, encontrará que el valor de identificación de crecimiento propio correspondiente a los datos insertados continúa creciendo en el anterior base

Ver la información relevante al crear una tabla, hay un campo de AUTO_INCREMENT=n, que indica que el valor del campo de crecimiento propio debe ser n al insertar datos la próxima vez

Eliminar todos los datos de la tabla a través de la declaración de eliminación no restablecerá el campo AUTO_INCREMENT=n, por lo que después de eliminar todos los datos de la tabla e insertar datos, el valor de identificación de incremento automático correspondiente seguirá creciendo sobre la base original

4.2 Tabla truncada

TRUNCATE [TABLE] table_name;
  • Las mayúsculas en SQL representan palabras clave y [] representa elementos opcionales
  • Truncar solo puede operar en toda la tabla y no puede operar en datos parciales como eliminar
  • truncar en realidad no opera en los datos, por lo que es más rápido que eliminar
  • truncar no pasa por transacciones reales al eliminar datos, por lo que no se puede revertir
  • truncar restablecerá el campo AUTO_INCREMENT=n

Cree una tabla de prueba que contenga una identificación y un nombre de clave principal que aumentan automáticamente

Inserte algunos datos de prueba en la tabla para eliminarlos

En la declaración truncada, solo especifique el nombre de la tabla cuyos datos se eliminarán. En este momento, se eliminarán todos los datos de la tabla. Sin embargo, dado que truncar no opera en los datos, después de ejecutar la declaración truncada, puede vea que el número de filas afectadas es 0.

Luego inserte algunos datos en la tabla y no especifique el valor del campo de crecimiento propio al insertar los datos. En este momento, encontrará que el valor de identificación de crecimiento propio correspondiente a los datos insertados se incrementa de 1 nuevamente

Al mirar la información relevante al crear una tabla, también puede ver que hay un campo AUTO_INCREMENT=n, que indica que el valor del campo de crecimiento propio debe ser n al insertar datos la próxima vez

Al usar la declaración truncada para eliminar todos los datos de la tabla, el campo AUTO_INCREMENT se restablecerá, por lo que el valor de identificación de incremento automático correspondiente a los datos insertados después de truncar la tabla aumentará de 1 nuevamente.

5. Insertar resultados de consulta

INSERT [INTO] table_name [(column1 [, column2] ...)] SELECT ... [WHERE ...] [ORDER BY ...] [LIMIT ...];
  • Las mayúsculas en SQL representan palabras clave y [] representa elementos opcionales
  • El papel de SQL es insertar los registros filtrados en la tabla especificada
  • columna en SQL indica en qué columna de la tabla insertar cada columna del registro filtrado

Eliminar registros duplicados en la tabla, solo puede haber una copia de datos duplicados

Cree una tabla de prueba con id y nombre en la tabla

Inserte algunos datos de prueba en la tabla de prueba y hay registros duplicados en los datos

Ahora se requiere borrar los datos duplicados en la tabla de prueba, la idea es la siguiente:

  • Cree una tabla temporal con la misma estructura que la tabla de prueba
  • Consulte los datos en la tabla de prueba de forma desduplicada e inserte los resultados de la consulta en la tabla temporal
  • Cambie el nombre de la tabla de prueba a otro nombre y luego cambie el nombre de la tabla temporal al nombre de la tabla de prueba para lograr la deduplicación atómica

Dado que la estructura de la tabla temporal es la misma que la de la tabla de prueba, se puede crear como cuando se creó la tabla temporal

Inserte el resultado de la consulta de deduplicación en la tabla temporal insertando la declaración de consulta. Dado que la estructura de la tabla temporal y la tabla de prueba son las mismas, y select realiza una consulta de columna completa, no es necesario especificar la lista de columnas después del nombre de la tabla al insertar.

Cambie el nombre de la tabla de prueba a otro nombre (equivalente a hacer una copia de seguridad de los datos antes de la desduplicación y elimínelo directamente si no es necesario), cambie el nombre de la tabla temporal al nombre de la tabla de prueba y luego complete la desduplicación de los datos en la operación de la tabla

6. Funciones de agregación

Las funciones agregadas realizan cálculos en una lista de valores y devuelven un solo valor

Contar el número de estudiantes en la clase. 

Use la tabla de estudiantes anterior para la demostración, los datos en la tabla son los siguientes:

 Use la función de conteo en la declaración de selección y *pásela como parámetro a la función de conteo, luego puede contar la cantidad de registros en la tabla

Use la función de conteo en la declaración de selección y pase la expresión como un parámetro a la función de conteo. En este momento, también puede contar el número de registros en la tabla

Es equivalente a agregar una nueva columna con el nombre de una expresión específica al consultar los datos en la tabla y usar la función de conteo para contar cuántos datos hay en la columna, lo que equivale a cuántos registros hay en la tabla estadística.

Cuente la cantidad de números QQ recopilados por la clase

Use la función de conteo en la declaración de selección para contar la cantidad de datos en la columna qq, y luego puede contar la cantidad de números QQ en la tabla

Si el parámetro de la función de conteo es un nombre de columna determinado, entonces la función de conteo ignorará el valor NULL en la columna

Cuente el número de puntajes en el puntaje de matemáticas de esta prueba

Usar hojas de puntuación anteriores para presentaciones

Use la función de conteo en la declaración de selección para contar la cantidad de datos en la columna matemática, y luego puede contar la cantidad de puntajes matemáticos en la tabla

Cuente el número de puntajes en el puntaje de matemáticas de esta prueba (elimine los duplicados)

Cuando use la función de conteo (incluidas otras funciones agregadas), agregue distintos antes de los parámetros pasados, y luego podrá contar la cantidad de puntajes matemáticos deduplicados en la tabla

Puntaje total de matemáticas estadísticas

Use la función de suma en la declaración de selección para contar la suma de los datos en la columna matemática, luego puede contar la suma de los puntajes matemáticos en la tabla

Estadísticas Reprobado Matemáticas Calificación Puntaje total

En la cláusula where, indique que la condición del filtro es que la puntuación matemática sea inferior a 60 puntos, y use la función de suma en la declaración de selección para contar la suma de los datos en la columna matemática.

Dado que actualmente no hay compañeros de clase que reprobaron matemáticas, el resultado de la suma es NULL

Promedio estadístico

Use la función avg en la declaración de selección para calcular el promedio de la puntuación total

Devuelve la puntuación más alta en inglés

Use la función max en la declaración de selección para consultar el puntaje más alto en inglés

Devuelve una puntuación mínima de inglés de 70 o más

En la cláusula where, indique que la condición del filtro es que la puntuación en inglés sea superior a 70 puntos, y use la función min en la instrucción select para consultar la puntuación más baja en inglés

Siete, consulta de grupo

SELECT column1 [, column2], ... FROM table_name [WHERE ...] GROUP BY column [, ...] [order by ...] [LIMIT ...];
  • Las mayúsculas en SQL representan palabras clave y [] representa elementos opcionales
  • El orden de ejecución de cada declaración en la consulta SQL es: donde, agrupar por, seleccionar, ordenar por, limitar
  • El nombre de la columna después de agrupar por indica la consulta de agrupación de acuerdo con la columna especificada

7.1 Tabla de prueba de consulta de grupo - tabla de información de empleados

Contenido del formulario de información del empleado

La tabla de información de empleados contiene tres tablas, a saber, la tabla de empleados (emp), la tabla de departamentos (dept) y la tabla de calificaciones salariales (salgrade)

La tabla de empleados (emp) contiene los siguientes campos:

  • Número de empleado (empno)
  • nombre del empleado (ename)
  • puesto de empleado (trabajo)
  • Número de líder de empleado (MGR)
  • Tiempo de empleo (fecha de contratación)
  • Salario salario mensual (sal)
  • bonificación (comunicación)
  • Número de departamento (deptno)

La tabla de departamentos (dept) contiene los siguientes campos:

  • Número de departamento (deptno)
  • nombre del departamento (dname)
  • Ubicación del departamento (loc)

La tabla de calificaciones salariales (salgrade) contiene los siguientes campos:

  • calificación
  • Salario mínimo para este grado (losal)
  • El salario más alto en este nivel (hisal)

Tabla de información de empleados SQL

DROP database IF EXISTS `scott`;
CREATE database IF NOT EXISTS `scott` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

USE `scott`;

DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (
  `deptno` int(2) unsigned zerofill NOT NULL COMMENT '部门编号',
  `dname` varchar(14) DEFAULT NULL COMMENT '部门名称',
  `loc` varchar(13) DEFAULT NULL COMMENT '部门所在地点'
);


DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp` (
  `empno` int(6) unsigned zerofill NOT NULL COMMENT '雇员编号',
  `ename` varchar(10) DEFAULT NULL COMMENT '雇员姓名',
  `job` varchar(9) DEFAULT NULL COMMENT '雇员职位',
  `mgr` int(4) unsigned zerofill DEFAULT NULL COMMENT '雇员领导编号',
  `hiredate` datetime DEFAULT NULL COMMENT '雇佣时间',
  `sal` decimal(7,2) DEFAULT NULL COMMENT '工资月薪',
  `comm` decimal(7,2) DEFAULT NULL COMMENT '奖金',
  `deptno` int(2) unsigned zerofill DEFAULT NULL COMMENT '部门编号'
);


DROP TABLE IF EXISTS `salgrade`;
CREATE TABLE `salgrade` (
  `grade` int(11) DEFAULT NULL COMMENT '等级',
  `losal` int(11) DEFAULT NULL COMMENT '此等级最低工资',
  `hisal` int(11) DEFAULT NULL COMMENT '此等级最高工资'
);


insert into dept (deptno, dname, loc)
values (10, 'ACCOUNTING', 'NEW YORK');
insert into dept (deptno, dname, loc)
values (20, 'RESEARCH', 'DALLAS');
insert into dept (deptno, dname, loc)
values (30, 'SALES', 'CHICAGO');
insert into dept (deptno, dname, loc)
values (40, 'OPERATIONS', 'BOSTON');

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, null, 20);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, null, 20);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, null, 30);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, null, 10);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000, null, 20);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7839, 'KING', 'PRESIDENT', null, '1981-11-17', 5000, null, 10);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7844, 'TURNER', 'SALESMAN', 7698,'1981-09-08', 1500, 0, 30);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100, null, 20);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, null, 30);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, null, 20);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, null, 10);

insert into salgrade (grade, losal, hisal) values (1, 700, 1200);
insert into salgrade (grade, losal, hisal) values (2, 1201, 1400);
insert into salgrade (grade, losal, hisal) values (3, 1401, 2000);
insert into salgrade (grade, losal, hisal) values (4, 2001, 3000);
insert into salgrade (grade, losal, hisal) values (5, 3001, 9999);

Muestra los salarios medios y máximos de cada departamento

Especifique la agrupación por número de departamento en la cláusula group by y use la función avg y la función max en la instrucción select para consultar el salario promedio y el salario máximo de cada departamento

El SQL anterior agrupará primero los datos en la tabla según el número de departamento y luego realizará consultas de agregación en cada grupo para obtener el salario promedio y el salario máximo de cada grupo.

Mostrar los salarios medios y mínimos para cada tipo de trabajo en cada sector

En la cláusula group by, especifique la agrupación por número de departamento y puesto a su vez, y use la función avg y la función min en la instrucción select para consultar el salario promedio y el salario mínimo de cada puesto en cada departamento

  • La cláusula group by puede indicar la agrupación por varios campos, cada campo está separado por una coma y la prioridad de agrupación es la misma que el orden de escritura.
  • Al igual que en el SQL anterior, cuando los números de departamento de los dos registros sean iguales, se seguirán agrupando por posición.

7.2 TENER condiciones

SELECT ... FROM table_name [WHERE ...] [GROUP BY ...] [HAVING ...] [order by ...] [LIMIT ...];
  • Las mayúsculas en SQL representan palabras clave y [] representa elementos opcionales
  • El orden de ejecución de cada instrucción en SQL es: donde, agrupar por, seleccionar, tener, ordenar por, limitar
  • Se pueden especificar una o más condiciones de filtro en la cláusula que tiene

La diferencia entre cláusula have y cláusula where

  • La cláusula where se coloca después del nombre de la tabla, y la cláusula que tiene debe usarse con la cláusula group by y colocarse después de la cláusula group by.
  • La cláusula where es para filtrar los datos de toda la tabla, y la cláusula being es para filtrar los datos agrupados.
  • Las funciones agregadas y los alias no se pueden usar en la cláusula where, pero las funciones agregadas y los alias se pueden usar en la cláusula have

El orden de ejecución de cada sentencia en SQL

  • Filtrar registros elegibles según la cláusula where
  • Agrupe los datos de acuerdo con la cláusula group by
  • Ejecutar la declaración de selección secuencialmente en los datos agrupados
  • Filtre aún más los datos agrupados de acuerdo con la cláusula que tiene
  • Ordenar los datos según el orden por cláusula
  • Filtrar varios registros para mostrar de acuerdo con la cláusula de límite

Mostrar el departamento con salario promedio inferior a 2000 y su salario promedio

  • Primero calcule el salario promedio de cada departamento
  • Luego use la cláusula de tener para filtrar los departamentos cuyo salario promedio es inferior a 2000

Supongo que te gusta

Origin blog.csdn.net/GG_Bruse/article/details/131198505
Recomendado
Clasificación