Resumo do conhecimento MySql

Índice

1. Tipos de dados comumente usados

Segundo, o índice do banco de dados

O que é um índice de banco de dados

O papel do índice

Mais índices são melhores?

Classificação do índice

Três, instrução sql

inserir

renovar

excluir

Investigar

        consulta geral

        subconsulta

        Consulta de tabela de junção

Em quarto lugar, algumas funções comumente usadas

agrupar por agrupamento

ordem por tipo

A cláusula HAVING filtra grupos com base em condições

Formatar data ou hora - date_format()

limite

contar()

ENTRE

AVG()

desduplicação DISTINCT

Injeção SQL


1. Tipos de dados comumente usados

 int

        Faixa de armazenamento: -2**32~2**32-1

bigint

        Intervalo numérico: -2**63 - 2**63-1

flutuador

        float(m,d), onde m representa dígitos significativos e d representa casas decimais

        O dígito efetivo é converter o decimal atual: 12345,12 em notação científica: 1,234512*10**5

        O valor máximo de m é 7

dobro

        double (m,d) onde m representa dígitos significativos e d representa casas decimais

        O valor máximo de m é 15

decimal

        Quando se trata do valor, use decimal

        decimal(m,d), onde m representa dígitos significativos e d representa casas decimais

        O valor máximo de m é 65

        Benefícios: Não haverá problemas de precisão, porque a essência do armazenamento decimal é que ele existe como uma string, então não haverá problema de perda de precisão

Caracteres

        Representa uma cadeia de caracteres de comprimento fixo com um comprimento de 255 bytes. Os caracteres chineses ocupam 3-4 bytes

varchar

        Representa uma string de comprimento indeterminado com um comprimento de 0-65525 bytes

texto

        Tipo de texto longo, o comprimento máximo é 64KB

texto longo

        Tipo de texto muito grande, o comprimento máximo ocupa 4 GB

data hora

        Se o fuso horário atual mudar, o tipo de data e hora não mudará e será consistente com a data armazenada

carimbo de data/hora

        O tipo de carimbo de data/hora perde a alteração se o fuso horário mudar

Segundo, o índice do banco de dados

  1. O que é um índice de banco de dados

            Índice de banco de dados é uma estrutura de dados classificada no sistema de gerenciamento de banco de dados para auxiliar na consulta rápida e atualizar os dados na tabela no banco de dados. Além dos dados, os sistemas de banco de dados também mantêm estruturas de dados que satisfazem algoritmos de pesquisa específicos, e essas estruturas de dados se referem a dados de alguma forma.Essa estrutura de dados é um índice. Resumindo, um índice é como um livro, um diretório de dicionários. Se você considera este artigo como um banco de dados, o diretório superior é equivalente ao índice

  2. O papel do índice

    1. O objetivo principal é a sistematicidade do processo de investigação

    2. Ao criar um índice exclusivo, a exclusividade do campo correspondente no índice pode ser garantida

    3. Reduz o tempo gasto em agrupamento e classificação em consultas ao usar cláusulas de agrupamento e classificação para recuperação de dados

  3. Mais índices são melhores?

    Primeiro de tudo: quanto mais índices você criar, melhor

    1. Criar e manter índices leva tempo, e o tempo aumenta com a quantidade de dados

    2. O índice precisa ocupar espaço físico. Se for criado um índice clusterizado, o espaço ocupado será maior

    3. Ao adicionar, deletar e modificar dados na tabela , vai consumir mais tempo, pois o índice também precisa ser mantido

  4. Classificação do índice

    1. Índice de chave primária: Depois que o banco de dados for definido como a chave primária, um índice será criado automaticamente

#随表一起建索引:
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 comum (índice de coluna única): um índice contém apenas uma única coluna e uma tabela de dados pode ter vários índices de coluna única

#随表一起建索引:
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: o valor do índice deve ser único, mas valores nulos são permitidos

Campo "UNIQUE": A restrição identifica exclusivamente cada registro na tabela do banco de dados.

#随表一起建索引:
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 composto: um índice contém várias colunas;

        Os índices compostos exigem menos sobrecarga durante as operações do banco de dados do que vários índices de coluna única.

Cenário de uso: Se os dados em uma tabela tiverem vários campos que sempre aparecem ao mesmo tempo durante a consulta, esses campos podem ser usados ​​como um índice composto, formar a cobertura do índice pode melhorar a eficiência da 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 não agrupado

6. Índice denso e índice esparso

7. Índice agrupado e índice não agrupado

São muitos, nunca encontrei no trabalho real e não sei para que serve, quando realmente envolver esses índices, farei suplementos específicos.

Três, instrução sql

inserir

-- 普通插入
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;

excluir

-- 删除表
drop 表名


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


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


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

Investigar

        consulta geral

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

        subconsulta

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

        Consulta de tabela de junção

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

Em quarto lugar, algumas funções comumente usadas

agrupar por agrupamento

A cláusula GROUP BY é usada em conjunto com a instrução SELECT e funções agregadas para agrupar linhas por valores de coluna comuns

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;

ordem por tipo

Normalmente, quando você busca dados de uma tabela usando uma instrução SELECT, as linhas no conjunto de resultados não estão em nenhuma ordem específica. Se você deseja organizar o conjunto de resultados em uma ordem específica, pode especificar uma cláusula ORDER BY no final da instrução, que informa ao programa como classificar os dados retornados pela consulta. A ordem de classificação padrão é crescente.

SELECT column_list FROM table_name ORDER BY column_name ASC|DESC;

A cláusula HAVING filtra grupos com base em condições

A cláusula HAVING é freqüentemente usada com a cláusula GROUP BY para especificar condições de filtro para grupos ou coleções. A cláusula HAVING só pode ser usada com a instrução SELECT

 Por exemplo: Agora, em vez de apenas encontrar os nomes dos funcionários e seus departamentos, encontre os nomes dos departamentos sem funcionários.

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;

Formatar data ou hora - date_format()

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

limite

1. Quando o limite usa um parâmetro

        Por exemplo: limite 10 

        Significa consultar as primeiras 10 linhas de dados na tabela, --recuperar as primeiras 10 linhas de dados

2. Quando o limite usa dois parâmetros

        Por exemplo: limite 2,5

        O primeiro parâmetro indica qual linha de dados começar a verificar e o segundo parâmetro indica quantos dados devem ser verificados, "limite 2,5"; significa começar na terceira linha de dados e pegar 5 dados

***Quando dois parâmetros são especificados, o primeiro parâmetro especifica o deslocamento da primeira linha a ser retornada, ou seja, o ponto inicial, enquanto o segundo parâmetro especifica o número máximo de linhas a serem retornadas. O deslocamento da linha inicial é 0 (não 1).

contar()

A função COUNT() retorna o número de linhas correspondentes aos critérios especificados.

1. A função COUNT(column_name) 
        retorna o número de valores na coluna especificada (NULL não é contado):

SELECT COUNT(column_name) FROM table_name;

2. Sintaxe SQL COUNT(DISTINCT column_name)

        A função COUNT(DISTINCT column_name) retorna o número de valores distintos para a coluna especificada:

SELECT COUNT(DISTINCT column_name) FROM table_name;

contagemResumo:

        count(*): Conta o número de linhas, nulo não será ignorado

        count (nome da coluna): o número de linhas que atendem aos critérios em uma única coluna, e valores nulos serão ignorados

        count(1): conta o número de linhas e ignora valores nulos

A eficiência de execução da contagem

ENTRE

1. O operador IN é um operador lógico usado para verificar se um determinado valor existe em um conjunto de valores. Sua sintaxe básica pode ser dada por:

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

2、entre

Às vezes, você deseja selecionar uma linha se os valores em uma coluna estiverem dentro de um determinado intervalo. Esse tipo de condição é comum ao trabalhar com dados numéricos.

Para executar consultas com base nessas condições, você pode utilizar o operador BETWEEN. É um operador lógico que permite especificar um intervalo para testar, assim:

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

AVG()

A função AVG() retorna o valor médio de uma coluna numérica.

SELECT AVG(column_name) FROM table_name

desduplicação DISTINCT

Ao buscar dados de uma tabela de banco de dados, o conjunto de resultados pode conter linhas ou valores duplicados. Se você deseja remover esses valores duplicados, pode especificar a palavra-chave DISTINCT diretamente após a palavra-chave SELECT, como segue:

SELECT DISTINCT column_list FROM table_name;

Injeção SQL

o que é injeção de sql

A injeção de SQL é um ataque pelo qual um invasor injeta ou executa código SQL malicioso por meio de um navegador em dados inseridos em um servidor de aplicativos, como entrada de formulário da Web.

SQL Injection - Tutorial Básico Online

Acho que você gosta

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