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 nomeTabelaVALUES (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".