Declarações e funções comumente usadas do MySQL

banco de dados mysql, um conjunto completo de instruções de consulta comumente usadas

Os seguintes registros costumam usar instruções SQL DQL; consulta básica, consulta condicional, consulta difusa, consulta de classificação, função agregada, eliminação de duplicação, consulta de paginação, saída limitada, consulta de várias tabelas ...

基本语法:
增:
添加数据:inset into 表名 (列名1,列名2...values(1,值2...)
添加列:alter table 表名 add 列名 数据类型(长度);
删:delete from 表名
删除列:alter table 表名 drop 列名
 可根据需要加上条件,否则删除全表
改:update 表名 set 字段1=值,字段2=...
可根据需要加上条件,否则更新全表
更新列名:alter table 表名 change 旧列名 新列名 数据类型(长度)
查:select 查询列名(多个列名用,隔开)from 表名

1. Consulta básica

Sintaxe: selecione o nome da coluna da consulta (usado para vários nomes de coluna, separados) do nome da tabela
* PS: todas as colunas da consulta podem ser usadas em *vez de todos os nomes das colunas, *a complexidade do tempo é alta, ao escrever um projeto para listar todas as necessidades de consulta
Exemplo de coluna : -
Coluna especificada de
consulta - ID do aluno, nome, idade
Consultar coluna especificada

Consulta de duas condições

compreensão
A consulta condicional é usar a
instrução where após a consulta básica durante a consulta e usar o operador após a onde para reter os dados elegíveis
Símbolo de condição
= Igual
! = <> varia
<menor que> maior que <= menor ou igual> = maior ou igual
e e / e
----------- as condições em ambos os lados são satisfeitas ao mesmo tempo
ou ou
------------- Uma das condições em ambos os lados é satisfeita
em (conjunto) intervalo está dentro do intervalo de coleção de conjunto
entre o valor 1 e o valor 2
------------ entre o valor 1 e o valor 2 (incluindo o valor crítico, de pequeno a grande)
não no
exemplo invertido :
- Consulta registros de alunos de alunos com idade entre 20-40
Insira a descrição da imagem aqui
- registros de verificação de número de aluno não é 1, 2
Insira a descrição da imagem aqui

Três consultas difusas

A consulta difusa deve ser colocada depois de onde e usar a palavra
- chave semelhante : curinga:
%, pode corresponder a qualquer número de qualquer caractere
_, pode corresponder a qualquer caractere

 例·:-- 查询姓名以“张”开头的学生记录
select * from stu where sname like '张%';
-- 查询姓名中包含“三”的学生记录
select * from stu where sname like '%三%'

Quatro consulta de classificação

Classifique os resultados consultados em uma determinada ordem
, por campo [desc | asc] ==> ordem decrescente, crescente

例:
-- 不写排序类型,默认是升序
select * from stu order by age
-- 查询所有学生记录,按年龄升序排序,如果年龄相同时,按编号降序排序
select * from stu order by age asc,sid desc

Cinco funções agregadas

Função agregada:
       contagem (nome da coluna) conta o número de linhas em que a coluna especificada não é nula.
       Max (nome da coluna) obtém o valor máximo na coluna especificada. Se for uma string,
       min (nome da coluna) obtém a
       soma mínima (nome da coluna) na ordem dos caracteres Especifique o valor da soma da coluna, calcule o não número, o resultado é 0
       média (nome da coluna) Calcule o valor médio da coluna especificada, calcule o não número, o resultado é 0

Sintaxe:
selecione a função agregada do nome da tabela [onde ...]

-- 查询最高成绩和最低成绩:
select max(score) '最高分',min(score) '最低分' from stu;
-- 统计stu表中成绩大于60的最高成绩和最低成绩:
select max(score) '最高分',min(score) '最低分' from stu where score > 60;

ps:
O nome da coluna que aparece com a função de agregação deve
aparecer depois do groupby, caso contrário, se houver um campo que não aparece depois do groupby o resultado da consulta é anormal!

Seis desduplicação

A função de desduplicação distinta (coluna)
desduplica os dados na coluna especificada

Sintaxe:
selectdistinct (nome da coluna) do nome da tabela [onde ...]

-- 不重复的年龄
select distinct(age) from stu;
-- 查询年龄不重复的共有多少人
select count(distinct age) from stu;

Consulta de sete grupos

Quando você precisa consultar por grupo, você precisa usar o grupo por declaração.

Sintaxe:
select * from stu [onde ...] group by field [order by ...]

Grupos com o mesmo valor de campo são agrupados.
Observação:
1 Geralmente, as operações após o agrupamento são operações de agregação.
2 Divida em vários grupos. O resultado da tabela virtual são algumas linhas de dados.
3 As funções de agregação são para realizar operações de agregação separadas para cada grupo.

Filtrar após agrupar, você precisa usar a cláusula having

A diferença entre hacing e where:
onde está a filtragem antes do agrupamento e tendo é a filtragem
após o agrupamento. As funções de agregação não podem ser usadas depois de where, mas as funções de agregação podem ser usadas para ter.
Exemplo:

-- 查询男生多少人,女生多少人
select sex,count(*) '人数' from stu group by sex;
-- 查询每个班级的班级编号和每个班级的成绩和:
select cid,sum(score) from stu group by cid;
-- 查询每个班级的班级编号以及每个班级的人数:
select cid '班级',count(sid) '人数' from stu group by cid;
-- 查询成绩总和大于200的班级编号以及成绩和
select cid,sum(score) from stu group by cid having sum(score) > 200
-- having可以使用前面定义的别名
select cid,sum(score) 'sum' from stu group by cid having sum > 200
-- 查询成绩总和大于200的班级编号以及成绩和并根据成绩总和降序
select cid,sum(score) 'sum' from stu group by cid having sum > 200 order by sum asc;

Oito limite de saída

Você pode limitar a saída dos resultados da consulta.Você
pode limitar o número de saídas e onde produzir.

Sintaxe:
limite de gravação offset no final da instrução sql, row_count
limite inicial subscrito, número de linhas;
por exemplo: limite 0,2; ==> saída do primeiro, saída 2

Exemplo:

   -- 输出前两条
select * from stu limit 0,2;

-- 从第四条开始,输出三条
select * from stu limit 3,3;

Nove funções

Função de processo

If (expr1, expr2, expr3)
Se expr1 for verdadeiro, retorna expr2, caso contrário retorna expr3
- função isnull (), julga se está vazio
- isnull (campo) Se for nulo, retorna 1 se não for nulo retorne 0

Exemplo:

-- 查询学生id,姓名,成绩,如果成绩为null,显示缺考
select sid,sname,if(isnull(score)=1,'缺考',score) from stu;

CASE WHEN [expr1] ENTÃO [resultado1] ... ELSE [padrão] END Se expr for verdadeiro, retorna o resultado1, caso contrário, retorna ao
caso padrão
quando condição, então execute a instrução
quando a condição e execute a instrução
...
senão execute a instrução
final
execute a condição após a primeira quando Se for verdadeiro, execute a instrução depois de então,
se a condição depois de quando for falsa, execute a condição depois do segundo quando
Se for tudo falso, execute a instrução depois de else

Exemplo:

-- 查询学生id,姓名,成绩,以及等级
-- (0-59 不及格,60-69中,70-89良,90-100优 )
select sid,sname,score,
	case 
		when score < 60 then '不及格'
    when score < 70 then '中'
		when score < 90 then '良'
		when isnull(score)=1 then '缺考'
		else '优'
	end as '等级'
from stu

Mais de dez consultas de tabela

** Conjunto de resultados combinados de consulta de união **

Os resultados da consulta das duas tabelas são unidos verticalmente . O número, tipo e ordem dos campos das duas tabelas unidas por
união / união
são garantidos como iguais.
União será duplicada ao unir, unir
todos irá juntar todos os dados das duas tabelas

Por exemplo:

select sid,sname from stu
union all
select cid,cname from class;

Consulta de conexão:

Existem três tipos de relacionamento entre tabelas: um para um, um para muitos e muitos
para muitos. Relacionamento um para um: você pode adicionar campos relacionados a qualquer tabela. Relacionamento um
para muitos : você só pode adicionar campos relacionados na extremidade muitos.
Relacionamento muitos para muitos: é necessário criar uma nova tabela, usar um terceiro para representar o relacionamento

A consulta de junção serve para multiplicar várias tabelas e várias linhas de dados. Também produzirá um produto cartesiano

Conexão interna:

Sintaxe de junção interna:
select * da Tabela 1 junção interna Tabela 2 sobre condições de associação As
junções internas só reterão dados que atendam totalmente às condições de associação

Exemplo:

-- 查询学生名称、学生成绩、班级名称、班级地址
select sname,score,cname,caddress from stu inner join class on stu.cid = class.cid

-- 内连接可以简写
select * from stu inner join class on stu.cid = class.cid 
-- 简写成
select * from stu,class where stu.cid = class.cid

Junção externa

Junção externa: manterá os dados que não atendem às condições.
Junção externa esquerda-junção externa esquerda ativada
manterá os dados que não atendem às condições na tabela à esquerda.
Junção externa direita-junção externa direita ativada
manterá os dados que não não atendem às condições da tabela certa.
Palavras-chave externas gerais podem ser omitidas

Exemplo:

-- 查询全部学生信息,如果有班级信息,一并查出.
select * from stu s left outer join class c on s.cid = c.cid
-- 查询全部班级信息,如果有学生,将学生信息查出
select * from stu s right outer join class c on s.cid = c.cid

Subconsulta

Uma subconsulta é uma consulta aninhada.
Geralmente, uma subconsulta aparece depois de:
de e depois de usar
where como uma tabela , ela é usada como uma condição

Exemplo:

-- 查询与张三同一个班级的学生。
-- 1查出张三的班级
select cid from stu where sname = '张三'
-- 2查出1班的学生
select * from stu where cid = 1
-- 合并成子查询
select * from stu where cid = (select cid from stu where sname = '张三')
-- 成绩高于3号班级所有人的学生信息
-- 1 找到3班最高分
select max(score) from stu where cid = 3
-- 2 找成绩比96高的学生
select * from stu where score > 96
-- 合并
select * from stu where score > (select max(score) from stu where cid = 3)

Auto-conexão
Auto-conexão é para conectar-se, uma tabela é usada como duas tabelas

s1 é a tabela do aluno s2 é a tabela líder
- o líder de s1 é o aluno em s2
selecione s1.sid, s1.sname, s2.sid, s2.sname de stu s1, stu s2 onde s1.groupLeaderId = s2.sid e s1.sid = 1008

Tabela de exemplo:
crie uma tabela de aluno:

DROP TABLE IF EXISTS `stu`;
CREATE TABLE `stu` (
  `sid` int(11) DEFAULT NULL,
  `sname` varchar(25) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `sex` char(6) DEFAULT NULL,
  `score` int(11) DEFAULT NULL,
  `cid` int(11) DEFAULT NULL,
  `groupLeaderId` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 添加数据
INSERT INTO `stu` VALUES ('1001', '张三', '20', '男', '72', '1', '1003');
INSERT INTO `stu` VALUES ('1002', '李四', '15', '女', '78', '1', '1003');
INSERT INTO `stu` VALUES ('1003', '王五', '95', '男', '99', '1', '1010');
INSERT INTO `stu` VALUES ('1004', '赵六张', '65', '女', '60', '1', '1007');
INSERT INTO `stu` VALUES ('1005', '周七', '55', '男', '78', '3', '1007');
INSERT INTO `stu` VALUES ('1006', '茅十八', '75', '女', '96', '3', '1007');
INSERT INTO `stu` VALUES ('1007', '张三丰', '40', '男', '85', '3', '1010');
INSERT INTO `stu` VALUES ('1008', '李四方', '45', '女', '90', '2', '1010');
INSERT INTO `stu` VALUES ('1009', '艾三弗森', '45', '', '35', '4', '1008');
INSERT INTO `stu` VALUES ('1010', '三欧文', '35', '女', '49', '2', '1008');


Mesa do aluno:
Mesa do aluno
crie uma mesa da turma:

DROP TABLE IF EXISTS `class`;
CREATE TABLE `class` (
  `cid` int(11) DEFAULT NULL,
  `cname` varchar(255) COLLATE utf8_bin NOT NULL,
  `caddress` varchar(255) COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- ----------------------------
--  添加数据
-- ----------------------------
INSERT INTO `class` VALUES ('1', 'BigData', '102');
INSERT INTO `class` VALUES ('2', 'HTML', '103');
INSERT INTO `class` VALUES ('3', 'VR', '104');
INSERT INTO `class` VALUES ('4', 'Java', '105');

Horário de aula:
Horário de aula

Resumindo:

Sintaxe de escrita:
select
selection_list --column a ser consultado
de
table_name-table name a ser consultado
onde condition-filter row condição
group by grouping_clumns-group os resultados por coluna
tendo condition-filter após
ordem de agrupamento por sort_column-sort
limite offset, row_count - limitar os resultados

Acho que você gosta

Origin blog.csdn.net/CV_Ming/article/details/112389340
Recomendado
Clasificación