OBJETIVOS
•
Entender o que é SQL e sua importância como padrão de linguagem
estruturada de acesso a bancos de dados
•
Conhecer a classificação dos comandos SQL de acordo com as suas
funções
•
Dominar os comandos SQL
AGENDA
•
INTRODUÇÃO
•
DEFINIÇÕES
•
VANTAGENS
•
EXEMPLOS DE SGBDs
•
COMANDOS SQL
• DDL
INTRODUÇÃO
•
Os Sistemas Gerenciadores de Banco de Dados (SGBDs) são conjuntos de
programas de computador (softwares) responsáveis pelo gerenciamento
de um banco de dados
•
Objetivo: Retirar da aplicação em desenvolvimento a responsabilidade de
gerenciar o acesso, manipulação e organização dos dados (além controlar
ações de reorganização, recuperação e auditoria)
INTRODUÇÃO (CONT.)
•
Todo SGBD deve oferecer ferramentas para definir, popular e
manipular os dados em seu banco de dados
•
SQL
(
Structured
Query
Language
-
Linguagem
de
Consulta
Estruturada) foi fundamentada no modelo conceitual de Codd (1970)
•
Nome inicial
–
Sequel
•
O sucesso na utilização desta linguagem a tornou cada vez mais
popular, tornando-se um padrão adotado por diversos SGBDs
•
Em 1982 , a ANSI tornou a SQL um padrão, de direito, de linguagem
em ambiente relacional
DEFINIÇÕES
•
Apesar de QUERY no nome, não se trata de uma linguagem apenas
de consulta
•
Possui comandos para
definição
(DDL) e
manipulação
(DML) de
dados
•
Fundamentada no modelo relacional (
álgebra relacional
)
•
Diferente das linguagens de programação. É uma
linguagem
declarativa
- não é necessário programar algoritmos para acessar o
conteúdo das tabelas
•
Inicialmente uso de forma interativa, passou também a ser utilizada
como linguagem embutida em outras linguagens de programação
DEFINIÇÕES (CONT.)
•
DDL (
Data Definition Language
)
–
Parte do SQL responsável pela
definição
dos dados. Permite a definição da estrutura e organização
dos dados armazenados, bem como a relação entre eles
•
DML (
Data Manipulation Language
)
–
Parte do SQL responsável pela
manipulação
de dados. Permite que usuários (de forma interativa) ou
programas de aplicação
possam incluir, remover, alterar ou
simplesmente selecionar dados já armazenados no banco
DEFINIÇÕES (CONT.)
•
Linguagem de Definição de Dados (DDL)
•
Create
•
Alter
•
Drop
•
Criação e remoção de índices
•
Linguagem de Manipulação de Dados (DML)
VANTAGENS
•
SQL
• Independência do fabricante (adotada em praticamente todos os SGBDs) • Portabilidade
• Fácil de se aprender e dominar • Inglês estruturado (sentenças) • Consulta interativa
• Múltiplas visões de dados (em um mesmo banco)
• Flexibilidade na alteração das estruturas dos dados armazenados
EXEMPLOS DE SGBDs
• Oracle – Surgiu nos anos 70, sendo desenvolvido pela empresa de mesmo nome, que é líder de mercado no segmento de banco de dados
• SQL Server – Criado pela Microsoft em 1989, surgiu de uma parceria entre a Sybase, Ashton -Tate e Microsoft
• PostgreSQL – SGBD de código aberto do tipo objeto relacional lançado em 1995
• Firebird – SGBD de código aberto criado a partir do InterBase da Borland, quando da abertura de seu código em Julho de 2000
• MySQL – SGBD de código aberto, criado na década de 1980 na Suécia, sendo considerado o SGBD open source mais popular no mundo atualmente, sendo utilizado por grandes corporações. Atualmente é um produto da Oracle.
LINGUAGEM DE DEFINIÇÃO DE
DADOS (DDL)
•
SINTAXE
• CREATE DATABASE Nome_BD
•
Cria esquema de BD relacional
•
Agrupa as tabelas e outros comandos que pertencem à mesma
aplicação
•
O esquema inicial não possui tabelas/dados
• DROP DATABASE Nome_BD
•
Remover um esquema de BD relacional
•
Tabelas/dados
EXERCÍCIO 1
•
Usando o MySQL, crie um banco de dados chamado Escola.
LINGUAGEM DE DEFINIÇÃO DE
DADOS (DDL)
•
CREATE TABLE
Nome_tabela
• Cria uma nova tabela (relação) no BD • A nova tabela não possui dados
•
DROP TABLE
Nome_tabela
• Remove uma tabela (relação) e todas as suas instâncias do BD
•
ALTER TABLE
Nome_tabela
CREATE TABLE
•
Uma relação SQL é definida usando o comando
CREATE TABLE
•
A
ié o
nome do atributo
no esquema da relação
•
D
ié p
tipo de domínio
do atributo
A
i•
R
ié a
restrição
que atua no atributo
A
iCREATE TABLE
nome_tabela(
A1 D1 R1,
TIPOS DE DOMÍNIO BÁSICOS
•
Strings
• Char(n) – uma string de caracteres de tamanho fixo
• Varchar(n) – uma string de caracteres de tamanho variável com tamanho n máximo
•
Numéricos
• Int – um inteiro
• Smallint – um inteiro pequeno
• Numeric(p,d) – um número de ponto fixo com precisão especificada
• Real, double – números de ponto flutuante e ponto flutuante de precisão dupla
• Float – um número de ponto flutuante, com precisão de pelo menos 2 dígitos
•
Hora/Data
RESTRIÇÕES
•
Restrições são regras.
•
Por exemplo:
• Pode-se usar as restrições UNIQUE para garantir que não há valores duplicados inseridos em colunas específicas que não participam de uma chave primária. • Através das restrições podemos determinar os valores aceitos para a respectiva
coluna, etc.
RESTRIÇÕES
•
Restrições
(Constraints)
• Integridade de Chave:
• PRIMARY KEY(atributos_chave)
• Integridade Referencial:
• FOREIGN KEY (atributo) REFERENCES tabela_base(atributo)
• Restrição de Coluna:
• Default
• Integridade de Vazio:
• NOT NULL
• Restrição de Domínio
• Definir o conjunto de valores possíveis ou permitidos que um campo pode ter.
RESTRIÇÕES
•
Valor nulo
• Representado por NULL
•
Restrição de Vazio
• NOT NULL• Quando especificado, não é permitido que o atributo receba valor nulo.
Exemplo: CREATE TABLE aluno (
nome varchar(45) NOT NULL, matricula int NOT NULL,
sexo char NOT NULL,
RESTRIÇÕES
•
Restrição de Coluna
• Determina os valores aceitos para a respectiva coluna. • Cláusula DEFAULT
•
Associa um valor default para um atributo, caso nenhum outro valor
seja especificado no momento da inserção do registro na tabela.
Exemplo:
CREATE TABLE nome varchar(45) NOT NULLaluno ( , matricula int NOT NULL,sexo char NOT NULL,
cidade varchar(45) NULL default ‘Recife’,
RESTRIÇÕES
•
Restrição UNIQUE:
• Indica que o atributo tem valor único na tabela. Qualquer tentativa de se introduzir uma linha na tabela contendo um valor igual ao do atributo será rejeitada. Serve para indicar chaves secundárias.
• Embora a restrição UNIQUE e a restrição PRIMARY KEY impõem exclusividade, use a restrição UNIQUE em vez da restrição PRIMARY KEY quando for impor a exclusividade de uma coluna, ou uma combinação de colunas, que não seja uma chave primária.
Exemplo:
20
CREATE TABLE aluno (
nome varchar(45) NOT NULL, matricula int NOT NULL,
Sexo char NOT NULL,
Cidade varchar(45) NULL default ‘Recife’, RG int not null,
RESTRIÇÕES
•
Restrição de chave
• Cláusula PRIMARY KEY•
Identifica os atributos da relação que formam a sua chave primária
•
Os atributos devem ser definidos como
NOT NULL
e
Único
•
Exemplo
:
CREATE TABLE aluno (nome varchar(45) NOT NULL, matricula int NOT NULL,
Sexo char NOT NULL,
Cidade varchar(45) NOT NULL default ‘Recife’, RG int not null,
UNIQUE (RG),
EXERCÍCIO 2
•
No banco de dados Escola crie as tabelas:
• Aluno
• Int matricula
• Varchar(45) nome • Char sexo
• Professor
• Int SIAPE
• Varchar(45) nome • Float salario
• Varchar(45) titulacao
RESTRIÇÕES
•
Integridade referencial
•
Dependência existente entre a
chave estrangeira
de uma relação
(T2) e a
chave primária
da relação relacionada (T1)
•
Problemas
•
Atualização ou exclusão de elementos da chave primária sem fazer
um ajuste coordenado nas chaves estrangeiras
RESTRIÇÕES
• Restrição de Integridade referencial • Cláusula FOREIGN KEY
• Elimina a possibilidade de violação da integridade referencial
• Reflete nas chaves estrangeiras todas as alterações na chave primária
Exemplo: CREATE TABLE disciplina (
nome varchar(45) NOT NULL, carga int,
id_disc int, id_prof int, id_curso int,
PRIMARY KEY (id_disc),
FOREIGN KEY (id_prof) REFERENCES professor (id_professor),
RESTRIÇÕES
•
A cláusula FOREIGN KEY inclui regras de remoção/atualização:
•
Supondo que T2 tem uma chave estrangeira para T1, vejamos as cláusulas
ON DELETE e ON UPDATE
25
Create table tabela2(
….
FOREIGN KEY (coluna_tabela2)
REFERENCES tabela1 (coluna_tabela1) [ON DELETE
{RESTRICT|CASCADE|SET NULL| SET DEFAULT}]
[ON UPDATE
{RESTRICT|CASCADE|SET NULL| SET DEFAULT}]
…
RESTRIÇÕES
•
ON DELETE:
• RESTRICT: (default) significa que uma tentativa de se remover uma linha de T1 falhará se alguma linha em T2 combina com a chave
• CASCADE: remoção de uma linha de T1 implica em remoção de todas as linhas de T2 que combina com a chave de T1
• SET NULL: remoção de T1 implica em colocar NULL em todos os atributos da chave estrangeira de cada linha de T2 que combina.
• SET DEFAULT: remoção de linha em T1 implica em colocar valores DEFAULT nos atributos da chave estrangeira de cada linha de T2 que combina.
RESTRIÇÕES
•
ON UPDATE:
• RESTRICT: (default) update de um atributo de T1 falha se existem linhas em T2 combinando
• CASCADE: update de atributo em T1 implica que linhas que combinam em T2 também serão atualizadas
• SET NULL: update de T1 implica que valores da chave estrangeira em T2 nas linhas que combinam são postos par NULL.
• SET CASCADE: update de T1 implica que valores da chave estrangeira de T2 nas linhas que combinam terão valores default aplicados.
RESTRIÇÕES
•
Criando a tabela Disciplina, acrescentando
on delete cascade
nas chaves
estrangeiras id_prof e id_curso.
Exemplo
:
28
Create Table disciplina{
nome varchar NOT NULL,
carga int,
id_disc int,
id_prof int,
id_curso int,
Primary Key (id_disc),
RESTRIÇÕES
As restrições podem ter um
nome
e serem especificadas com a cláusula
CONSTRAINT
em uma tabela.
Isto permite que possamos no futuro eliminar (DROP) ou alterar (ALTER) o
constraint.
29
• CONSTRAINT nome_da_restrição PRIMARY KEY (coluna)
• CONSTRAINT nome_da_restrição FOREIGN KEY (coluna) REFERENCES
nome_da_tabela_pai (coluna_tabela_pai) [ON DELETE CASCADE]
RESTRIÇÕES
•
Criação da tabela aluno com a restrição de chave (constraint ct_aluno)
Exemplo:
30
CREATE TABLE aluno (
nome varchar(45) NOT NULL, matricula int NOT NULL,
Sexo char NOT NULL,
Cidade varchar(45) NULL default ‘Recife’, RG int not null,
UNIQUE (RG),
RESTRIÇÕES
•
Exemplo: criação da tabela disciplina com a restrição referencial (constraint
ct_fk_dis_prof e ct_fk_dis_curso
)
31
CREATE TABLE disciplina ( nome varchar NOT NULL, carga int,
id_disc int, id_prof int, id_curso int,
PRIMARY KEY (id_disc),
Constraint ct_fk_dis_prof FOREIGN KEY (id_prof) REFERENCES professor (id_professor),
EXERCÍCIO 3
• Ainda no banco de dados Escola crie as tabelas: • Curso
• Int id
• Varchar(45) nome
• Disciplina
• Int id
• Int carga
• Varchar(45) nome
• Crie uma restrição unique
• Int id_professor
• Int id_curso
• AlunoDisciplina
• Int matricula_aluno
• Int id_disciplina
• Float nota1
• Float nota2
• Float nota3
DROP TABLE
•
Comando
DROP TABLE
exclui do banco de dados a tabela
Exemplo:
ALTER TABLE
•
Comando
ALTER TABLE
usado para alterar uma relação no banco de dados
• Adiciona colunas • Remove colunas
• Altera tipos dos atributos, renomeia o nome das colunas e da tabela
ALTER TABLE
•
Incluir novas colunas na tabela
•
Eliminar uma coluna já existente da tabela
ALTER TABLE aluno ADD RG int
ALTER TABLE
•
Modificar o nome de uma coluna existente
•
Modificar o tipo de dado de uma coluna
ALTER TABLE disciplina CHANGE carga cargaHoraria int;
ALTER TABLE alunoDisciplina MODIFY nota1 numeric(2,2);
ALTER TABLE
•
Modificar o nome de uma tabela existente
ALTER TABLE
•
Constraint
• Alterando um atributo para Unique em uma tabela já criada:
ALTER TABLE disciplina
ALTER TABLE
•
Apagando uma
unique constraint
ALTER TABLE
•
Constraint
• Setando a chave primária de uma tabela já criada
•
Setando uma chave estrangeira em uma tabela já criada
ALTER TABLE aluno
ADD CONSTRAINT ct_pk PRIMARY KEY(RG)
ALTER TABLE alunoDisciplina ADD CONSTRAINT ct_fk