(create table , constraints, delete, update e...

38
BANCO DE DADOS 2 SQL (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e INSERT) Prof. Edson Thizon

Upload: trinhliem

Post on 19-Jan-2019

228 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

BANCO DE DADOS 2

SQL(CREATE TABLE ,

CONSTRAINTS,DELETE, UPDATE e INSERT)

Prof. Edson Thizon

Page 2: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

SQL

• SQL (“structured query language”) é uma linguagem comercial de definição e manipulação de banco de dados relacional.

• SQL (inicialmente chamava-se SEQUEL) surgiu no centro de pesquisa de San Jose da IBM, dentro do projeto System R

• SQL é padrão de fato (mesmo SGBDs como INGRES que possuíam outras linguagens oferecem uma interface SQL)

• SQL é padrão de direito (ISO):– SQL1 aprovado em 1986, com modificações em 1989– SQL2 aprovado em 1992– SQL3 aprovado em 1999

Page 3: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Componentes do SQL (1)

• SQL é uma linguagem completa de manipulação de banco de dados.

• Oferece as seguintes funcionalidades:– Uma DDL para definição do esquema da base de

dados– Uma DML para programação de consultas e

transações que inserem, removem e alteram linhas de tabelas

• Uma versão de SQL embutida em linguagens de programação de 3ª geração (COBOL, C, …) estendendo-as para a manipulação de banco de dados.

Page 4: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Componentes do SQL (2)

• Um padrão para comunicação cliente/servidor (ODBC - open databaseconnectivity) a partir de SQL/3

• Instruções para definição de visões (tabelas virtuais vistas por um usuário ou uma classe de usuários)

• Instruções para controle de autorização de acesso

• Instruções para controle de transações e concorrência

• Instruções para especificação de restrições de integridade

Page 5: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Padrões de SQL

• A aderência a padrões de SQL é importante para aqueles que: – escrevem comandos de SQL em suas aplicações (SQL não

fica oculto por algum gerador de telas..)– desejam portar aplicações a vários SGBD– O padrão é irrelevante para aqueles que usam ferramentas

como geradores de telas, relatórios, etc. proprietários - o usuário está preso ao fornecedor da ferramenta

– Praticamente todo fornecedor de SGBD afirma que seu SQL é compatível com o padrão

– Grandes fornecedores (Oracle, Sybase, DB/2, SQL/Server) normalmente têm pelo menos SQL/2 entry level (entry-level, conjunto mínimo para considerar produto como SQL/2)

Page 6: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

DDL – Criação de banco de dados

• SQL/2 não oferece instruções para criação de BD.

• Alguns produtos (SQL/Server) têm instruções de DDL:– Create Database

• cria uma base de dados vazia

– Drop Database• elimina uma base de dados

• Outros têm abordagens variadas– Oracle cria o BD como parte da instalação do

software– INGRES tem um utilitário

Page 7: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Instruções da DDL

• SQL oferece três instruções para definição do esquema da base de dados:– Create Table

• define a estrutura de uma tabela, suas restrições de integridade e cria a tabela vazia

– Drop Table• elimina a tabela da base de dados

– Alter Table• permite modificar a definição de uma tabela

Page 8: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Observações sobre a definição de tabelas

• Em SQL/2 o conjunto de domínios de valores de atributos é fixo.

• Desejável (SQL/3, poucos produtos implementam)

• domínio definível pelo usuário (exemplo: dias da semana, meses do ano, …)

• Nos SGBD comerciais são oferecidos domínios adicionais aos do padrão (CHAR, VARCHAR, INTEGER, REAL,…) destinados a aplicações especiais como DATE, CURRENCY e domíniospara armazenar campos longos (BLOBS, até 2 gigabytes) destinados a conter imagens, sons, vídeos, etc. (maioria aparece no SQL/2)

Page 9: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Observações sobre a definição de tabelas

• A cláusula NOT NULL especifica que uma coluna não admite o valor vazio (requerido para colunas que sejam chave primária)

• Default é NULL permitido (exceto Sybase e SQL/Server antigos)

• As colunas de uma tabela são classificadas na ordem de sua definição (linhas não tem classificação)

Page 10: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

LIMITES DO ORACLE RDBMS

ITEM LIMITETabela na Base de dados Não há limites.Linhas por Tabelas Não há limitesColunas por tabelas 254Indices por tabelas Não há limitesTebelas ou views joined emuma query

Não há limites

Niveis de ninho de subqueries30Caracteres em um nome 255Colunas por índices 16

Page 11: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

TIPOS DE DADOS(DATATYPES)

TIPO DESCRIÇÃO DO TIPO DE DADOChar(n) Tamanho Fixo, pode conter uma seqüência de 1 a 255

bytes alfanuméricos;Varchar2(n) Tamanho Variável, pode conter uma seqüência de 1 a

2000 bytes - alfanuméricos.Long Tamanho Variável até 2 Gigabytes alfanuméricos

nota : só pode existir uma coluna long em cada tabelaNumber(p,s) Numérico com sinal e ponto decimal,

sendo precisão de 1 a 38 dígitosRaw Binário - Variável até 255 bytesLong Raw Binário - Variável até 2 gigabytes - imagemDate Data c/ hora, minuto e segundo

Page 12: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

CREATE TABLE DEPT(DEPTNO NUMBER(2) ,DNAME VARCHAR2(14),LOC VARCHAR2(13));

Comando para criar Tabela

Page 13: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Outro Exemplo:

Create tableALUNO

(cd_alunonumber(5) not null nm_alunovarchar2(30) not null);

Page 14: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Eliminando uma tabela

• Para eliminar completamente uma tabela (vazia ou não) da base de dados, é usada a instrução:– DROP TABLE ALUNO;

• SQL/2 inclui cláusulas RESTRICT e CASCADE (obrigatória) que informam se a exclusão deve ser propagada ou não para objetos definidos com base na tabela (visões)– Exemplo

• DROP TABLE aluno RESTRICT;– Exclui a tabela somente se não existirem visões definidas

com base na tabela• DROP TABLE ALUNO CASCADE CONSTRAINT;

– Exlui a tabela com todas as constraints relacionadas

Page 15: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Alterando uma Tabela

• A instrução ALTER TABLE serve para modificar a definição original da tabela.

• Nem todas modificações são permitidas• Primeiros SGBDs e SQL/1 somente

permitiam adicionar colunas

Page 16: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Alterando a definição de uma Tabela

• Para modificar a estrutura de tabelas jáexistentes na base de dados, há uma instrução que permite adicionar colunas a tabelas:– ALTER TABLE Embarq ADD DataEmbarq DATE

• Observe-se que:– A instrução adiciona uma nova coluna com o valor vazio

para todas linhas– Os valores para as diversas linhas devem ser adicionadas

através de instruções da DML– Não pode ser especificada a cláusula NOT NULL já que a

coluna é criada com o valor vazio

Page 17: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Alterando a definição de uma Tabela

• SGBD não permite a alteração desejada• Para fazer a alteração:

1. Armazenar o conteúdo da tabela em tabela temporária ou arquivo do sistema operacional

2. Eliminar todas referencias a tabela antiga3. Eliminar a tabela antiga (DROP TABLE)4. Definir a nova tabela (CREATE TABLE)5. Carregar a nova tabela a partir da tabela

intermediária ou arquivo do sistema operacional criado no passo 1

6. Reincluir as referencias à tabela

Page 18: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Verificando estrutura da tabela

Desc nome_tabela;

Page 19: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Restrições de Chave

• No SQL original (System R) e no SQL padrão original (86) não havia cláusulas para especificar chaves.

• A única maneira de definir chave primária era através da criação de um índice sem duplicatas sobre a coluna.

• Não havia forma declarativa de definir chaves estrangeiras.– SGBD não dava suporte a integridade referencial.– Usuário é obrigado a programar os testes de

chaves em sua aplicação

Page 20: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Integridade Referencial nos SGBD

• Padrão (86/89) foi estendido para especificar chaves:– primária

– estrangeira– alternativa (unique key)

Praticamente todos produtos comerciais incluem a definição de

Page 21: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Integridade Referencial (ORACLE)

• As integridades dos dados são definidas através de objetos Constraints, que podem ser:– Not null– Unique Key– Primary Key– Check– Foreign Key

Page 22: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Not Null

Não permite a entrada de valores nulos em uma determinada coluna.

Exemplo:Create tableALUNO1 (cd_alunonumber(5) not null,nm_aluno varchar2(30) not null);

Page 23: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Constraint Primary Key

• Identifica unicamente uma tabela

• Exemplo:– Create tableALUNO2 (cd_aluno number(5) not null,

nm_aluno varchar2(30) not null,constraint aluno_pkprimary key ( cd_aluno));

Page 24: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Constraint Unique Key

É definido para garantir que o valor de uma coluna seja único.

Exemplo Create tableALUNO3 (cd_alunonumber(5) not null,

nm_aluno varchar2(30) not null,cd_cpf varchar2(14),constraint aluno_pkprimary key( cd_aluno),constraint alu_cpf_ukunique(cd_cpf));

Page 25: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Constraint Check

• São validações de colunas.

• Exemplo 1:– Create tableAluno (cd_aluno number(5) not null,

nm_aluno varchar2(30),

tp_sexo char(1),

constraint aluno_pk primary key (cd_aluno),

constraint sexo_ck check (tp_sexo in (‘M’,’F’));

Page 26: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Constraint Check

Exemplo 2:ALTER TABLE Cliente ADD CONSTRAINT ValidaCampos CHECK (TipoCli=“Pessoa Física”

AND CIC IS NOT NUL AND CGC IS NULL)

OR (TipoCli=“Pessoa Jurídica”AND CIC IS NULL AND CGC IS NOT NULL)

Page 27: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Constraint Foreign Key

• Coluna que referencia a chave primária de outra tabela, indicando um relacionamento entre ambas as tabelas envolvidas.

Page 28: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Foreign Key

FOREIGN KEY- Define a coluna na tabela filho que possua a chave estrangeira

REFERENCES - Identifica a tabela e a coluna da tabela pai

ON DELETE CASCADE - Indica que quando uma linha na tabela pai é deletada, as linhas dependentes na tabela filho também são deletadas.

Page 29: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Exemplo de Foreign Key

Create tablematricula(cd_cursonumber(5) not null,cd_alunonumber(5) not null,dt_matricula date not null,

constraint mat_pk primary key (cd_curso,cd_aluno),constraint alu_mat_fk foreign key (cd_aluno)referencesaluno(cd_aluno));

Page 30: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

ALTER TABLE CONSTRAINT

• ALTER TABLE permite incluir ou excluir restrições de chave– ALTER TABLE Representantes DROP PRIMARY

KEY

• Para excluir uma chave estrangeira énecessário que ela tenha recebido um nome quando de sua definição– ALTER TABLE Representantes ADD FOREIGN

KEY (CodFilial) REFERENCES Filiais– ALTER TABLE Representantes DROP FOREIGN

KEY (CodFilial) REFERENCES Filiais

Page 31: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Visualizando as colunas associadas as constraints

(Oracle)

Use a visão User_cons_columns

Exemplo:

Select constraint_name, column_name

from User_cons_columns

where table_name = ‘EMP’;

Page 32: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Gerenciando Constraints

• Comando ALTER TABLE Aluno– ADD constraint aluno_pk primary key

(nm_aluno);

– ENABLE constraint mat_alu_fk;

– DISABLE constraint mat_alu_fk;

– DROP constraint mat_alu_fk;

Page 33: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Consultando Constraints

Use a tabela User_constraints para visualisar todas as definições e nomes das constraint.

Exemplo:

Select constraint_name, constraint_type, search_condition

from user_constraints

where table_name= ‘EMP’;

Page 34: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

SQL – Instruções de atualização

• SQL provê três instruções de atualização do conteúdo de tabelas previamente definidas e criadas pelo CREATE TABLE– INSERT

• serve para inserir uma ou mais linhas em uma tabela

– DELETE• serve para excluir uma ou mais linhas de uma tabela

– UPDATE• serve para alterar os dados de uma ou mais linhas de

uma tabela

Page 35: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

INSERT INTO DEPTVALUES (50, ´TESOURARIA', 'TUBARAO',1000);

INSERT INTO DEPT(DNAME,DEPTNO)VALUES (´CAIXA',60);

Inserindo dados em Tabelas

Page 36: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

ATUALIZANDO REGISTROS

Alterar o Cardo do empregado Martins para Manager:UPDATE EMPSET JOB='MANAGER'WHERE ENAME='MARTIN'; (Where é opcional)

ATUALIZANDO VÁRIOS REGISTROS

Alterar o nome da Função SALESMAN para VENDEDOR para todos os empregados:UPDATE EMPSET JOB='VENDEDOR'WHERE JOB='SALESMAN';

Atualizando Dados em Tabelas

Page 37: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Apagar o empregado Martins:

DELETE FROM EMPWHERE ENAME='MARTINS'; (Where é opcional)

Apagar todos os empregados que são do departamento 20:

DELETE FROM DEPTWHERE DEPTNO=20;

Deletando Dados nas Tabelas

Page 38: (CREATE TABLE , CONSTRAINTS, DELETE, UPDATE e …paginas.unisul.br/edson.thizon/PDF/aula1_sql_revisao_createtable... · de programação de 3ª geração (COBOL, C, …) estendendo-as

Referências Bibliográficas

• KORTH, Henry F. & SILBERSCHATZ, Abraham. Sistemas de Bancos de Dados, São Paulo. Ed. Makron Books, 1999.

• HEUSER, Carlos Alberto. Projeto de Banco de Dados. 4ª Edição. Ed. Sagra, 2001.

• FERNANDES, Lúcia. Oracle 9i ParaDesenvolvedores Oracle Developer 6i Curso Completo. Ed. Axcel. 2002.

• ABBEY, Michael. Oracle: guia do usuário. São Paulo: Markon Books, 1997.