Resumen del conocimiento de MySql

Tabla de contenido

1. Tipos de datos de uso común

En segundo lugar, el índice de la base de datos

¿Qué es un índice de base de datos?

El papel del índice

¿Son mejores más índices?

Clasificación del Índice

Tres, instrucción sql

insertar

renovar

borrar

Preguntar

        consulta general

        subconsulta

        Unir consulta de tabla

Cuarto, algunas funciones de uso común

agrupar por agrupar

ordenar por tipo

La cláusula HAVING filtra grupos según las condiciones

Formatear fecha u hora - date_format()

límite

contar()

ENTRE

PROMEDIO()

deduplicación DISTINCT

Inyección SQL


1. Tipos de datos de uso común

 En t

        Rango de almacenamiento: -2**32~2**32-1

Empezando

        Rango de números: -2**63 - 2**63-1

flotar

        float(m,d), donde m representa dígitos significativos y d representa lugares decimales

        El dígito efectivo es convertir el decimal actual: 12345.12 en notación científica: 1.234512*10**5

        El valor máximo de m es 7

doble

        double (m,d) donde m representa dígitos significativos y d representa lugares decimales

        El valor máximo de m es 15

decimal

        Cuando se trata de la cantidad, use decimal

        decimal(m,d), donde m representa dígitos significativos y d representa lugares decimales

        El valor máximo de m es 65

        Beneficios: no habrá problemas de precisión, porque la esencia del almacenamiento decimal es que existe como una cadena, por lo que no habrá problemas de pérdida de precisión.

carbonizarse

        Representa una cadena de caracteres de longitud fija con una longitud de 255 bytes. Los caracteres chinos ocupan 3-4 bytes

varchar

        Representa una cadena de longitud indeterminada con una longitud de 0-65525 bytes

texto

        Tipo de texto largo, la longitud máxima es de 64 KB

texto largo

        Tipo de texto muy grande, la longitud máxima ocupa 4GB

fecha y hora

        Si la zona horaria actual cambia, el tipo de fecha y hora no cambiará y será consistente con la fecha almacenada

marca de tiempo

        El tipo de marca de tiempo pierde el cambio si cambia la zona horaria

En segundo lugar, el índice de la base de datos

  1. ¿Qué es un índice de base de datos?

            El índice de la base de datos es una estructura de datos ordenados en el sistema de administración de la base de datos para ayudar a realizar consultas rápidas y actualizar los datos en la tabla de la base de datos. Además de los datos, los sistemas de bases de datos también mantienen estructuras de datos que satisfacen algoritmos de búsqueda específicos, y estas estructuras de datos se refieren a datos de alguna manera.Esta estructura de datos es un índice. En resumen, un índice es como un libro, un directorio de diccionarios. Si considera este artículo como una base de datos, entonces el directorio superior es equivalente al índice

  2. El papel del índice

    1. El objetivo principal es la sistematicidad del proceso de investigación.

    2. Al crear un índice único, se puede garantizar la unicidad del campo correspondiente en el índice

    3. Reduce el tiempo dedicado a agrupar y clasificar en consultas cuando se utilizan cláusulas de agrupación y clasificación para la recuperación de datos.

  3. ¿Son mejores más índices?

    En primer lugar: cuantos más índices crees, mejor

    1. Crear índices y mantener índices lleva tiempo, y el tiempo aumenta con la cantidad de datos

    2. El índice necesita ocupar espacio físico. Si se crea un índice agrupado, el espacio ocupado será mayor

    3. Al agregar, eliminar y modificar datos en la tabla , consumirá más tiempo, porque el índice también debe mantenerse.

  4. Clasificación del Índice

    1. Índice de clave principal: después de configurar la base de datos como clave principal, se creará un índice automáticamente

#随表一起建索引:
CREATE TABLE customer (id INT(10) UNSIGNED ,customer_no VARCHAR(200)
  PRIMARY KEY(id) 
);

#使用AUTO_INCREMENT关键字的列必须有索引(只要有索引就行)。
CREATE TABLE customer2 (id INT(10) UNSIGNED AUTO_INCREMENT, customer_no VARCHAR(200),
  PRIMARY KEY(id) 
);

#单独建主键索引:
ALTER TABLE customer add PRIMARY KEY customer(customer_no);  

#删除建主键索引:
ALTER TABLE customer drop PRIMARY KEY ;  

#修改建主键索引:
#必须先删除掉(drop)原索引,再新建(add)索引

2. Índice ordinario (índice de una sola columna): un índice contiene solo una sola columna y una tabla de datos puede tener múltiples índices de una sola columna

#随表一起建索引:
CREATE TABLE customer (id INT(10) UNSIGNED  AUTO_INCREMENT ,customer_no VARCHAR(200),customer_name VARCHAR(200),
  PRIMARY KEY(id),    # 主键索引
  KEY (customer_name)  # 单列索引
);

#随表一起建立的索引 索引名同 列名(customer_name)

#单独建单值索引:
CREATE INDEX idx_customer_name ON customer(customer_name);  # 创建名称为 “idx_customer_name” 的普通索引

#删除索引: 删除名称为“idx_customer_name” 的普通索引
DROP INDEX idx_customer_name ;

3. Índice único: el valor del índice debe ser único, pero se permiten valores nulos

Campo "ÚNICO": la restricción identifica de forma única cada registro en la tabla de la base de datos.

#随表一起建索引:
CREATE TABLE customer (id INT(10) UNSIGNED  AUTO_INCREMENT ,customer_no VARCHAR(200),customer_name VARCHAR(200),
  PRIMARY KEY(id),
  KEY (customer_name),
  UNIQUE (customer_no) # 唯一性约束
);

#建立 唯一索引时必须保证所有的值是唯一的(除了null),若有重复数据,会报错。   

#单独建唯一索引:
CREATE UNIQUE INDEX idx_customer_no ON customer(customer_no); 

#删除索引:
DROP INDEX idx_customer_no on customer ;

4. Índice compuesto: un índice contiene múltiples columnas;

        Los índices compuestos requieren menos gastos generales durante las operaciones de la base de datos que varios índices de una sola columna.

Escenario de uso: si los datos en una tabla tienen varios campos que siempre aparecen al mismo tiempo al realizar una consulta, estos campos se pueden usar como un índice compuesto, ¡la formación de una cobertura de índice puede mejorar la eficiencia de la consulta!

-- 随表一起建索引:
CREATE TABLE customer (id INT(10) UNSIGNED  AUTO_INCREMENT ,customer_no VARCHAR(200),customer_name VARCHAR(200),
  PRIMARY KEY(id),    # 主键索引
  KEY (customer_name),    # 单列索引
  UNIQUE (customer_name),    # 单列索引唯一值约束
  KEY (customer_no,customer_name)    # 复合索引
);

#单独建索引:
CREATE INDEX idx_no_name ON customer(customer_no,customer_name); 

#删除索引:
DROP INDEX idx_no_name  on customer ;

5. Índice agrupado e índice no agrupado

6. Índice denso e índice disperso

7. Índice agrupado e índice no agrupado

Son demasiados, nunca lo he encontrado en el trabajo real y no sé para qué sirve, cuando realmente se trata de estos índices, haré suplementos específicos.

Tres, instrucción sql

insertar

-- 普通插入
insert into table values('xx','xx','xx')

-- 查询插入
insert into student(name, age, class) select `name`, `age`, `class` from student

renovar

-- 和where条件搭配使用
update table set column1_name = value1 where 条件


-- 更新多个列
update table set column1_name = value1, column2_name = value2,...WHERE condition;

borrar

-- 删除表
drop 表名


-- 清空表里的内容:删除所有数据,保留表结构,不能撤销还原,速度快
truncate table 表名


-- 删除表,表数据和表结构一起删除,速度快
drop form 表名


-- 删除表里的部分内容:逐行删除,不适合大量数据删除,速度慢
delete from 表名 where 列名="value "

Preguntar

        consulta general

-- 简单查询
Select * from 表名
Select * from 表名 where 条件

        subconsulta

-- 子查询
-- 子sql查询出来的结果是主sql的条件
Select * from 表名 where(select * from 表名 where 条件)

        Unir consulta de tabla

-- 左连接(left join)
-- 左连接以左表为主,会展示左表所有的数据,右表只展示符合条件的数据
Select  t1.字段1,t2.字段2  From table1 t1
Left join table2  t2 on  t1.id  =  t2.id


-- 右连接(right join)
-- 右连接以右表为主,会展示右表所有数据,左表数据只展示符合条件的数据
Select  t1.字段1,t2.字段2  From table1 t1
right join table2  t2 on  t1.id  =  t2.id


-- 内连接(inner join)
-- 主要是获取两个表中字段匹配关系的表。查询关联字段共同拥有的数据,用两个表相同的字段和内容相关联起来。
select * from table1 as 别名1 
inner join table2 as 别名2 
on 别名1.字段名1=别名2.字段名1;

select * from user as u 
inner join student as s on u.id=s.id;。

-- 全连接(FULL JOIN )
-- 返回连接的表中的所有数据,不管是否匹配

-- 交叉连接(CROSS JOIN)
如果在连接两个表时未指定连接条件,则数据库系统会将第一个表的每一行与第二个表的每一行合并。这种连接称为交叉连接或笛卡尔乘积

Cuarto, algunas funciones de uso común

agrupar por agrupar

La cláusula GROUP BY se usa junto con la declaración SELECT y las funciones agregadas para agrupar filas por valores de columna comunes.

SELECT t1.dept_name, count(t2.emp_id) AS total_employees
FROM departments AS t1 
LEFT JOIN employees AS t2
ON t1.dept_id = t2.dept_id
GROUP BY t1.dept_name;

ordenar por tipo

Normalmente, cuando obtiene datos de una tabla mediante una declaración SELECT, las filas del conjunto de resultados no están en ningún orden en particular. Si desea organizar el conjunto de resultados en un orden específico, puede especificar una cláusula ORDER BY al final de la declaración, que le dice al programa cómo ordenar los datos devueltos por la consulta. El orden de clasificación predeterminado es ascendente.

SELECT column_list FROM table_name ORDER BY column_name ASC|DESC;

La cláusula HAVING filtra grupos según las condiciones

La cláusula HAVING se usa a menudo con la cláusula GROUP BY para especificar condiciones de filtro para grupos o colecciones. La cláusula HAVING solo se puede usar con la declaración SELECT

 Por ejemplo: ahora, en lugar de solo buscar los nombres de los empleados y sus departamentos, busque los nombres de los departamentos sin empleados.

SELECT t1.dept_name, count(t2.emp_id) AS total_employees
FROM departments AS t1 
LEFT JOIN employees AS t2
ON t1.dept_id = t2.dept_id
GROUP BY t1.dept_name
HAVING total_employees = 0;

Formatear fecha u hora - date_format()

SELECT name, DATE_FORMAT(birth_date, '%M %e, %Y') FROM users;

límite

1. Cuando limit usa un parámetro

        Por ejemplo: límite 10 

        Significa consultar las primeras 10 filas de datos en la tabla --recuperar las primeras 10 filas de datos

2. Cuando el límite usa dos parámetros

        Por ejemplo: límite 2,5

        El primer parámetro indica qué fila de datos comenzar a verificar, y el segundo parámetro indica cuántos datos verificar, "límite 2,5"; significa comenzar desde la tercera fila de datos y tomar 5 datos

***Cuando se especifican dos parámetros, el primer parámetro especifica el desplazamiento de la primera fila que se devolverá, es decir, el punto de partida, mientras que el segundo parámetro especifica el número máximo de filas que se devolverán. El desplazamiento de la fila inicial es 0 (no 1).

contar()

La función COUNT() devuelve el número de filas que coinciden con los criterios especificados.

1. La función COUNT(column_name) 
        devuelve el número de valores en la columna especificada (NULL no se cuenta):

SELECT COUNT(column_name) FROM table_name;

2. Sintaxis de SQL COUNT (DISTINCT column_name)

        La función COUNT(DISTINCT column_name) devuelve el número de valores distintos para la columna especificada:

SELECT COUNT(DISTINCT column_name) FROM table_name;

contarResumen:

        count (*): cuenta el número de filas, no se ignorará nulo

        count (nombre de columna): el número de filas que cumplen los criterios en una sola columna, y los valores nulos serán ignorados

        count(1): cuenta el número de filas e ignora los valores nulos

La eficiencia de ejecución del conteo.

ENTRE

1. El operador IN es un operador lógico que se utiliza para verificar si existe un valor particular en un conjunto de valores. Su sintaxis básica puede estar dada por:

SELECT column_list FROM table_name
WHERE column_name IN (value1, value1,...);

2, entre

A veces, desea seleccionar una fila si los valores en una columna se encuentran dentro de un cierto rango. Este tipo de condición es común cuando se trabaja con datos numéricos.

Para ejecutar consultas basadas en tales condiciones, puede utilizar el operador BETWEEN. Es un operador lógico que le permite especificar un rango para probar, así:

SELECT column1_name, column2_name, columnN_name 
FROM table_name 
WHERE column_name BETWEEN min_value AND max_value;

PROMEDIO()

La función AVG() devuelve el valor promedio de una columna numérica.

SELECT AVG(column_name) FROM table_name

deduplicación DISTINCT

Al obtener datos de una tabla de base de datos, el conjunto de resultados puede contener filas o valores duplicados. Si desea eliminar estos valores duplicados, puede especificar la palabra clave DISTINCT directamente después de la palabra clave SELECT, de la siguiente manera:

SELECT DISTINCT column_list FROM table_name;

Inyección SQL

que es la inyeccion sql

La inyección SQL es un ataque mediante el cual un atacante inyecta o ejecuta código SQL malicioso a través de un navegador en los datos ingresados ​​en un servidor de aplicaciones, como la entrada de formularios web.

Inyección SQL - Tutorial básico en línea

Supongo que te gusta

Origin blog.csdn.net/Jiazengzeng/article/details/124041099
Recomendado
Clasificación