Arquitetura e
Gerenciamento de Banco
de Dados
SQL – (DDL)
Profª Débora Souza
debora.slsouza@gmail.com
Introdução
• SQL (Structured Query Language) é um padrão de
linguagem de consulta comercial.
• SQL usa uma combinação de construtores em
álgebra relacional e cálculo relacional.
• Embora o próprio nome se refira a SQL como uma
linguagem de consulta, ela possui outros recursos.
Introdução
• Modelo relacional encontra-se padronizado pela
indústria de informática. Ele é chamado de padrão
SQL.
• O padrão SQL define precisamente uma interface
SQL para a definição de:
• Tabelas
• Operações sobre tabelas (seleção, junção e outras); e
• Definição de regras de integridade de bancos de dados.
Introdução
• A SQL é implementada em praticamente todos os
sistemas de bancos de dados relacionais existentes.
• Fabricantes de diferentes SGBDs apresentam
variações de SQL.
• Ex.: PL/SQL
• A existência de padrões facilita a
interoperabilidade.
Histórico
• A IBM desenvolveu a versão original da SQL,
originalmente chamada Sequel, no início da década
de 1970.
• Parte do projeto System R.
• Com a evolução da linguagem, está passou a ser
chamada de SQL (Structured Query Language).
• A SQL se estabeleceu como linguagem padrão de
banco de dados relacional.
Histórico
• Em 1986 o ANSI e a ISO publicaram um padrão SQL
o SQL-86. Apos este, alguns outros surgiram:
• SQL-89
• SQL-92
• SQL:1999
• SQL:2003
Partes da SQL
• A SQL possui várias partes:
• Linguagem de definição de dados (DDL)
• Linguagem de manipulação de dados (DML)
• Integridade (DDL)
• Definições de visões (DDL)
• Controle de transações (DDL) - Especificar o início e o
fim de transações.
• SQL embutida e SQL dinâmica - Definem como as
instruções SQL podem ser incorporadas dentro das
linguagens de programação de finalidade geral (C, C++,
Java).
• Autorização (DDL)
Tipos de Domínios Básicos
• char(n) - string de caracteres de tamanho fixo n.
• varchar(n) - string de caracteres de tamanho variável, com
tamanho n máximo.
• int - subconjunto finito de inteiros que é dependente da
máquina.
• smallint - inteiro pequeno (dependente da máquina).
• numeric(p,d) - número de ponto fixo com precisão
especificada.
• Ex.: numeric(3,1) aceita o valor 33,1, mas não aceita 333,1.
• real, double precision - números de ponto flutuante.
• float(n) - número de ponto flutuante, com precisão de pelo
menos n dígitos.
Comandos SQL
• Os comandos SQL para definição de dados são:
• CREATE
• DROP
• ALTER
O comando CREATE
• O comando CREATE pode ser utilizado para criação
de:
• Tabelas (relações)
• Domínios próprios
• View
• Entre outros.
O Comando CREATE
• Para criação de tabelas (relações):
• CREATE TABLE : especifica uma nova relação (tabela). Cada
relação possui um nome e um conjunto de atributos
(colunas), bem como o tipo deste e possíveis restrições.
• Sintaxe:
CREATE TABLE nome (A1 D1, A2 D2, ..., An Dn,
<regra de integridade1>,
...,
<regra de integridadeK> )
• Onde nome é o nome da relação, Ai é um nome de atributo e
Di é o domínio do atributo Ai.
O Comando CREATE
• As definições dos atributos têm o seguinte formato:
• Atributo Tipo [NOT NULL [UNIQUE]] [DEFAULT valor]
[AUTO_INCREMENT]
• Onde:
• Atributo: nome do atributo que está sendo definido.
• Tipo: domínio do atributo.
• NOT NULL: expressa que o atributo não pode receber valores
nulos.
• UNIQUE: indica que o atributo tem valor único na tabela.
• DEFAULT valor: indica um valor a ser atribuído ao atributo
caso não seja determinado um valor na inserção.
• AUTO_INCREMENT : utilizado para automatizar um código,
geralmente a chave primária.
O Comando CREATE
• Existem diversas restrições de integridade
permitidas, entre elas:
• Integridade de chave:
• PRIMARY KEY (atributos chave)
• Integridade referencial:
• FOREIGN KEY (atributos) REFERENCES tabela_base(atributos)
• Integridade de domínio:
• CHECK (condição)
Integridade de Chave
• Definida com a cláusula PRIMARY KEY.
• Não são permitidos valores duplicados em uma
chave primária, ou seja, a chave primária é única.
• Geralmente, não é possível alterar chaves
primárias.
Integridade de Chave
• Exemplo da construção de uma relação utilizando
chave primária.
CREATE TABLE empregado
(matricula INT AUTO_INCREMENT,
nome VARCHAR(40) NOT NULL,
sexo CHAR,
salario NUMERIC(10,2),
depto INT NOT NULL,
PRIMARY KEY (matricula));
Integridade Referencial
• Definida com a cláusula FOREIGN KEY
• Não é possível definir chaves estrangeiras sem
chaves primárias (exclusivas) existentes.
• Uma chave estrangeira deve corresponder a um
valor de chave primária existente
Integridade Referencial
• Exemplo da construção de uma relação utilizando
chave estrangeira.
CREATE TABLE empregado
(matricula INT AUTO_INCREMENT,
...
FOREIGN KEY (depto)
REFERENCES
departamento(codDep));
Integridade Referencial
• A cláusula FOREIGN KEY inclui regras de
remoção/atualização:
• FOREIGN KEY (nome_coluna) REFERENCES nome_tabela
[ON DELETE {RESTRICT|CASCADE|SET NULL| SET
DEFAULT}]
[ON UPDATE {RESTRICT|CASCADE|SET NULL| SET
DEFAULT}]
• Supondo que T2 tem uma chave estrangeira para
T1, vejamos as cláusulas ON DELETE e ON UPDATE
Integridade Referencial
• 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.
Integridade Referencial
• 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
para NULL.
• SET DEFAULT: update de T1 implica que valores da chave
estrangeira de T2 nas linhas que combinam terão
valores default aplicados.
Integridade Referencial
• Exemplo da construção de uma relação utilizando
chave estrangeira.
CREATE TABLE empregado
(matricula INT AUTO_INCREMENT,
...
FOREIGN KEY (depto)
REFERENCES
departamento(codDep) ON
UPDATE CASCADE);
A Cláusula CHECK
• Define uma condição que cada linha deve
satisfazer.
• Uma única coluna pode ter várias restrições CHECK
que fazem referência à coluna na sua definição.
• As restrições CHECK podem ser definidas no nível
da coluna ou da tabela.
A Cláusula CHECK
• Exemplo da construção de uma relação utilizando a
cláusula CHECK.
CREATE TABLE estudante (
nome char(15) NOT NULL,
id_estudante char(10) NOT NULL,
nivel char(15) NOT NULL,
PRIMARY KEY (id_estudante),
CHECK (nivel IN (“Bacharelado”, ”Mestrado”,
”Doutorado”)));
O Comando CREATE – Exemplo
CREATE TABLE empregado
(matricula INT NOT NULL AUTO_INCREMENT,
nome VARCHAR(40) NOT NULL,
sexo CHAR,
salario NUMERIC(10,2),
depto INT NOT NULL,
PRIMARY KEY (matricula),
CHECK (salario >= 724,00),
FOREIGN KEY (depto)
REFERENCES
departamento(codDep) ON UPDATE
CASCADE ON DELETE CASCADE);
Observação: este exemplo supõe que a tabela departamento já exista.
O Comando DROP
• Remove uma relação do banco de dados.
• Exclui todas as informações sobre a relação removida.
• Sintaxe:
DROP TABLE [IF EXISTS] nome;
Onde:
• IF EXISTS: preveni um erro de ocorrer se a relação não existir.
• nome: nome da relação a ser removida.
• Exemplo:
• DROP TABLE IF EXISTS empregado;
O Comando ALTER
• Permite alterar a estrutura da tabela existente.
• Adicionar ou deletar colunas, alterar o tipo de coluna
existentes, ou renomear coluna ou tabelas, entre outros.
• Os novos atributos terão valores nulos em todas as
linhas.
• A inclusão de uma coluna requer a especificação do seu
tipo de dado.
• Está não pode ser definida como NOT NULL.
O Comando ALTER
• Sintaxe:
• ALTER TABLE nome_relação
Opção Descrição
ADD [COLUMN] Adiciona uma ou mais colunas
CHANGE [COLUMN] Altera o nome da coluna
MODIFY [COLUMN] Altera o domínio da coluna
DROP [COLUMN] Exclui uma coluna
RENAME [TO] Renomeia a Tabela
Tabela 1 – Algumas das especificações de ALTER TABLE
O Comando ALTER
• Exemplos:
• ALTER TABLE nome_tbl
RENAME TO novo_nome;
• ALTER TABLE clientes DROP email;
• ALTER TABLE tarefa
ADD COLUMN complete DECIMAL(2,1)
AFTER description;
Escolha do SGBD
• Para está disciplina o SGBD foi escolhido o MySQL.
Escolha do SGBD
• O download do MySQL pode ser feito através do
site:
• http://dev.mysql.com/downloads/
• Nesta disciplina vamos utiliza-lo através do sistema
operacional Ubuntu.
• Para fazer o acesso é necessário pelo terminal digite:
• mysql -uroot -p
Criação do BD
• Criação do banco de dados:
• create database nome_do_banco;
• Usando o banco de dados:
• use nome_do_banco;
Exercício
1. Criar três relações baseadas no funcionamento
do IFAL.
• Uma das relações deve conter no mínimo 4 domínios de
atributos diferentes.
• Cada relação deve conter ao menos uma regra de
integridade.
2. Escolha uma das relações e faça no mínimo 3
alterações diferentes, sendo uma de cada vez.
3. Pesquise a sintaxe completa para ALTER TABLE e
faça, ao menos, 2 modificações diferentes na(s)
tabela(s) a sua escolha.
Exercício
4. Crie uma relação cliente e a relação vendedor.
5. Defina as relações a seguir usando SQL:
Fornecedor (codigo, nome, cidade)
Venda (cod_venda, quantidade, data, cod_forn)
• Ser on delete – cascade
• Ser on update – cascade
Peca (cod_peca, nome, descricao)
• É obrigatório que:
• Todos os atributos das cinco relações não sejam nulos.
• cod_venda seja auto incrementado pelo sistema.
• quantidade seja maior que zero.
• Nome da peça seja único.
Tipos Definidos pelo Usuário
• A SQL aceita duas formas de tipos de dados definidos
pelo usuário:
• Tipos distintos; e
• Tipos estruturados.
• É possível que vários atributos possuam o mesmo tipo
de dados.
• O tipos de dados definidos pelo usuário se propõe a
fazer algumas separações como comparar um valor
monetário em dólares e em libras, por exemplo.
Tipos Definidos pelo Usuário
• A cláusula CREATE TYPE (SQL:1999) pode ser utilizada
para criação de um novo tipo.
Ex.: CREATE TYPE Dolar AS numeric (10,2) final
CREATE TYPE Libra AS numeric (10,2) final
• Os tipos recém criados podem ser utilizados como tipos
de atributos nas relações.
Ex.: CREATE TABLE Conta (num_conta char(10), nome_agencia
varchar(15), saldo Dolar)
Tipos Definidos pelo Usuário
• Anterior ao SQL:1999 a SQL possuia uma notação
semelhante chamada tipo de domínio (SQL-92).
• A cláusula em questão era CREATE DOMAIN.
Ex.: CREATE DOMAIN Dolar AS numeric (10,2)
Índices
• Utilizados para encontrar registros com um valor
específico de uma coluna rapidamente.
• Sem um índice a procura de um registro ocorre de
forma sequencial.
• Qual a implicação disto?
• Quanto maior a tabela, maior será o custo.
Índices
• A utilização de índices torna a busca mais
otimizada.
• Não há necessidade de se varrer todos os registros.
• Como os Índices são Criados?
• Automaticamente: Um índice exclusivo é criado
automaticamente quando você define uma restrição
PRIMARY KEY ou UNIQUE em uma definição de tabela.
• Manualmente: Usuários podem criar índices não-
exclusivos em colunas para acelerar o tempo de acesso
às linhas
Índices
• Quando não utilizar índices:
• Quando a tabela for pequena.
• Quando as colunas não forem utilizadas com frequência
como uma condição na consulta.
• Quando a tabela for atualizada com frequência.
Índices
• Índices podem ser criados tanto no momento da
concepção da tabela quanto em uma tabela já
existente.
• Sintaxe de criação de índices:
CREATE [UNIQUE|FULLTEXT] INDEX nome_indice
ON nome_tabela (index_col_name,...)
Índices
• Exemplos:
CREATE TABLE CLIENTES(Codigo INT, Nome VARCHAR(50),
INDEX (Codigo));
CREATE TABLE TESTE(Nome VARCHAR(40) NOT NULL,
INDEX Nome_indice (Nome(10)));
CREATE TABLE TESTE (id INT NOT NULL, ultimo_nome
CHAR(30) NOT NULL, primeiro_nome CHAR(30) NOT
NULL, PRIMARY KEY (id), INDEX nome (ultimo_nome,
primeiro_nome));
Índices
• Caso a tabela já existir:
CREATE INDEX idx_CLIENTES_CODIGO ON
CLIENTES(Codigo);
• Para alterar:
ALTER TABLE TESTE ADD INDEX(campo1, campo2);
Índices
• Para eliminar um índice:
DROP INDEX indice_nome ON tabela_nome
• Ex.: DROP INDEX
OBS.: Para excluir uma chave primária, o nome do índice é
sempre PRIMARY, que deve ser especificado como um
identificador entre aspas porque PRIMARY é uma palavra
reservada.
Exercício
• Elabore as relações a seguir conforme o solicitado
nas regras.
Empregado(matricula, nome, salario, supervisor, depto)
Departamento(codDep, nome, gerente, dataIni)
Projeto(codProj, nome, local, depart)
Alocacao(matricula, codProj, horas)
Dependente(codDepend, matricula, nome, sexo)
Exercício
• Regras:
• As chaves primárias das relações devem ser
automaticamente incrementadas pelo sistema.
• Nenhum dos atributos pode ser nulo, com exceção do
atributo supervisor pertencente a relação Empregado.
• O nome do projeto e o nome do departamento devem
ser únicos.
• Quando nada for digitado para ser armazenado no
atributo supervisor, na relação Empregado, “Não tem
supervisor” deve ser escrito em seu lugar.
Exercício
• Qualquer atualização ou deleção deve ser feito em
cascata pelo sistema.
• Na relação Empregado, o atributo nome deve ser
utilizado como um índice de tamanho 10.
• Crie um índice para a relação Empregado e inclua o
atributo matricula como índice.
• Altere a relação Departamento de modo a incluir um
índice nos atributos nome e gerente.
• Altere a relação Dependente de modo a incluir um
índice nos atributos codDepend e matricula.
• Exclua o índice presente na relação Empregado.
Arquitetura e
Gerenciamento de Banco
de Dados
SQL – (DDL)
Profª Débora Souza
debora.slsouza@gmail.com

Agbd aula4 sql_ddl

  • 1.
    Arquitetura e Gerenciamento deBanco de Dados SQL – (DDL) Profª Débora Souza debora.slsouza@gmail.com
  • 2.
    Introdução • SQL (StructuredQuery Language) é um padrão de linguagem de consulta comercial. • SQL usa uma combinação de construtores em álgebra relacional e cálculo relacional. • Embora o próprio nome se refira a SQL como uma linguagem de consulta, ela possui outros recursos.
  • 3.
    Introdução • Modelo relacionalencontra-se padronizado pela indústria de informática. Ele é chamado de padrão SQL. • O padrão SQL define precisamente uma interface SQL para a definição de: • Tabelas • Operações sobre tabelas (seleção, junção e outras); e • Definição de regras de integridade de bancos de dados.
  • 4.
    Introdução • A SQLé implementada em praticamente todos os sistemas de bancos de dados relacionais existentes. • Fabricantes de diferentes SGBDs apresentam variações de SQL. • Ex.: PL/SQL • A existência de padrões facilita a interoperabilidade.
  • 5.
    Histórico • A IBMdesenvolveu a versão original da SQL, originalmente chamada Sequel, no início da década de 1970. • Parte do projeto System R. • Com a evolução da linguagem, está passou a ser chamada de SQL (Structured Query Language). • A SQL se estabeleceu como linguagem padrão de banco de dados relacional.
  • 6.
    Histórico • Em 1986o ANSI e a ISO publicaram um padrão SQL o SQL-86. Apos este, alguns outros surgiram: • SQL-89 • SQL-92 • SQL:1999 • SQL:2003
  • 7.
    Partes da SQL •A SQL possui várias partes: • Linguagem de definição de dados (DDL) • Linguagem de manipulação de dados (DML) • Integridade (DDL) • Definições de visões (DDL) • Controle de transações (DDL) - Especificar o início e o fim de transações. • SQL embutida e SQL dinâmica - Definem como as instruções SQL podem ser incorporadas dentro das linguagens de programação de finalidade geral (C, C++, Java). • Autorização (DDL)
  • 8.
    Tipos de DomíniosBásicos • char(n) - string de caracteres de tamanho fixo n. • varchar(n) - string de caracteres de tamanho variável, com tamanho n máximo. • int - subconjunto finito de inteiros que é dependente da máquina. • smallint - inteiro pequeno (dependente da máquina). • numeric(p,d) - número de ponto fixo com precisão especificada. • Ex.: numeric(3,1) aceita o valor 33,1, mas não aceita 333,1. • real, double precision - números de ponto flutuante. • float(n) - número de ponto flutuante, com precisão de pelo menos n dígitos.
  • 9.
    Comandos SQL • Oscomandos SQL para definição de dados são: • CREATE • DROP • ALTER
  • 10.
    O comando CREATE •O comando CREATE pode ser utilizado para criação de: • Tabelas (relações) • Domínios próprios • View • Entre outros.
  • 11.
    O Comando CREATE •Para criação de tabelas (relações): • CREATE TABLE : especifica uma nova relação (tabela). Cada relação possui um nome e um conjunto de atributos (colunas), bem como o tipo deste e possíveis restrições. • Sintaxe: CREATE TABLE nome (A1 D1, A2 D2, ..., An Dn, <regra de integridade1>, ..., <regra de integridadeK> ) • Onde nome é o nome da relação, Ai é um nome de atributo e Di é o domínio do atributo Ai.
  • 12.
    O Comando CREATE •As definições dos atributos têm o seguinte formato: • Atributo Tipo [NOT NULL [UNIQUE]] [DEFAULT valor] [AUTO_INCREMENT] • Onde: • Atributo: nome do atributo que está sendo definido. • Tipo: domínio do atributo. • NOT NULL: expressa que o atributo não pode receber valores nulos. • UNIQUE: indica que o atributo tem valor único na tabela. • DEFAULT valor: indica um valor a ser atribuído ao atributo caso não seja determinado um valor na inserção. • AUTO_INCREMENT : utilizado para automatizar um código, geralmente a chave primária.
  • 13.
    O Comando CREATE •Existem diversas restrições de integridade permitidas, entre elas: • Integridade de chave: • PRIMARY KEY (atributos chave) • Integridade referencial: • FOREIGN KEY (atributos) REFERENCES tabela_base(atributos) • Integridade de domínio: • CHECK (condição)
  • 14.
    Integridade de Chave •Definida com a cláusula PRIMARY KEY. • Não são permitidos valores duplicados em uma chave primária, ou seja, a chave primária é única. • Geralmente, não é possível alterar chaves primárias.
  • 15.
    Integridade de Chave •Exemplo da construção de uma relação utilizando chave primária. CREATE TABLE empregado (matricula INT AUTO_INCREMENT, nome VARCHAR(40) NOT NULL, sexo CHAR, salario NUMERIC(10,2), depto INT NOT NULL, PRIMARY KEY (matricula));
  • 16.
    Integridade Referencial • Definidacom a cláusula FOREIGN KEY • Não é possível definir chaves estrangeiras sem chaves primárias (exclusivas) existentes. • Uma chave estrangeira deve corresponder a um valor de chave primária existente
  • 17.
    Integridade Referencial • Exemploda construção de uma relação utilizando chave estrangeira. CREATE TABLE empregado (matricula INT AUTO_INCREMENT, ... FOREIGN KEY (depto) REFERENCES departamento(codDep));
  • 18.
    Integridade Referencial • Acláusula FOREIGN KEY inclui regras de remoção/atualização: • FOREIGN KEY (nome_coluna) REFERENCES nome_tabela [ON DELETE {RESTRICT|CASCADE|SET NULL| SET DEFAULT}] [ON UPDATE {RESTRICT|CASCADE|SET NULL| SET DEFAULT}] • Supondo que T2 tem uma chave estrangeira para T1, vejamos as cláusulas ON DELETE e ON UPDATE
  • 19.
    Integridade Referencial • ONDELETE: • 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.
  • 20.
    Integridade Referencial • ONUPDATE • 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 para NULL. • SET DEFAULT: update de T1 implica que valores da chave estrangeira de T2 nas linhas que combinam terão valores default aplicados.
  • 21.
    Integridade Referencial • Exemploda construção de uma relação utilizando chave estrangeira. CREATE TABLE empregado (matricula INT AUTO_INCREMENT, ... FOREIGN KEY (depto) REFERENCES departamento(codDep) ON UPDATE CASCADE);
  • 22.
    A Cláusula CHECK •Define uma condição que cada linha deve satisfazer. • Uma única coluna pode ter várias restrições CHECK que fazem referência à coluna na sua definição. • As restrições CHECK podem ser definidas no nível da coluna ou da tabela.
  • 23.
    A Cláusula CHECK •Exemplo da construção de uma relação utilizando a cláusula CHECK. CREATE TABLE estudante ( nome char(15) NOT NULL, id_estudante char(10) NOT NULL, nivel char(15) NOT NULL, PRIMARY KEY (id_estudante), CHECK (nivel IN (“Bacharelado”, ”Mestrado”, ”Doutorado”)));
  • 24.
    O Comando CREATE– Exemplo CREATE TABLE empregado (matricula INT NOT NULL AUTO_INCREMENT, nome VARCHAR(40) NOT NULL, sexo CHAR, salario NUMERIC(10,2), depto INT NOT NULL, PRIMARY KEY (matricula), CHECK (salario >= 724,00), FOREIGN KEY (depto) REFERENCES departamento(codDep) ON UPDATE CASCADE ON DELETE CASCADE); Observação: este exemplo supõe que a tabela departamento já exista.
  • 25.
    O Comando DROP •Remove uma relação do banco de dados. • Exclui todas as informações sobre a relação removida. • Sintaxe: DROP TABLE [IF EXISTS] nome; Onde: • IF EXISTS: preveni um erro de ocorrer se a relação não existir. • nome: nome da relação a ser removida. • Exemplo: • DROP TABLE IF EXISTS empregado;
  • 26.
    O Comando ALTER •Permite alterar a estrutura da tabela existente. • Adicionar ou deletar colunas, alterar o tipo de coluna existentes, ou renomear coluna ou tabelas, entre outros. • Os novos atributos terão valores nulos em todas as linhas. • A inclusão de uma coluna requer a especificação do seu tipo de dado. • Está não pode ser definida como NOT NULL.
  • 27.
    O Comando ALTER •Sintaxe: • ALTER TABLE nome_relação Opção Descrição ADD [COLUMN] Adiciona uma ou mais colunas CHANGE [COLUMN] Altera o nome da coluna MODIFY [COLUMN] Altera o domínio da coluna DROP [COLUMN] Exclui uma coluna RENAME [TO] Renomeia a Tabela Tabela 1 – Algumas das especificações de ALTER TABLE
  • 28.
    O Comando ALTER •Exemplos: • ALTER TABLE nome_tbl RENAME TO novo_nome; • ALTER TABLE clientes DROP email; • ALTER TABLE tarefa ADD COLUMN complete DECIMAL(2,1) AFTER description;
  • 29.
    Escolha do SGBD •Para está disciplina o SGBD foi escolhido o MySQL.
  • 30.
    Escolha do SGBD •O download do MySQL pode ser feito através do site: • http://dev.mysql.com/downloads/ • Nesta disciplina vamos utiliza-lo através do sistema operacional Ubuntu. • Para fazer o acesso é necessário pelo terminal digite: • mysql -uroot -p
  • 31.
    Criação do BD •Criação do banco de dados: • create database nome_do_banco; • Usando o banco de dados: • use nome_do_banco;
  • 32.
    Exercício 1. Criar trêsrelações baseadas no funcionamento do IFAL. • Uma das relações deve conter no mínimo 4 domínios de atributos diferentes. • Cada relação deve conter ao menos uma regra de integridade. 2. Escolha uma das relações e faça no mínimo 3 alterações diferentes, sendo uma de cada vez. 3. Pesquise a sintaxe completa para ALTER TABLE e faça, ao menos, 2 modificações diferentes na(s) tabela(s) a sua escolha.
  • 33.
    Exercício 4. Crie umarelação cliente e a relação vendedor. 5. Defina as relações a seguir usando SQL: Fornecedor (codigo, nome, cidade) Venda (cod_venda, quantidade, data, cod_forn) • Ser on delete – cascade • Ser on update – cascade Peca (cod_peca, nome, descricao) • É obrigatório que: • Todos os atributos das cinco relações não sejam nulos. • cod_venda seja auto incrementado pelo sistema. • quantidade seja maior que zero. • Nome da peça seja único.
  • 34.
    Tipos Definidos peloUsuário • A SQL aceita duas formas de tipos de dados definidos pelo usuário: • Tipos distintos; e • Tipos estruturados. • É possível que vários atributos possuam o mesmo tipo de dados. • O tipos de dados definidos pelo usuário se propõe a fazer algumas separações como comparar um valor monetário em dólares e em libras, por exemplo.
  • 35.
    Tipos Definidos peloUsuário • A cláusula CREATE TYPE (SQL:1999) pode ser utilizada para criação de um novo tipo. Ex.: CREATE TYPE Dolar AS numeric (10,2) final CREATE TYPE Libra AS numeric (10,2) final • Os tipos recém criados podem ser utilizados como tipos de atributos nas relações. Ex.: CREATE TABLE Conta (num_conta char(10), nome_agencia varchar(15), saldo Dolar)
  • 36.
    Tipos Definidos peloUsuário • Anterior ao SQL:1999 a SQL possuia uma notação semelhante chamada tipo de domínio (SQL-92). • A cláusula em questão era CREATE DOMAIN. Ex.: CREATE DOMAIN Dolar AS numeric (10,2)
  • 37.
    Índices • Utilizados paraencontrar registros com um valor específico de uma coluna rapidamente. • Sem um índice a procura de um registro ocorre de forma sequencial. • Qual a implicação disto? • Quanto maior a tabela, maior será o custo.
  • 38.
    Índices • A utilizaçãode índices torna a busca mais otimizada. • Não há necessidade de se varrer todos os registros. • Como os Índices são Criados? • Automaticamente: Um índice exclusivo é criado automaticamente quando você define uma restrição PRIMARY KEY ou UNIQUE em uma definição de tabela. • Manualmente: Usuários podem criar índices não- exclusivos em colunas para acelerar o tempo de acesso às linhas
  • 39.
    Índices • Quando nãoutilizar índices: • Quando a tabela for pequena. • Quando as colunas não forem utilizadas com frequência como uma condição na consulta. • Quando a tabela for atualizada com frequência.
  • 40.
    Índices • Índices podemser criados tanto no momento da concepção da tabela quanto em uma tabela já existente. • Sintaxe de criação de índices: CREATE [UNIQUE|FULLTEXT] INDEX nome_indice ON nome_tabela (index_col_name,...)
  • 41.
    Índices • Exemplos: CREATE TABLECLIENTES(Codigo INT, Nome VARCHAR(50), INDEX (Codigo)); CREATE TABLE TESTE(Nome VARCHAR(40) NOT NULL, INDEX Nome_indice (Nome(10))); CREATE TABLE TESTE (id INT NOT NULL, ultimo_nome CHAR(30) NOT NULL, primeiro_nome CHAR(30) NOT NULL, PRIMARY KEY (id), INDEX nome (ultimo_nome, primeiro_nome));
  • 42.
    Índices • Caso atabela já existir: CREATE INDEX idx_CLIENTES_CODIGO ON CLIENTES(Codigo); • Para alterar: ALTER TABLE TESTE ADD INDEX(campo1, campo2);
  • 43.
    Índices • Para eliminarum índice: DROP INDEX indice_nome ON tabela_nome • Ex.: DROP INDEX OBS.: Para excluir uma chave primária, o nome do índice é sempre PRIMARY, que deve ser especificado como um identificador entre aspas porque PRIMARY é uma palavra reservada.
  • 44.
    Exercício • Elabore asrelações a seguir conforme o solicitado nas regras. Empregado(matricula, nome, salario, supervisor, depto) Departamento(codDep, nome, gerente, dataIni) Projeto(codProj, nome, local, depart) Alocacao(matricula, codProj, horas) Dependente(codDepend, matricula, nome, sexo)
  • 45.
    Exercício • Regras: • Aschaves primárias das relações devem ser automaticamente incrementadas pelo sistema. • Nenhum dos atributos pode ser nulo, com exceção do atributo supervisor pertencente a relação Empregado. • O nome do projeto e o nome do departamento devem ser únicos. • Quando nada for digitado para ser armazenado no atributo supervisor, na relação Empregado, “Não tem supervisor” deve ser escrito em seu lugar.
  • 46.
    Exercício • Qualquer atualizaçãoou deleção deve ser feito em cascata pelo sistema. • Na relação Empregado, o atributo nome deve ser utilizado como um índice de tamanho 10. • Crie um índice para a relação Empregado e inclua o atributo matricula como índice. • Altere a relação Departamento de modo a incluir um índice nos atributos nome e gerente. • Altere a relação Dependente de modo a incluir um índice nos atributos codDepend e matricula. • Exclua o índice presente na relação Empregado.
  • 47.
    Arquitetura e Gerenciamento deBanco de Dados SQL – (DDL) Profª Débora Souza debora.slsouza@gmail.com