Você está na página 1de 3

-- INSERIR REGISTRO NA TABELA PESSOA FISICA

INSERT INTO pessoa_ficica VALUES (,'GENOVEVA', '1111222288860', 'F');

SELECT *FROM pessoa_fisica;

/*EXERCICIO
1) Criar o tipo juridica com base no tipo PESSOA com as colunas cnpj CHAR(14) e
nome_fantasia VARCHAR(100)
2)Criar a tabela PESSOA_JURIDICA com base no tipo JURIDICA
3) Exibir a estrutura PESSORA_JURIDICA
4) Exibir a estrutura JURIDICA
5) Inserir um registro na PESSOA_JURIDICA
6) Consultar o registro inserido*/

--01

CRATE OR REPLACE TYPE juridica UNDER PESSOA

(cnpj CHAR(14),

nome_fantasia VARCHAR(100));

--02

CREATE TABLE pessoa_juridica OF juridica;

--03

DESC pessoa_juridica;

--04

DESC juridica;

--05

INSERT INTO pessoa_juridica VALUES (1,'GENOVEVA', '01234567891011', 'Nome nome


nome');

--06

SELECT * FROM pessoa_juridica;

-- Consultar o dicionario de dados: USER_OBJECTS e USER_TYPES


SELECT OBJECT_NAME, OBJECT_TYPE
FROM USER_OBJECTS;

--Consultar os tipos
SELECT TYPE_NAME FROM USER_TYPES;

-- Excluir um tipo de objeto criado: DROP TYPE


DROP TYPE PESSOA_JURIDICA;
DROP TYPE JURIDICA;

***NÃO DA PRA APAGAR DIRETAMENTE, POIS HÁ VINCULO

--COLECAO: ARMAZENA CONJUNTO DE ELEMENTOS, SAO 2 TIPOS


--VARRAY E NESTED TABLE (Tabela aninhada)
--- nested table: atributo composto
--Criar uma tabela aninhada (coluna) chamada T_ende com a estrutura:
CREATE OR REPLACE TYPE T_ENDE AS OBJECT
(longadouro VARCHAR(60),
numero VARCHAR(50),
bairro VARCHAR(30),
cidade VARCHAR(30)
uf (char(2),
cep CHAR(9));
/
DESC T_ENDE

-- Criar um tipo de dado (coluna) chamado lista_end com base na tabela aninhada
t_ende:
CREATE TYPE LISTA_ENDE AS TABLE OF T_ENDE; /

--VARRAY (VETOR)
--Criar um tipo de dados array chamado TELE VARCHAR (10) com 3 posicoes
CREATE TYPE TELE AS VARRAY(3) OF VARCHAR(10);
/

DESC TELE
TELE VARRAY(3) OF VARCHAR2(10)

--Podemos aumentar a quantidade de posicoes no varray


--Alterar para que aceite ate 5 numeros de telefone:
aALTER TYPE MODIFY LIMIT 5 CASCADE;

-- OBS: E POSSIVEL AUMENTAR PARA MAIS NUMEROS, NUNCA PODE DIMINUIR


DESC TELE
TELE VARRAY(5) OF VARCHAR2(10)

ALTER TYPE TELE MODIFY LIMIT 5 CASCADE;

DESC TELE
SELECT *FROM USER_TYPES WHERE TYPE_NAME = 'TELE';

--Criar a tabela contendo as colunas tabela anunhada e varray:


--Criar a tabela ALUNOS contendo matricula INTEGER, nome VARCHAR(30), TELEFONE DO
TUPO VARRAY tele e endereco do tipo LISTA_ENDE:
CREATE TYPE alunos
(matrícula INTEGER,
nome VARCHAR(30),
telefone TELE,
endereco LISTA_ENDE)
NESTED TABLE endereco STORE AS endereco_aluno);
/

--Inserir registro na tabela


INSERT INTO alunos
VALUES (11, 'Giovanni', tele(123456','7890912'),
lista_ende(t_ende('Rua Intervalo', 20, 'Lanchar', 'Praia Grande', 'SP',
'11700-100'));
/
--Selecionar os registros
SELECT a.matricula, a.nome, e.longradiuro
FROM alunos a, TABLE (a.endereco) e;
C
CRATE OR REPLACE TYPE veiculo as object
(PLACA VARCHAR(7),
DESCRICAO VARCHAR(50),
Ano_fabricação integer) NOT FINAL;

CRATE OR REPLACE TYPE carro UNDER veiculo


motor varchar(10)
portas INTEGER;

CRATE OR REPLACE TYPE moto UNDER veiculo


cilindradas varchar(10);

CRATE OR REPLACE TYPE caminhao UNDER VEICULO


comprimento varchar(10);

CRATE OR REPLACE TYPE onibus UNDER VEICULO


lugares varchar(4)
andar varchar(4);

CREATE TABLE t_carro OF CARRO():

CREATE TABLE t_moto OF MOTO():

CREATE TABLE t_caminhao OF CAMINHAO():

CREATE TABLE t_onibus OF ONIBUS():

INSERT INTO t_carro VALUES ('AXH-0386', 'PRETO' , '2015', 'motor', 4);

INSERT INTO t_moto VALUES ('axh-8300', 'rosa' , '2018', 150);

INSERT INTO t_caminhao VALUES ('AXH-8300', 'vermelho', '2020', '5


metros' );

INSERT INTO t_onibus VALUES ('AXH-8300',' preto' , '2008', 30, 1);

Você também pode gostar