12. Inserir valores em uma tabela
Última atualização em 04 out. 2023
INSERT INTO, traduzido como INSERIR DENTRO DE, é um dos comandos básicos em SQL, utilizado para criar novos registros na tabela, ou seja, gravar novos valores/tuplas/linhas.
Essa instrução pode ser definida de duas formas. A primeira forma é informando todas as colunas e seus respectivos valores em seguida.
INSERT INTO nomeTabela (coluna1, coluna2, coluna3, ...)
VALUES (valor1, valor2, valor3, ...);
Outra forma de realizar a mesma ação ocorre assim, mas somente se você inserir valores em todas as colunas:
INSERT INTO nomeTabela
VALUES (valor1, valor2, valor3, ...);
Exemplo:
CREATE TABLE Cliente(
cliente_id INT(4) NOT NULL AUTO_INCREMENT,
cliente_nome VARCHAR(100) NOT NULL,
cliente_email VARCHAR(100) NOT NULL,
PRIMARY KEY(cliente_id),
UNIQUE(cliente_email)
);
INSERT INTO Cliente (cliente_nome, cliente_email)
VALUES ("Uianes", "uianes.biondo@iffarroupilha.edu.br");
Cuidado! Como a chave primária (cliente_id) recebeu a função AUTO_INCREMENT repare que na lista de colunas de INSERT INTO não adicionamos a PK. Mas você pode, desde que não insira um valor duplicado (ou já registrado).
Caso você executasse o seguinte comando:
INSERT INTO Cliente (cliente_email)
VALUES ("uianes.biondo@iffarroupilha.edu.br");
Apareceria uma mensagem de erro, pois "cliente_nome" foi definido como NOT NULL, e ao deixar uma coluna de fora da lista do INSERT INTO, o valor padrão a ser gravado é NULL. Portanto, atributos que receberam "NOT NULL" não podem ser deixados de fora.
Caso a tabela fosse a seguinte:
CREATE TABLE Cliente(
cliente_id INT(4) NOT NULL AUTO_INCREMENT,
cliente_nome VARCHAR(100),
cliente_email VARCHAR(100) NOT NULL,
PRIMARY KEY(cliente_id),
UNIQUE(cliente_email)
);
E o comando a ser executado posteriormente fosse:
INSERT INTO Cliente (cliente_email)
VALUES ("uianes.biondo@iffarroupilha.edu.br");
Neste caso, sim, tudo funcionaria. E os dados cadastrados seriam:
cliente_id -> 1
cliente_nome -> NULL
cliente_email -> "uianes.biondo@iffarroupilha.edu.br"
Outra observação!
Caso o comando acima fosse executado novamente:
INSERT INTO Cliente (cliente_email)
VALUES ("uianes.biondo@iffarroupilha.edu.br");
Um erro apareceria, informando que já existe esse valor cadastrado na tabela. E o campo "cliente_email" é UNIQUE, ou seja, não é possível cadastrar um valor duas ou mais vezes.
E como fazer para cadastrar vários usuários de uma só vez? Basta utilizar a seguinte sintaxe:
INSERT INTO nomeTabela (atributo1, atributo2, ...)
VALUES (cadastro1Valor1, cadastro1Valor2, ...),
(cadastro2Valor1, cadastro2Valor2, ...),
(cadastro3Valor1, cadastro3Valor2, ...);
Separamos os diferentes cadastros através de ",". Porém, o último cadastrado não pode receber ",", e sim, ";".
Sobre a forma de representar os valores, utilizamos o seguinte padrão:
Valores textuais serão representados dentro de aspas. Exemplo: "Nome".
Valores numéricos inteiros serão representados sem aspas. Exemplo: 10.
Valores numéricos decimais serão representados sem aspas, utilizando ".". Exemplo: 9.9
Valores de data e hora serão representados por aspas, em seu respectivo padrão.
Exemplo de data: "2023-07-25".
Exemplo de hora: "01:22:30".