- 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
- Notas de estudio de MySQL 01 [concepto de base de datos, instalación y uso de MySQL] [día01]
- Notas de estudio de MySQL 02 [Conceptos básicos y gramática general de SQL, operaciones de base de datos CRUD] [día01]
Notas del estudio de MySQL 04 [operaciones de consulta de base de datos, restricciones de tabla] [día01, día02]
Notas de estudio de MySQL 06 [consulta de varias tablas, subconsulta, ejercicios de consulta de varias tablas] [día03]
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
Eliminar conjuntos de resultados duplicados
Calcular la suma de puntuaciones
Consulta DQL_Basic query_Fuzzy
Restricción constraint_non-empty
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
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 1solución:
1. Primero busque la ruta de instalación de la base de datos Mysql, como se muestra a continuación:
2. Busque el archivo my.ini en esta carpeta, busque "default-character-set = utf8" y modifique uft8 a gbk.
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
- DQL: declaración de consulta
- Ordenar consulta
- Función agregada
- Consulta de grupo
- Consulta de paginación
- restricción
- Relación entre varias tablas
- Paradigma
- 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.
- contar: cuenta el número
- Generalmente, seleccione columnas no vacías: clave primaria
- contar(*)
- max: calcula el valor máximo
- min: calcula el valor mínimo
- suma: calcula la suma
- 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:
- Sintaxis: grupo por campo de grupo;
- Nota:
- Campos a consultar después de la agrupación: campos de agrupación, funciones agregadas
- ¿La diferencia entre dónde y tener?
- 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á
- 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
- Sintaxis: índice que comienza con límite, el número de consultas por página;
- Fórmula: índice inicial = (número de página actual-1) * número de elementos mostrados en cada página
- 3 registros por página
- SELECCIONAR * DEL LÍMITE de estudiantes 0,3; - Página 1: Verifique desde 0, verifique 3 registros
- SELECCIONAR * DEL LÍMITE de estudiantes 3,3; - Página 2: Marque de 3, marque 3 registros
- SELECCIONAR * DEL LÍMITE de estudiantes 6,3; - Página 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:
- Restricción de clave principal: clave principal
- Restricción no vacía: no nula
- La única restricción: única
- 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 tabla2. 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ático2. 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!