Advertisement
Guest User

aula17-08

a guest
Aug 17th, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE TABLE pessoa(
  2. cod  NUMBER(5),
  3. nome VARCHAR2(200),
  4. pai NUMBER(5),
  5. CONSTRAINT pkpessoa PRIMARY KEY (cod),
  6. CONSTRAINT fkpessoapai foreign KEY (pai) references pessoa(cod)
  7. );
  8.  
  9. INSERT INTO pessoa (cod,nome) VALUES (1,'Adao');
  10.  
  11. INSERT INTO pessoa (cod,nome,pai) VALUES (2,'Abel',1);
  12.  
  13. INSERT INTO pessoa (cod,nome,pai) VALUES (3,'Caim',1);
  14.  
  15. INSERT INTO pessoa (cod,nome,pai) VALUES (4,'Joao',2);
  16. INSERT INTO pessoa (cod,nome,pai) VALUES (5,'Carlos',2);
  17. INSERT INTO pessoa (cod,nome,pai) VALUES (6,'Marcos',5);
  18. INSERT INTO pessoa (cod,nome,pai) VALUES (7,'Julio',6);
  19. INSERT INTO pessoa (cod,nome,pai) VALUES (8,'Otavio',6);
  20.  
  21. SELECT p1.cod, p1.nome, pai.cod, pai.nome
  22. FROM pessoa p1, pessoa pai
  23. WHERE p1.pai = pai.cod
  24. UNION
  25. SELECT cod,nome,-1,'idk'
  26. FROM pessoa
  27. WHERE pai IS NULL;
  28.  
  29. ALTER TABLE pessoa ADD(cpf NUMBER(10));
  30.  
  31. ALTER TABLE pessoa ADD CONSTRAINT ukcpf UNIQUE(cpf);
  32.  
  33. ALTER TABLE pessoa DROP CONSTRAINT ukcpf;
  34.  
  35. ALTER TABLE pessoa MODIFY cpf NUMBER(11);
  36.  
  37. ----------------------------------------------------------------------
  38. exercício:
  39. 1) inclua na tabela pessoa:
  40. campos - rg VARCHAR2(20),mae VARCHAR2(100), dt_nasc DATE, cidade VARCHAR2(100), sexo CHAR(1), salario NUMBER(10)
  41.  
  42. regras - UNIQUE(rg), UNIQUE(nome,mae,dt_nasc),
  43. CHECK sexo m _masculino f _feminino
  44. CHECK salario > 700
  45.  
  46. ----------------------------------------------------------------------
  47.  
  48.  
  49.  
  50.  
  51. ALTER TABLE pessoa ADD(rg VARCHAR2(20), mae VARCHAR2(100), dt_nasc DATE, cidade VARCHAR2(100), sexo CHAR(1), salario NUMBER(10));
  52.  
  53. ALTER TABLE pessoa ADD CONSTRAINT ukrg UNIQUE(rg);
  54.  
  55. ALTER TABLE pessoa ADD CONSTRAINT uknome UNIQUE(nome,mae,dt_nasc);
  56.  
  57. ALTER TABLE pessoa MODIFY sexo CHAR(1) CHECK (sexo IN('m','f'));
  58. ALTER TABLE pessoa MODIFY salario NUMBER(10) CHECK (salario > 700);
  59.  
  60.  
  61.  
  62.  
  63. INSERT INTO pessoa (cod,nome,cpf,rg,pai,mae,dt_nasc,cidade,sexo,salario) VALUES (9,'Cerola',79,69,8,'Mylena','17-08-2016','Florianopolis','m',701);
  64.  
  65. INSERT INTO pessoa (cod,nome,cpf,rg,pai,mae,dt_nasc,cidade,sexo,salario) VALUES (10,'Cerola',79,59,8,'Mylena','17-08-2016','Florianopolis','f',701);
  66.  
  67. INSERT INTO pessoa (cod,nome,cpf,rg,pai,mae,dt_nasc,cidade,sexo,salario) VALUES (11,'Kellen',79,49,8,'Mylena','17-08-2016','Florianopolis','f',701);
  68.  
  69. ----------------------------------------------------------------------
  70.  
  71.  
  72. SELECT SYSDATE FROM dual;
  73.  
  74. SELECT UPPER('ana') FROM dual;
  75.  
  76. SELECT MAX(cod) FROM pessoa;
  77.  
  78. CREATE SEQUENCE sqpessoacod START WITH 12 INCREMENT BY 1;
  79.  
  80.  
  81. CREATE OR REPLACE TRIGGER tgpessoa
  82. before INSERT OR UPDATE ON pessoa
  83.  
  84. FOR each ROW
  85.  
  86. DECLARE
  87. v_cod NUMBER(5);
  88.  
  89. BEGIN
  90. IF inserting THEN
  91. SELECT sqpessoacod.NEXTVAL INTO v_cod FROM dual;
  92. :NEW.cod: = v_cod;
  93. END IF;
  94. :NEW.nome: = UPPER(:NEW.nome);
  95. :NEW.mae: = UPPER(:NEW.mae);
  96. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement