Comandos SQL
Comandos SQL
Comandos SQL
UPDATE e DELETE
Fui chamada por um amigo meu que trabalha em uma biblioteca para criar um
sistema para que os funcionários tivessem controle do estoque de livros, quais
eram emprestados, quantos haviam disponíveis, quando um novo livro fosse
acrescentado ao inventário, entre outras coisas.
Sugeri de fazer um sistema no banco de dados, pois assim eles podiam fazer
isso facilmente e teriam um sistema somente deles, no qual pudessem ter esse
controle.
Título
Autor
ISBN
Edição
Editora
Ano publicação
Páginas
Gênero literário
Idioma
Quantidade de livros desta edição
Quantidade de livros desta edição disponível na biblioteca
A partir daí, comecei a escrever o código para criar CREATE a tabela TABLE e o
nome da tabela, que será livros. Ficando:
CREATE TABLE livros
Para começar, na coluna título e autor, como serão textos, e muitas vezes
podem ser grandes, coloquei a categoria text que não precisa estipular um
limite de caracteres. Aí ficou:
CREATE TABLE livros (
titulo text,
autor text,
Porém, nas colunas ISBN, edição e editora, que são informações que podem
conter algum número ou caractere especial, coloquei na categoria varchar, e
como não podemos deixar uma possibilidade enorme, coloquei um limite de 50
caracteres cada um. Ficando:
editora varchar(50),
Então, criei a coluna ano para indicar a data em que ano o livro foi publicado,
sendo a categoria year, que aceita somente o ano e, assim não precisamos
incluir a data inteira:
anoPublicacao year,
idioma varchar(50),
titulo text,
autor text,
editora varchar(50),
anoPublicacao year,
qtdePaginas int,
idioma varchar(50),
Como só podem ser números inteiros também, já que não podemos ter meio
livro, coloquei na categoria int:
quantidade int,
disponivel int );
titulo text,
autor text,
editora varchar(50),
anoPublicacao year,
qtdePaginas int,
idioma varchar(50),
quantidade INT,
disponivel int);
Antes de executar, pensei em criar uma coluna que na primeira linha ela
tivesse o valor “1” e fosse aumentando os valores automaticamente para que,
assim, esse número indicasse quantos livros a biblioteca tinha ao todo.
Pensando em como fazer isso, lembrei que na Apostila de SQL da Alura era
criada uma coluna "id" que seria auto-incrementada com o comando
auto_increment e ela seria uma chave primária ou PRIMARY KEY, que é uma
coluna que possui um valor único em cada linha, o que as identifica.
CREATE TABLE livros (
titulo text,
autor text,
isbn varchar (50),
editora varchar(50),
anoPublicacao year,
qtdePaginas int,
idioma varchar(50),
quantidade int,
disponivel int );
Agora com a tabela criada temos que adicionar dados nela! E como podemos
fazer isso?
Error Code: 1136. Column count doesn’t match value count at row 1
Quando procurei para saber mais, descobri que este erro acontece quando
colocamos valores a colunas que não existem. Porém, todas essas colunas
existem na minha tabela. Qual será o problema?
Analisando o comando, notei que não havia inserido nenhum valor na coluna
idioma, mesmo tendo informado no comando que ela receberia um valor.
Tentando novamente:
'portugues', 2, 2);
Porém, como eu podia fazer para mostrar a tabela na tela? Pensei que eu
deveria selecionar a tabela inteira ou uma parte dela para mostrar, então, o
comando é SELECT:
SELECT ALL FROM livros;
Porém, percebi que não tinha indicado qual linha deveria ser deletada e
utilizando o comando assim eu poderia deletar toda a tabela, ou seja, todos
os dados que eu havia inserido nela.
Então, pensei em especificar qual linha era com ao menos um valor de uma
das colunas. Na minha tabela, existe alguma coluna que possui um valor único
para cada linha?
Lembra que quando criamos a tabela criamos a coluna id que teria um número
que se auto-incrementaria e era a chave primária da tabela?
Que no caso, o id é o 2.
Para mudar dados de uma coluna de uma linha de uma tabela em SQL utiliza o
comando UPDATE. Porém, assim como DELETE, deve ser especificado para
que não sejam alteradas todas as linhas.
Fui escrevendo o comando para atualizar a linha da coluna, utilizando como
parâmetro o nome do livro.
UPDATE livros SET disponivel=1 WHERE titulo='O Diário de Anne
Frank';
Porém, temos diversas edições deste mesmo livro e, utilizando este comando,
iríamos alterar a quantidade de livros disponíveis para todas as edições. Então,
precisamos de uma informação da tabela que seja única em cada linha. Qual
seria essa?
E deu certo! Apareceram somente essas colunas das linhas que são do gênero
poesia.
Agora que sabemos como criar uma tabela, inserir, deletar, mudar e selecionar
dados dela,q ual tabela você pode criar com o banco de dados? Acesse os
nossos cursos de SQL e descubra o que mais você pode fazer com banco de
dados!