SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLDaniel Brandão
 
Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1Arley Rodrigues
 
TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLFábio Delboni
 
Aula de SQL - Básico
Aula de SQL - BásicoAula de SQL - Básico
Aula de SQL - BásicoAirton Zanon
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011JogosUnisinos
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosMarcos Thomaz
 
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUACândido Sales Gomes
 
Comandos DDL para o MySQL
Comandos DDL para o MySQLComandos DDL para o MySQL
Comandos DDL para o MySQLArley Rodrigues
 
Aula7 sql basico_6por_pag
Aula7 sql basico_6por_pagAula7 sql basico_6por_pag
Aula7 sql basico_6por_paganacri
 
Swift em 45 minutos - TDC Sao Paulo 2014
Swift em 45 minutos - TDC Sao Paulo 2014Swift em 45 minutos - TDC Sao Paulo 2014
Swift em 45 minutos - TDC Sao Paulo 2014Helder da Rocha
 
Introdução ao Ruby
Introdução ao RubyIntrodução ao Ruby
Introdução ao RubyMilton Moura
 
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQL
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQLT@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQL
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQLTargettrust
 
Sql - Introdução ao mysql
Sql - Introdução ao mysqlSql - Introdução ao mysql
Sql - Introdução ao mysqlArley Rodrigues
 
T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012Rodrigo Ribeiro
 

Tendances (20)

Bd sql (1)
Bd sql (1)Bd sql (1)
Bd sql (1)
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQL
 
Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1
 
TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQL
 
Basesdedados
BasesdedadosBasesdedados
Basesdedados
 
Aula de SQL - Básico
Aula de SQL - BásicoAula de SQL - Básico
Aula de SQL - Básico
 
Bd08
Bd08Bd08
Bd08
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011
 
Linguagem SQL
Linguagem SQLLinguagem SQL
Linguagem SQL
 
Um pouco sobre sql
Um pouco sobre sqlUm pouco sobre sql
Um pouco sobre sql
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos Comandos
 
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
 
Comandos DDL para o MySQL
Comandos DDL para o MySQLComandos DDL para o MySQL
Comandos DDL para o MySQL
 
Aula7 sql basico_6por_pag
Aula7 sql basico_6por_pagAula7 sql basico_6por_pag
Aula7 sql basico_6por_pag
 
Swift em 45 minutos - TDC Sao Paulo 2014
Swift em 45 minutos - TDC Sao Paulo 2014Swift em 45 minutos - TDC Sao Paulo 2014
Swift em 45 minutos - TDC Sao Paulo 2014
 
Introdução ao Ruby
Introdução ao RubyIntrodução ao Ruby
Introdução ao Ruby
 
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQL
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQLT@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQL
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQL
 
Sql - Introdução ao mysql
Sql - Introdução ao mysqlSql - Introdução ao mysql
Sql - Introdução ao mysql
 
T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012
 
Apostila de sql
Apostila de sqlApostila de sql
Apostila de sql
 

En vedette

Michael Lutz Resume
Michael Lutz ResumeMichael Lutz Resume
Michael Lutz ResumeMichael Lutz
 
Trabalho academico para promover uma Cokeblak
Trabalho academico para promover uma CokeblakTrabalho academico para promover uma Cokeblak
Trabalho academico para promover uma Cokeblakaline farinha
 
3Com 3C17539
3Com 3C175393Com 3C17539
3Com 3C17539savomir
 
Alcatel-Lucent KS24787L1
Alcatel-Lucent KS24787L1Alcatel-Lucent KS24787L1
Alcatel-Lucent KS24787L1savomir
 
Local Move Project Sales
Local Move Project SalesLocal Move Project Sales
Local Move Project Salesvasin_s
 
3Com 3C10402B / 655-0342
3Com 3C10402B / 655-03423Com 3C10402B / 655-0342
3Com 3C10402B / 655-0342savomir
 
Trabajo practico juanito laguna (2)
Trabajo practico juanito laguna (2)Trabajo practico juanito laguna (2)
Trabajo practico juanito laguna (2)nanoyjose
 
3Com 3C16610
3Com 3C166103Com 3C16610
3Com 3C16610savomir
 
A picture is worth a thousand words Analysis
A picture is worth a thousand words     AnalysisA picture is worth a thousand words     Analysis
A picture is worth a thousand words Analysisfeuyang tekeu vanessa
 
Qué sabemos de redes
Qué sabemos de redesQué sabemos de redes
Qué sabemos de redesnanoyjose
 
Manipulación de la basura
Manipulación de la basuraManipulación de la basura
Manipulación de la basuraeesquiveln
 

En vedette (18)

Michael Lutz Resume
Michael Lutz ResumeMichael Lutz Resume
Michael Lutz Resume
 
sem_project_2
sem_project_2sem_project_2
sem_project_2
 
Informatica
InformaticaInformatica
Informatica
 
Trabalho academico para promover uma Cokeblak
Trabalho academico para promover uma CokeblakTrabalho academico para promover uma Cokeblak
Trabalho academico para promover uma Cokeblak
 
3Com 3C17539
3Com 3C175393Com 3C17539
3Com 3C17539
 
Alcatel-Lucent KS24787L1
Alcatel-Lucent KS24787L1Alcatel-Lucent KS24787L1
Alcatel-Lucent KS24787L1
 
Local Move Project Sales
Local Move Project SalesLocal Move Project Sales
Local Move Project Sales
 
3Com 3C10402B / 655-0342
3Com 3C10402B / 655-03423Com 3C10402B / 655-0342
3Com 3C10402B / 655-0342
 
Trabajo practico juanito laguna (2)
Trabajo practico juanito laguna (2)Trabajo practico juanito laguna (2)
Trabajo practico juanito laguna (2)
 
3Com 3C16610
3Com 3C166103Com 3C16610
3Com 3C16610
 
A picture is worth a thousand words Analysis
A picture is worth a thousand words     AnalysisA picture is worth a thousand words     Analysis
A picture is worth a thousand words Analysis
 
Qué sabemos de redes
Qué sabemos de redesQué sabemos de redes
Qué sabemos de redes
 
Sunil sss
Sunil sssSunil sss
Sunil sss
 
Manipulación de la basura
Manipulación de la basuraManipulación de la basura
Manipulación de la basura
 
16-12-pvi_sunstall
16-12-pvi_sunstall16-12-pvi_sunstall
16-12-pvi_sunstall
 
Simon_CV_word
Simon_CV_wordSimon_CV_word
Simon_CV_word
 
Max
MaxMax
Max
 
Mahalakshmi_Sankaran_Resume
Mahalakshmi_Sankaran_ResumeMahalakshmi_Sankaran_Resume
Mahalakshmi_Sankaran_Resume
 

Similaire à Agbd aula4 sql_ddl

introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptxintroduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptxSaraR49
 
6338 111121071604-phpapp01
6338 111121071604-phpapp016338 111121071604-phpapp01
6338 111121071604-phpapp01Gilson Figueredo
 
Bdm aula 9 - operações sql - ticianne darin
Bdm   aula 9 - operações sql - ticianne darinBdm   aula 9 - operações sql - ticianne darin
Bdm aula 9 - operações sql - ticianne darinTicianne Darin
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdfQuitriaSilva550
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
Banco de dados comandos sql
Banco de dados   comandos sqlBanco de dados   comandos sql
Banco de dados comandos sqlNilson Augustini
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Marco Pinheiro
 
Banco de dados aula 4
Banco de dados aula 4Banco de dados aula 4
Banco de dados aula 4Ed W. Jr
 
Modulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptxModulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptxAugustoNicolau2
 
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQLLabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQLCarlos Santos
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - IntroduçãoMarco Pinheiro
 
Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Emiliano Barbosa
 

Similaire à Agbd aula4 sql_ddl (20)

introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptxintroduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
 
6338 111121071604-phpapp01
6338 111121071604-phpapp016338 111121071604-phpapp01
6338 111121071604-phpapp01
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
 
Bdm aula 9 - operações sql - ticianne darin
Bdm   aula 9 - operações sql - ticianne darinBdm   aula 9 - operações sql - ticianne darin
Bdm aula 9 - operações sql - ticianne darin
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Aprofundamento de DDL e DML
Aprofundamento de DDL e DMLAprofundamento de DDL e DML
Aprofundamento de DDL e DML
 
Python 04
Python 04Python 04
Python 04
 
Banco de dados comandos sql
Banco de dados   comandos sqlBanco de dados   comandos sql
Banco de dados comandos sql
 
SQL.ppt
SQL.pptSQL.ppt
SQL.ppt
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)
 
Banco de dados aula 4
Banco de dados aula 4Banco de dados aula 4
Banco de dados aula 4
 
Modulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptxModulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptx
 
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQLLabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - Introdução
 
Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8
 
Aulas_SQL.pdf
Aulas_SQL.pdfAulas_SQL.pdf
Aulas_SQL.pdf
 
Sql01
Sql01Sql01
Sql01
 

Dernier

Estatística aplicada à experimentação animal
Estatística aplicada à experimentação animalEstatística aplicada à experimentação animal
Estatística aplicada à experimentação animalleandroladesenvolvim
 
LEAN SIX SIGMA - Garantia da qualidade e segurança
LEAN SIX SIGMA - Garantia da qualidade e segurançaLEAN SIX SIGMA - Garantia da qualidade e segurança
LEAN SIX SIGMA - Garantia da qualidade e segurançaGuilhermeLucio9
 
Aula de classificação de rolamentos norma DIN
Aula de classificação de rolamentos norma DINAula de classificação de rolamentos norma DIN
Aula de classificação de rolamentos norma DINFabioFranca22
 
FISIOLOGIA DA REPRODUÇÃO. matéria de fisiologia animal
FISIOLOGIA DA REPRODUÇÃO. matéria de fisiologia animalFISIOLOGIA DA REPRODUÇÃO. matéria de fisiologia animal
FISIOLOGIA DA REPRODUÇÃO. matéria de fisiologia animalPauloHenrique154965
 
A Importância dos EPI's no trabalho e no dia a dia laboral
A Importância dos EPI's no trabalho e no dia a dia laboralA Importância dos EPI's no trabalho e no dia a dia laboral
A Importância dos EPI's no trabalho e no dia a dia laboralFranciscaArrudadaSil
 
Eletricista instalador - Senai Almirante Tamandaré
Eletricista instalador - Senai Almirante TamandaréEletricista instalador - Senai Almirante Tamandaré
Eletricista instalador - Senai Almirante TamandaréGuilhermeLucio9
 
MODELO LAUDO AVALIAÇÃO MÁQUINAS EQUIPAM
MODELO LAUDO AVALIAÇÃO MÁQUINAS  EQUIPAMMODELO LAUDO AVALIAÇÃO MÁQUINAS  EQUIPAM
MODELO LAUDO AVALIAÇÃO MÁQUINAS EQUIPAMCassio Rodrigo
 
Tecnólogo em Mecatrônica - Universidade Anhanguera
Tecnólogo em Mecatrônica - Universidade AnhangueraTecnólogo em Mecatrônica - Universidade Anhanguera
Tecnólogo em Mecatrônica - Universidade AnhangueraGuilhermeLucio9
 
PLANO DE EMERGÊNCIA E COMBATE A INCENDIO.pdf
PLANO DE EMERGÊNCIA E COMBATE A INCENDIO.pdfPLANO DE EMERGÊNCIA E COMBATE A INCENDIO.pdf
PLANO DE EMERGÊNCIA E COMBATE A INCENDIO.pdfAroldoMenezes1
 
Livro Vibrações Mecânicas - Rao Singiresu - 4ª Ed.pdf
Livro Vibrações Mecânicas - Rao Singiresu - 4ª Ed.pdfLivro Vibrações Mecânicas - Rao Singiresu - 4ª Ed.pdf
Livro Vibrações Mecânicas - Rao Singiresu - 4ª Ed.pdfSamuel Ramos
 

Dernier (10)

Estatística aplicada à experimentação animal
Estatística aplicada à experimentação animalEstatística aplicada à experimentação animal
Estatística aplicada à experimentação animal
 
LEAN SIX SIGMA - Garantia da qualidade e segurança
LEAN SIX SIGMA - Garantia da qualidade e segurançaLEAN SIX SIGMA - Garantia da qualidade e segurança
LEAN SIX SIGMA - Garantia da qualidade e segurança
 
Aula de classificação de rolamentos norma DIN
Aula de classificação de rolamentos norma DINAula de classificação de rolamentos norma DIN
Aula de classificação de rolamentos norma DIN
 
FISIOLOGIA DA REPRODUÇÃO. matéria de fisiologia animal
FISIOLOGIA DA REPRODUÇÃO. matéria de fisiologia animalFISIOLOGIA DA REPRODUÇÃO. matéria de fisiologia animal
FISIOLOGIA DA REPRODUÇÃO. matéria de fisiologia animal
 
A Importância dos EPI's no trabalho e no dia a dia laboral
A Importância dos EPI's no trabalho e no dia a dia laboralA Importância dos EPI's no trabalho e no dia a dia laboral
A Importância dos EPI's no trabalho e no dia a dia laboral
 
Eletricista instalador - Senai Almirante Tamandaré
Eletricista instalador - Senai Almirante TamandaréEletricista instalador - Senai Almirante Tamandaré
Eletricista instalador - Senai Almirante Tamandaré
 
MODELO LAUDO AVALIAÇÃO MÁQUINAS EQUIPAM
MODELO LAUDO AVALIAÇÃO MÁQUINAS  EQUIPAMMODELO LAUDO AVALIAÇÃO MÁQUINAS  EQUIPAM
MODELO LAUDO AVALIAÇÃO MÁQUINAS EQUIPAM
 
Tecnólogo em Mecatrônica - Universidade Anhanguera
Tecnólogo em Mecatrônica - Universidade AnhangueraTecnólogo em Mecatrônica - Universidade Anhanguera
Tecnólogo em Mecatrônica - Universidade Anhanguera
 
PLANO DE EMERGÊNCIA E COMBATE A INCENDIO.pdf
PLANO DE EMERGÊNCIA E COMBATE A INCENDIO.pdfPLANO DE EMERGÊNCIA E COMBATE A INCENDIO.pdf
PLANO DE EMERGÊNCIA E COMBATE A INCENDIO.pdf
 
Livro Vibrações Mecânicas - Rao Singiresu - 4ª Ed.pdf
Livro Vibrações Mecânicas - Rao Singiresu - 4ª Ed.pdfLivro Vibrações Mecânicas - Rao Singiresu - 4ª Ed.pdf
Livro Vibrações Mecânicas - Rao Singiresu - 4ª Ed.pdf
 

Agbd aula4 sql_ddl

  • 1. Arquitetura e Gerenciamento de Banco de Dados SQL – (DDL) Profª Débora Souza debora.slsouza@gmail.com
  • 2. 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.
  • 3. 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.
  • 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 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.
  • 6. 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
  • 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í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.
  • 9. Comandos SQL • Os comandos 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 • 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
  • 17. 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));
  • 18. 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
  • 19. 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.
  • 20. 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.
  • 21. 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);
  • 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ê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.
  • 33. 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.
  • 34. 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.
  • 35. 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)
  • 36. 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)
  • 37. Í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.
  • 38. Í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
  • 39. Í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.
  • 40. Í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,...)
  • 41. Í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));
  • 42. Índices • Caso a tabela já existir: CREATE INDEX idx_CLIENTES_CODIGO ON CLIENTES(Codigo); • Para alterar: ALTER TABLE TESTE ADD INDEX(campo1, campo2);
  • 43. Í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.
  • 44. 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)
  • 45. 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.
  • 46. 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.
  • 47. Arquitetura e Gerenciamento de Banco de Dados SQL – (DDL) Profª Débora Souza debora.slsouza@gmail.com