Perguntas da entrevista do banco de dados MySQL 2020 (50 perguntas com respostas e resumo do mapa mental)

prefácio

Os pontos de conhecimento sobre o MySQL resumem um mapa mental para compartilhar com você, espero que seja útil para você!

1. Que tipos de bloqueios existem no MySQL?

(1) Bloqueios em nível de tabela: pequena sobrecarga, bloqueio rápido; sem deadlocks; grande granularidade de bloqueio, a maior probabilidade de conflitos de bloqueio e a menor simultaneidade.

(2) Bloqueios em nível de linha: alta sobrecarga e bloqueio lento; deadlocks podem ocorrer; a granularidade do bloqueio é a menor, a probabilidade de conflitos de bloqueio é a mais baixa e a simultaneidade é a mais alta.

(3) Bloqueio de página: a sobrecarga e o tempo de bloqueio estão entre os bloqueios de tabela e os bloqueios de linha; ocorrerão deadlocks; a granularidade do bloqueio está entre os bloqueios de tabela e os bloqueios de linha e a simultaneidade é média.

2. Quais são as diferentes tabelas no MySQL?

Existem 5 tipos de tabelas:

1)MyISAM

(2)Pilha

(3)Mesclar

(4)INNODB

(5)ISAM

3. Descreva brevemente a diferença entre MyISAM e InnoDB no banco de dados MySQL

MyISAM:

(1) As transações não são suportadas, mas cada consulta é atômica;

(2) Suporte a bloqueios em nível de tabela, ou seja, cada operação bloqueia a tabela inteira;

(3) O número total de linhas na tabela de armazenamento;

(4) Uma tabela MYISAM tem três arquivos: arquivo de índice, arquivo de estrutura de tabela e arquivo de dados;

(5) Usando o índice clusterizado filipino, o campo de dados do arquivo de índice armazena o ponteiro para o arquivo de dados. O índice auxiliar é basicamente igual ao índice principal, mas o índice auxiliar não precisa garantir exclusividade.

InnoDb:

(1) Suporta transações ACID, suporta quatro níveis de isolamento de transações;

(2) Suporte a bloqueios em nível de linha e restrições de chave estrangeira: para que possa suportar simultaneidade de gravação;

(3) Não armazene o número total de linhas:

(4) Um mecanismo InnoDb é armazenado em um espaço de arquivo (espaço de tabela compartilhado, o tamanho da tabela não é controlado pelo sistema operacional e uma tabela pode ser distribuída em vários arquivos) ou pode ser múltiplo (definido como uma tabela independente vazio, o tamanho da tabela é afetado pelo O limite de tamanho do arquivo do sistema operacional, geralmente 2G), é limitado pelo tamanho do arquivo do sistema operacional;

(5) O índice de chave primária adota um índice clusterizado (o campo de dados do índice armazena o próprio arquivo de dados) e o campo de dados do índice secundário armazena o valor da chave primária; portanto, para encontrar dados do índice secundário , você precisa primeiro encontrar o valor da chave primária por meio do índice secundário e, em seguida, acessar o índice secundário ; É melhor usar a chave primária de incremento automático para evitar o grande ajuste do arquivo para manter a estrutura da árvore B+ quando inserindo dados.

4. Quais são os nomes dos quatro níveis de isolamento de transação suportados pelo InnoDB no MySQL e as diferenças entre eles? Os quatro níveis de isolamento definidos pelo padrão SQL são:

(1) ler não confirmado: ler dados não confirmados

(2) leitura confirmada: leitura suja, leitura não repetível

(3) leitura repetível: relegível

(4) serializável: coisas seriais

5. Qual é a diferença entre CHAR e VARCHAR?

(1) Os tipos CHAR e VARCHAR são diferentes no armazenamento e na recuperação

(2) O comprimento da coluna CHAR é fixado no comprimento declarado ao criar a tabela, e o valor do comprimento varia de 1 a 255. Quando os valores CHAR são armazenados, eles são preenchidos com espaços em um comprimento específico e os espaços à direita precisam a ser removido ao recuperar valores CHAR.

6. Qual é a diferença entre uma chave primária e uma chave candidata?

Cada linha da tabela é identificada exclusivamente por uma chave primária e uma tabela possui apenas uma chave primária.

Uma chave primária também é uma chave candidata. Por convenção, as chaves candidatas podem ser designadas como chaves primárias e podem ser usadas para qualquer referência de chave estrangeira.

7. Para que serve o myisamchk?

Ele é usado para compactar tabelas MyISAM, o que reduz o uso de disco ou memória.

Qual é a diferença entre MyISAM Static e MyISAM Dynamic?

Todos os campos no MyISAM Static têm uma largura fixa. As tabelas MyISAM dinâmicas terão campos como TEXT, BLOB, etc. para acomodar tipos de dados de diferentes comprimentos.

MyISAM Static é mais fácil de restaurar em caso de dano.

8. O que acontece se uma tabela tiver uma coluna definida como TIMESTAMP?

O campo timestamp obterá o timestamp atual sempre que a linha for alterada.

O que acontece se o valor máximo for atingido na tabela quando a coluna for definida como AUTO INCREMENT?

Ele para de incrementar e quaisquer outras inserções irão gerar um erro porque a chave já está em uso.

Como posso descobrir qual autoincremento foi atribuído na última inserção?

LAST_INSERT_ID retornará o último valor atribuído por Auto_increment e não requer a especificação de um nome de tabela.

 

9. Como você vê todos os índices definidos para a tabela?

Os índices são definidos para tabelas por:

MOSTRAR ÍNDICE DE <tablename>;

10. O que significam % e _ na instrução LIKE?

% corresponde a 0 ou mais caracteres, _ é apenas um caractere na instrução LIKE.

Como converter entre timestamps Unix e MySQL?

UNIX_TIMESTAMP é o comando para converter de carimbo de data/hora MySQL para carimbo de data/hora Unix

FROM_UNIXTIME é o comando para converter de timestamp Unix para MySQL timestamp

11. O que é o operador de comparação de colunas?

Use os operadores =, <>, <=, <, >=, >, <<, >>, <=>, AND, OR ou LIKE em comparações de colunas em uma instrução SELECT.

12. Qual a diferença entre BLOB e TEXT?

Um BLOB é um objeto binário que pode conter quantidades variáveis ​​de dados. TEXT é um BLOB que não diferencia maiúsculas de minúsculas.

A única diferença entre os tipos BLOB e TEXT é que a classificação e as comparações diferenciam maiúsculas de minúsculas para valores BLOB e não diferenciam maiúsculas de minúsculas para valores TEXT.

 

13. Qual é a diferença entre MySQL_fetch_array e MySQL_fetch_object?

A seguir está a diferença entre MySQL_fetch_array e MySQL_fetch_object:

MySQL_fetch_array() – retorna linhas de resultado como uma matriz associativa ou uma matriz regular do banco de dados.

MySQL_fetch_object – Retorna linhas de resultado do banco de dados como objetos.

14. Onde as tabelas MyISAM serão armazenadas e também fornecerão seu formato de armazenamento?

Cada tabela MyISAM é armazenada em disco em três formatos:

(1) Definição da tabela de armazenamento de arquivos ".frm"

(2) Os arquivos de dados têm a extensão ".MYD" (MYData)

(3) Arquivos de índice têm extensão ".MYI" (MYIndex)

15. Como o MySQL otimiza o DISTINCT?

DISTINCT converte para GROUP BY em todas as colunas e é usado em conjunto com a cláusula ORDER BY.

SELECT DISTINCT t1.a FROM t1,t2 onde t1.a=t2.a;

 

16. Como exibir as primeiras 50 linhas?

No MySQL, use a seguinte consulta de código para exibir as primeiras 50 linhas:

SELECIONE DE

LIMITE 0,50;

 

17. Quantas colunas podem ser usadas para criar um índice?

Um máximo de 16 colunas indexadas podem ser criadas em qualquer tabela padrão.

 

18. Qual é a diferença entre NOW() e CURRENT_DATE()?

O comando NOW() é usado para exibir o ano, mês, data, hora, minuto e segundo atuais.

CURRENT_DATE() exibe apenas o ano, mês e dia atuais.

 

19. O que é um tipo de string não padrão?

(1)TINYTEXT

(2)TEXTO

(3)MEDIUMTEXT

(4)LONGTEXT

20. O que é uma função SQL geral?

(1) CONCAT(A, B) – Concatena dois valores de string para criar uma única string de saída. Normalmente usado para combinar dois ou mais campos em um.

(2) FORMAT(X, D)- formata o número X para D dígitos válidos.

(3) CURRDATE(), CURRRTIME()- Retorna a data ou hora atual.

(4) NOW() – retorna a data e hora atuais como um valor.

(5) MONTH(), DAY(), YEAR(), WEEK(), WEEKDAY() – Extrai os dados fornecidos de um valor de data.

(6) HOUR(), MINUTE(), SECOND() – Extrai dados fornecidos do valor de tempo.

(7) DATEDIFF(A, B) – Determina a diferença entre duas datas, geralmente usado para calcular a idade

(8) SUBTIMES(A,B) - Determina a diferença entre dois tempos.

(9) FROMDAYS(INT) – Converte um número inteiro de dias em um valor de data.

21. O MySQL suporta transações?

No modo padrão, o MySQL está no modo de confirmação automática e todas as operações de atualização do banco de dados serão confirmadas imediatamente, portanto, por padrão, o MySQL não suporta transações.

Mas se o seu tipo de tabela MySQL usa tabelas InnoDB ou tabelas BDB, seu MySQL pode usar processamento de transação, use SETAUTOCOMMIT=0 para fazer o MySQL permitir o modo não autocommit, no modo não autocommit, você deve usar COMMIT para confirmar suas alterações ou use ROLLBACK para reverter suas alterações.

22. Qual tipo de campo é bom para registrar moeda no MySQL

Os tipos NUMERIC e DECIMAL são implementados pelo MySQL como o mesmo tipo, o que é permitido no padrão SQL92. Eles são usados ​​para armazenar valores onde a precisão exata é extremamente importante, como dados relacionados a dinheiro. Ao declarar uma classe como um desses tipos, a precisão e a escala podem ser (e geralmente são) especificadas.

Por exemplo:

salário DECIMAL(9,2)

Neste exemplo, 9 (precisão) representa o número total de casas decimais que serão usadas para armazenar o valor e 2 (escala) representa o número de dígitos que serão usados ​​para armazenar o valor após a vírgula.

Então, nesse caso, a faixa de valores que podem ser armazenados na coluna salário é de -9999999,99 a 9999999,99.

 

23. Quantas tabelas estão relacionadas a permissões no MySQL?

O servidor MySQL controla o acesso do usuário ao banco de dados por meio da tabela de permissões, que é armazenada no banco de dados MySQL e inicializada pelo script MySQL_install_db. Essas tabelas de permissão são user, db, table_priv, column_priv e host.

 

24. Qual pode ser o tipo de string da coluna?

Os tipos de string são:

(1)SET2

(2)BLOB

(3)ENUM

(4)CHAR

(5)TEXTO

25. O banco de dados MySQL é utilizado como armazenamento do sistema de publicação, e o incremento de mais de 50.000 registros por dia está previsto para ser operado e mantido por três anos Como otimizar?

(1) Projete uma boa estrutura de banco de dados, permita alguma redundância de dados, tente evitar consultas de junção e melhore a eficiência.

(2) Selecione o tipo de dados do campo da tabela apropriado e o mecanismo de armazenamento e adicione os índices adequadamente.

(3) Separação de leitura e gravação da biblioteca MySQL mestre-escravo.

(4) Encontre regras e divida tabelas para reduzir a quantidade de dados em uma única tabela e melhorar a velocidade da consulta.

(5) Adicionar mecanismo de cache, como memcached, apc, etc.

(6) Para páginas que não mudam com frequência, gere páginas estáticas.

(7) Escreva SQL eficiente. Por exemplo, SELECT * FROM TABEL é alterado para SELECT field_1, field_2, field_3 FROM TABLE.

26. Estratégia de otimização de bloqueio

(1) Separação leitura-gravação

(2) Bloqueio seccional

(3) Reduza o tempo de bloqueio

(4) Várias threads tentam adquirir recursos na mesma ordem

A granularidade dos bloqueios não pode ser excessivamente refinada, caso contrário, os encadeamentos podem ser bloqueados e liberados muitas vezes, mas a eficiência não é tão boa quanto adicionar um grande bloqueio de cada vez.

27. O princípio de implementação subjacente e otimização do índice

Árvore B+, árvore B+ otimizada

A principal razão é que os ponteiros para o próximo nó folha são adicionados em todos os nós folha, então o InnoDB recomenda usar a chave primária de auto-incremento padrão como o índice primário para a maioria das tabelas.

28. Em que circunstâncias o índice é definido, mas não pode ser usado

(1) Instrução LIKE começando com "%", correspondência difusa

(2) Os índices não são usados ​​ao mesmo tempo antes e depois da instrução OR

(3) Há uma conversão implícita do tipo de dados (por exemplo, se varchar não adicionar aspas simples, pode ser convertido automaticamente para o tipo int)

 

29. Como otimizar o MySQL na prática

É melhor otimizar na seguinte ordem:

(1) Otimização de instruções e índices SQL

(2) Otimização da estrutura da tabela do banco de dados

(3) Otimização da configuração do sistema

(4) Otimização de hardware

 

30. Como otimizar o banco de dados

(1) Selecione o atributo de campo mais aplicável, reduza a largura do campo definido o máximo possível e defina o campo como NOTNULL o máximo possível, como 'province' e 'gender', é melhor aplicar ENUM

(2) Use join (JOIN) em vez de subconsulta

(3) Aplicar união (UNION) em vez de tabela temporária criada manualmente

(4) Processamento de transações

(5) Bloqueie tabelas e otimize o processamento de transações

(6) Aplicar chaves estrangeiras e otimizar tabelas de bloqueio

(7) Crie um índice

(8) Otimize a declaração de consulta

31. Descreva resumidamente a diferença entre índice, chave primária, índice único e índice conjunto no MySQL e qual o impacto que isso tem no desempenho do banco de dados (tanto nos aspectos de leitura quanto de gravação)

Índices são arquivos especiais (índices em tabelas de dados InnoDB fazem parte do espaço de tabela) que contêm ponteiros de referência para todos os registros na tabela de dados.

A única tarefa dos índices comuns (aqueles definidos pelas palavras-chave KEY ou INDEX ) é acelerar o acesso aos dados.

Os índices comuns permitem que as colunas de dados indexados contenham valores duplicados. Se você pode determinar que uma coluna de dados conterá apenas valores diferentes entre si, você deve usar a palavra-chave UNIQUE para defini-la como um índice exclusivo ao criar um índice para esta coluna de dados. Em outras palavras, um índice exclusivo pode garantir a exclusividade dos registros de dados.

Uma chave primária é um índice exclusivo especial. Somente um índice de chave primária pode ser definido em uma tabela. A chave primária é usada para identificar exclusivamente um registro e é criada usando a palavra-chave PRIMARY KEY.

Um índice pode abranger várias colunas de dados, como um índice como INDEX (colunaA, colunaB), que é um índice conjunto.

A indexação pode melhorar muito a velocidade de consulta de dados, mas reduzirá a velocidade de inserção, exclusão e atualização de tabelas, porque ao executar essas operações de gravação, o arquivo de índice também deve ser operado.

 

32. O que é uma transação em um banco de dados?

Uma transação é um conjunto ordenado de operações de banco de dados como uma unidade. Uma transação é considerada bem-sucedida se todas as operações no grupo forem bem-sucedidas e não será bem-sucedida mesmo se apenas uma operação falhar. Se todas as operações forem concluídas, a transação será confirmada e suas modificações serão aplicadas a todos os outros processos do banco de dados. Se uma operação falhar, a transação é revertida e os efeitos de todas as operações nessa transação são cancelados.

Características da transação:

(1) Atomicidade: isto é, indivisibilidade, todas as transações são executadas ou não são executadas.

(2) Consistência ou stringability. A execução de uma transação faz com que o banco de dados faça a transição de um estado correto para outro.

(3) Isolamento. Quaisquer alterações nos dados feitas por uma transação não podem ser disponibilizadas para nenhuma outra transação até que a transação seja devidamente confirmada.

(4) Persistência. Após o envio correto da transação, seu resultado será salvo permanentemente no banco de dados, mesmo que ocorram outras falhas após o envio da transação, o resultado do processamento da transação também será preservado.

Ou entenda assim:

Uma transação é um grupo de instruções SQL unidas como uma unidade lógica de trabalho. Se qualquer operação de instrução falhar, toda a operação falhará e as operações subsequentes serão revertidas para o estado anterior à operação ou se houver um nó em isto. Para garantir que algo seja executado ou não, as transações podem ser usadas. Para considerar uma declaração de grupo como uma transação, ela precisa passar nos testes ACID, ou seja, Atomicidade, Consistência, Isolamento e Durabilidade.

33. Quais são as causas das vulnerabilidades de injeção de SQL? Como prevenir?

Razões para injeção de SQL: No processo de desenvolvimento do programa, a escrita padrão de instruções sql e a filtragem de caracteres especiais não são consideradas, para que o cliente possa enviar algumas instruções sql por meio de variáveis ​​globais POST e GET para execução normal.

Formas de prevenir a injeção de SQL:

Ative as configurações magic_quotes_gpc e magic_quotes_runtime no arquivo de configuração

Use addlashes para converter instruções sql ao executar instruções sql

Tente não omitir aspas duplas e aspas simples ao escrever instruções Sql.

Filtre algumas palavras-chave na instrução sql: atualizar, inserir, excluir, selecionar, *.

Melhore as habilidades de nomeação de tabelas e campos do banco de dados e nomeie alguns campos importantes de acordo com as características do programa, para que não sejam fáceis de adivinhar.

34. Selecione o tipo de dados apropriado para os campos na tabela

Prioridade do tipo de campo: integer>date,time>enum,char>varchar>blob,text

Dê prioridade aos tipos numéricos, seguidos por data ou tipos binários e, finalmente, tipos string.Para tipos de dados do mesmo nível, os tipos de dados que ocupam menos espaço devem ser preferidos.

35. Período de armazenamento

Datatime:

Armazena o período de tempo no formato AAAA-MM-DD HH:MM:SS, com precisão de segundos, ocupando 8 bytes de espaço de armazenamento, o tipo datatime não tem nada a ver com o fuso horário Carimbo de data/hora: armazenado no formato de carimbo de data/hora, ocupando 4 bytes, pequeno intervalo de 1970-1-1 a 2038-1-19, a exibição depende do fuso horário especificado. Por padrão, o valor da coluna timestamp pode ser modificado automaticamente quando os dados na primeira linha são modificados

Data:

(Aniversário) ocupa menos bytes do que usar string .datatime.int para armazenar, e usar data precisa apenas de 3 bytes para armazenar a data e o mês, e você também pode usar a função de data e hora para calcular o período de data

Tempo:

Armazene a parte do tempo dos dados

Perceber:

Não use o tipo de string para armazenar dados de data e hora (geralmente ocupa menos espaço de armazenamento do que uma string e você pode usar a função de data ao pesquisar e filtrar)

Usar int para armazenar data e hora não é tão bom quanto usar o tipo timestamp

36. Para bancos de dados relacionais, a indexação é um conceito muito importante. Responda algumas perguntas sobre índices:

(1) Qual é o objetivo do índice?

Acesse rapidamente informações específicas na tabela de dados para melhorar a velocidade de recuperação

Crie um índice exclusivo para garantir a exclusividade de cada linha de dados na tabela do banco de dados.

Tabelas e junções aceleradas entre tabelas

Ao usar cláusulas de agrupamento e classificação para recuperação de dados, você pode reduzir significativamente o tempo de agrupamento e classificação em consultas

(2) Quais são os impactos negativos dos índices nos sistemas de banco de dados?

Impacto negativo:

Leva tempo para criar e manter índices, e esse tempo aumenta conforme a quantidade de dados aumenta; índices precisam ocupar espaço físico, não apenas tabelas precisam ocupar espaço de dados, cada índice também precisa ocupar espaço físico; ao adicionar ou excluir tabelas , Mudança e índice também devem ser mantidos dinamicamente, o que reduz a velocidade da manutenção de dados.

(3) Quais são os princípios para indexar tabelas de dados?

Crie índices nos campos usados ​​com mais frequência para restringir as consultas.

Crie índices em campos usados ​​com frequência que precisam ser classificados

(4) Em que circunstâncias a indexação não deve ser estabelecida?

Para colunas raramente envolvidas em consultas ou colunas com muitos valores repetidos, não é apropriado construir índices.

Para alguns tipos de dados especiais, não é adequado construir índices, como campos de texto (texto), etc.

37. Explique a diferença entre MySQL outer join, inner join e self join

Deixe-me primeiro falar sobre cross-join: Cross-join também é chamado de produto cartesiano, refere-se à correspondência direta de todos os registros em uma tabela com todos os registros em outra tabela sem usar nenhuma condição.

junção interna 

É uma conexão cruzada apenas com condições. De acordo com uma determinada condição, os registros que atendem às condições são filtrados e os registros que não atendem às condições não aparecerão no conjunto de resultados, ou seja, apenas a conexão interna conecta as linhas correspondentes.

junção externa 

O conjunto de resultados não apenas contém linhas que atendem às condições de junção, mas também inclui todas as linhas de dados na tabela esquerda, na tabela direita ou em ambas as tabelas. Esses três casos são chamados de junção externa esquerda, junção externa direita e junção externa completa. .

junção externa esquerda

Também conhecida como junção esquerda, a tabela da esquerda é a tabela principal e todos os registros da tabela da esquerda aparecerão no conjunto de resultados. Para os registros que não correspondem na tabela da direita, eles ainda serão exibidos e o campo correspondente os valores à direita serão preenchidos com NULL. Junção externa direita, também conhecida como junção direita, a tabela da direita é a tabela principal e todos os registros na tabela da direita aparecerão no conjunto de resultados. Left joins e right joins são intercambiáveis, e o MySQL atualmente não suporta full outer joins.

38. Visão geral do mecanismo de reversão de transação no Myql

Uma transação é uma sequência de operações de banco de dados definidas pelo usuário. Essas operações são todas feitas ou não são feitas. É uma unidade de trabalho inseparável. A reversão da transação refere-se ao desfazer das operações de atualização concluídas da transação no banco de dados.

Quando você deseja modificar duas tabelas diferentes no banco de dados ao mesmo tempo, se não forem uma transação, quando a primeira tabela é modificada, pode haver uma exceção durante o processo de modificação da segunda tabela e esta não pode ser modificada. desta vez, apenas a segunda tabela ainda está no estado anterior à modificação e a primeira tabela foi modificada. E quando você os define como uma transação, quando a primeira tabela é modificada, a segunda tabela é modificada de forma anormal e não pode ser modificada, a primeira tabela e a segunda tabela retornarão ao estado não modificado, isso é chamado de reversão de transação

39. Quais partes a linguagem SQL inclui? Quais são as palavras-chave de ação para cada seção?

A linguagem SQL inclui definição de dados (DDL), manipulação de dados (DML), controle de dados (DCL) e consulta de dados (DQL) em quatro partes.

Definição de dados:

Create Table,Alter Table,Drop Table, Craete/Drop Index 等

Manipulação de dados:

Selecione, insira, atualize, exclua,

Controle de dados:

conceder, revogar

consulta de dados:

selecionar

40. Quais são as restrições de integridade?

A integridade dos dados (Integridade dos Dados) refere-se à precisão (Precisão) e confiabilidade (Confiabilidade) dos dados.

Dividido nas quatro categorias a seguir:

(1) Integridade da entidade:

Cada linha da tabela é estipulada para ser a única entidade na tabela.

(2) Integridade do domínio:

Isso significa que as colunas na tabela devem atender a uma restrição de tipo de dados específica e a restrição inclui o intervalo de valores, precisão e outros regulamentos.

(3) Integridade referencial:

Isso significa que os dados da chave primária e da chave estrangeira das duas tabelas devem ser consistentes, o que garante a consistência dos dados entre as tabelas e evita a perda de dados ou a propagação de dados sem sentido no banco de dados.

(4) Integridade definida pelo usuário:

Diferentes sistemas de banco de dados relacionais geralmente requerem algumas restrições especiais de acordo com seus diferentes ambientes de aplicativos. A integridade definida pelo usuário é uma restrição para um banco de dados relacional específico, que reflete os requisitos semânticos que um aplicativo específico deve atender.

Restrições relacionadas às tabelas:

Incluindo restrições de coluna (NOT NULL (não restrições vazias)) e restrições de tabela (PRIMARY KEY, chave estrangeira, verificação, UNIQUE).

41. O que é uma fechadura?

Um banco de dados é um recurso compartilhado usado por vários usuários. Quando vários usuários acessam dados simultaneamente, várias transações acessam simultaneamente os mesmos dados no banco de dados. Se as operações simultâneas não forem controladas, dados incorretos podem ser lidos e armazenados, destruindo a consistência do banco de dados.

O bloqueio é uma tecnologia muito importante para obter o controle de simultaneidade do banco de dados. Antes de uma transação operar em um objeto de dados, ela primeiro envia uma solicitação ao sistema para bloqueá-lo. Após o bloqueio, a transação tem certo controle sobre o objeto de dados. Antes que a transação libere o bloqueio, outras transações não podem atualizar o objeto de dados.

Tipos básicos de bloqueio: bloqueios incluem bloqueios em nível de linha e bloqueios em nível de tabela

42. O que é uma visão? O que é um cursor?

Uma visão é uma tabela virtual que tem a mesma funcionalidade de uma tabela física. As exibições podem ser adicionadas, modificadas, verificadas e manipuladas. Uma exibição geralmente é um subconjunto de linhas ou colunas de uma ou mais tabelas. As modificações na exibição não afetam as tabelas subjacentes. Isso facilita a obtenção de dados, em comparação com as consultas de várias tabelas.

Cursor: É para processar efetivamente o conjunto de resultados da consulta como uma unidade. O cursor pode ser posicionado em uma linha específica na célula para recuperar uma ou mais linhas da linha atual no conjunto de resultados. Pode modificar a linha atual do conjunto de resultados. Os cursores geralmente não são usados, mas são muito importantes quando os dados precisam ser processados ​​um a um.

43. O que é um procedimento armazenado? O que chamar?

Um procedimento armazenado é uma instrução SQL pré-compilada, com a vantagem de permitir um design modular, ou seja, só precisa ser criado uma vez, podendo ser chamado várias vezes no programa posteriormente. Se uma operação precisar executar vários SQLs, usar procedimentos armazenados é mais rápido do que instruções SQL puras. Os procedimentos armazenados podem ser chamados com um objeto de comando.

44. Como entender os três paradigmas de forma popular?

Primeira forma normal: 1NF é uma restrição atômica nos atributos, que exige que os atributos sejam atômicos e não possam ser decompostos;

Segunda forma normal: 2NF é uma restrição única nos registros, exigindo que os registros tenham um identificador único, ou seja, a unicidade das entidades;

A terceira forma normal: 3NF é uma restrição de redundância de campo, ou seja, nenhum campo pode ser derivado de outros campos e não requer redundância nos campos. .

Prós e contras do design paradigmático:

Vantagens: A redundância de dados pode ser reduzida ao máximo, tornando as atualizações rápidas e pequenas

Desvantagens: Para consultas, é necessário associar várias tabelas, o que reduz a eficiência da escrita e aumenta a eficiência da leitura, dificultando a otimização do índice

Desnormalização:

Vantagens: Pode reduzir a associação de tabelas e pode executar melhor otimização de índice

Desvantagens: redundância de dados e anomalias de dados, modificação de dados requer mais custo

45. O que é uma mesa básica? O que é uma visão?

A tabela básica é uma tabela que existe independentemente.No SQL, um relacionamento corresponde a uma tabela. Visualizações são tabelas derivadas de uma ou várias tabelas base. A visualização em si não é armazenada independentemente no banco de dados, é uma tabela virtual

46. ​​​​Descreva as vantagens das visualizações?

(1) Visualizações podem simplificar as operações do usuário

(2) As visualizações permitem que os usuários visualizem os mesmos dados de várias perspectivas;

(3) A visão fornece um certo grau de independência lógica para o banco de dados;

(4) As visualizações podem fornecer proteção de segurança para dados confidenciais.

47. O que significa NULO?

NULL Este valor significa UNKNOWN (desconhecido): não significa "" (string vazia). Qualquer comparação com o valor NULL produzirá um valor NULL. Você não pode comparar nenhum valor com um valor NULL e esperar logicamente uma resposta.

Use IS NULL para julgamento NULL

48. Qual a diferença entre chave primária, chave estrangeira e índice?

A diferença entre chave primária, chave estrangeira e índice

definição:

Chave primária - identifica exclusivamente um registro, não pode ter duplicatas e não pode estar vazia

Chave estrangeira - a chave estrangeira da tabela é a chave primária de outra tabela, a chave estrangeira pode ter duplicatas e pode ser nula

Índice - o campo não tem duplicatas, mas pode ter um valor nulo

efeito:

Chave primária - usada para garantir a integridade dos dados

Chaves estrangeiras - usadas para estabelecer relacionamentos com outras tabelas

Índice - é para melhorar a velocidade de classificação da consulta

Número:

Chave primária - só pode haver uma chave primária

Chaves estrangeiras - Uma tabela pode ter várias chaves estrangeiras

Índices - Uma tabela pode ter vários índices exclusivos

49. O que você pode usar para garantir que um campo em um formulário só aceite valores dentro de um determinado intervalo?

O limite de verificação, que é definido na tabela do banco de dados, é usado para limitar o valor inserido nesta coluna.

Os gatilhos também podem ser usados ​​para limitar os valores que os campos de uma tabela de banco de dados podem aceitar, mas essa abordagem requer que o gatilho seja definido na tabela, o que pode afetar o desempenho em alguns casos.

50. Fale-me sobre os métodos para otimizar instruções SQL? (escolha vários)

(1) Na cláusula Where: a conexão entre as tabelas where deve ser escrita antes de outras condições Where e aquelas condições que podem filtrar o número máximo de registros deve ser escrita no final da cláusula Where, HAVING é a última.

(2) Substitua IN por EXISTS e NOT IN por NOT EXISTS.

(3) Evite usar cálculos em colunas de índice

(4) Evite usar IS NULL e IS NOT NULL em colunas indexadas

(5) Para otimizar a consulta, você deve tentar evitar a varredura completa da tabela e primeiro considerar a criação de índices nas colunas envolvidas em where e order by.

(6) Tente evitar julgar o valor nulo do campo na cláusula where, caso contrário, o mecanismo desistirá de usar o índice e executará uma verificação completa da tabela

(7) Tente evitar executar operações de expressão em campos na cláusula where, o que fará com que o mecanismo desista de usar índices e execute varreduras completas de tabela

afinal

Siga a conta oficial: Programador Chasing the Wind, responda 003 para obter o manual de perguntas da entrevista Java 2020 mais recente (mais de 200 páginas de documentos PDF).

 

Acho que você gosta

Origin blog.csdn.net/Design407/article/details/108055113
Recomendado
Clasificación