Resumo : neste tutorial, você aprenderá como usar a restrição de chave primária do MySQL para criar a chave primária para uma tabela.
Introdução à chave primária do MySQL
No MySQL, uma chave primária é uma coluna ou conjunto de colunas que identifica exclusivamente cada linha da tabela.
Uma coluna de chave primária deve conter valores exclusivos. Se a chave primária consistir em diversas colunas, a combinação de valores nessas colunas deverá ser exclusiva. Além disso, uma coluna de chave primária não pode conter NULL.
Uma tabela pode ter zero ou uma chave primária, mas não mais que uma.
Definindo uma chave primária de coluna única
Normalmente, você define uma chave primária para uma tabela ao criá-la . Aqui está a sintaxe para definir a chave primária que consiste em uma coluna:
CREATE TABLE table_name(
column1 datatype PRIMARY KEY,
column2 datatype,
...
);
Nesta sintaxe, definimos a PRIMARY KEY
restrição como uma restrição de coluna .
Além disso, você pode colocar PRIMARY KEY
no final da lista de colunas:
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
...,
PRIMARY KEY(column1)
);
Nesta sintaxe, definimos a PRIMARY KEY
restrição como uma restrição de tabela .
Definindo uma chave primária com várias colunas
Se a chave primária consistir em duas ou mais colunas, você precisará usar uma restrição de tabela para definir a chave primária:
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
...,
PRIMARY KEY(column1, column2)
);
Nesta sintaxe, você lista as colunas da chave primária entre parênteses, separadas por vírgulas, seguidas pelas PRIMARY KEY
palavras-chave.
Adicionando uma chave primária a uma tabela existente
Se uma tabela existente não tiver uma chave primária, você poderá adicionar uma chave primária à tabela usando a ALTER TABLE ... ADD PRIMARY KEY
instrução:
ALTER TABLE table_name
ADD PRIMARY KEY(column1, column2, ...);
Removendo uma chave primária
Na prática, você raramente removerá uma chave primária. No entanto, se quiser fazer isso, você pode usar a ALTER TABLE ... DROP PRIMARY KEY
declaração:
ALTER TABLE table_name
DROP PRIMARY KEY;
Exemplos de CHAVE PRIMÁRIA MySQL
Exploraremos alguns exemplos de definição de chaves primárias.
1) Definindo um exemplo de chave primária de coluna única
O exemplo a seguir cria uma tabela chamada products
, que tem a id
coluna como chave primária:
CREATE TABLE products(
id INT PRIMARY KEY,
name VARCHAR(255) NOT NULL
);
Linguagem de código: PHP ( php )
Ao inserir dados na products
tabela, você precisa garantir a exclusividade dos valores na id
coluna. Por exemplo:
INSERT INTO products (id, name)
VALUES
(1, 'Laptop'),
(2, 'Smartphone'),
(3, 'Wireless Headphones');
Linguagem de código: JavaScript ( javascript )
Se você tentar inserir um valor duplicado na coluna de chave primária, receberá um erro. Por exemplo:
INSERT INTO products (id, name)
VALUES
(1, 'Bluetooth Speaker');
Linguagem de código: JavaScript ( javascript )
Erro:
ERROR 1062 (23000): Duplicate entry '1' for key 'products.PRIMARY'
Linguagem de código: JavaScript ( javascript )
A saída indica que o MySQL encontrou uma entrada duplicada 1 para a chave primária da products
tabela.
Acompanhar manualmente os valores da chave primária pode ser um desafio. Para simplificar este processo, o MySQL fornece o atributo AUTO_INCREMENT , que atribui automaticamente um valor único à chave primária cada vez que você insere um novo registro.
2) Definindo uma chave primária de coluna única com exemplo de atributo AUTO_INCREMENT
As instruções a seguir recriam a products
tabela com a chave primária que usa o AUTO_INCREMENT
atributo:
DROP TABLE products;
CREATE TABLE products(
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL
);
Linguagem de código: PHP ( php )
Agora, você pode inserir novas linhas na products
tabela sem precisar fornecer os valores da coluna de chave primária. Por exemplo:
INSERT INTO products (name)
VALUES
('Laptop'),
('Smartphone'),
('Wireless Headphones');
Linguagem de código: JavaScript ( javascript )
O MySQL gera automaticamente valores inteiros sequenciais para a id
coluna quando uma nova linha é inserida.
Aqui está o conteúdo da products
tabela:
SELECT * FROM products;
Saída:
+----+---------------------+
| id | name |
+----+---------------------+
| 1 | Laptop |
| 2 | Smartphone |
| 3 | Wireless Headphones |
+----+---------------------+
3 rows in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
3) Definindo um exemplo de chave primária com várias colunas
Criaremos uma nova tabela chamada customers
:
CREATE TABLE customers(
id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL
);
Linguagem de código: PHP ( php )
Suponha que cada cliente tenha alguns produtos favoritos e cada produto seja preferido por alguns clientes.
Para modelar esse relacionamento, você precisa criar uma tabela chamada favorites
:
CREATE TABLE faviorites(
customer_id INT,
product_id INT,
favorite_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(customer_id, product_id)
);
Linguagem de código: PHP ( php )
A favorites
tabela possui um primário que consiste em duas colunas customer_id
e product_id
.
Observe que no tutorial de chave estrangeira você aprenderá como definir uma chave estrangeira para a customer_id
coluna que faz referência à id
coluna da customers
tabela e uma chave estrangeira para a product_id
coluna que faz referência à id
coluna da products
tabela.
4) Exemplo de adição de uma chave primária a uma tabela
A instrução a seguir cria uma tabela chamada tags
sem chave primária:
CREATE TABLE tags(
id INT,
name VARCHAR(25) NOT NULL
);
Linguagem de código: PHP ( php )
Para tornar a id
coluna a chave primária, você usa a ALTER TABLE ... ADD PRIMARY KEY
instrução:
ALTER TABLE tags
ADD PRIMARY KEY(id);
5) Removendo a chave primária de uma tabela
A instrução a seguir remove a chave primária da tags
tabela:
ALTER TABLE tags
DROP PRIMARY KEY;
Resumo
- Uma chave primária é um identificador exclusivo para uma linha de uma tabela.
- Use a
PRIMARY KEY
restrição para definir uma chave primária para uma tabela.