lucasmouraahere

Módulo 13

Sep 13th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 6.18 KB | None | 0 0
  1. /*ALTER TABLE nome_tablea "COMANDO"
  2.  
  3. ADD - ADICIONAR COLUNA
  4. RESTRIÇÃO: NÃO PODE SER ADICIONADO COLUNA NOT NULL ONDE A TABELA JÁ POSSUI DADOS, NESSES CASOS É NECESSÁRIO CRIAR UMA COLUNA COMO NULL, CRIAR UM
  5. SCRIPT PARA PREENCHER TODOS OS REGISTROS DA TABELA E APÓS ISSO ALTERAR AQUELA COLUNA PARA NOT NULL
  6.  
  7. MODIFY - MODIFICAR O TIPO DE DADOS DA COLUNA (NÃO CONSEGUE DEFINIR UM NOME PARA CONSTRAINT)
  8. RESTRIÇÕES: PARA DIMINUIR A LARGURA DA COLUNA NOS SEGUINTES CASOS: SE A COLUNA TIVER APENAS VALORES NULOS,
  9. SE A TABELA NÃO TIVER NENHUMA LINHA, OU SE TODAS AS LINHAS POSSUEM UMA LARGURA INFERIOR OU IGUAL AO NUYMERO
  10. SENDO ALTERADO; ALTERAR O TIPO DA COLUNA SE TODOS OS VALORES FOREM NULOS OU SE FOR DE UM CHAR para VARCHAR2;
  11. PARA OS VALORESD DEFAULT ELES SÓ SERÃO VÁLIDOS PARA OS VALORES QUE FOREM INSERIDOS POSTERIORMENTE.
  12.  
  13. DROP - EXCLUIR COLUNA
  14. RESTRIÇÕES: A COLUNA PODE OU NÃO PODE CONTER DADOS; SÓ É POSSIVEL ELIMINAR UMA COLUNA POR VEZ; A TABELA DEVE CONTINUAR COM NO MINIMO UMA COLUNA
  15. APÓS EXCLUIRMOS A COLUNA;
  16.  
  17. ON DELETE CASCADE: CONSEGUIMOS DELETAR O REGISTRO TANTO DA CHAVE PRIMEIRA
  18.  
  19.  
  20. ELIMINANDO UMA COLUNA EM UM AMBIENTE CRÍTICO (AMBIENTE MUITO UTILIZADO)
  21.  
  22. */
  23.  
  24. CREATE TABLE teste(
  25.     NOME VARCHAR(20)
  26. );
  27.  
  28. CREATE TABLE teste_numero(
  29.     NUMERO NUMBER(10)
  30. );
  31.  
  32. ALTER TABLE teste ADD Lucas VARCHAR(100) NOT NULL;
  33.  
  34. ALTER TABLE teste MODIFY Lucas NUMBER(10);
  35.  
  36. ALTER TABLE teste DROP COLUMN Lucas;
  37.  
  38. ALTER TABLE teste SET UNUSED COLUMN Lucas; -- DEIXAR COLUNA INATIVA
  39.  
  40. ALTER TABLE teste DROP UNUSED COLUMNS; -- COLUNAS INATIVAS
  41.  
  42.  
  43. --ALTER TABLE PARA CONSTRAINTS
  44.  
  45. ALTER TABLE nome_tabela DROP CONSTRAINT nome_constraint;
  46.  
  47. SET CONSTRAINTS nome_constraint IMMEDIATE;
  48.  
  49. ALTER SESSION SET CONSTRAINTS = IMMEDIATE;
  50.  
  51. CASCADE CONSTRAINTS; -- EXCLUIR TODAS AS CONSTRAINTS QUE FAZEM REFERENCIA A COLUNA
  52.  
  53. ALTER TABLE teste
  54.  ADD CONSTRAINT pk_tb_teste
  55. PRIMARY KEY (teste_numero);
  56.  
  57. ALTER TABLE teste DROP CONSTRAINT pk_tb_teste;
  58.  
  59. --SYS_C0017514442
  60. ALTER TABLE teste MODIFY teste_numero PRIMARY KEY;
  61.  
  62. SELECT * FROM USER_CONSTRAINTS
  63. WHERE TABLE_NAME = 'teste';
  64.  
  65. ALTER TABLE teste
  66.  ADD CONSTRAINT fk01_teste
  67.  FOREIGN KEY (teste_numero)
  68.  REFERENCES hr.employees(employee_id)
  69.  ON DELETE CASCADE -- CASO A EMPLOYEE_ID SEJA DELETADO DA TABELA EMPLOYEES ELE SERÁ DELETADO TAMBÉM NA TABELA TESTE
  70.  DEFERRABLE INITIALLY DEFERRED; -- PARA VALIDAR AS CONSTRAINTS DEPOIS DE EXECUTAR OS INSERT
  71.  
  72. ALTER TABLE teste DISABLE CONSTRAINT fk01_teste;
  73.  
  74. ALTER TABLE teste ENABLE CONSTRAINT fk01_teste;
  75.  
  76. SET CONSTRAINTS ALL IMMEDIATE; --NA SEÇÃO ATUAL TODOS OS COMANDOS SERÃO VALIDADOS APÓS O COMMIT
  77.  
  78. ALTER SESSION SET CONSTRAINTS = IMMEDIATE;
  79.  
  80. ALTER TABLE teste
  81.  DROP COLUMN teste_numero CASCADE CONSTRAINTS; -- EXCLUIR TODAS AS CONSTRAINTS
  82.  
  83. -- FALANDO SOBRE INDICES
  84.  
  85. CREATE TABLE teste_indice(
  86.     teste_id NUMBER(10) PRIMARY KEY
  87.     USING INDEX
  88.         (CREATE INDEX teste_id_idx
  89.         ON teste_indice (teste_id)),
  90.     nome_teste VARCHAR2(100),
  91.     sobrenome_teste VARCHAR2(100)
  92. );
  93.  
  94. SELECT INDEX_NAME, TABLE_NAME
  95.    FROM USER_INDEXES
  96.  WHERE TABLE_NAME = 'TESTE_INDICE';
  97.  
  98. CREATE TABLE teste_indice_2(
  99.     teste_id NUMBER(10),
  100.     nome_teste VARCHAR2(100),
  101.     sobrenome_teste VARCHAR2(100)
  102. );
  103.  
  104. CREATE INDEX teste_id_idx2
  105. ON teste_indice_2 (teste_id);
  106.  
  107. ALTER TABLE teste_indice_2
  108. ADD PRIMARY KEY (teste_id)
  109. USING INDEX teste_id_idx2;
  110.  
  111. CREATE INDEX upper_dept_namne_idx
  112. ON teste_indice_2(UPPER(nome_teste));
  113.  
  114. DROP INDEX upper_dept_namne_idx;
  115.  
  116.  
  117.  
  118. /* PURGE, FLASHBACK e TABLEAS EXTERNAS
  119.  
  120. RECYCLEBIN: LIXEIRA DO ORACLE
  121. FLASHBACK: COMANDO PARA RECUPERAR ARQUIVOS USANDO O COMANDO DROP TABLE (A PARTIR DO ORACLE 10g)
  122. PURGE: COMANDO PARA EXCLUIR DE VEZ OS ARQUIVOS SEM IR PARA LIXEIRA
  123.  
  124. TABELAS EXTERNAS: SÃO LIDAS PELO ORACLE, PORÉM ARMAZENADAS FORA DO BANCO DE DADOS, NESSAS TABELAS NÃO SE PODE EXECUTAR COMANDOS DML.
  125.  
  126. */
  127.  
  128. SELECT * FROM RECYCLEBIN; -- SELECIONAR LIXEIRA
  129.  
  130. FLASHBACK TABLE teste_indice_2  TO BEFORE DROP; -- RECUPERAR TABELA
  131.  
  132. DROP TABLE teste_indice_2 PURGE; -- DELETAR A TABELA PERMANENTE
  133.  
  134. PURGE RECYCLEBIN; -- ESVAZIAR LIXEIRA
  135.  
  136. GRANT ANY DIRECTORY TO hr; -- PERMISSÃO PARA CRIAR DIRETÓRIO
  137.  
  138. CREATE OR REPLACE DIRECTORY ext_dir AS 'C:\queries'; -- CRIANDO DIRETÓRIO
  139.  
  140. SELECT * FROM ALL_DIRECTORIES; -- LISTAR DIRETÓRIOS
  141.  
  142. -- CRIANDO TABELA EXTERNA
  143.  
  144. CREATE TABLE ext_table2 (
  145.     fname CHAR(25),
  146.     lname CHAR(25))
  147. ORGANIZATION EXTERNAL
  148.         (TYPE ORACLE_LOADER
  149.         DEFAULT DIRECTORY ext_dir
  150.         ACESS PARAMETERS
  151.           (RECORDS DELIMITED BY NEWLINE
  152.            NOBADFILE
  153.            NOLOGFILE
  154.            FIELDS TERMINATED BY ',')
  155. LOCATION ('emp.csv'))
  156. PARALLEL 5
  157. REJECT LIMIT 200;
  158.  
  159.  
  160.  
  161. /* Crie uma tabela chamada employees_2 que ter os dados da tabela employees, com a mesma estrutura,
  162. porém só terá as colunas first_name, last_name, department_id e hire_date, para essa nova tabela as suas colunas
  163. devem ter os seguintes nomes: nome, sobrenome, departamento e admissao.*/
  164.  
  165. CREATE TABLE employees_2
  166. AS
  167.     (SELECT first_name Nome,
  168.             last_name Sobrenome,
  169.             department_id Departamento,
  170.             hire_date Admissão FROM hr.employees);
  171.            
  172. /* Altere a tabela employees_2 adicione a coluna comissao, que deve ser um número de 10,
  173. esta coluna não pode receber valores nulos e deve ter uma constraint que garanta que ela não vai receber valores menores que 0.
  174. Essa constraint deve ter o nome ck_comissao*/
  175.  
  176. ALTER TABLE employees_2
  177.  ADD Comissao NUMBER(8,2) DEFAULT 10 NOT NULL;
  178.  
  179.  ALTER TABLE employees_2
  180.  ADD CONSTRAINT ck_comissao CHECK (Comissao >= 0);
  181.  
  182. /* Elimine a tabela employees_2, depois restaure a tabela. */
  183.  
  184. DROP TABLE employees_2;
  185.  
  186. FLASHBACK TABLE employees_2 TO BEFORE DROP;
  187.  
  188. /* Adicione uma referencia de chave estrangeira, tabela employees_2 no campo departamento com a tabela departments. */
  189.  
  190. ALTER TABLE employees_2
  191.  ADD CONSTRAINT fk_depto
  192.  FOREIGN KEY (Departamento)
  193.  REFERENCES hr.departments(department_id);
  194.  
  195. /* Crie um índice no campo admissao tabela employees_2 */
  196.  
  197. CREATE INDEX idx_admissao
  198. ON employees_2 (Admissão);
  199.  
  200. /* Elimine a tabela employees_2 de uma forma que ela não poderá ser restaurada. */
  201.  
  202. DROP TABLE employees_2 PURGE;
Add Comment
Please, Sign In to add comment