0% acharam este documento útil (0 voto)
3 visualizações18 páginas

Apostila SQL

MySQL é um sistema de gerenciamento de banco de dados relacional open source, popular por sua flexibilidade e velocidade, utilizando a linguagem SQL para manipulação de dados. O documento aborda a criação e utilização de bancos de dados e tabelas, além de comandos básicos para interação com o MySQL, como SELECT, CREATE e INSERT. Também são discutidos tipos de dados e a estrutura necessária para definir tabelas adequadas às necessidades dos usuários.

Enviado por

Ludmila
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
3 visualizações18 páginas

Apostila SQL

MySQL é um sistema de gerenciamento de banco de dados relacional open source, popular por sua flexibilidade e velocidade, utilizando a linguagem SQL para manipulação de dados. O documento aborda a criação e utilização de bancos de dados e tabelas, além de comandos básicos para interação com o MySQL, como SELECT, CREATE e INSERT. Também são discutidos tipos de dados e a estrutura necessária para definir tabelas adequadas às necessidades dos usuários.

Enviado por

Ludmila
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

VISÃO GERAL DO SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS MYSQL

MySQL, o mais popular sistema de gerenciamento de banco de dados SQL Open Source,
é desenvolvido, distribuído e tem suporte da MySQL AB.

O MySQL é um sistema de gerenciamento de bancos de dados. Um banco de dados é uma


coleção de dados estruturados. Ele pode ser qualquer coisa desde uma simples lista de compras
a uma galeria de imagens ou a grande quantidade de informação da sua rede coorporativa. Para
adicionar, acessar, e processar dados armazenados em um banco de dados de um computador,
você necessita de um sistema de gerenciamento de bancos de dados. Como os computadores
são muito bons em lidar com grandes quantidades de dados, o gerenciamento de bancos de
dados funciona como a engrenagem central na computação, seja como utilitários independentes
ou como partes de outras aplicações.

O MySQL é um sistema de gerenciamento de bancos de dados relacional. Um banco de


dados relacional armazena dados em tabelas separadas em vez de colocar todos os dados um só
local. Isso proporciona velocidade e flexibilidade. A parte SQL do “MySQL” atenda pela
“Structured Query Language - Linguagem Estrutural de Consultas”. SQL é linguagem padrão mais
comum
usada para acessar banco de dados e é definida pelo Padrão ANSI/ISO SQL. (O padrão SQL vem
evoluindo desde 1986 e existem diversas versões).

O MySQL é um software Open Source. Open Source significa que é possível para qualquer um
possa usar e modificar o programa. Qualquer pessoa pode fazer download do MySQL pela
Internet e usá-lo sem pagar nada. Se você quiser, você pode estudar o código fonte e alterá-lo
para adequá-lo às suas necessidades. O MySQL usa a GPL (GNU General Public License -
Licença Pública Geral GNU) para definir o que você pode e não pode fazer com o software em
diferentes situações.

Ambiente MYSQL

Vamos inicializar o ambiente MYSQL Client. É um prompt como o DOS para execução de
comandos MYSQL. Quando executado o ambiente MYSQL Client, ele pede uma senha que foi
configurada pelo administrador na instalação do programa, para execução do MYSQL. A princípio
vamos ser usuários servidores depois vamos criar outros usuários e colocar permissões para eles.
Nossa senha é: [Link]
Para verificar se estamos conectados no ambiente o MYSQL verifique o prompt se está
mysql>

Aqui está um comando simples que solicita ao servidor seu número de versão e a data atual.
Digite-o como visto abaixo seguindo o prompt mysql> e digite a tecla ENTER:
mysql> SELECT VERSION(), CURRENT_DATE;

Esta consulta ilustra alguns detalhes sobre o mysql:


• Um comando normalmente consiste de uma instrução SQL seguida por um ponto e vírgula.
(Existem algumas exceções onde um ponto e vírgula podem ser omitidos. QUIT ,por
exemplo, e um deles.)
• Quando você emite um comando, o mysql o envia para o servidor para execução e mostra
os resultados, depois imprime outro prompt mysql> para indicar que está pronto para outro
comando.
• O mysql mostra a saída da consulta em forma tabular (linhas e colunas). A primeira linha
contém rótulos para as colunas. As linhas seguintes são o resultado da consulta.
Normalmente, rótulos de colunas são os nomes das colunas que você busca das tabelas
do banco de dados.

1
• O mysql mostra quantas linhas foram retornadas e quanto tempo a consulta levou para
executar, o que lhe dá uma vaga idéia da performance do servidor. Estes valores são
impreciso porque eles representam tempo de relógio (Não tempo de CPU ou de máquina),
e porque eles são afetados pelos fatores como a carga do servidor e latência de rede.

Aqui está outra consulta. Ela demonstra que você pode usar o mysql como uma calculadora
simples:
mysql> SELECT (4+1)*5;

As consultas mostradas até agora têm sido instruções relativamente pequenas, de uma linha.
Você pode também entrar com múltiplas instruções em uma única linha. Basta finalizar cada uma
com um ponto e vírgula:
mysql> SELECT VERSION(); SELECT NOW();

Um comando não necessita estar todo em uma única linha, então comandos extensos que
necessitam de várias linhas não são um problema. O mysql determina onde sua instrução termina
através do ponto e vírgula “terminador”, e não pelo final da linha de entrada. (Em outras palavras,
o mySQL aceita entradas de livre formato: Ele coleta linhas de entrada mas não as executa até
chegar o ponto e vírgula.)
Aqui está uma instrução simples usando múltiplas linhas:
mysql> SELECT
-> USER()
-> ,
-> CURRENT_DATE;
+--------------------+--------------+

Neste exemplo, note como o prompt altera de mysql> para -> depois de você entrar com a
primeira linha de uma consulta com múltiplas linhas. Isto é, como o mysql indica que ainda não
achou uma instrução completa e está esperando pelo resto. O prompt é seu amigo, porque ele
fornece um retorno valioso. Se você usa este retorno, você sempre estará ciente do que o mysql
está esperando.
Se você decidir que não deseja executar um comando que está no meio do processo de entrada,
cancele-o digitando \c:
mysql> SELECT
-> USER()
-> \c
mysql>

Note o prompt aqui também. Ele troca para o mysql> depois de você digitar \c, fornecendo
retorno para indicar que o mysql está pronto para um novo comando.

A seguinte tabela mostra cada dos prompts que você pode ver e resume o que ele significa sobre
o estado em que o mysql se encontra:
Prompt Significado
mysql> Pronto para novo comando.
-> Esperando pela próxima linha de comando com múltiplas linhas.
'> Esperando pela próxima linha, coletando uma string que comece
com uma aspas simples (‘'’).
"> Esperando pela próxima linha, coletando uma string que comece
com aspas duplas (‘"’).
`> Esperando pela próxima linha, coletando uma string que comece
com crase (‘`’).

2
É muito comum instruções multi-linhas ocorrerem por acidente quando você pretende publicar um
comando em uma única linha, mas esquece o ponto e vírgula terminador. Neste caso,o mysql
espera por mais entrada:
mysql> SELECT USER()
->
Se isto ocorrer com você (acha que entrou uma instrução, mas a única resposta é um prompt ->),
o mais provável é que o mysql está esperando pelo ponto e vírgula. Se você não perceber o que o
prompt está lhe dizendo, você pode parar por um tempo antes de entender o que precisa fazer.
Entre com um ponto e vírgula para completar a instrução, e o mysql irá executá-la:
mysql> SELECT USER()
-> ;
+--------

Criação e Utilização de um Banco de Dados

Suponha que você tenha diversos animais de estimação em sua casa (animais_estimacao)
e você
gostaria de ter o registro de vários tipos de informações sobre eles. Você pode fazer isto criando
tabelas para armazenar seus dados e carregá-los com a informação desejada. Depois você pode
responder diferentes tipos de questões sobre seus animais recuperando dados das tabelas.

O banco de dados animais_estimacao será simples, mas não é difícil pensar em situações na vida real em
que um tipo similar de banco de dados pode ser usado. Por exemplo, um banco de dados deste tipo pode
ser usado por um fazendeiro para gerenciar seu estoque de animais, ou por um veterinário para gerenciar
registros de seus pacientes.
Utilizamos a instrução SHOW para saber quais bancos de dados existem atualmente no servidor.

mysql> SHOW DATABASES;

A lista de bancos de dados provavelmente será diferente na sua máquina, mas os bancos de
dados mysql e test provavelmente estarão entre eles. O banco de dados mysql é necessário
porque ele descreve privilégios de acessos de usuários. O banco de dados test é geralmente
fornecido como um espaço para que os usuários possam fazer testes.
Se o banco de dados test existir, tente acessá-lo:
mysql> USE test
Database changed

CRIADO E SELECIONANDO UM BANCO DE DADOS


Vamos criar o banco de dados animais_estimacao mencionado anteriormente.
mysql> CREATE DATABASE animais_estimacao;

Podemos verificar se o banco de dados foi criado através do comando anterior SHOW.
Agora vamos utilizar o nosso banco de dados criado.

CRIANDO UMA TABELA


Criar o banco de dados é a parte fácil, mas neste ponto ele está vazio, como o SHOW TABLES
mostrará:
mysql> SHOW TABLES;
Empty set (0.00 sec)

A parte mais difícil é decidir qual a estrutura que seu banco de dados deve ter: quais tabelas você
precisará e que colunas estarão em cada uma delas.
Você irá precisar de uma tabela para guardar um registro para cada um de seus animais de
estimação. Esta tabela pode ser chamada pet, e ela deve conter, pelo menos, o nome de cada
animal. Como o nome por si só não é muito interessante, a tabela deverá conter outras
informações. Por exemplo, se mais de uma pessoa na sua família também tem animais, você

3
pode desejar listar cada dono. Você pode também desejar gravar algumas informações descritivas
básicas como espécie e sexo.
Idade? Pode ser do interesse, mas não é uma boa coisa para se armazenar em um banco de
dados. A idade muda à medida em que o tempo passa, o que significa que você sempre terá de
atualizar seus registros. Em vez disso, é melhor armazenar um valor fixo como a data de
nascimento. Então, sempre que você precisar da idade, basta você calculá-la como a diferença
entre a data atual e a data de aniversário.
Informações identificadas até o momento na tabela pet são suficientes por agora: nome,
dono, espécie, sexo, data de nascimento(data_nasc) e data da morte(data_morte).
A criação de tabelas em SQL se faz com a utilização do comando CREATE TABLE seguido do
nome da tabela, bem como de outros parâmetros para a determinação de sua estrutura. A sintaxe
padrão pode ser:
CREATE TABLE <tabela>
(<campo> <tipo> [NULL/NOT NULL] [DEFAULT <valor>]
[AUTO_INCREMENT] [PRIMARY KEY]);

Sendo tabela a definição do nome da tabela a ser criada; campo o nome do campo a ser definido;
tipo um dos tipos de padrão; NULL/NOT NULL é a definição do campo em aceitar ou não valores
nulos; DEFAULT <valor> permite determinar um valor padrão para o campo;
AUTO_INCREMENT determina se o campo será preenchido automaticamente quando nele forem
entrados valores do tipo zero ou NULL, sendo válido apenas para campos que aceitem valores
inteiros; PRIMARY KEY determina que o campos é a chave primária da tabela.

Utilize a senteça CREATE TABLE para especificar o layout de sua tabela:

mysql> CREATE TABLE pet (nome VARCHAR(20), dono VARCHAR(20),


-> especie VARCHAR(20), sexo CHAR(1), data_nasc DATE, data_morte DATE);

VARCHAR é uma boa escolha para os campos nome, dono, e especie porque os valores da
coluna são de tamanho variável. Os tamanhos destas colunas não precisam necessariamente
de ser os mesmos e não precisam ser 20. Você pode escolher qualquer tamanho de 1 a 255,
o que você achar melhor.
O sexo dos animais podem ser representados em várias formas, por exemplo, "m" e "f" ou
mesmo "macho" e "fêmea". É mais simples usar os caracteres "m" e "f". O uso do tipo de dados
DATE para as colunas data_nasc e data_morte são obviamente a melhor escolha.
Agora que você criou uma tabela, a instrução SHOW TABLES deve produzir alguma saída:

mysql> SHOW TABLES;

Antes de continuarmos a criar a tabela, vamos verificar alguns tipos de dados que os campos
podem possuir.
Definição de dados
A linguagem de consulta estruturada SQL trabalha com vários tipos de dados, categorizados em
três grupos distintos (tipo numérico, tipo temporal e tipo literal). A seguir, são apresentados
apenas os tipos de dados padrão.
O tipo numérico pode ser utilizado no tratamento de valores numéricos inteiros ou reais. Estão
disponíveis os seguintes tipos:
• SMALLINT [(tamanho)] – utiliza-se este tipo de dado quando houver a necessidade de
fazer uso de valores inteiros curtos entre a faixa de valores de -32.768 até 32.767. O
parâmetro tamanho é opcional e permite estabelecer o tamanho máximo do valor a ser
exibido, podendo ser um valor máximo 255;
• INTEGER [(tamanho)] – utiliza-se este tipo de dado quando houver a necessidade de
fazer uso de valores inteiros longos entre a faixa de valores de -[Link] até
[Link]. O parâmetro tamanho é opcional e permite estabelecer o tamanho máximo
do valor a ser exibido, podendo ser um valor máximo 255.

4
• FLOAT – utiliza-se este tipo de dado quando houver a necessidade de fazer uso de
valores com ponto flutuante com sete dígitos de precisão decimais. Este tipo permite
trabalhar com valores na faixa de 3,4 * 10 -38 até 3,4 * 1038.
• DECIMAL [(tamanho [, decimal])] – utiliza-se este tipo de dado quando houver a
necessidade de fazer uso de valores com ponto flutuante. O parâmetro tamanho é opcional
e permite estabelecer o tamanho máximo do valor a ser exibido, podendo se um valor
máximo 255. Se omitido, o tamanho assumido é 10. O parâmetro opcional decimal,
permite estabelecer o tamanho máximo de casas decimais a ser exibido, podendo ser um
valor máximo de 30;
• NUMERIC [(tamanho[, decimal])] – utiliza-se este tipo de dado quando houver a
necessidade de fazer uso de valor com ponto flutuante, sendo semelhante ao tipo
DECIMAL;
• DOUBLE PRECISION [(tamanho, decimal)] – utiliza-se este tipo de dado quando houver
a necessidade de fazer uso de valores com ponto de dupla precisão. O parâmetro
tamanho deve estar entre 25 e 53 para estabelecer o tamanho máximo. O parâmetro
opcional decimal permite estabelecer o tamanho máximo de casas decimais a ser exibido,
podendo ser um valor máximo de 30.

O tipo temporal pode ser utilizado no tratamento de valores relacionados à data e horário. Estão
disponíveis os seguintes tipos:
• DATE – utiliza-se este tipo de dado quando houver a necessidade de fazer uso de um data
de calendário no formato AAAA-MM-DD (formato ANSI). O intervalo aceito depende da
ferramenta de gerenciamento de banco de dados em uso. (No MYSQL de 01/01/1000 até
31/12/9999)
• TIME – utiliza-se este tipo de dado quando houver a necessidade de fazer uso de uma
informação relacionada a um determinado horário.

O tipo literal pode ser a recepção de valores baseados em cadeias de caracteres (strings –
dados alfanuméricos delimitados por aspas ou apóstrofos). Estão disponíveis os seguintes tipos:
• CHAR (tamanho) – utiliza-se este tipo de dado quando houver a necessidade de fazer uso
de seqüências de caracteres de tamanho fixo que estejam limitadas até 255 caracteres de
comprimento. O parâmetro tamanho determina o valor máximo em caracteres que pode
conter a seqüência;
• VARCHAR (tamanho) – utiliza-se este tipo de dado quando houver a necessidade de
fazer uso de seqüências de caracteres de tamanho variável que estejam limitadas até 255
caracteres de comprimento. A diferença entre este tipo e o CHAR é que neste caso, os
espaços em branco excedentes do lado direito da seqüência de caracteres não utilizados
são automaticamente desprezados. O parâmetro tamanho determina o valor máximo em
caracteres que pode conter a seqüência.

Com os tipos de dados apresentados é possível definir uma grande variedade de campos par a
construção de tabelas.

Voltando ao nosso exemplo anterior, depois de criado a tabela pet com os campos, vamos
verificar se a tabela ficou como esperado.
Para verificar se sua tabela foi criada da forma que esperada, utilize a instrução DESCRIBE:

mysql> DESCRIBE pet;

Podemos usar DESCRIBE a qualquer hora, por exemplo, se esquecermos dos nomes das
colunas na sua tabela ou de que tipos elas têm.

Depois de criar a tabela, precisamos povoá-la. As instruções LOAD DATA e INSERT são
úteis para isto.

5
Quando desejar adicionar novos registros um a um, a instrução INSERT é usada. Na sua forma
mais simples, você fornece valores para cada coluna, na ordem em que as colunas foram listadas
na instrução CREATE TABLE. Suponha que Diane tenha um novo hamster chamado Puffball.
Você pode adicionar um registro utilizando uma instrução INSERT desta forma:

mysql> INSERT INTO pet


-> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);

Perceba que os valores de string e datas são especificados aqui como strings com aspas.
Com o INSERT você também pode inserir NULL diretamente para representar um valor em
falta.

Para verificar os dados em uma tabela utilizamos o comando


SELECT [Tipo] <campos> FROM <tabela> [condição];
Se estamos verificando nossa tabela Pet, vamos executar o comando:

mysql> SELECT * FROM pet;

+----------+--------+---------+------+------------+------------+
| nome | dono | especie | sexo | data_nasc | data_morte |
+----------+--------+---------+------+------------+------------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Fang | Benny | dog | m | 1990-08-27 | NULL |
| Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29|
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
| Slim | Benny | snake | m | 1996-04-29 | NULL |
| Puffball | Diane | hamster | f | 1999-03-30 | NULL |
+----------+--------+---------+------+------------+------------+

Esta forma do SELECT é útil se você deseja ver sua tabela inteira como agora.
Por exemplo, você pode pensar que a data de nascimento do Bowser não está correta.
Consultando seus papéis originais de pedigree, descobriu que o ano correto do nascimento deve
ser 1989, não 1979.
Existem pelo menos duas formas de corrigir isto:
• usando DELETE
mysql> DELETE FROM pet;
Entretanto, se você fizer isto, você também deve refazer a entrada de todos os dados.
• Corrigir somente o registro errado com uma instrução UPDATE:
O comando UPDATE para atualizar linhas de uma tabela utiliza
UPDATE nome_tabela
SET nome_coluna = valor [, nome_coluna = valor]
[WHERE condiçaõ]

Utilizando para alteração:

mysql> UPDATE pet SET birth = "1989-08-31" WHERE name = "Bowser";

O UPDATE altera apenas o registro em questão e não exige que você recarregue a tabela.
Aproveitando os dados acima, vamos inserir o restante dos dados na nossa tabela.

6
1 - Exercício Cadastro da tabela cadfun .

Quando criamos a tabela cadfun, utilizamos o dentro do comando a restrição primary key no
codfun. Que representa a chave primária de nossa tabela.
Existe alguns tipos de restrição que nossa tabela pode ter:

Chave primária – chave primária é a coluna, ou grupo de colunas, que permite identificar um
único registro na tabela. Para especificar que uma coluna ou grupo de colunas representa a chave
primária de uma tabela, deve-se acrescentar a palavra chave PRIMARY KEY seguida do nome
da(s) colunas(s).

Chave estrangeira – chave estrangeira é o campo que estabelece o relacionamento entre duas
tabelas. Assim, uma coluna, ou grupo de colunas, de uma tabela corresponde à mesma coluna,
ou grupo de colunas, que é a chave primária de outra tabela. Dessa forma, deve-se especificar na
tabela que contém a chave estrangeira quais são essas colunas e à qual tabela está relacionada.
O banco de dados irá verificar se todos os campos que fazer referência à tabela estão
especificados.
Ao determinar esse tipo de relacionamento, fica garantida a integridade das informações. Os
valores presentes na(s) coluna(s) definida(s) como chave estrangeira devem ter um
correspondente na outra tabela, caso contrário o banco de dados deve retornar uma mensagem
de erro.

[NOT] NULL – indica que o conteúdo de uma coluna não poderá ser Nulo. Se cada coluna não
tiver valor atribuído durante uma inclusão, terá seu valor Nulo.

UNIQUE – indica que não pode haver repetição no conteúdo da coluna. Isso é diferente do
conceito de chave primária. A chave primária, além de não permitir repetição, não pode conter
valores nulos. Ao especificarmos que uma coluna deve conter valores únicos, indicamos que
todos os valores não nulos devem ser exclusivos. Devemos acrescentar a cláusula UNIQUE, após
a definição da coluna, ou UNIQUE, seguido dos campos que devam ter esta característica no final
da criação da tabela. Um exemplo que UNIQUE que poderíamos acrescentar numa tabela seria
para o número do CPF como campo de valor único.

Após criarmos a tabela de Cadastro de Funcionários (cadfun), vamos modificar alguns dados
desta tabela.

Modificando a estrutura de uma Tabela


A estrutura de uma tabela é algo que pode ser modificado com o tempo, devido a alguma
necessidade específica. Existe uma grande possibilidade de precisar incluir um determinado
campo, retira-lo ou até mesmo modificar a sua estrutura. Para realizar esta ação é disponibilizado
o comando ALTER TABLE, que possui a seguinte sintaxe:
ALTER TABLE <tabela> <operação>

Em que tabela é a indicação da tabela em que se deseja efetuar a alteração de registros,


operação caracteriza-se por ser um parâmetro que pode receber um dos seguinte valores:
• ADD <campo> <tipo> - Utiliza-se este valor quando da necessidade de inserção de um
novo campo em uma determinada tabela. O parâmetro campo representa o nome do novo
campo e tipo a sua estrutura (INTEGER, DECIMAL, CHAR, VARCHAR, etc).
• MODIFY <campo> <tipo> - Utiliza-se este valor quando da necessidade de modificação
de um campo ou tamanho de um campo em uma determinada tabela. O parâmetro campo
representa o nome do novo campo e tipo a sua estrutura (INTEGER, DECIMAL, CHAR,
VARCHAR, etc).
• DROP <campo> - Utiliza-se este valor quando da necessidade de remover um campo de
uma determinada tabela. O parâmetro campo representa o nome do campo a ser retirado
da tabela.

7
Para demonstrar as opções de alteração da estrutura de uma tabela, vamos inserir na tabela
cadfun o campo data_admissao, conforme o comando seguinte:

mysql> ALTER TABLE cadfun ADD data_admissão DATE;

Após a execução do comando, vamos verificar na tela cadfun o novo campo que foi inserido.
Este campo criado, por default, ele vem null (vazio), pois não inserimos nenhum dado nele.

Você pode ainda definir na ordenação da tabela, onde você quer inserir o seu campo na tabela na
hora de criar este campo, como definido no comando abaixo:

mysql> ALTER TABLE nome_da_tabela ADD COLUMN definição AFTER nome_coluna


/* Se quiser incluir depois de um determinado campo

mysql> ALTER TABLE nome_da_tabela ADD COLUMN definição FIRST nome_coluna


/* Se quiser incluir antes de um determinado campo

Vamos criar um campo sexo, e quero que seja depois do nome. Então o comando utilizado será
mysql> ALTER TABLE cadfun ADD sexo char(1) AFTER nome

ou então poderá ser utilizado o comando:


mysql> ALTER TABLE cadfun ADD sexo char(1) FIRST depto

Além de adicionar campos a outra possibilidade que temos e de modificar os campos de uma
tabela.
Vamos modificar o campo nome da tabela cadfun de Char(40) para Varchar(30).
Para fazer esta modificação utilizamos o comando:

mysql> ALTER TABLE cadfun MODIFY nome VARCHAR(30);

Após o comando, verifique novamente a descrição da tabela e veja a modificação que fizemos.

Além do comando MODIFY, posso estar utilizando o comando CHANGE para modificação da
estrutura ou apenas do nome da coluna da minha tabela.
Vamos supor que queremos na inserção do campo data_admissao, eu queira trocar apenas o
campo para admissao. Então vamos precisar utilizar o comando CHANGE para fazer esta
modificação com escrito abaixo:

mysql> ALTER TABLE cadfun CHANGE data_admissao admissao Date;

Da mesma forma eu posso apenas modificar o tipo de campo com o comando CHANGE da
seguinte forma:

mysql> ALTER TABLE cadfun CHANGE nome nome VARCHAR(30);

Utilizando o comando CHANGE, eu preciso colocar o campo nome duas vezes, para mostrar que
estou modificando apenas o tipo dele e não o seu nome também.
Posso ainda alterar o nome de minha tabela.
Vamos trocar o nome da nossa tabela cadfun para apenas cadastro. Utilizamos o comando
RENAME para fazer esta alteração:

mysql> ALTER TABLE cadfun RENAME cadastro;

Além de adicionar e alterar, ainda podemos remover um campo desnecessário na nossa tabela.
Para isto utilizamos o comando DROP.

8
mysql> ALTER TABLE cadfun (cadastro) DROP funcao;

Devemos ter muito cuidado com o comando DROP, pois se não houver nenhuma restrição ele
remove todos os dados de uma tabela, uma tabela inteira e também um banco de dados.

Utilizando o comando:

mysql> DROP TABLE cadfun; /* remove a tabela inteira

mysql> DROP DATABASE funcionario; /* remove um banco de dados inteiro

Os comandos utilizados CREATE (criação de novas estruturas), ALTER (alteração de estruturas)


e DROP ( remoção de estruturas), são DDL (Data Definition Language) – Linguagem de Denifição
de Dados. Onde fazemos a estruturação de nossas tabelas.

Vamos agora trabalhar mais detalhado com a DML (Data Manipulation Language) – Linguagem de
Manipulação de Dados. Inserção de registros (INSERT), Atualização de registros (UPDATE),
Seleção de registros (SELECT), e Deleção de registros (DELETE).

Alteração de Registros
No processo de manutenção de registros em banco de dados é necessário periodicamente
atualizar dados e informações existentes. Para tanto, é necessário utilizar o comando UPDATE
que possui a seguinte sintaxe:

UPDATE <tabela> SET <campo> = <expressão> [condição]

Em que tabela é a indicação da tabela em que se deseja efetuar a atualização de registros,


campo é a indicação de um campo da tabela, expressão é a indicação do valor do campo a ser
atualizado, condição caracteriza-se por ser um parâmetro opcional que determina a condição de
ação da pesquisa baseada no argumento WHERE.

A seguir, são apresentados alguns exemplos de atualização de registros utilizando comandos da


linguagem de consulta estruturada SQL.
O funcionário de código de registro 7 teve um aumento de salário para 2300.56. Neste caso deve
ser executada a instrução:

mysql> UPDATE cadfun SET salário = 2300.56 where codfun=7;

Todos os funcionários da empresa tiveram um aumento de salário de 10%

mysql> UPDATE cadfun SET salario = salario * 1.10;

A funcionária ANA BASTOS foi transferida do departamento 5 para o departamento 3.

mysql> UPDATE cadfun SET depto =’3’ where= nome = ‘Ana Bastos’;

9
Remoção de Registros
Dentre as várias atividades de manutenção de registro, existe a possibilidade de efetuar a
remoção de registros que não sejam mais desejados. Para isso deve-se utilizar o comando
DELETE que possui a seguinte sintaxe:

mysql> DELETE FROM <tabela> [condição]

Em que tabela é a indicação em que se deseja efetuar a remoção de registros, condição


caracteriza-se por ser um parâmetro opcional que determina a condição de ação da pesquisa
baseada no argumento WHERE.
De todos os comandos existentes em SQL, este é o mais delicado e perigoso, pois se acionado
de forma inadequada, pode ocasionar alguns bons prejuízos. Por exemplo, se for usada a linha de
código:
mysql> DELETE FROM cadfun;

Ocorrerá a remoção de todos os registros da tabela cadfun. Devido a isto, é conveniente sempre
utilizar o parâmetro WHERE nas operações de remoção de registros, a menos que se tenha a
certeza de que se deseja realmente apagar todos os registros.
Exemplo:
Vamos supor que a empresa está passando por uma reformulação; o departamento ‘5’ foi extinto
e seus funcionários foram demitidos. Desta forma, torna-se necessário remover os registros que
atendam a este critério de condição. Utilizamos a seguinte linha de comando:

mysql> DELETE FROM cadfun WHERE depto=’5’;

Inserção de Registros
Se quisermos inserir mais registros em nossa tabela utilizamos o comando já dito anteriormente
INSERT.
Vamos supor que depois das mudanças na empresa, ela reabriu o departamento 5 e admitiu
quatro novos funcionários relacionados em seguida:

mysql> INSERT INTO cadfun (CodFun, Nome, Depto, Funcao, Salário, Admissao)
> VALUES (20, ‘Audrey Toledo’, ‘2’, ‘SUPERVISORA’, ‘1700.00’, ‘2002-07-05’);
mysql > INSERT INTO cadfun (CodFun, Nome, Depto, Funcao, Salário, Admissao)
> VALUES (22, ‘Sandra Manzano’, ‘2’, ‘Gerente, ‘2000.00’, ‘2002-07-01’);
mysql > INSERT INTO cadfun (CodFun, Nome, Depto, Funcao, Salário, Admissao)
> VALUES (24, ‘Marcio Canuto’, ‘2’, ‘Vendedor, ‘1200.00’, ‘2002-07-10’);
mysql > INSERT INTO cadfun (CodFun, Nome, Depto, Funcao, Salário, Admissao)
> VALUES (26, ‘Miguel Silva’, ‘2’, ‘Vendedor, ‘1200.00’, ‘2002-07-15’);

Criação do Banco de Dados Gravadora_CD

Comando SELECT
Este comando é utilizado para realizar pesquisas, ou seja, extrair informações do banco de dados.
Atrás dele há uma extensão de possibilidades que vão desde a simples extração do conteúdo de
todas as linhas e colunas de uma tabela até a união de diversas tabelas, cálculos, agrupamentos,
além de ordenações e filtragem de linhas e colunas.
A sintaxe mais simples do comando SELECT é:
mysql SELECT [DISTINCT | ALL] { * | coluna [, coluna, …]} FROM tabela

Onde DISTINCT não mostra eventuais valores repetidos de colunas,

10
ALL mostra todos os valores, mesmo que repetidos. Esse é o padrão se DISTINCT não for
definido.
* Indica que devem ser mostradas todas as colunas da tabela.
coluna lista de colunas que devem ser mostradas.
Tabela nome da tabela em que será realizada a busca.

Para visualizar todas as linhas e colunas de uma tabela utilizamos o seguinte comando:

mysql> SELECT * from <tabela>

Exemplo na tabela CD

mysql> SELECT * from cd

Existe outros tipos de filtros, apenas com algumas colunas da tabela:

mysql> SELECT codigo_cd, nome_cd from cd

Usando pseudônimos – parâmetro AS (alias)


Durante a utilização de um comando SQl, em casos de utilizar campos cujos nomes sejam muitos
longos, ou por outros motivos, é possível atribuir um apelido (alias, pseudônimo) para um campo
específico para utilização na expressão SQl e na visualização dos resultados.
Esse comando pode ser utilizado em qualquer consulta SQL.
Sintaxe:

mysql> SELECT <campo> AS <alias> FROM <tabela> [WHERE <condicoes>]

Vamos fazer um teste na tabela código_cd para cd. Ficará assim:

mysql> SELECT codigo_cd AS cd from gravadora_cd

Verifique que o campo foi modificado para esta consulta.

Podemos fazer a mesma modificação com outro comando.

mysql> SELECT codigo_gravadora “Código da Gravadora” from gravadora_cd;

Parâmetro LIMIT (primeiros ‘n’ registros)


A partir de uma consulta, é possível visualizar os primeiros n registros retornados, assim como os
últimos n registros. Este tipo de operação otimiza recursos para realizar tarefas.
Outra utilidade deste comando é a paginação de resultados. Em diversas aplicações quando
acessamos um volume muito grande de resultados, este são visualizados por meio de páginas,
cada uma contendo um número pequeno de resultados.
Sintaxe:
mysql> SELECT campo FROM tabela LIMIT X, Y
O valor na expressão X indica quantos registros devem ser ignorados (pulados), e o valor de Y
indica quantos registros devem ser exibidos a partir da posição X.

SELECT nome_cd from cds LIMIT 0,3

Cláusula WHERE
Usada para filtrar um subconjunto de linhas de uma tabela
Sintaxe
mysql> SELECT nome_colunas FROM nome_tabela [WHERE condição]

11
OPERADORES RELACIONAIS
Operadores relacionais definem um tipo de condição básica. Podemos testar igualdade, diferença,
maior, menor, maior ou igual e menor ou igual. Deve-se colocar o operador entre os argumentos
que estão sendo comparados. Veja uma lista de operadores relacionais, seu significado e
exemplo de utilização.

OPERADOR SIGNIFICADO EXEMPLO


= igual cód_autor = 2
< menor que preco_venda < 10
<= menor ou igual a preco_venda <= 10
> maior que preco_venda > 10
>= maior ou igual a preco_venda >= 10
!= ou <> diferente cód_autor != 2 ou cod_autor
<> 2

Desta forma, se quisermos pesquisar apenas os CDs com preço de venda superior a 10, devemos
utilizar o seguinte comando:

mysql> SELECT nome_cd, preco_venda from CD where preco_venda > 10;

OPERADORES LÓGICOS
Existem ocasiões em que é necessário trabalhar com o relacionamento de duas ou mais
condições ao mesmo tempo, efetuando desta forma testes múltiplos. Para estes casos é
necessário trabalhar com a utilização dos operadores lógicos, também conhecidos como
operadores booleanos. Veja a tabela abaixo os operadores lógicos:

OPERADOR SIGNIFICADO EXEMPLO


AND e condição-1 AND condição-2
OR ou condição-1 OR condição-2
NOT ou ! não/ negação NOT condição

AND
O Operador AND é utilizado quando dois ou mais relacionamentos lógicos de uma determinada
condição necessitam ser verdadeiros, ou seja, duas condições devem ser verdadeiras para que
seja mostrada a linha. Exemplo:

mysql> SELECT nome_cd, preco_venda, codigo_gravadora


-> from CD
-> WHERE preco_venda > 10 AND codigo_gravadora = 2;

O operador AND faz com que somente seja executada uma determinada operação se todas as
condições mencionadas forem simultaneamente verdadeiras, gerando assim um resultado lógico
verdadeiro.
Somente serão mostrados os nomes dos CDs que tiverem preço de venda maior que 10 e cuja
gravadora seja a de código 2.

12
OR
O Operador OR é utilizado quando pelo menos um dos relacionamentos lógicos (quando houver
mais de um relacionamento) de uma condição necessita ser verdadeiro, ou seja, quando
quisermos que o resultado final seja verdadeiro sempre que uma das duas condições forem
verdadeiras (ou ambas). Exemplo:

mysql> SELECT nome_cd, preco_venda, codigo_gravadora


-> from CD
-> WHERE preco_venda > 11 OR codigo_gravadora = 3;

O Operador OR faz com que seja executada uma determinada operação se pelo menos uma das
condições mencionadas gerar um resultado lógico verdadeiro.
Somente serão mostrados os nomes dos CDs que tiverem preço de venda maior que 11 ou cuja
gravadora seja de código 3.

ATENÇÃO: cuidado ao utilizar esses operadores.


Não há limitação no uso e na combinação de condições utilizando operadores AND e OR. Mas
devemos tomar cuidado na combinação de ambos. A avaliação deste tipo de condição é, no
padrão da esquerda para a direita. É conveniente utilizar parênteses para determinar o que você
quer comparar. Assim, o resultado dos dois comandos a seguir pode não ser exatamente o que
você está esperando:

mysql> SELECT nome_cd, preco_venda, codigo_gravadora


-> from CD
-> WHERE codigo_gravadora = 2 OR codigo_gravadora= 3
-> and preco_venda > 11;

Neste caso a consulta inclui na listagem preços com venda inferior a 11. Isso acontece por que
primeiro é verificado se o código da gravadora é 2 ou 3 e, somente depois, verifica-se o preço de
venda.
Vamos ver o mesmo exemplo com parênteses:

mysql> SELECT nome_cd, preco_venda, codigo_gravadora


-> from CD
-> WHERE (codigo_gravadora = 2 OR codigo_gravadora= 3)
-> and preco_venda > 11;

Neste caso, checa-se o código da gravadora e obtém-se uma lista de linhas válidas (somente os
das gravadoras 2 e 3). Depois, verifica-se o preço de venda, apenas as linhas selecionadas
anteriormente, e, assim, temos o que deve ser apresentado.

NOT ou !
O operador do tipo NOT é utilizado quando se necessita estabelecer que uma determinada
condição deve não ser verdadeira ou deve não ser falsa. O operador NOT se caracteriza por
inverter o estado lógico de uma condição, ou seja, ele nega o resultado da condição.

mysql> SELECT nome_cd, preco_venda


-> from cd
-> WHERE NOT (preco_venda < 15);

No resultado desta operação aparece apenas as linhas da tabela CD que não tenham preço
menor que 15. Primeiro o banco de dados avalia o preço de venda menor que 15 e depois exclui
da lista esses elementos.

13
Mais uma vez, apesar de opcional, o uso de parênteses deixa mais claro o que está sendo
esperando do comando. Pode-se avaliar com o NOT expressões complexas incluindo as
cláusulas AND e OR.

mysql> SELECT nome_cd, codigo_gravadora, preco_venda


-> from cd
-> WHERE NOT (codigo_gravadora = 2 OR codigo_gravadora = 3)
-> and preco_venda > 11;

Nesse caso, como é excluído o grupo de CDs das gravadoras 2 e 3, pois utilizamos o NOT antes
do parênteses, resta apenas o CD com preço superior a 11.

OPERADORES ESPECIAIS (AUXILIARES)


A linguagem de consulta estruturada SQL possui, além dos operadores aritméticos, relacionais e
lógicos, alguns outros operadores auxiliares que facilitam a definição de condições para
comandos como SELECT, UPDATE e DELETE, quando da utilização da cláusula WHERE.
Esses operadores são utilizados para determinar melhor as linhas que queremos filtrar.

BETWEEN – definição de intervalos


Esse operador serve para determinar um intervalo de busca. Assim, sempre que quisermos
realizar buscas que indiquem um intervalo de números, datas, etc., podemos utilzar o BETWEEN
para simplificar a forma de escrevermos o comando. É muito utilizado para simplificar a utilização
do AND. Sintaxe:

mysql> <expressao> [NOT] BETWEEN <valor mínimo> AND <valor máximo>

Em que expressão pode ser a definição de um campo, valor numérico, seqüência de caracteres,
sendo que este parâmetro serve para definir a efetivação da comparação; valor mínimo é a
definição do menor valor da faixa de intervalo e valor máximo é a definição do maior valor da
faixa de intervalo.
De forma análoga, o operador BETWEEN... AND efetua a definição de uma condição baseada na
expressão: <valor mínimo> <= <expressão> AND <expressão> <=<valor máximo>

mysql> SELECT nome_cd, data_lançamento


-> from CD
-> WHERE data_lancamento BETWEEN ‘01/01/99’ AND ‘01/12/2001’;

Caso utilizemos o comando NOT, somente as linhas for a do intervalo serão apresentadas

mysql> SELECT nome_cd, preco_venda


-> from CD
-> WHERE preco_venda NOT BETWEEN 9 AND 11;

IN – qualquer valor da lista


Permite comparar o valor de uma coluna com um conjunto de valores. Normalmente, utilizamos o
IN para substituir uma série de comparações seguidas da cláusula OR.
Sintaxe do operador IN:

mysql> <expressão> [NOT] IN <valor1, valor2, valorN, ...>

Em que expressão pode ser a definição de uma campo, valor numérico, seqüência de caracteres,
sendo que este parâmetro serve para definir a efetivação da comparação; valor1, valor2, valorN,
são as definições do grupo de valores em que a expressão será verificada.
Caso a expressão analisada esteja dentro (IN) da sequência de valores indicados, será possível
executar a ação estabelecida ante da cláusula WHERE.

14
mysql> SELECT *
-> from AUTOR
-> WHERE codigo_autor IN (1,10,20);

Ao efetuar o comando, note que apenas os autores cujo código seja 1, 10 ou 20 serão retornados.

LIKE – verificação de caracteres


Com este operador, podemos comparar cadeias de caracteres utilizando padrões de comparação
para um ou mais caracteres. Normalmente o caracter percentual(%) substitui zero, um ou mais
caracteres e sublinha (_) substitui um caractere.

mysql> <expressão> [NOT] LIKE <valor>

Em que expressão pode ser a definição de um campo, valor numérico, seqüência de caracteres,
sendo que este parâmetro serve para definir a efetivação da comparação; valor é a definição do
que será pesquisado.

Utilizando a combinação desses caracteres especiais com o que se quer localizar, pode-se
conseguir uma variedade muito grande de expressões. Veja na tabela a seguir algumas possíveis
combinações.

Expressão Explicação
LIKE ‘A%’ Todas as palavras que iniciem com a letra A
LIKE ‘%A’ Todas que terminem com a letra A
LIKE ‘%A%’ Todas que tenham a letra A em qualquer posição
LIKE ‘A_’ String de dois caracteres que tenham a primeira letra A e o segundo caractere
seja qualquer outro.
LIKE ‘_A’ String de dois caracteres cujo primeiro seja qualquer um e a última letra seja A.
LIKE ‘_A_’ String de três caracteres cuja segunda letra seja A, independentemente do
primeiro e do último caractere.
LIKE ‘%A_’ Todas que tenham a letra A na penúltima posição e a última seja qualquer
outro caractere.
LIKE ‘_A%’ Todas que tenham a letra A na segunda posição e o primeiro caractere seja
qualquer um.

Exemplos:
1 - Procuremos todos os autores cujos nomes sejam iniciados com a letra R:

mysql> SELECT *
-> from AUTOR
-> WHERE nome_autor LIKE ‘R%’;

2 – Localizar todos os autores que tenham a letra L na segunda posição da palavra.


mysql> SELECT *
-> from AUTOR
-> WHERE nome_autor LIKE ‘_l%’;

3 – Buscar todos os autores com a letra C no início e a letra R na terceira posição do nome;

mysql> SELECT *
-> from AUTOR
-> WHERE nome_autor LIKE ‘C_r%’;

4 – Buscar todos os autores que contenham a seqüência de caracteres TO em qualquer posição


do nome.

15
mysql> SELECT *
-> from AUTOR
-> WHERE nome_autor LIKE ‘%to%’;

5 – Agora com números:


Vamos buscar por preços que comecem com o algarismo 1 e tenham apenas um algarismo após
o 1 serão retornados.

mysql> SELECT codigo_cd, nome_cd, preco_venda


-> from CD
-> WHERE preco_venda LIKE ‘1_’;

IS NULL - se vazio
Uma ocorrência bastante útil é verificar a existência de campos que possuam valores em branco
ou não. Nestes casos, utiliza-se junto à cláusula WHERE em uma condição o operador IS NULL
que possui a seguinte sintaxe:

<expressão> IS [NOT] NULL

Em que expressão pode ser a definição de um campo, valor numérico, seqüência de caracteres,
sendo que este parâmetro serve para definir a efetivação da comparação.
Exemplo:

mysql> SELECT nome_gravadora, endereco


-> from Gravadora
-> WHERE endereco IS NULL;

As colunas que contém campos vazios aparecerão na pesquisa.

IS NOT NULL
Compara a negação do operador anterior. Somente aqueles que tiverem conteúdo atribuído serão
mostrados.

mysql> SELECT nome_gravadora, endereco


-> from Gravadora
-> WHERE endereco IS NOT NULL;

FUNÇÕES DE MANIPULAÇÃO DE VALORES


Outra utilização bastante importante de SQL é fazer cálculos e totalizações de valores unitários.

CÁLCULOS
Podemos fazer cálculos quando realizamos buscas no banco de dados, simplesmente aplicando
um dos operadores aritméticos a colunas. Dessa forma, mesmo não tendo armazenado o valor
total (preço unitário multiplicado pela quantidade) em um item pedido, é possível realizar este
cálculo.
Como exemplo, será verificado o preço dos CDs caso estes sofram um aumento de 5%.

mysql> SELECT codigo_cd, nome_cd, preco_venda, preco_venda* 1.05


-> from CD

16
Note que os dados da tabela não foram alterados.

OPERADORES ARITMÉTICOS
Como já mencionados anteriormente os operadores aritméticos são responsáveis pela execução
de operações matemáticas simples, que venham a efetuar adição, subtração, multiplicação e
divisão.

OPERADOR SIGNIFICADO EXEMPLO


+ Efetua adição Select ....salário > 1700 + 50
- Efetua subtração Select ....salário < 1700 – 50
* Efetua multiplicação Update ...set salário = salário *
1.10
/ Efetua divisão Update...set salario = salario
/1.05

É possível efetuar cálculos tanto para a apresentação de listagem como para efetivação de
atualizações de registros, como foi demonstrado anteriormente, quando aumentamos os salários
dos funcionários em 10%.
A precedência dos operadores é igual à da matemática, ou seja, multiplicação e divisão têm
prioridade sobre soma e subtração. Se houver duas ou mais operações do mesmo grupo
(multiplicação e divisão ou adição e subtração), a operação será realizada na ordem em que
aparecer. Dentro do mesmo grupo não há prioridade. Para alterar a prioridade, devemos utilizar
parênteses.

Dessa forma, o cálculo abaixo tem como resposta 9:

15 / 5 * 3

O resultado seria 1 se fosse escrito como a seguir:

15 / (5 * 3)

Funções Numéricas
Algumas funções que retornam valores numéricos

POSITION/INSTR
O objetivo de ambas as funções é retornar a posição do caractere de busca na cadeia de
caracteres de origem.

POSITION (destino IN origem)


INSTR(origem, destino [, início, [fim]])

Onde destino é a cadeia de caracteres em que se quer pesquisar. Origem é a cadeia de


caracteres em que será realizada a pesquisa. Início é a posição inicial de busca (se não
especificada inicia na posição 1). Fim ocorrência que deve ser pesquisada (se não especificada,
indica que é a primeira ocorrência).

mysql> SELECT POSITION(‘Ru’ IN ‘Renato Russo’) BUSCA from dual;

mysql> SELECT INSTR(‘Renato Russo’, ‘Ru’) busca from dual;

CHARACTER_LENGTH/LENGTH
Retorna o número de caracteres contidos em uma cadeia de caracteres.

17
CHARACTER_LENGTH (‘cadeia de caracteres’);
LENGHT(‘cadeia de caracteres’);

mysql> SELECT CHARACTER_LENGTH(‘Renato Russo’) TAMANHO from dual;

mysql> SELECT LENGTH(‘Renato Russo’) TAMANHO from dual;

Funções Alfanuméricos
O padrão SQL indica o uso de um operador para concatenar alfanuméricos e de algumas funções
para manipula-los.

UPPER e LOWER
Quando realizamos buscas alfanuméricas no banco de dados, devemos notar que o conteúdo do
campo será comparado, literalmente, com a cadeia de caracteres informada. Isso quer dizer que
caso o que seja informado na busca seja composto por letras maiúsculas e o que está
armazenado no banco de dados esteja com a primeira letra maiúscula e as demais minúsculas,
não será retornada nenhuma linha.

mysql> SELECT * from autor


-> WHERE UPPER(nome_autor) like ‘Roberto%’;

No caso do Mysql não teremos problemas com letras maiúsculas ou minúsculas, ele aceita os
dois tipos quando se faz a busca, mas em alguns bancos de dados SQL se fizermos a busca a
função UPPER faz com que todos os conteúdos da coluna nome_autor fossem convertidos para
caracteres maiúsculos (UPPER) e depois comparados com ROBERTO%. Isso é particularmente
útil quando não sabemos exatamente como os usuários digitaram o conteúdo das colunas. O
comando LOWER utilizado dessa forma produz o mesmo efeito, apenas transformando em
minúsculos os caracteres a serem comparados.

Manipulação de Datas
Quando criamos colunas com tipo de dado Data, podemos realizar uma série de cálculos e
operações cronológicas. Podemos calcular o número de dias entre duas datas, somar e subtrair
dias, meses etc.

O padrão SQL especifica quatro tipos de dados relacionados a data e hora:

Tipo Descrição
DATE Apenas data.
TIME Apenas hora.
TIMESTAMP Data e hora.
INTERVAL Intervalo entre os dois tipo de dados anteriores

O padrão SQL definiu algumas funções para determinar a data e/ou hora atuais do sistema,
acrescentando CURRENT_antes dos três primeiro tipos anteriores: CURRENT_DATE,
CURRENT_TIME e CURRENT_TIMESTAMP.

Para saber quais os CDs lançados no dia de hoje, execute:

mysql> SELECT * from CD


-> WHERE data_lancamento = current_date;

18

Você também pode gostar