Resumo dos pontos de conhecimento básico do mysql (2)

2. Consulta multitabela

1. Remover registros duplicados (desduplicar os resultados da consulta sem alterar os registros na tabela original) distintos

select ename, distinto job de emp; //Isso é errado de escrever, distinto só pode aparecer na frente de todos os campos.

select distinto job, deptno from emp; //distinct aparece antes dos dois campos job e deptno, indicando que os dois campos são combinados para remover duplicação.

Conte o número de empregos selecione contagem (trabalho distinto) de emp;

2. Consulta de conexão (muito importante)

2.1 O que é uma consulta de junção? A combinação de várias tabelas para consultar dados é chamada de consulta de junção.

2.2 Classificação das consultas de conexão?

Classificação cronológica baseada na gramática? 1992sql92;1999sql99;

Junções internas (junções equivalentes, junções não equivalentes, auto-junções) e junções externas (junção externa esquerda, junção externa direita)

2.3 Quando duas tabelas são conectadas, não há restrição, e a conexão é realizada de acordo com o método do produto cartesiano. O número de entradas no resultado final da consulta é o produto do número de entradas nas duas tabelas;

2.4 Para evitar o fenômeno do produto cartesiano, o número de condições deve ser maior ou igual ao número de tabelas de ligação - 1, por exemplo, pelo menos uma condição é restrita para ambas as tabelas. Três tabelas devem ter pelo menos duas condições;

Observe que devido à existência do fenômeno do produto cartesiano, quanto maior o número de conexões de mesa, menor será a eficiência. Tente evitar o número de conexões de mesa.

selecione e.ename,d.dname de emp e,dept d onde e.deptno=d.deptno;//Para criar um alias para melhorar o desempenho da sintaxe sql92

2.5. Junção equivalente de junção interna

selecione e.ename,d.dname de emp e,dept d onde e.deptno=d.deptno;//sql92

Desvantagens do sql92: A estrutura não é clara, as condições de conexão da tabela e as condições para filtragem adicional no estágio posterior são colocadas atrás de onde. As frases são misturadas.

selecione e.name,d.dname de emp e join dept d em e.deptno=d.depton;//sql99

//sintaxe sql99 select ... de uma junção interna b nas condições de conexão de aeb onde as condições de filtro //inner podem ser omitidas, com melhor legibilidade

Vantagens do sql99: As condições para conexão da tabela são independentes. Após a conexão, se for necessária mais filtragem, continue adicionando condições where posteriormente.

2.6. Junção não equivalente de junção interna

  Caso: Descobrir a faixa salarial de cada funcionário e exigir que o nome, o salário e a faixa salarial do funcionário sejam exibidos?

selecione e.ename,e.sal,s.grade de emp e junte salgrade s em e.sal entre s.losal e s.hisal;

2.7. Auto-junção de junções internas

Caso: Consultar o líder superior do funcionário e exigir que o nome do funcionário e do líder correspondente seja exibido? //Técnica: Tratar uma tabela como duas tabelas

selecione a.ename como 'nome do funcionário', b.ename como 'líderes' de emp a join emp b em a.mgr=b.empno;//Número do líder do funcionário == número do funcionário do líder

//Características das conexões internas: Conclua a consulta de dados que possam corresponder a esta condição.

2.8, conexão externa ()

Junção externa direita (junção direita) com direita

select e.ename,d.dname from emp e right join dept d on e.deptno=d.deptno;//O que right representa? Significa juntar-se à tabela no lado direito da palavra-chave

É considerada a tabela principal, principalmente para consultar todos os dados desta tabela, e para consultar a tabela à esquerda com a associação. Em uma junção externa, duas tabelas são conectadas, criando um relacionamento primário e secundário.

Junção externa esquerda (junção esquerda) com esquerda

selecione e.ename,d.dname de dept d left join emp e em e.deptno=d.deptno;

Qualquer junção à direita será escrita como uma junção à esquerda. Qualquer junção à esquerda terá uma junção à direita.

Conclusão: O número de resultados da consulta da conexão externa deve ser >= o número de resultados da consulta da conexão interna

Caso: Consultar os superiores de cada funcionário e exigir a exibição dos nomes de todos os funcionários e líderes?

selecione a.ename como 'nome do funcionário', b.ename como 'nome do líder' de emp a left join emp b em a.mgr=b.empno;//O lado esquerdo é a tabela principal

2.9.Como conectar três ou quatro mesas?

select ... from a join b na condição de conexão de a e b join c na condição de conexão de a e c right join d na condição de conexão de a e d

As junções internas e externas podem ser misturadas em uma instrução SQL. Todos eles podem aparecer!

Caso: Descubra o nome do departamento e a faixa salarial de cada funcionário. Deseja exibir o nome do funcionário, o nome do departamento, o salário e a faixa salarial?

selecione e.ename,e.sal,d.dname,s.grade de emp e join dept d em e.deptno =d.deptno join salgrade s em e.sal entre s.losal e s.hisal;

Caso: Descubra o nome do departamento e a faixa salarial de cada funcionário, bem como do líder superior. Deseja exibir o nome do funcionário, nome do líder, nome do departamento, salário e faixa salarial?

selecione e.ename,e.sal,d.dname,s.grade,l.ename de emp e junte-se ao dept d em e.deptno =d.deptno junte-se a salgrade s em e.sal entre s.losal e s.hisal à esquerda junte-se a emp l em e.mgr=l.empno;

3. Subconsulta

3.1. O que é uma subconsulta?

As instruções select são aninhadas nas instruções select, e as instruções select aninhadas são chamadas de subconsultas.

3.2. Onde as subconsultas estão dispostas a aparecer?

selecione...(selecionar)de... (selecionar)onde...(selecionar);

3.3. Subconsulta na cláusula where

Caso: Encontrar os nomes e salários dos funcionários cujos salários são superiores ao salário mínimo?

selecione ename,sal de emp onde sal>(selecione min(sal) de emp);

3.4. Subconsulta da cláusula from

Nota: A subconsulta após from pode tratar o resultado da consulta da subconsulta como uma tabela temporária. (Habilidade)

Exemplo: Encontre o nível de confiança do salário médio para cada cargo.

selecione t.*,s.grade from (selecione job,avg(sal)como avgsal do grupo emp por job) como t join salgrade s em t.avgsal entre s.losal e s.hisal;

3.5. Subconsulta da cláusula select (só preciso entender)

Caso: Descobrir o nome do departamento de cada funcionário e exigir que o nome do funcionário e o nome do departamento sejam exibidos?

selecione e.ename,e.deptno,(selecione d.dname de dept d onde e.deptno=d.deptno) como dname de emp e;

//É necessário que o resultado da consulta na subinstrução aninhada tenha apenas um resultado antes que a subconsulta possa ser usada após a seleção.

3.6. União mescla conjuntos de resultados de consulta

Caso: Consultar funcionários cujos cargos são gerente e vendedor?

selecione ename,job from emp where job='manger'or job='salesman';

selecione ename,job from emp onde job in('manger','salesman');

selecione ename,job from emp where job='manger'

União

selecione ename,job from emp where job='saleman';

A eficiência da união é maior. Para junções de tabelas, toda vez que uma nova tabela é conectada, o número de correspondências satisfaz o produto cartesiano, que é duplicado... 10*10=100 100*100=10000

Mas a união pode reduzir o número de partidas. No caso de redução do número de correspondências, a emenda dos dois conjuntos de resultados também pode ser concluída. 100+100=200;

//Quando a união mescla conjuntos de resultados, o número de colunas e tipos de dados dos dois conjuntos de resultados deve ser o mesmo.

4.limite

4.1. Função limite: retira parte do conjunto de resultados da consulta, geralmente usado em consultas de paginação.

4.2 Como usar o limite?

Uso completo: limite startIndex, length (startIndex é o índice inicial, começando em 0 por padrão, length é o comprimento)

Uso padrão: limite 5; este é o top 5.

select ename, sal from emp order by sal desc limit 5;//Obtém os 5 primeiros itens

select ename, sal from emp order by sal desc limit 0,5;//Obtém os primeiros 0-5 itens

 4.3. Limite no mysql é executado após order by! ! ! ! !

4.4. Remover os funcionários cujo salário está classificado em [3-5]?

select ename, sal from emp order by sal desc limit 2, 3; (2 representa o subscrito inicial, 3 representa o comprimento)

4.5. Paginação

Cada página exibe 3 registros, a primeira página tem limite de 0,3, a segunda página tem limite de 3,3 e a terceira página tem limite de 6,3;

Exibir registros pageSize por página

第pageNo页:limit(pageNo-1)*pageSize ,pageSize

int pageNo=5; //Página 5

int pageSize=10;//Exibe 10 itens por página

int startIndex=(página-1)*pageSize;

String sql=”select ...limit“+startIndex+”,“+pageSize;

5. Um resumo das declarações DQL:

selecione ... de ... onde ... agrupar por ... tendo ... ordenar por ... limite ... //ordem gramatical

from>where>group by>tendo>select>order by>limit //Ordem de execução

6. Criação de tabela (criação de tabela)

6.1. Formato de sintaxe para criação de uma tabela: (Criar uma tabela é uma instrução DDL e DDL inclui create drop alter)

criar nome da tabela da tabela (nome do campo 1 tipo de dados, nome do campo 2 tipo de dados);

6.2 Sobre os tipos de dados do mysql?

tipo de caractere variável varchar, alocação dinâmica de espaço, baixo desempenho, vantagem, sem desperdício de espaço

char aloca um comprimento de caractere fixo, alto desempenho, string de comprimento fixo, uso impróprio, desperdício de espaço

Quando usar varchar e char? Quando o caractere for fixo, use char, e quando o caractere mudar, use varchar;

int é equivalente a int em java

bigint é equivalente a longo em java

float tipo de ponto flutuante de precisão única

tipo de ponto flutuante de precisão dupla dupla

data abreviada tipo de data formato de entrada padrão 1910-12-08

data e hora tipo de data longa formato de entrada padrão 1999-12-08 09:53:32

clob é um objeto de caractere grande que pode armazenar até 4G de strings.

blob é um objeto binário grande, especialmente usado para armazenar dados de fluxo de mídia, como imagens, sons, vídeos, etc. Ao inserir dados em campos do tipo Bloob, como inserir imagens, vídeos, etc., você precisa usar fluxos IO.

Como deletar uma tabela sem reportar erro: descarte a tabela se existir t_student;

6.3 Criar tabela de alunos?

criar tabela t_student(no int,name varchar(32),sex char(1),age int(3),email varchar(255));

6.4. Inserir dados (DML)

Formato de sintaxe: inserir no nome da tabela (nome do campo 1, nome do campo 2...) valores (valor 1, valor 2...);

Nota: Os nomes e valores dos campos devem corresponder um a um e as quantidades devem corresponder. Os tipos de dados devem corresponder.

inserir em t_student(email,name,sex,age,no) valores ('[email protected]','lise','f',20,2);

método insert para inserir várias linhas de registros de uma só vez?

insira em t_user(id,name,birth,create_time) valores (1,'zs','1980-10-11',now()),(2,'lisi','1981-10-11',now( )),(3,'niuniu','1971-10-11',agora());

Dê valor padrão ao criar tabela

criar tabela t_student(no int,name varchar(32),sex char(1) padrão 'm',age int(3),email varchar(255));

insert into t_student values(2,'lise','f',20,'[email protected]');//Observe que se os nomes dos campos anteriores forem omitidos, eles serão todos incluídos! , então os valores também devem ser escritos!

6.5. inserir inserir data

Formatando números: formato(número, 'formato')

selecione ename,format(sal,'$999,999') como sal de emp;

str_to_date: converte o tipo string varchar em tipo de data

date_format: converte o tipo de data em um tipo de string varchar com um determinado formato.

str_to_date('String data','Formato de data') por exemplo:str_to_date('01-10-1990','%m/%d/%Y')

Formato de data MySQL: %Y ano %m mês %d dia %h hora %i minuto %s segundo

date_format Esta função pode converter o tipo de data em uma string em um formato específico.

formato_data (dados do tipo data, 'formato data'), por exemplo: formato_data(nascimento,'%m/%d/%Y')

6.6. Datetime é geralmente semelhante a date, mas datetime é exibido mais especificamente.

Existe uma função no mysql que pode obter a hora atual do sistema.A função now() é do tipo datetime.

6.7. Modificar atualização (DML)

Formato de sintaxe:

atualizar nome da tabela definir nome do campo 1 = valor 1, nome do campo 2 = valor 2, nome do campo 3 = valor 3... onde condição;

Nota: Nenhuma restrição condicional fará com que todos os dados sejam atualizados.

atualizar t_user set name='jack',birth='2000-10-11' onde id=2;

Atualize tudo? atualizar t_user set name='abc';

6.8. Excluir exclusão de dados (DML)

Formato gramatical? excluir do nome da tabela onde condição;

Nota: Sem condições, todos os dados da tabela inteira serão excluídos!

excluir de t_user onde id=2;

insira em t_user(id) valores(2);

delete from t_user; //Excluir tudo!

7. Criar tabelas rapidamente?

crie a tabela emp2 como select * from emp;

Princípio: Trate o resultado de uma consulta como uma nova tabela! ! Isso pode completar a cópia rápida da tabela! ! A tabela é criada e os dados da tabela também existem! !

insira em dept_bak select * from dept;//Raramente usado!

Insira os resultados da consulta na tabela dept_bak.

8. Excluir rapidamente os dados da tabela?

8.1

delete from dept dept_back;//Esta forma de excluir dados é relativamente lenta e pertence à instrução DML.

O princípio da exclusão é excluir os dados da tabela um por um. O espaço não será liberado e os dados poderão ser restaurados. A desvantagem é que a eficiência de exclusão é relativamente baixa. A vantagem é: ele suporta reversão e você pode restaurar dados caso se arrependa.

8.2

Como a instrução truncada exclui dados?

Esse tipo de exclusão é relativamente eficiente: a tabela é truncada e excluída fisicamente de uma só vez.

A desvantagem da exclusão é: a reversão não é suportada.

Vantagens deste tipo de exclusão: rápida.

Uso: truncar tabela dept_bak; (Esta operação é uma operação DDL.)! ! ! ! Observe que a recuperação não é possível e o usuário deve ser lembrado.

9. Restrições

9.1. O que são restrições? restrição (restringir cinco estrelas *****)

A função das restrições é garantir que: os dados da tabela sejam válidos! !

9.2.Tipos de restrições?

Restrição não nula: não nula *

Restrição de exclusividade: único *

Restrição de chave primária: chave primária (referida como pk) *

Restrições de chave estrangeira: chave estrangeira (fk para abreviar) *

Verifique restrições: check (não suportado pelo mysql, suportado pelo oracle)

9.3.Como escrever restrições não vazias?

criar tabela t_vip(id int,

nome varchar(255) não nulo);

9.4.Como escrever restrições únicas?

criar tabela t_vip(

eu não fiz,

nome varchar(255) único,

e-mail varchar(255));

O campo de nome deve ser exclusivo e não pode conter sequências repetidas, mas pode ser nulo.

Os dois campos são únicos juntos.

criar tabela t_vip(

eu não fiz,

nomevarchar(255) ,

e-mail varchar(255),

único (nome, email)

);

Quando único e não nulo são usados ​​juntos, eles se tornarão uma chave primária.

criar tabela t_vip(

eu não fiz,

nome varchar(255) não nulo exclusivo,

e-mail varchar(255),

);

9.5. Restrições de chave primária (chave primária, abreviadamente pk)

O valor da chave primária é o identificador exclusivo de cada linha de registros, e a chave primária é o número de identificação de cada linha de registros! ! !

Lembre-se: qualquer tabela deve ter uma chave primária. Sem chave primária a tabela é inválida! !

Características da chave primária: não nula+única (o valor da chave primária não pode ser NULL e não pode ser repetido!)

Qual é a sintaxe para adicionar uma chave primária a uma tabela?

eliminar tabela se existir t_vip; | eliminar tabela se existir t_vip;  

criar tabela t_vip( | criar tabela t_vip(

id int chave primária, |   eu não fiz ,

nomevarchar(255)           |   nomevarchar(255) ,

);                    | chave primária (id, nome)

//id é usado como chave primária ou pode ser escrito separadamente | ); //id e nome são usados ​​juntos como chave primária

No desenvolvimento real, não é recomendado usar: chave primária composta, é recomendado usar uma única chave primária! Como a função do valor da chave primária é o número de identificação, o significado é suficiente.

Numa tabela, apenas uma restrição de chave primária pode ser adicionada. (Só pode haver uma chave primária) Recomenda-se usar int bigint e tipo char como chave primária. Não é recomendado usar tipo varchar.

como chave primária. No desenvolvimento real, é melhor usar chaves primárias naturais, porque as chaves primárias não precisam ser significativas, desde que não sejam repetidas.

9.6. As restrições de chave estrangeira (fk, abreviadamente) são muito importantes. Cinco estrelas *****

Para garantir que os dados da tabela filho sejam consistentes com os da tabela pai, restrições de chave estrangeira devem ser adicionadas à tabela filho. Ao excluir uma tabela, você deve primeiro excluir a tabela filha antes de excluir a tabela pai.

criar tabela t_class( criar tabela t_student(

classno int chave primária, sem chave primária int auto_increment,

nome da classe varchar(255) nome varchar(255),

); não há int,

//Tabela pai, a sintaxe da chave estrangeira é mostrada abaixo, referências de chave estrangeira (cno) t_class(classno)

//Chaves estrangeiras só podem gravar dados de campos vinculados );

Nota: O valor da chave estrangeira pode ser nulo. O campo vinculado à chave estrangeira deve ser exclusivo, mas não precisa ser a chave primária.

-------------------------------------------------- -------------------------------------------------- -----------------------------

Acho que você gosta

Origin blog.csdn.net/m0_55315930/article/details/121645487
Recomendado
Clasificación