Você está na página 1de 3

Data definition language (DDL)

Comando DDL: Renomeando tabela


Criação de tabela ALTER TABLE [tabela]
CREATE TABLE [tabela] RENAME TO [novo_nome_tabela];
( [coluna 1] [tipo de dados/domínios] [nulidade],
[coluna 2] [tipo de dados/domínios] [nulidade], Inserindo colunas
... ALTER TABLE [tabela]
[coluna n] [tipo de dados/domínios] [nulidade], [ADD coluna domínio];
PRIMARY KEY ([lista de colunas]),
CHECK [condição], ALTER TABLE FUNCIONARIO
FOREIGN KEY [coluna] ADD Data_Admissao DATE NULL;
REFERENCES [tabela_FK] ([coluna_FK] )
); ALTER TABLE CURSO
ADD (PATH1 VARCHAR(200) NULL,
Criação de tabela a partir de outra DATA_ULT_ALT DATE NULL);
CREATE TABLE [tabela]
as SELECT * FROM TABELA_XPTO;
Modificando colunas
create table CUSTO_POR_NAVIO ALTER TABLE [tabela]
( [MODIFY coluna domínio];
COD_NAVIO char(5) not null primary key ,
NOME_NAVIO char(25) not null, Excluindo colunas
DATA_ATRACACAO date, ALTER TABLE [tabela]
QTD_CUSTO int, DROP COLUMN [coluna];
TOTAL_CUSTO number(7,2)
check (DATA_ATRACACAO > to_date('01/01/2007')) ALTER TABLE CARGO
); DROP (Data_Criacao, Data_Ult_Atualizacao);

create table CUSTO_POR_NAVIO Alterando restrições


( ALTER TABLE [tabela]
COD_NAVIO char(5) not null, ...
NOME_NAVIO char(25) not null, ADD CONSTRAINT
DATA_ATRACACAO date, [nome_constraint sintaxe da constraint]
QTD_CUSTO int, ...
TOTAL_CUSTO number(7,2), DROP CONSTRAINT [nome_constraint]
primary key (NOME_NAVIO, DATA_ATRACACAO) ...
); ENABLE CONSTRAINT [nome_constraint]
...
Criação de Sequence DISABLE CONSTRAINT [nome_constraint]
CREATE SEQUENCE SQ_COD_EQUIP
START WITH 1 Eliminação de todos registros de tabela
INCREMENT BY 1 TRUNCATE TABLE [tabela]
MINVALUE 1 (Obs: semelhante ao DELETE sem predicado, porém não
MAXVALUE 99999 gera log, portanto é mais rápido)
NOCACHE
NOCYCLE; Destruição de tabela
DROP TABLE [tabela]
Destruição de Sequence
DROP SEQUENCE [nome da sequence]; Mudar tipo de dado
ALTER TABLE FUNCIONARIO
Criando tabela com constraint separada MODIFY identidade VARCHAR(9)
ALTER TABLE TEL MODIFY CPF VARCHAR(11);
ADD CONSTRAINT
PK_TEL PRIMARY KEY (DDD, NUM); Mudar default
ALTER TABLE FUNCIONARIO
ALTER TABLE TEL MODIFY UF CHAR(2) DEFAULT 'RJ';
ADD CONSTRAINT
FK_EMPR_TEL FOREIGN KEY (MATR) Renomear tabela
REFERENCES EMPREGADO (MATR); RENAME TABLE CLI TO CLIENTE;

Renomear coluna
ALTER TABLE EMPREGADO
RENAME COLUMN MATR TO MATRICULA
Data Query Language (DQL)
Comando Select
SELECT [lista de campos] SEM ALIAS
FROM [lista de tabelas] SELECT
WHERE [condições] FUNCIONARIO.MATRICULA,
GROUP BY [lista de campos para agrupamento] FUNCIONARIO.NOME,
HAVING [Condições] (no agrupamento) DEPARTAMENTO.NOME
ORDER BY [lista de campos para ordenação] FROM
From FUNCIONARIO,
Select * Alias (AS) . DEPARTAMENTO
Alias (AS ou espaço) (ponto na lista decampos) WHERE
Expressões Subquery FUNCIONARIO.SIGLA_DEPTO =
Distinct / all DEPARTAMENTO. SIGLA_DEPTO
Where
Order by =, >, <, >=, <= COM ALIAS
Asc / Desc And, Or, Not SELECT
between F.MATRICULA,
SELECT * FROM FUNCIONARIO Like, Not Like, % F.NOME,
In, Not In D.NOME
SELECT Exist, Not Exist FROM
NMNAV as Nome_do_Navio, Join FUNCIONARIO F,
NMCOMAN as Nome_do_Comandante, Outer Join DEPARTAMENTO D
CAPNAV Capacidade_do_Navio WHERE
FROM F.SIGLA_DEPTO = D.SIGLA_DEPTO
NAVIO_COMANDANTE

Expressões SELECT NOME


SELECT FROM DEPENDENTE
CODIGO_PRODUTO, WHERE DATA_NASC >= ‘01/01/2000’
DESC_PRODUTO,
PRECO_UNIT / 5 as VALOR_EM_DOLAR SELECT NOME
FROM FROM FUNCIONARIO
PRODUTO WHERE CPF = 83737475476

DINSTINCT = Only Unique SELECT NOME_PRODUTO


SELECT DISTINCT NOME_NAVIO FROM PRODUTO
FROM NAVIO WHERE PRECO_UNIT > 800
AND QUANT_MIN <= 10;
ALL = Allow repetitions
SELECT ALL NOME_NAVIO SELECT NOME
FROM HIST_NAVIO_ANCORADO FROM CARGO
WHERE SALARIO BETWEEN 1000 AND 5000

INNER JOIN retorna apenas linhas que tem valores SELECT NOME
correspondentes em ambas as tabelas unidas. FROM FUNCIONARIO
WHERE NOME LIKE ‘%SILVA%‘
OUTER JOIN retorna todas as linhas de uma tabela e as (Retorna todos com “SILVA” em qualquer parte do
linhas correspondentes da outra tabela. nome)

Listar os funcionários, seus respectivos cargos e SELECT NOME_CARGO, SALARIO


departamentos. FROM CARGO
WHERE NOME IN (‘RH', ‘ENGENHARIA',
Select ‘MARKETING')
F.nome, C.nome_cargo, D.nome_departamaento
From Funcionario F SELECT NOME_PRODUTO
INNER JOIN cargo C on F.codigo_cargo = FROM PRODUTO
C.codigo_cargo INNER JOIN departamento D WHERE COD_GRUPO NOT IN (334, 443, 556, 221)
ON F.sigla_departamento = D.sigla_departamento;

LEFT OUTER JOIN (LEFT JOIN):


Retorna todas as linhas da tabela da esquerda e as linhas
correspondentes da tabela da direita.

FULL OUTER JOIN (FULL JOIN):


Retorna todas as linhas quando houver correspondência
em uma das tabelas (ou em ambas).
Data Manipulation Language (DML)

INSERT INTO (TABLE) MISC


UPDATE (TABLE) Insert sequence
DELETE (TABLE) Next SEQUENCE value: SQ_CODIGO.NEXTVAL
(Incremented by 1 per insert)
INSERT INTO
DEPARTAMENTO List all sequences
VALUES ('TI', 'TECNOLOGIA DA INFORMAÇÃO'); SELECT * FROM USER_SEQUENCES;

INSERT INTO CARGO VALUES List current sequence value


(SQ_CODIGO_CARGO.NEXTVAL, SELECT SQ_ESTCIVIL.CURRVAL FROM DUAL;
'PROGRAMADOR', 3000.00);
Delete sequence
INSERT INTO DROP SEQUENCE SQ_ESTCIVIL;
ALOCACAO_FUNC_PROJETO
VALUES (7, 1, TO_DATE('01/01/2019', 'dd/mm/yyyy'),
TO_DATE('11/09/2022', 'dd/mm/yyyy')); Only NUMBER not between ‘’

INSERT INTO EMPREGADO Sometimes may need to convert/specify date


(CPF, NOME, SALARIO) WHERE DATA_INICIO = TO_DATE(‘29/02/2013’,
VALUES ‘DD/MM/YY’);
(‘02330495794’, ‘ROBERTO CARLOS’, 2000.00);
SYSDATE = Data e hora de agora do sistema
UPDATE [TABELA]
SET [COLUNA1 = VALOR OU EXPRESSÃO], DELETE FROM DEPENDENTE
[COLUNAN = VALOR OU EXPRESSÃO]; WHERE ((SYSDATE – DATA_NASCIMENTO)/365) >
WHERE [CONDIÇÃO]; 18;

UPDATE DELETE FROM DEPENDENTE


FUNCIONARIO WHERE
SET TRUNC((MONTHS.BETWEEN(SYSDATE,
BAIRRO = 'OURO VERDE', TO.DATE(DATA.NASCIMENTO, ‘DD/MM/YY’)))/12
CIDADE = 'RIO DAS OSTRAS' > 18;
WHERE
CEP = 25890010; Um delete no banco só é “efetivado” após COMMIT;
Sendo possível recuperar com ROLLBACK;
UPDATE FUNCIONARIO
SET SIGLA_DEPARTAMENTO = 'ENG' CONSTRAINT CHECK
WHERE SEXO = 'M' Deve ser verdadeira para os dados em determinada tabela
AND CIDADE = 'MACAE';
CREATE TABLE
UPDATE PRODUTO FUNCIONARIO(
SET PRECO_UNIT = PRECO_UNIT * 1.15 FUN_ID NUMBER PRIMARY KEY NOT NULL,
WHERE CATEG_PROD IN SALARIO NUMBER NOT NULL,
(SELECT COD.CATEG CONSTRAINT
FROM CATEG_PROD CHECK_SALARIO CHECK (SALARIO> 0)
WHERE DESC_CATEG_PROD = ‘LIMPEZA’); );
Insert só funcionaria se salario positivo

LENGHT – Numero de caracteres em uma string


WHERE LENGHT(NOME) = 10

MAX – Maior valor


SELECT UPPER(F.NOME) AS SELECT MAX(SALARIO) FROM FUNCIONARIO;
NOME_FUNCIONARIO, LOWER(D.NOME) AS
NOME_DEPENDENTE REPLACE(DeOnde, quem, paraQual)
FROM FUNCIONARIO F, DEPENDENTE D
WHERE F.MATRICULA_FUNC = SELECT
D.MATRICULA_FUNC; REPLACE(NOME_CARGO,'ANALIST ','ANALISTA
DE SISTEMAS') FROM CARGO;

CONCATENAR: ||
SELECT LOGRADOURO || ' - ' || BAIRRO || ' - ' ||
CIDADE || ' - ' || UF AS ENDERECO_COMPLETO
FROM FUNCIONARIO;

Você também pode gostar