1 - SQL (aluno) – Structured Query Language
-
Upload
willian-ricardo -
Category
Documents
-
view
58 -
download
0
Transcript of 1 - SQL (aluno) – Structured Query Language
![Page 1: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/1.jpg)
Linguagem SQLLinguagem SQL
![Page 2: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/2.jpg)
Apresentação
• A álgebra relacional descrita no Capítulo 2 fornece uma notação formal e concisa para representar consultas. Entretanto, os sistemas de banco de dados comerciais exigem uma linguagem de consulta que seja mais amigável.
• Neste capítulo, bem como no Capítulo 4, estudaremos a SQL, a linguagem de consulta mais comercialmente influente. A SQL usa uma combinação de construções de álgebra relacional (Capítulo 2) e cálculo relacional (Capítulo 5).
• Embora nos referimos à SQL como uma "linguagem de consulta", ela pode fazer muito mais do que simplesmente consultar um banco de dados. Ela pode definir a estrutura dos dados, modificar dados no banco de dados e especificar restrições de segurança.
![Page 3: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/3.jpg)
História da SQL
• A IBM desenvolveu a versão original da SQL, originalmente chamada Sequel, como parte do projeto R no início da década de 1970. A linguagem Sequel evoluiu desde então, e seu nome mudou para SQL (Structured Query Language). Muitos produtos agora aceitam a linguagem SQL. A SQL se estabeleceu claramente como a linguagem padrão de banco de dados relacional.
• Em 1986, o American National Standards Institute (ANSI) e a International Organization for Standardization (ISO) publicaram um padrão SQL, chamado SQL-86. Em 1989, o ANSI publicou um padrão estendido para a linguagem: a SQL-89. A próxima versão do padrão foi a SQL-92, seguida da SQL: 1999; a versão mais recente é a SQL:2003. As notas bibliográficas fornecem referências para esses padrões.
![Page 4: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/4.jpg)
Partes da linguagem SQL
• Linguagem de definição de dados (DDL). A DDL da SQL fornece comandos para definir esquemas de relação, excluir relações e modificar esquemas.
conta (número_conta, nome_agência, saldo) create table conta
(número_conta char(10), nome_agência char(15), saldo nuneric(12,2), primary key (número_conta))
• Linguagem de manipulação de dados interativa (DML). A DML da SQL inclui uma linguagem de consulta baseada na álgebra relacional (2) e no cálculo relacional de tupla (5). Ela também inclui comandos para inserir, excluir e modificar tuplas no banco de dados.
![Page 5: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/5.jpg)
Partes da linguagem SQL
• Integridade. A DDL SQL inclui comandos para especificar restrições de integridade às quais os dados armazenados no banco de dados precisam satisfazer. As atualizações que violam as restrições de integridade são proibidas.
• Definição de view. A DDL SQL inclui comandos para definir views.
• Controle de transação. A SQL inclui comandos para especificar o início e o fim das transações.
• SQL embutida e SQL dinâmica. A SQL embutida e a dinâmica definem como as instruções SQL podem ser incorporadas dentro das linguagens de programação de finalidade geral, como C, C++, Java, PL7I, Cobol, Pascal e Fortran.
• Autorização. A DDL SQL inclui comandos para especificar direitos de acesso para relações e views.
![Page 6: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/6.jpg)
Definição de dados
• O conjunto de relações em um banco de dados precisa ser especificado para o sistema por meio de uma linguagem de definição de dados (DDL). A DDL SQL permite a especificação não só de um conjunto de relações, mas também de informações sobre cada relação, incluindo
• O esquema para cada relação
• O domínio dos valores associados a cada atributo
• As restrições de integridade
• O conjunto dos índices a serem mantidos para cada relação
• As informações de segurança e autorização para cada relação
• A estrutura de armazenamento físico de cada relação no disco
![Page 7: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/7.jpg)
SQL : DDL e DMLSQL : DDL e DML
• DDL (Data Definition Language)
Linguagem para definição de dados• DML (Data Manipulation Language)
Linguagem para manipulação de dados
DDL(Estruturas)
DML(Dados)
![Page 8: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/8.jpg)
Linguagem para Linguagem para Definição de Dados (DDL)Definição de Dados (DDL)
• Criação
• Exclusão
• Alteração
Comandos usados para definir edescrever os dados e as relações
dos dados em um banco de dados:
![Page 9: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/9.jpg)
DDL - ExemplosDDL - Exemplos
• Createdatabasedomaintable, ...
• Alterdomaintable, ...
• Dropdatabasedomain table
Criação Exclusão
Alteração
![Page 10: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/10.jpg)
CREATEDBCREATEDB
CREATEDB BD01;
DDL - Criação
![Page 11: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/11.jpg)
ALGUNS TIPOS DE DADOS Categoria Tipo de dado Descrição Caracter/String Text Permite armazenar número ilimitado de caracteres. Varchar(T) T refere-se à quantidade máxima de caracteres a
serem armazenados. Tanto text, como varchar ocupam para armazenamento somente a quantidade de caracteres efetivamente utilizada.
Char(T) T refere-se à quantidade máxima de caracteres a serem armazenados. Diferente de text e varchar, ocupa o espaço total de armazenamento referido em T.
Numéricos Integer Número inteiro na faixa de 2 bilhões. Int2 Número inteiro na faixa de 32 mil. Int8 Número inteiro na faixa de 4 x 1018 Numeric(P,D) Número real com precisão definida. Ex.: numeric(8,2)
define um número com até 6 dígitos antes da vírgula e 2 após a vírgula.
Float Número de ponto flutuante, com 15 dígitos de precisão.
Float4 Número de ponto flutuante, com 6 dígitos de precisão. Temporais Date Data no formato yy-mm-dd. Time Hora no formato hh:mm:ss. Timestamp Data e hora no formato yy-mm-dd hh:mm:ss. Interval Intervalo de tempo, gerado pela subtração de 2 dados
do tipo timestamp. Ex.: 5 horas e 7 dias. Lógicos Bool Dado booleano, pode ser entrado como true, t, yes, y
ou 1 e também false, f, no, n ou 0. Mas armazena o dado como t ou f.
![Page 12: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/12.jpg)
Restrições de dados:
• NOT NULL – torna a entrada de valores obrigatória na coluna.
• CHECK – verifica em cada operação de inclusão e alteração se a condição especificada para o campo está sendo cumprida.
• DEFAULT – especifica um valor padrão a ser atribuído ao campo quando nenhuma entrada for especificada.
• UNIQUE – não permite que valores duplicados apareçam na coluna. Todos os campos designados como chave candidata (entrada não repetida), devem ser especificados como UNIQUE.
• PRIMARY KEY – especifica uma chave primária, ou seja, identifica unicamente cada linha.
![Page 13: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/13.jpg)
REFERENCES – especifica uma chave estrangeira, ou seja, o valor do campo é baseado nos valores de chave primária de “outra” tabela. Quando estamos declarando um campo como chave estrangeira em uma tabela, podemos especificar quais ações devem ser tomadas no caso de exclusão ou alteração da chave estrangeira:
SET NULL CASCADE SET DEFAULT ON DELETE
Quando a tupla correspondente a FK é excluída seu valor é marcado como nulo.
Quando a tupla correspondente a FK é excluído todas as tuplas que a tinham como FK são excluídas também.
Quando a tupla correspondente a FK é excluída seu valor é marcado com o valor default especificado.
ON UPDATE
Quando a tupla correspondente a FK é alterada seu valor é marcado como nulo.
Quando a tupla correspondente a FK é alterada todas as tuplas que a tinham como FK são alteradas também.
Quando a tupla correspondente a FK é alterada seu valor é marcado com o valor default especificado.
A opção NO ACTION é o default do Postgresql, e especifica que não podem ser feitas alterações e exclusões em campos que são referenciados como chave estrangeira.
![Page 14: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/14.jpg)
CREATE TABLE vendedor(cod_vendedor INT2 PRIMARY KEY,nome varchar(30) NOT NULL,endereco varchar(80),cep char(8),datanascimento date,telefone varchar(18),funcao varchar(50), datacontratacao date,
cod_departamento INT2 REFERENCES departamento ON UPDATE CASCADE ON DELETE SET NULL, cod_cidade INT2 DEFAULT 1 REFERENCES cidade ON UPDATE SET NULL ON DELETE SET DEFAULT);
Ex. de restriçõesEx. de restrições
![Page 15: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/15.jpg)
O que é um Domínio?O que é um Domínio?
É um apelido (aliás) para um determinado tipo de dado
• Domínios SIMPLESDomínios SIMPLES
CREATE DOMAIN ENDER AS VARCHAR (30)
CREATE DOMAIN FONE AS VARCHAR (20)
![Page 16: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/16.jpg)
Crie um domínio Inteiro do tipo Int2
• CREATE DOMAIN INTEIRO AS INT2
![Page 17: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/17.jpg)
• Domínios COMPLEXOSDomínios COMPLEXOS
CREATE DOMAIN SALARIO AS
NUMERIC (9,2)
DEFAULT 0
CHECK (VALUE>0)
CREATE DOMAIN DEPTO AS INT2
CHECK (VALUE BETWEEN 0 AND 6)
![Page 18: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/18.jpg)
CREATE TABLECREATE TABLE
CREATE TABLE FORNECEDOR( CNPJ INT2 NOT NULL,
NOME VARCHAR(30)
)
Fornecedor
cnpjnome
cnpjFornecedor
nome
DDL - Criação
![Page 19: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/19.jpg)
CREATE TABLE e DomíniosCREATE TABLE e Domínios
CREATE TABLE CLIENTE(
NOME VARCHAR(30),ENDERECO ENDER,SALARIO SALARIO
)
salario
Cliente
endereçonome
Cliente
salarioendereçonome
Domínios
![Page 20: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/20.jpg)
CódigoFuncionário
NomeSalario
CREATE TABLE FUNCIONARIO(
CODIGO INT,NOME VARCHAR(30),SALARIO FLOAT,PRIMARY KEY(CODIGO)
);
Funcionário
Código
Nome
Salario
CREATE TABLE e Chave Primária (PK)CREATE TABLE e Chave Primária (PK)
![Page 21: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/21.jpg)
Cliente
Codigo
Fone*
ddd número
Nome
Endereço Data_nasc
CodigoCliente
NomeEndereçoData_nasc
NúmeroDDDCliente
Fone
CREATE TABLE e Chave Estrangeira (FK)CREATE TABLE e Chave Estrangeira (FK)
![Page 22: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/22.jpg)
CREATE TABLE CLIENTE(
CODIGO INT2,NOME VARCHAR(30),ENDERECO VARCHAR(30),DATA_NASC DATE,PRIMARY KEY (CODIGO)
);
DICA: Crie sempre a tabelaDICA: Crie sempre a tabelaorigem antes da tabela destinoorigem antes da tabela destino
![Page 23: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/23.jpg)
CREATE TABLE FONE( DDD VARCHAR(10), NUMERO VARCHAR(20),
CLIENTE INT2 NOT NULL,PRIMARY KEY (NUMERO,DDD,CLIENTE),FOREIGN KEY(CLIENTE)REFERENCES
CLIENTE(CODIGO));
CodigoCliente
NomeEndereçoData_nasc
NúmeroDDDCliente
Fone
![Page 24: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/24.jpg)
Funcionário Deptart.Gerencia1 1
CodigoFFuncionário
NomeFunSalario
CodigoDDepartamento
GerenteNomeD
CREATE TABLE e CREATE TABLE e Relacionamento 1:1Relacionamento 1:1
![Page 25: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/25.jpg)
CREATE TABLE FUNCIONARIO(
CODIGOF INT2,NOMEFUN VARCHAR(30),SALARIO FLOAT,PRIMARY KEY(CODIGOF)
);
CodigoFFuncionário
NomeFunSalario
CodigoDDepartamento
GerenteNomeD
![Page 26: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/26.jpg)
CREATE TABLE DEPARTAMENTO( CODIGOD INT2, GERENTE INT2, NOMED VARCHAR(30), PRIMARY KEY(CODIGOD), FOREIGN KEY(GERENTE)REFERENCES FUNCIONARIO(CODIGOF));
CodigoFFuncionário
NomeSalario
CodigoDDepartamento
GerenteNomeD
![Page 27: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/27.jpg)
Aluno CursoestudaN 1
RAAluno
NomeSexoCurso
CodigoCurso
Nome
CREATE TABLE e CREATE TABLE e Relacionamento 1:NRelacionamento 1:N
![Page 28: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/28.jpg)
CREATE TABLE CURSO(
CODIGO INTEGER,NOMEC VARCHAR(30),PRIMARY KEY(CODIGO)
);
RAAluno
NomeSexoCurso
CodigoCurso
NomeC
![Page 29: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/29.jpg)
CREATE TABLE ALUNO(
RA INT2,NOMEALUNO VARCHAR(30),
SEXO CHAR(1),CURSO INTEGER,PRIMARY KEY(RA),FOREIGN KEY(CURSO)REFERENCES CURSO(CODIGO)
);
RAAluno
NomeAlunoSexoCurso
CodigoCurso
Nome
![Page 30: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/30.jpg)
Atleta ModalidadePraticaN N
CodigoAAtleta
NomeEndereçoData_nasc
CodigoACodigoM
CodigoM
Modalidade
Nome
Pratica
CREATE TABLE e CREATE TABLE e Relacionamento N:NRelacionamento N:N
![Page 31: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/31.jpg)
CREATE TABLE ATLETA(
CODIGOA INTEGER,NOMEATLETA VARCHAR(30),ENDERECO VARCHAR(30),DATA_NASC DATE,PRIMARY KEY(CODIGOA)
);
CREATE TABLE MODALIDADE(
CODIGOM INTEGER,NOMEMOD VARCHAR(30),PRIMARY KEY(CODIGOM)
);
CodigoAAtleta
NomeAtletaEndereçoData_nasc
CodigoACodigoM
CodigoM
Modalidade
NomeMod
Pratica
![Page 32: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/32.jpg)
CREATE TABLE PRATICA(
CODIGOA INTEGER,CODIGOM INTEGER,PRIMARY KEY(CODIGOA,CODIGOM),FOREIGN KEY(CODIGOA)REFERENCES ATLETA(CODIGOA),FOREIGN KEY(CODIGOM)REFERENCES MODALIDADE(CODIGOM)
);
CodigoAAtleta
NomeAtletaEndereçoData_nasc
CodigoACodigoM
CodigoM
Modalidade
NomeMod
Pratica
![Page 33: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/33.jpg)
Ou posso alterar os nomes das chaves do Pratica... Veja!
![Page 34: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/34.jpg)
CREATE TABLE PRATICA(CODATLETA INTEGER,CODMODALIDADE INTEGER,PRIMARY KEY(CODATLETA,CODMODALIDADE),FOREIGN KEY(CODATLETA)REFERENCES ATLETA(CODIGOA),FOREIGN KEY(CODMODALIDADE)REFERENCES MODALIDADE(CODIGOM)
);
CodigoAAtleta
NomeAtletaEndereçoData_nasc
CodAtletaCodModalidade
CodigoM
Modalidade
NomeMod
Pratica
![Page 35: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/35.jpg)
Exercícios
• Crie as tabelas do esquema da instituição bancária utilizando a DDL da linguagem SQL:– Agência (cod_agencia, nome_agência, cidade_agência, ativo) – Cliente (cod_cliente, nome_cliente, rua_cliente, cidade_cliente) – Conta (cod_conta, número_conta, nome_agência, saldo) – Depositante (cod_depositante, nome_cliente, número_conta)
![Page 36: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/36.jpg)
Agência e Clienteagência (cod_agência, nome_agência, cidade_agência, ativo) CREATE TABLE agência(
cod_agência int2,nome_agência char(15), cidade_agência char(30), ativo numeric(16,2),primary key (cod_agência)
)
cliente (cod_cliente, nome_cliente, rua_cliente, cidade_cliente)CREATE TABLE cliente(
cod_cliente int2,nome_cliente char(20), rua_cliente char(30), cidade_cliente char(30), primary key (cod_cliente)
)
![Page 37: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/37.jpg)
Conta e Depositante
conta (cod_conta, número_conta, nome_agência, saldo) CREATE TABLE conta (
cod_conta int2,número_conta char(10), nome_agência char(15), saldo nuneric(12,2), primary key (cod_conta)
)
depositante (cod_depositante, nome_cliente, número_conta)CREATE TABLE depositante (
cod_depositante int2,nome_cliente char(20), número_conta char(10), primary key (cod_depositante)
)
![Page 38: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/38.jpg)
Crie as tabelas do esquema a seguir utilizando a DDL da linguagem SQL:
• fornecedor (cod_fornecedor, nome_fornecedor)
• produto (cod_produto, nome_produto, cod_fornecedor, cod_categoria)
• categoria (cod_categoria, nome_categoria)
• pedido (cod_pedido, nome_pedido, cod_cliente)
• cliente (cod_cliente, nome_cliente)
• ped_prod (cod_produto, cod_pedido)
![Page 39: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/39.jpg)
Fim 1 Aula
![Page 40: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/40.jpg)
CodigoProfessor
NomeEndereçoRG
CREATE TABLE e Chave CandidataCREATE TABLE e Chave Candidata
![Page 41: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/41.jpg)
CodigoProduto
DescricaoPesoVolume
Restrição: Aceitar somente produtos cujo peso é
maior que 50
CREATE TABLE e Restrição de Coluna CREATE TABLE e Restrição de Coluna (Check)(Check)
![Page 42: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/42.jpg)
CodigoProduto
DescricaoPesoVolume
• Aceitar somente produtos cujo peso é maior que 50
• Caso o volume não seja informado, atribuir o valor 0 de modo automático
CREATE TABLE e Valor DefaultCREATE TABLE e Valor Default
![Page 43: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/43.jpg)
CodigoProduto
DescricaoPesoVolume
Restrição: Aceitar somente produtos cujo volume é menor que o peso
CREATE TABLE e Restrição de Tabela CREATE TABLE e Restrição de Tabela (Check)(Check)
![Page 44: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/44.jpg)
Operadores RelacionaisOperadores Relacionais
= igual a
> maior que
< menor que
<= maior ou igual a
>= menor ou igual a
<>, != diferente de
![Page 45: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/45.jpg)
CodigoProduto
DescricaoPesoVolume
Crie a tabela produto de maneira que não seja possível inserir produtos cujo peso é igual ao
volume
![Page 46: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/46.jpg)
Operadores LógicosOperadores Lógicos
AND e
OR ou
NOT não
IN dentro de
BETWEEN entre
LIKE como
![Page 47: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/47.jpg)
CodigoProduto
DescricaoPesoVolume
Crie a tabela produto de maneira que seja possível inserir somente produtos cujo peso
é igual a 50, 60, 70 ou 80.
![Page 48: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/48.jpg)
CodigoProduto
DescricaoPesoVolume
Crie a tabela produto de maneira que seja possível somente inserir produtos cujo
volume esteja entre 20 e 80.
![Page 49: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/49.jpg)
DROP DATABASEDROP DATABASE
• Apaga o banco de dados atual e todos os dados que ele contêm!!!
DROP DATABASE
DDL - Exclusão
ATENCÃO
![Page 50: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/50.jpg)
DROP DOMAINDROP DOMAIN
•Apaga um domínio do banco de dados
DROP DOMAIN SALARIO;
DDL - Exclusão
• A exclusão falha se houverem atributos (colunas) usando o domínio.
• Portanto, deve-se alterar o domínio dos atributos (colunas) que usam o domínio ou excluir estes atributos primeiro!
![Page 51: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/51.jpg)
DROP DOMAINDROP DOMAIN
•Apaga um domínio do banco de dados
DROP DOMAIN SALARIO [CASCADE|RESTRICT];
DDL - Exclusão
CASCADERemove automaticamente os objetos que dependem do domínio (como colunas de tabelas).
RESTRICTRecusa remover o domínio se existirem objetos que dependem do mesmo. Este é o padrão.
![Page 52: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/52.jpg)
DROP TABLEDROP TABLE
• Apaga tabelas
DROP TABLE Fornecedor;
cnpjFornecedor
nome
DDL - Exclusão
![Page 53: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/53.jpg)
ExemploExemplo
DROP TABLE ALUNO;DROP TABLE CURSO;
RAAluno
NomeSexoCurso
CodigoCurso
Nome
DICA: Apague sempre a tabelaDICA: Apague sempre a tabeladestino antes da tabela origemdestino antes da tabela origem
![Page 54: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/54.jpg)
DROP TABLE PRATICA;DROP TABLE ATLETA;DROP TABLE MODALIDADE;
ExemploExemplo
CódigoAtleta
NomeEndereçoData_nasc.
AtletaModalidade
CódigoModalidade
Nome
Pratica
![Page 55: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/55.jpg)
CodigoFuncionário
NomeSalario
CodigoDepartamento
GerenteNome
DROP TABLE DEPARTAMENTO;DROP TABLE FUNCIONARIO;
ExemploExemplo
![Page 56: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/56.jpg)
ALTER DOMAINALTER DOMAIN
• Altera a definição de um domínio, afetando as colunas nele baseadas
DDL - Alteração
ALTER DOMAIN SALARIO TO NOVO_SALARIO;
ALTER DOMAIN DEPTO TO DEPTO_1 TYPE INTEGER;
![Page 57: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/57.jpg)
ALTER TABLEALTER TABLE
• Adiciona ou elimina colunas a uma tabela.
• Adiciona ou elimina restrições em uma tabela– Chave Primária– Chave Estrangeira– Chave Candidata– Check
DDL - Alteração
![Page 58: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/58.jpg)
ALTER TABLE FORNECEDORADD DESCRICAO CHAR(50);
Fornecedor
cnpjnome
descrição
ALTER TABLE p/ Adicionar ColunasALTER TABLE p/ Adicionar Colunas
![Page 59: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/59.jpg)
ALTER TABLE p/ eliminar ColunasALTER TABLE p/ eliminar Colunas
ALTER TABLE FORNECEDORDROP DESCRICAO;
Fornecedor
cnpjnome
![Page 60: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/60.jpg)
ALTER TABLE FORNECEDORADD CONSTRAINT PK_CNPJ PRIMARY KEY(CNPJ);
Fornecedor
cnpjnome
ALTER TABLE p/ adicionar Chave ALTER TABLE p/ adicionar Chave Primária (PK)Primária (PK)
![Page 61: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/61.jpg)
ALTER TABLE FORNECEDORDROP CONSTRAINT PK_CNPJ;
Fornecedor
cnpjnome
ALTER TABLE p/ eliminar Chave ALTER TABLE p/ eliminar Chave Primária (PK)Primária (PK)
![Page 62: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/62.jpg)
Cidade
Nome Codigo
ExercícioExercício
• Escreva o comando para criar a tabela cidade conforme o modelo abaixo.
• Escreva o comando para alterar a tabela criada de maneira que a coluna Código seja chave primária.
![Page 63: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/63.jpg)
![Page 64: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/64.jpg)
• Escreva o comando para apagar a restrição de chave primária da tabela Cidade.
![Page 65: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/65.jpg)
ALTER TABLE FORNECEDORADD CIDADE INT2 NOT NULL;
Fornecedor CidadepertenceN 1
nome cnpj nome codigo
ALTER TABLE FORNECEDORADD CONSTRAINT FK_CODIGO
FOREIGN KEY(CIDADE)REFERENCES CIDADE(CODIGO);
ALTER TABLE p/ adicionar Chave ALTER TABLE p/ adicionar Chave Estrangeira (FK)Estrangeira (FK)
![Page 66: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/66.jpg)
ALTER TABLE FORNECEDORDROP CONSTRAINT FK_CODIGO;
CnpjFornecedor
NomeCidade
CodigoCidade
NomeESTRANG
ALTER TABLE p/ eliminar Chave ALTER TABLE p/ eliminar Chave Estrangeira (FK)Estrangeira (FK)
![Page 67: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/67.jpg)
Professor
endereçocódigo
nome
rg
ALTER TABLE PROFESSORADD CONSTRAINT CANDIDATA UNIQUE(RG);
ALTER TABLE p/ adicionar Chave ALTER TABLE p/ adicionar Chave CandidataCandidata
![Page 68: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/68.jpg)
Professor
endereçocódigo
nome
rg
ALTER TABLE PROFESSORDROP CONSTRAINT CANDIDATA;
ALTER TABLE p/ eliminar ALTER TABLE p/ eliminar Chave CandidataChave Candidata
![Page 69: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/69.jpg)
Produto
pesocódigo
descrição
volume
RESTRIÇÃO: VOLUME < PESO
ALTER TABLE p/ adicionar Restrição ALTER TABLE p/ adicionar Restrição (CHECK)(CHECK)
![Page 70: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/70.jpg)
Produto
pesocódigo
descrição
volume
ALTER TABLE p/ eliminar Restrição ALTER TABLE p/ eliminar Restrição (CHECK)(CHECK)
![Page 71: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/71.jpg)
ALTER TABLE FORNECEDORALTER COLUMN NOME TO RAZAO_SOCIAL;
cnpjFornecedor
nome
ALTER TABLE p/ alterar ALTER TABLE p/ alterar nomes de colunasnomes de colunas
![Page 72: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/72.jpg)
CREATE TABLE FORNECEDOR(
NOME CHAR(30),CNPJ INT NOT NULL
);
ALTER TABLE FORNECEDOR ALTER COLUMN NOME TYPE VARCHAR(30);
ALTER TABLE p/ alterar ALTER TABLE p/ alterar tipos de dadostipos de dados
![Page 73: 1 - SQL (aluno) – Structured Query Language](https://reader034.fdocuments.net/reader034/viewer/2022042614/55721048497959fc0b8cedf1/html5/thumbnails/73.jpg)
TRUNCATE TABLE
• Por vezes queremos remover todos os dados de uma tabela. Uma forma de o fazer é através do comando DROP TABLE. Mas e se apenas quisermos remover todos os dados , mas não a própria tabela? Para tal, podemos utilizar o comando TRUNCATE TABLE. A sintaxe para TRUNCATE TABLE é:
TRUNCATE TABLE "nome_tabela"
• Assim, se quisermos truncar a tabela denominada “cliente", basta escrever:
TRUNCATE TABLE cliente