A tecla PRIMARY é para identificar linhas, evite inserir duas linhas com os mesmos dados idênticos ... A tecla INDEX é para acelerar a pesquisa (lentidão mínima na inserção). Chave UNIQUE para dados exclusivos em uma coluna.
KEYe INDEXsão sinônimos no MySQL. Eles significam a mesma coisa. Nos bancos de dados, você usaria índices para melhorar a velocidade da recuperação de dados. Um índice é tipicamente criado em colunas utilizadas em JOIN, WHEREe ORDER BYcláusulas.
Imagine que você tem uma tabela chamada userse deseja procurar todos os usuários com o sobrenome 'Smith'. Sem um índice, o banco de dados precisaria passar por todos os registros da tabela: isso é lento, porque quanto mais registros você tiver no banco de dados, mais trabalho será necessário para encontrar o resultado. Por outro lado, um índice ajudará o banco de dados a pular rapidamente para as páginas relevantes em que os registros 'Smith' são mantidos. É muito parecido com o modo como nós, humanos, percorremos uma lista telefônica para encontrar alguém com o sobrenome: não começamos a pesquisar a lista de capa a capa, desde que inseramos as informações em alguma ordem que pudermos. use para pular rapidamente para as páginas 'S'.
Chaves primárias e chaves únicas são semelhantes. Uma chave primária é uma coluna ou uma combinação de colunas que pode identificar exclusivamente uma linha. É um caso especial de chave exclusiva . Uma tabela pode ter no máximo uma chave primária, mas mais de uma chave exclusiva. Quando você especifica uma chave exclusiva em uma coluna, nenhuma duas linhas distintas em uma tabela podem ter o mesmo valor.
Observe também que as colunas definidas como chaves primárias ou chaves únicas são indexadas automaticamente no MySQL.
posso ter uma chave única e uma chave primária com o mesmo valor?
AJUDA
58
@needHELP: se você tiver uma tabela chamada passengerscom os seguintes campos :, (id, first_name, last_name, age, passport_number)normalmente você configuraria a idcoluna para ser a chave primária. Uma chave primária é automaticamente uma chave exclusiva. A principal diferença é que você pode ter apenas uma chave primária na tabela e que a coluna não pode conter NULLvalores. Não é necessário configurar a idcoluna UNIQUEporque, ao defini-la como chave primária, é automaticamente garantida a sua exclusividade ... Então você também pode configurar passport_numberpara UNIQUEque não haja mais de um passageiro ...
Daniel Vassallo
32
... poderia ter o mesmo número de passaporte. No entanto, você pode ter alguns passageiros (crianças, por exemplo) sem número de passaporte. Nesse caso, você pode inserir NULLnessa coluna, sem problemas.
Daniel Vassallo
2
@DanielVassallo Gosto da maneira como você o limpa entre sinônimos usados pelo MySQL.
SIFE 13/03
1
Uma das melhores explicações. Muito obrigado :-)
Ravi Hirani
61
KEY e INDEX são sinônimos.
Você deve adicionar um índice quando as medições de desempenho e EXPLAIN mostrarem que a consulta é ineficiente devido a um índice ausente. A adição de um índice pode melhorar o desempenho das consultas (mas pode diminuir as modificações na tabela).
Você deve usar UNIQUE quando quiser restringir os valores nessa coluna (ou colunas) para serem únicos, para que tentativas de inserir valores duplicados resultem em erro.
Uma CHAVE PRIMÁRIA é uma restrição exclusiva e também implica que a coluna NÃO é NULA. É usado para dar uma identidade a cada linha. Isso pode ser útil para ingressar em outra tabela por meio de uma restrição de chave estrangeira. Embora não seja necessário que uma tabela tenha uma CHAVE PRIMÁRIA, geralmente é uma boa idéia.
PRIMARY KEY é usada para dar uma identidade a cada linha? explique desculpe pela minha ignorância.
AJUDA
@needHELP: É usado como uma maneira de identificar exclusivamente qualquer linha da sua tabela. Por exemplo, se você deseja excluir uma linha específica da sua tabela, é útil ter uma maneira de identificá-la sem ambiguidade, para que você não exclua acidentalmente a linha errada. Também é útil para ingressar em outra tabela à medida que é indexada.
Mark Byers
48
A chave primária não permite NULLvalores, mas a chave exclusiva permite NULLvalores.
Podemos declarar apenas uma chave primária em uma tabela, mas uma tabela pode ter várias chaves exclusivas (atribuição de coluna).
PRIMARY KEYAND UNIQUE KEYsão semelhantes, exceto que possuem funções diferentes. A chave primária torna a linha da tabela exclusiva (ou seja, não pode haver 2 linhas com a mesma chave). Você pode ter apenas 1 chave primária em uma tabela de banco de dados.
A chave exclusiva torna a coluna da tabela em uma linha da tabela exclusiva (ou seja, nenhuma linha da tabela 2 pode ter o mesmo valor exato). Você pode ter mais de uma coluna da tabela de chaves exclusiva (ao contrário da chave primária, o que significa que apenas uma coluna da tabela é exclusiva).
INDEXtambém cria exclusividade. O MySQL (exemplo) criará uma tabela de indexação para a coluna que está indexada. Dessa forma, é mais fácil recuperar o valor da linha da tabela quando a consulta é consultada nessa coluna da tabela indexada. A desvantagem é que, se você faz muitas atualizações / exclusões / criações, o MySQL precisa gerenciar as tabelas de indexação (e isso pode ser um gargalo de desempenho).
Além disso, UNIQUE KEYpode ser, NULLmas PRIMARY KEYnão pode ser NULL.
Rafay
10
Chaves exclusivas: as colunas nas quais não há duas linhas semelhantes
Chave Primária: Coleção do número mínimo de colunas que pode identificar exclusivamente todas as linhas de uma tabela (ou seja, não há duas linhas iguais em todas as colunas que constituem a chave primária). Pode haver mais de uma chave primária em uma tabela. Se existir uma chave exclusiva, será a chave primária (não "a" chave primária) na tabela. Se não existir uma chave exclusiva, mais de um valor de coluna será necessário para identificar uma linha como (nome, sobrenome, nome, nome do pai, nome da mãe) em algumas tabelas podem constituir chave primária.
Índice: usado para otimizar as consultas. Se você estiver pesquisando ou classificando os resultados com base em alguma coluna várias vezes (por exemplo, a maioria das pessoas pesquisará os alunos pelo nome e não pelo número de rolo), será possível otimizar se os valores da coluna estiverem todos " indexado "por exemplo, com um algoritmo de árvore binária.
Acho que você quis dizer que pode haver apenas um PK em uma tabela
Răzvan Flavius Panda
7
Chave primária - podemos colocar apenas uma chave primária em uma tabela e não podemos deixar essa coluna em branco quando estamos inserindo os valores na tabela.
Chave exclusiva - podemos colocar mais de uma chave exclusiva em uma tabela e podemos deixar essa coluna em branco quando inserirmos os valores na tabela. A coluna recebe valores únicos (não iguais) quando aplicamos a chave primária e única.
A tabela possui apenas uma chave primária, mas as chaves exclusivas são mais de uma.
VIKASH
6
A chave primária é usada para trabalhar com tabelas diferentes. Essa é a base dos bancos de dados relacionais. Se você possui um banco de dados de livros, é melhor criar 2 tabelas - 1) livros e 2) autores com a chave primária INT "id". Então você usa a identificação nos livros em vez do nome dos autores.
A chave exclusiva é usada se você não quiser ter entradas repetidas. Por exemplo, você pode ter um título na tabela de livros e deseja garantir que haja apenas uma entrada para cada título.
Respostas:
KEY
eINDEX
são sinônimos no MySQL. Eles significam a mesma coisa. Nos bancos de dados, você usaria índices para melhorar a velocidade da recuperação de dados. Um índice é tipicamente criado em colunas utilizadas emJOIN
,WHERE
eORDER BY
cláusulas.Imagine que você tem uma tabela chamada
users
e deseja procurar todos os usuários com o sobrenome 'Smith'. Sem um índice, o banco de dados precisaria passar por todos os registros da tabela: isso é lento, porque quanto mais registros você tiver no banco de dados, mais trabalho será necessário para encontrar o resultado. Por outro lado, um índice ajudará o banco de dados a pular rapidamente para as páginas relevantes em que os registros 'Smith' são mantidos. É muito parecido com o modo como nós, humanos, percorremos uma lista telefônica para encontrar alguém com o sobrenome: não começamos a pesquisar a lista de capa a capa, desde que inseramos as informações em alguma ordem que pudermos. use para pular rapidamente para as páginas 'S'.Chaves primárias e chaves únicas são semelhantes. Uma chave primária é uma coluna ou uma combinação de colunas que pode identificar exclusivamente uma linha. É um caso especial de chave exclusiva . Uma tabela pode ter no máximo uma chave primária, mas mais de uma chave exclusiva. Quando você especifica uma chave exclusiva em uma coluna, nenhuma duas linhas distintas em uma tabela podem ter o mesmo valor.
Observe também que as colunas definidas como chaves primárias ou chaves únicas são indexadas automaticamente no MySQL.
fonte
passengers
com os seguintes campos :,(id, first_name, last_name, age, passport_number)
normalmente você configuraria aid
coluna para ser a chave primária. Uma chave primária é automaticamente uma chave exclusiva. A principal diferença é que você pode ter apenas uma chave primária na tabela e que a coluna não pode conterNULL
valores. Não é necessário configurar aid
colunaUNIQUE
porque, ao defini-la como chave primária, é automaticamente garantida a sua exclusividade ... Então você também pode configurarpassport_number
paraUNIQUE
que não haja mais de um passageiro ...NULL
nessa coluna, sem problemas.KEY e INDEX são sinônimos.
Você deve adicionar um índice quando as medições de desempenho e EXPLAIN mostrarem que a consulta é ineficiente devido a um índice ausente. A adição de um índice pode melhorar o desempenho das consultas (mas pode diminuir as modificações na tabela).
Você deve usar UNIQUE quando quiser restringir os valores nessa coluna (ou colunas) para serem únicos, para que tentativas de inserir valores duplicados resultem em erro.
Uma CHAVE PRIMÁRIA é uma restrição exclusiva e também implica que a coluna NÃO é NULA. É usado para dar uma identidade a cada linha. Isso pode ser útil para ingressar em outra tabela por meio de uma restrição de chave estrangeira. Embora não seja necessário que uma tabela tenha uma CHAVE PRIMÁRIA, geralmente é uma boa idéia.
fonte
A chave primária não permite
NULL
valores, mas a chave exclusiva permiteNULL
valores.Podemos declarar apenas uma chave primária em uma tabela, mas uma tabela pode ter várias chaves exclusivas (atribuição de coluna).
fonte
PRIMARY KEY
ANDUNIQUE KEY
são semelhantes, exceto que possuem funções diferentes. A chave primária torna a linha da tabela exclusiva (ou seja, não pode haver 2 linhas com a mesma chave). Você pode ter apenas 1 chave primária em uma tabela de banco de dados.A chave exclusiva torna a coluna da tabela em uma linha da tabela exclusiva (ou seja, nenhuma linha da tabela 2 pode ter o mesmo valor exato). Você pode ter mais de uma coluna da tabela de chaves exclusiva (ao contrário da chave primária, o que significa que apenas uma coluna da tabela é exclusiva).
INDEX
também cria exclusividade. O MySQL (exemplo) criará uma tabela de indexação para a coluna que está indexada. Dessa forma, é mais fácil recuperar o valor da linha da tabela quando a consulta é consultada nessa coluna da tabela indexada. A desvantagem é que, se você faz muitas atualizações / exclusões / criações, o MySQL precisa gerenciar as tabelas de indexação (e isso pode ser um gargalo de desempenho).Espero que isto ajude.
fonte
UNIQUE KEY
pode ser,NULL
masPRIMARY KEY
não pode serNULL
.Chaves exclusivas: as colunas nas quais não há duas linhas semelhantes
Chave Primária: Coleção do número mínimo de colunas que pode identificar exclusivamente todas as linhas de uma tabela (ou seja, não há duas linhas iguais em todas as colunas que constituem a chave primária). Pode haver mais de uma chave primária em uma tabela. Se existir uma chave exclusiva, será a chave primária (não "a" chave primária) na tabela. Se não existir uma chave exclusiva, mais de um valor de coluna será necessário para identificar uma linha como (nome, sobrenome, nome, nome do pai, nome da mãe) em algumas tabelas podem constituir chave primária.
Índice: usado para otimizar as consultas. Se você estiver pesquisando ou classificando os resultados com base em alguma coluna várias vezes (por exemplo, a maioria das pessoas pesquisará os alunos pelo nome e não pelo número de rolo), será possível otimizar se os valores da coluna estiverem todos " indexado "por exemplo, com um algoritmo de árvore binária.
fonte
Chave primária - podemos colocar apenas uma chave primária em uma tabela e não podemos deixar essa coluna em branco quando estamos inserindo os valores na tabela.
Chave exclusiva - podemos colocar mais de uma chave exclusiva em uma tabela e podemos deixar essa coluna em branco quando inserirmos os valores na tabela. A coluna recebe valores únicos (não iguais) quando aplicamos a chave primária e única.
fonte
A chave primária é usada para trabalhar com tabelas diferentes. Essa é a base dos bancos de dados relacionais. Se você possui um banco de dados de livros, é melhor criar 2 tabelas - 1) livros e 2) autores com a chave primária INT "id". Então você usa a identificação nos livros em vez do nome dos autores.
A chave exclusiva é usada se você não quiser ter entradas repetidas. Por exemplo, você pode ter um título na tabela de livros e deseja garantir que haja apenas uma entrada para cada título.
fonte
Chave única :
Chave primária
fonte