Notas del estudio de MySQL 04 [operaciones de consulta de la base de datos, contenido actual, restricciones de la tabla]

  • Programador de documentos MySQL-Dark Horse (Tencent Weiyun): https://share.weiyun.com/RaCdIwas
  • 1-MySQL foundation.pdf, 2-Restricciones y diseño de MySQL.pdf, 3-MySQL multi-table query and transaction operation.pdf
  1. Notas de estudio de MySQL 01 [concepto de base de datos, instalación y uso de MySQL] [día01]
  2. Notas de estudio de MySQL 02 [Conceptos básicos y gramática general de SQL, operaciones de base de datos CRUD] [día01]
  3. Notas del estudio de MySQL 03 [Operaciones CRUD de tablas de bases de datos, operaciones básicas registradas en tablas de bases de datos, herramienta de interfaz gráfica del lado del cliente SQLyog] [día01]

  4. Notas del estudio de MySQL 04 [operaciones de consulta de base de datos, restricciones de tabla] [día01, día02]

  5. Notas del estudio de MySQL 05 [operación de múltiples tablas, tres paradigmas, respaldo y restauración de la base de datos] [día02]

  6. Notas de estudio de MySQL 06 [consulta de varias tablas, subconsulta, ejercicios de consulta de varias tablas] [día03]

  7. Notas de estudio de MySQL 07 [gestión de transacciones, usuarios y autoridad] [día03]

Tabla de contenido

Error de operación del terminal de la base de datos

07 Operación de consulta de base de datos

Consulta DQL_Basic

Eliminar conjuntos de resultados duplicados

Calcular la suma de puntuaciones

Alias

Consulta DQL_condition

Consulta DQL_Basic query_Fuzzy

Contenido de hoy

Consulta DQL_sort

Función DQL_aggregate

Consulta DQL_Group

Consulta DQL_Paging

08 Restricciones de la tabla

Constraints_Overview

Restricción constraint_non-empty

Constraint_Unique Constraint

Restricción de clave Constraint_primary

Constraint_Primary Key Constraint_Crecimiento automático

Constraints_Foreign Key Restricciones

Restricciones de clave externa: ejemplos de defectos

Conceptos relacionados con restricciones de clave externa

Constraint_Foreign Key Constraint_Cascade Operation

Actualización en cascada

Eliminar en cascada


Error de operación del terminal de la base de datos

El comando que informó el error: ERROR 1366 (HY000): valor de cadena incorrecto: '\ xC3 \ xFB \ xD7 \ xD6' para la columna'n

Solución (enlace al texto original): https://blog.csdn.net/u013317172/article/details/82778785

Muchas personas obtendrán este error al insertar datos chinos en la tabla después de instalar la base de datos Mysql.
ERROR 1366 (HY000): Valor de cadena incorrecto: '\ xD5 \ xC5 \ xD0 \ xA1 \ xC3 \ xF7' para la columna 'NOMBRE' en la fila 1
Inserte la descripción de la imagen aquí

solución:

1. Primero busque la ruta de instalación de la base de datos Mysql, como se muestra a continuación:

Inserte la descripción de la imagen aquí

2. Busque el archivo my.ini en esta carpeta, busque "default-character-set = utf8" y modifique uft8 a gbk.

Inserte la descripción de la imagen aquí

Inicie sesión en la base de datos mysql nuevamente para agregar datos chinos.

07 Operación de consulta de base de datos

Consulta DQL_Basic

1. Consulta de varios campos

  • seleccione el nombre del campo 1, el nombre del campo 2 ... del nombre de la tabla;
  • Nota: Si consulta todos los campos, puede usar * para reemplazar la lista de campos.

2. Eliminar la duplicación:

  • distinto

3. Columna calculada

  • Generalmente, puede usar los cuatro cálculos aritméticos para calcular una serie de valores (generalmente solo cálculos numéricos).
  • ifnull (expresión1, expresión2): el resultado del cálculo de la participación nula es nulo.
    • Expresión 1: qué campo debe juzgarse si es nulo
    • Si el campo es nulo, el valor de reemplazo.

4. Crea un alias:

  • como: como se puede omitir.
CREATE TABLE student (
  id INT,
  -- 编号
  NAME VARCHAR (20),
  -- 姓名
  age INT,
  -- 年龄
  sex VARCHAR (5),
  -- 性别
  address VARCHAR (100),
  -- 地址
  math INT,
  -- 数学
  english INT-- 英语
) ;

INSERT INTO student(id,NAME,age,sex,address,math,english) VALUES 
(1,'马云',55,'男','杭州',66,78),
(2,'马化腾',45,'女','深圳',98,87),
(3,'马景涛',55,'男','香港',56,77),
(4,'柳岩',20,'女','湖南',76,65),
(5,'柳青',20,'男','湖南',86,NULL),
(6,'刘德华',57,'男','香港',99,99),
(7,'马德',22,'女','香港',99,99),
(8,'德玛西亚',18,'男','南京',56,65);

SELECT * FROM student;

   

Eliminar conjuntos de resultados duplicados

Calcular la suma de puntuaciones

Alias

Consulta DQL_condition

1. cláusula where seguida de condiciones

2. Operador

  • > 、 <、 <= 、> = 、 = 、 <>
  • EN MEDIO Y  
  • IN (colección) 
  • LIKE: consulta difusa
    • Marcador de posición:
      • _: cualquier carácter
      • %: múltiples caracteres arbitrarios
  • ES NULO  
  • y 或 &&
  • o 或 || 
  • no o!
-- 查询年龄大于20岁
SELECT 
  * 
FROM
  student 
WHERE age > 20 ;
SELECT * FROM student WHERE age >= 20;

-- 查询年龄等于20岁
SELECT * FROM student WHERE age = 20;

-- 查询年龄不等于20岁
SELECT * FROM student WHERE age != 20;
SELECT * FROM student WHERE age <> 20;

-- 查询年龄大于等于20 小于等于30
SELECT * FROM student WHERE age >= 20 &&  age <=30;
SELECT * FROM student WHERE age >= 20 AND  age <=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30; -- 闭区间[20, 30]

-- 查询年龄22岁,18岁,25岁的信息
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
SELECT * FROM student WHERE age IN (22,18,25);

-- 查询英语成绩为null
SELECT * FROM student WHERE english = NULL; -- 错误!null值不能使用 = (!=) 判断

SELECT * FROM student WHERE english IS NULL;

-- 查询英语成绩不为null
SELECT * FROM student WHERE english  IS NOT NULL;

Consulta DQL_Basic query_Fuzzy

LIKE: consulta difusa

  • Marcador de posición:
    • _: cualquier carácter
    • %: múltiples caracteres arbitrarios
-- 查询姓马的有哪些? like
SELECT 
  * 
FROM
  student 
WHERE NAME LIKE '马%' ;

-- 查询姓名第二个字是化的人
SELECT * FROM student WHERE NAME LIKE "_化%";

-- 查询姓名是3个字的人
SELECT * FROM student WHERE NAME LIKE '___';

-- 查询姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE '%德%';

Contenido de hoy

  1. DQL: declaración de consulta
    1. Ordenar consulta
    2. Función agregada
    3. Consulta de grupo
    4. Consulta de paginación
  2. restricción
  3. Relación entre varias tablas
  4. Paradigma
  5. Copia de seguridad y restauración de la base de datos

Consulta DQL_sort

1. Ordenar consulta

  • Sintaxis: ordenar por cláusula
    • ordenar por campo de clasificación 1 método de clasificación 1, campo de clasificación 2 método de clasificación 2 ...
  • ordenar por:
    • ASC: orden ascendente (predeterminado).
    • DESC: orden descendente.
  • Nota:
    • Si hay varias condiciones de clasificación, la segunda condición se juzgará cuando el valor de la condición del lado actual sea el mismo.

Función DQL_aggregate

2. Función de agregación: tome una columna de datos como un todo y realice cálculos verticales.

  1. contar: cuenta el número
    1. Generalmente, seleccione columnas no vacías: clave primaria
    2. contar(*)
  2. max: calcula el valor máximo
  3. min: calcula el valor mínimo
  4. suma: calcula la suma
  5. avg: calcula el promedio

Nota: El cálculo de funciones agregadas excluye valores nulos.

Solución: 1. Seleccione columnas que no contengan no vacíos para el cálculo, 2. Función IFNULL.

  

Consulta DQL_Group

3. Consulta de grupo:

  1. Sintaxis: grupo por campo de grupo;
  2. Nota:
    1. Campos a consultar después de la agrupación: campos de agrupación, funciones agregadas
    2. ¿La diferencia entre dónde y tener?
      1. Donde se define antes de la agrupación, si no se cumplen las condiciones, no participará en la agrupación. Habiendo limitado después de agrupar, si el resultado no está satisfecho, no se consultará
      2. Las funciones agregadas no se pueden seguir después de dónde, y se puede juzgar que tienen funciones agregadas.
-- 按照性别分组。分别查询男、女同学的平均分
SELECT sex , AVG(math) FROM student GROUP BY sex;
		
-- 按照性别分组。分别查询男、女同学的平均分,人数
SELECT sex , AVG(math), COUNT(id) FROM student GROUP BY sex;
		
-- 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组
SELECT sex , AVG(math), COUNT(id) FROM student WHERE math > 70 GROUP BY sex;

-- 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
SELECT sex , AVG(math), COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
SELECT sex , AVG(math), COUNT(id) 人数 FROM student WHERE math > 70 GROUP BY sex HAVING 人数 > 2;

Consulta DQL_Paging

4. Consulta de paginación

  1. Sintaxis: índice que comienza con límite, el número de consultas por página;
  2. Fórmula: índice inicial = (número de página actual-1) * número de elementos mostrados en cada página
    1. 3 registros por página 
    2. SELECCIONAR * DEL LÍMITE de estudiantes 0,3; - Página 1: Verifique desde 0, verifique 3 registros
    3. SELECCIONAR * DEL LÍMITE de estudiantes 3,3; - Página 2: Marque de 3, marque 3 registros
    4. SELECCIONAR * DEL LÍMITE de estudiantes 6,3; - Página 3:
  3. el límite es un "dialecto" de MySQL

08 Restricciones de la tabla

Constraints_Overview

Concepto: Limite los datos de la tabla para garantizar la exactitud, validez e integridad de los datos.    

clasificación:

  1. Restricción de clave principal: clave principal
  2. Restricción no vacía: no nula
  3. La única restricción: única
  4. Restricción de clave externa: clave externa

Restricción constraint_non-empty

Restricción no vacía: no nulo, el valor no puede ser nulo

    1. Al crear una tabla, agregue la restricción
        CREATE TABLE stu (
            id INT,
            NAME VARCHAR (20) NOT NULL - name is not empty
        );
    2. Después de crear la tabla, agregue una restricción no vacía: ALTER TABLE stu MODIFY NAME VARCHAR (20) NOT NULL ;

    3. Elimine la restricción no vacía de nombre: ALTER TABLE stu MODIFY NAME VARCHAR (20);

  

Constraint_Unique Constraint

Restricción única: única, el valor no se puede repetir.

    1. Al crear una tabla, agregue una restricción única
        CREATE TABLE stu (
            id INT,
            phone_number VARCHAR (20) UNIQUE - se agrega una restricción única
        );
        * Tenga en cuenta que en mysql, el valor de una columna limitada por una restricción única puede tener múltiples nulos.

    2. Elimine la restricción única: ALTER TABLE stu DROP INDEX phone_number;

    3. Después de crear la tabla, agregue una restricción única: ALTER TABLE stu MODIFY phone_number VARCHAR (20) UNIQUE;

Restricción de clave Constraint_primary

Restricción de clave principal: clave principal

    1. Nota:
        1. Significado: no vacío y único
        2. Una tabla solo puede tener un campo como clave principal
        3. La clave principal es el identificador único del registro en la tabla

    2. Al crear una tabla, agregue una restricción de clave primaria
        create table stu (
            id int clave primaria, - agregue un
            nombre de restricción de clave primaria varchar (20)
        ) a id ;

    3. Eliminar la clave primaria
        - error alter table stu modificar id int;
        ALTER TABLE stu DROP PRIMARY KEY;

    4. Después de crear la tabla, agregue la clave primaria
        ALTER TABLE stu MODIFY id INT PRIMARY KEY;

Constraint_Primary Key Constraint_Crecimiento automático

    5. Crecimiento automático:
        1. Concepto: si una columna es de tipo numérico, use auto_increment para completar el crecimiento automático

        2. Al crear la tabla, agregue la restricción de clave primaria y complete el estudio de
        creación de tabla de crecimiento propio de clave primaria (
            id int clave primaria auto_increment, - agregue el
            nombre de restricción de clave primaria varchar (20)
        ) a id ;

        3. Eliminar el crecimiento automático: ALTER TABLE stu MODIFY id INT;

        4. Agregue crecimiento automático: ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;

Constraints_Foreign Key Restricciones

Restricciones de clave externa: ejemplos de defectos

CREATE TABLE emp ( -- 创建employe表
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(30),
	age INT,
	dep_name VARCHAR(30), -- 部门名称
	dep_location VARCHAR(30) -- 部门地址
);

-- 添加数据
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('张三', 20, '研发部', '广州');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('李四', 21, '研发部', '广州');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('王五', 20, '研发部', '广州');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('老王', 20, '销售部', '深圳');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('大王', 22, '销售部', '深圳');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('小王', 18, '销售部', '深圳');

-- 解决方案:分成 2 张表

-- 创建部门表(id,dep_name,dep_location)
-- 一方,主表
CREATE TABLE department(
	id INT PRIMARY KEY AUTO_INCREMENT,
	dep_name VARCHAR(20),
	dep_location VARCHAR(20)
);

-- 创建员工表(id,name,age,dep_id)
-- 多方,从表
CREATE TABLE employee(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(20),
	age INT,
	dep_id INT -- 外键对应主表的主键
);

-- 添加 2 个部门
INSERT INTO department VALUES(NULL, '研发部','广州'),(NULL, '销售部', '深圳');
SELECT * FROM department;

-- 添加员工,dep_id 表示员工所在的部门
INSERT INTO employee (NAME, age, dep_id) VALUES ('张三', 20, 1);
INSERT INTO employee (NAME, age, dep_id) VALUES ('李四', 21, 1);
INSERT INTO employee (NAME, age, dep_id) VALUES ('王五', 20, 1);
INSERT INTO employee (NAME, age, dep_id) VALUES ('老王', 20, 2);
INSERT INTO employee (NAME, age, dep_id) VALUES ('大王', 22, 2);
INSERT INTO employee (NAME, age, dep_id) VALUES ('小王', 18, 2);

SELECT * FROM employee;
SELECT * FROM department;

Conceptos relacionados con restricciones de clave externa

* Restricciones de clave externa: clave externa, deje que la tabla y la tabla tengan una relación, para garantizar la exactitud de los datos.

    1. Al crear una tabla, puede agregar una clave externa
        * Sintaxis:
            crear nombre de tabla de tabla (
                ...                 restricción de
                columna de
clave externa nombre de clave externa clave externa (nombre de columna de clave externa) hace referencia al nombre de tabla principal (nombre de columna de tabla principal)
            ) ;

    2. Elimine la clave externa
        ALTER TABLE nombre de la tabla DROP FOREIGN KEY nombre de la clave externa;

    3. Una vez creada la tabla, agregue la clave externa
        ALTER TABLE nombre de tabla ADD CONSTRAINT nombre de clave externa FOREIGN KEY (nombre de campo de clave externa) REFERENCIAS nombre de la tabla principal (nombre de la columna de la tabla principal); // columna de clave primaria, columna de restricción única

CREATE TABLE empleado (
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR (20),
    age INT,
    dep_id INT, - la clave externa corresponde a la clave primaria de la tabla primaria
    CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCIAS departamento (id) - clave externa restricción
);

 

Constraint_Foreign Key Constraint_Cascade Operation

4. Operación en cascada
    1. Agregue la
        sintaxis de operación en cascada : ALTER TABLE nombre de la tabla ADD CONSTRAINT nombre de clave externa 
                    FOREIGN KEY (nombre de campo de clave externa) REFERENCIAS nombre de la tabla principal (nombre de la columna de la tabla principal) ON UPDATE CASCADE ON DELETE CASCADE;
    2. Clasificación:
        1 Actualización en cascada: ON UPDATE CASCADE
        2. Eliminación en  cascada: ON DELETE CASCADE 

Actualización en cascada

Eliminar en cascada

¿Cuál es el comienzo de la primavera? ¡Abre tus horizontes, abre tu mente, abre tu sabiduría, abre el patrón!

Lichun, ¿qué es? ¡Confíe en la humanidad, la rectitud, la lealtad, la sinceridad y el espíritu!

Supongo que te gusta

Origin blog.csdn.net/weixin_44949135/article/details/113631792
Recomendado
Clasificación