• SQL - DDL
• Introdução ao SQL
• Principais comandos
• Criação de Banco de Dados
• Criação de Tabelas
• Integridade Referencial
INF - Banco de Dados
Prof. Pedro Borges
Introdução ao SQL
SQL - Structured Query Language
O nome SQL (Structured Query Language) explica a sua finalidade – não é uma
linguagem de programação para desenvolver sistemas como PHP, C ou Java,
mas sim uma linguagem declarativa usada para facilitar o acesso a dados
armazenados em bancos de dados relacionais, como o MySQL;
• Um banco de dados relacional armazena dados em tabelas (relações) que são
formadas por linhas (tuplas) e colunas (campos).
Disciplina: Banco de Dados
2
Introdução ao SQL
SQL - Structured Query Language
SQL é dividida em 3 subconjuntos (principais):
1º DDL - Data Definition Language (Linguagem de Definição de Dados).
• 2º DML - Data Manipulation Language (Linguagem de Manipulação de Dados).
• 3º DQL - Data Query Language (Linguagem de Consulta de Dados).
Disciplina: Banco de Dados
3
Introdução ao SQL
MySQL
O MySQL é um SGBD que usa a linguagem SQL para acessar os dados
armazenados;
• É rápido, multitarefa e multiusuário;
• Teve a sua primeira versão oficial em 1996;
• Permite trabalhar com grandes tabelas;
• No formato MyISAM suporta tabelas até 4GB.
Disciplina: Banco de Dados
4
Introdução ao SQL
Exemplos de comandos
SELECT VERSION();
SELECT CURRENT_DATE();
SELECT CURDATE();
SELECT CURRENT_TIME();
SELECT NOW();
SELECT USER().
Disciplina: Banco de Dados
5
Introdução ao SQL
MySQL Workbench
O MySQL Workbench é uma
ferramenta visual de banco de dados
que integra o desenvolvimento,
administração e projeto de bancos
MySQL Workbench
de dados.
Disciplina: Banco de Dados
6
Introdução ao SQL
Alguns comandos iniciais
Os comandos terminam com ponto-e-vírgula ( ; )
SELECT
SELECT USER( );
USER( );
SELECT 5 + 5;
SELECT 12 + 8, 13 - 9;
SELECT 12 + 8AS Soma, 13 - 9 AS Subtração;
SELECT SQRT(16), SQRT(28.6);
Disciplina: Banco de Dados
7
Introdução ao SQL
SQL - Structured Query Language
SQL é dividida em 3 subconjuntos (principais):
1º DDL - Data Definition Language (Linguagem de Definição de Dados).
• 2º DML - Data Manipulation Language (Linguagem de Manipulação de Dados).
• 3º DQL - Data Query Language (Linguagem de Consulta de Dados).
Disciplina: Banco de Dados
8
SQL - DDL
Linguagem de Definição de Dados
A Linguagem de Definição de Dados (ou DDL, de Data Definition Language) é usada
para a inclusão, remoção e modificação de estruturas (bancos e tabelas).
Exemplos de comandos SQL:
• CREATE DATABASE
• CREATE TABLE
• DROP DATABASE
Disciplina: Banco de Dados
9
SQL - DDL
Criando um banco de dados
Um banco de dados armazenará as tabelas.Asintaxe para criar de um BD em SQL é:
CREATE DATABASE IF NOT EXISTS nome;
No comando acima, nome é a representação do nome do banco de dados a ser criado.
O uso do IF NOT EXISTS é opcional. Ele apenas evita que um erro seja gerado caso se
tente usar um nome de banco já existente.
Disciplina: Banco de Dados
10
SQL - DDL
Criando um banco de dados (exemplo)
CREATE DATABASE meuBanco;
Tente executar o comando acima outra vez, e logo após execute o comando a
seguir. Note que a mensagem de erro não é exibida.
CREATE DATABASE IF NOT EXISTS meuBanco;
Os comandos e nomes de bancos de dados não são case sensitive. Tente:
CREATE DATABASE MEUBANCO;
Disciplina: Banco de Dados
11
SQL - DDL
Exibindo os bancos de dados criados
Para exibir os bancos de dados existentes no sistema, usamos o comando:
SHOW DATABASES;
Além do banco criado, são exibidos outros bancos de dados, como por exemplo
os bancos mysql, performance_schema e information_schema. São bancos de
dados que contém metadados.
Disciplina: Banco de Dados
12
SQL - DDL
Selecionando um banco de dados
Para selecionar um banco de dados existente, devemos usar o comando:
USE nome;
Antes de executar qualquer operação, devemos executar o comando USE.
• Onde nome é o nome do banco de dados que queremos usar.
Disciplina: Banco de Dados
13
SQL - DDL
Selecionando um banco de dados (exemplo)
Para selecionar o banco meuBanco criado anteriormente, usamos:
USE meuBanco;
Disciplina: Banco de Dados
14
SQL - DDL
Apagando um banco de dados
Para remover um banco de dados, devemos executar o seguinte comando:
DROP DATABASE nome;
Onde nome é o nome do banco de dados que queremos remover;
ATENÇÃO: após remover um banco de dados, todas as tabelas com os seus
dados serão perdidas.
Disciplina: Banco de Dados
15
SQL - DDL
Apagando um banco de dados (exemplo)
Para remover o banco de dados meuBanco, criado anteriormente:
DROP DATABASE meuBanco;
DROP DATABASE IF EXISTS meuBanco;
Para confirmar que o banco foi removido, você pode executar o comando:
SHOW DATABASES;
Disciplina: Banco de Dados
16
SQL - DDL
Criação de tabelas
A sintaxe para criação de uma tabela é a seguinte:
CREATE TABLE IF NOT EXISTS tabela (
coluna1 tipo parâmetros,
colunaN tipo parâmetros
);
Onde tabela é o nome da tabela que queremos criar e dentro dos
parênteses especificamos cada coluna, o seu tipo e outros parâmetros.
Disciplina: Banco de Dados
17
SQL - DDL
Criação de tabelas
Principais tipos e descrição:
Tipo Descrição
CHAR(tam) Sequencia de caracteres de tamanho fixo.
VARCHAR(tam) Sequências de caracteres de tamanho variável de até 255 caracteres.
TINYTEXT suporta até 255 caracteres.
MEDIUMTEXT Suporta até 16.777.326 caracteres.
LONGTEXT Suporta até 4.294.967.295.
DATETIME Usado para armazenar valores que contém tanto a data quanto o horário. É usado o seguinte
formato ‘AAAA-MM-DD HH:MM:SS’.
DATE Data no formato ‘AAAA-MM-DD’ (formato ANSI).
TIME Representa informação relacionada a um determinado horário, no formato ‘HH:MM:SS’.
Disciplina: Banco de Dados
18
SQL - DDL
Criação de tabelas
Principais tipos e descrição:
Tipo Descrição
BIGINT Tipo de dado para inteiros grandes na faixa valores de -9.223.372.036.854.775.808 a
9.223.372.036.854.775.807. O unsigned vai de 0 até 18.446.744.073.709.551.615;
TINYINT Inteiros de -128 até 127, ou de 0 até 255 (unsigned).
DECIMAL(tam,dec) Valores de ponto flutuante como se fosse sequências de caracteres. O tamanho determina o
número de dígitos e o decimal determina quantos deles são casas decimais.
DOUBLE Quando for necessário usar valores com tamanho normal (dupla precisão).
FLOAT Quando for necessário usar valores com tamanho pequeno (precisão simples).
INTEGER Usado quando houver a necessidade de valores inteiros na faixa de -2147483648 a
2147483647 ou de 0 a 4294967295 (unsigned).
Disciplina: Banco de Dados
19
SQL - DDL
Criação de tabelas
Algumas definições dos tipos numéricos:
• SIGNED x UNSIGNED: basicamente, um número signed aceita dados
negativos, enquanto o unsigned não.
• Isso cria o seguinte cenário: vamos supor que temos um dado do tipo TINYINT,
que pode ter uma faixa de valores de 255, se ele for signed seu valor pode
variar de -128 a 127, caso seja unsigned seu valor irá de 0 a 255.
Disciplina: Banco de Dados
20
SQL - DDL
Criação de tabelas
Algumas definições dos tipos numéricos:
• SIGNED x UNSIGNED:
• Dados que aceitam o atributo “UNSIGNED” automaticamente aceitam o atributo
“SIGNED”, mas como este é o valor padrão, pode ser suprimido.
• Ex.: TINYINT(4) é a mesma coisa que TINYINT(4) SIGNED, caso for utilizá-lo
como UNSIGNED a forma correta de escrita é TINYINT(4) UNSIGNED.
Disciplina: Banco de Dados
21
SQL - DDL
Criação de tabelas
Algumas definições dos tipos numéricos:
• ZEROFILL: esse parâmetro é responsável por preencher com zeros à esquerda
do valor informado sempre que utilizado, o dado automaticamente recebe o
atributo UNSIGNED, ou seja, passa a não aceitar valores negativos.
• Ex.: em um TINYINT(4) ZEROFILL ao invés de armazenar o valor como “1”,
seria armazenado como “0001”.
Disciplina: Banco de Dados
22
SQL - DDL
Criação de tabelas
Algumas definições dos tipos numéricos:
Disciplina: Banco de Dados
23
SQL - DDL
Criação de tabelas
Alguns Parâmetros e suas descrições:
Parâmetro Descrição
NOT NULL É a definição de um campo não aceitar valores nulos.
DEFAULT Permite determinar um valor padrão para um determinado campo.
Determina se o campo será preenchido automaticamente quando nele forem
AUTO_INCREMENT entrados valores NULL ou em branco (apenas se o campo for do tipo
inteiro).
PRIMARY KEY Indica que aquele campo é uma chave primária.
Disciplina: Banco de Dados
24
SQL - DDL
Criação de tabelas (exemplo)
Exemplo de criação da tabela alunos no banco meuBanco:
USE meuBanco;
CREATE TABLE IF NOT EXISTS alunos (
matricula INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
nome varchar(50) NOT NULL, email varchar(100)
);
Disciplina: Banco de Dados
25
SQL - DDL
Exibindo as tabelas criadas
Para exibir as tabelas de um BD, usamos o seguinte comando:
SHOW TABLES;
Para exibir a estrutura de uma tabela específica, ou mesmo de uma ou mais
colunas, usamos o seguinte comando:
DESCRIBE tabela coluna;
Onde tabela é o nome da tabela e coluna é o nome do campo (opcional).
Disciplina: Banco de Dados
26
SQL - DDL
Exibindo as tabelas criadas (exemplo)
Descrevendo a tabela alunos:
DESCRIBE alunos;
Descrevendo o atributo matrícula da tabela alunos:
DESCRIBE alunos matricula;
Disciplina: Banco de Dados
27
SQL - DDL
Alterando uma tabela
Para alterar uma tabela em um BD, usamos o seguinte comando:
ALTER TABLE tabela operacao;
Onde tabela é o nome da tabela que queremos alterar e operacao é a operação
que queremos realizar nesta tabela, como adicionar ou remover um campo.
Disciplina: Banco de Dados
28
SQL - DDL
Alterando uma tabela - Renomear
Para renomear o nome de uma tabela:
ALTER TABLE alunos RENAME TO pessoas;
Disciplina: Banco de Dados
29
SQL - DDL
Alterando uma tabela - Adicionar campo
Para adicionar um campo:
ALTER TABLE alunos ADD endereco varchar(50) NOT NULL;
Para inserir um campo no início ou depois de um determinado campo:
ALTER TABLE alunos ADD cidade varchar(50) FIRST; Primeira coluna da tabela
ALTER TABLE alunos ADD cidade varchar(50) AFTER endereco; Depois da coluna endereco
Disciplina: Banco de Dados
30
SQL - DDL
Alterando uma tabela – Alterar nome e tipo de campo
Para alterar o nome e o tipo de um campo:
ALTER TABLE alunos CHANGE COLUMN endereco enderecoNovo varchar(80);
Disciplina: Banco de Dados
31
SQL - DDL
Alterando uma tabela – Alterar tipo de campo
Para alterar o tipo de um campo:
ALTER TABLE alunos MODIFY endereco varchar(120);
Disciplina: Banco de Dados
32
SQL - DDL
Alterando uma tabela - Remover campo
Para remover um campo:
ALTER TABLE alunos DROP endereco;
Disciplina: Banco de Dados
33
SQL - DDL
Removendo uma tabela
Para remover uma tabela de um BD, usamos o seguinte comando:
DROP TABLE tabela;
Onde tabela é o nome da tabela que queremos remover.
Após remover uma tabela, todos os dados contidos dentro dela serão perdidos.
Disciplina: Banco de Dados
34
SQL - DDL
Criação de tabelas (chave estrangeira)
Criação de chave estrangeira:
CREATE TABLE IF NOT EXISTS alunos (
matricula INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
nome varchar(50) NOT NULL, email varchar(100),
cursos_codigo INT NOT NULL,
FOREIGN KEY (cursos_codigo)
REFERENCES cursos(codigo)
); A tabela cursos deve ser
criada antes de alunos.
Disciplina: Banco de Dados
35
SQL - DDL
Integridade Referencial
Num banco de dados relacional, quando um registro aponta para outro, ou seja, é
dependente deste, há de se fazer regras para que o registro pai não possa ser
excluído se ele tiver filhos. Tais relacionamentos são feitos através das chaves
estrangeiras.
A integridade referencial visa garantir a não corrupção dos dados, de modo a
não haver como existir um registro filho sem um registro pai.
Disciplina: Banco de Dados
36
SQL - DDL
Integridade Referencial
Podemos especificar as seguintes cláusulas sobre restrições de integridade
referencial:
• CASCADE, RESTRICT, SET NULL e SET DEFAULT
As cláusulas acima definem o que é MySQL deve fazer se uma
restrição de integridade referencial for quebrada.
Disciplina: Banco de Dados
37
SQL - DDL
Integridade Referencial
Exemplo: CREATE TABLE IF NOT EXISTS alunos (
matricula INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
nome varchar(50) NOT NULL, email varchar(100), cursos_codigo INT NOT
NULL,
FOREIGN KEY (cursos_codigo) REFERENCES cursos(codigo) ON DELETE SET
NULL
ON UPDATE CASCADE
);
Disciplina: Banco de Dados
38