Guia Completo de Comandos SQL e Procedures
Classificado em Tecnologia
Escrito em em
português com um tamanho de 11 KB
DDL – Linguagem de Definição de Dados – define, altera e remove tabela
Exemplos:
DEFINE – CREATE TABLE nome_tabela
DEFINE NOVA COLUNA NA TABELA – CREATE INDEX nome_tabela_Cor
ALTERA – ALTER TABLE nome_tabela
ALTERA NOVA COLUNA NA TABELA – ALTER INDEX nome_tabela_Cor
REMOVE – DROP TABLE nome_tabela
REMOVE NOVA COLUNA NA TABELA – DROP INDEX nome_tabela_Cor
DML – Linguagem de Manipulação de Dados – insere, remove, atualiza e consulta dados armazenados nesta tabela.
1 - Consultar nome e salário de todos os gerentes cujo nome se inicia com 'MAR'
SELECT GeNome, GeSalario FROM Gerente
WHERE GeNome LIKE 'MAR%'
2 – Consultar nome e fone de gerentes entre 1000 e 2000
SELECT GeNome, GeFone FROM Gerente
WHERE GeSalario BETWEEN 1000 AND 2000
3 – Consultar nome do gerente com maior salário
SELECT GeNome FROM Gerente
WHERE GeSalario = (SELECT MAX(GeSalario) FROM Gerente) ou MIN se for menor
4 – Soma de salário de todos os gerentes
SELECT SUM(GeSalario) AS Somatoria
FROM Gerente
5 – Consultar a quantidade de gerentes cadastrados
SELECT COUNT(*) FROM Gerente
6 – Consultar a média salarial de todos os gerentes cadastrados
SELECT AVG(GeSalario) AS MediaSalarial FROM Gerente
7 – Alterar salário do gerente p/ 6500, que possui CPF = 6
UPDATE Gerente SET GeSalario = 6500
WHERE GeCpf = 6
8 – Consultar disciplinas de 40h do curso de SI
SELECT * FROM Disciplina, Curso
WHERE CurNumero = DisCurNumero AND CurNome = 'SI' AND DisCargaHoraria = 40
AVG - Obtém o valor médio de uma coluna
SELECT AVG(GerenteSalario) AS mediaSalarial
COUNT - Obtém a soma da quantidade de linhas analisadas
SELECT COUNT(*)
MAX - Obtém o maior valor de uma coluna
SELECT MAX(GerenteSalario)
MIN - Obtém o menor valor de uma coluna
SELECT MIN(GerenteSalario)
SUM - Obtém a soma de valores de uma coluna
SELECT SUM(GerenteSalario) AS Somatoria
GROUP BY - Agrupamento de resultados de 2 tabelas neste caso
GROUP BY CurNome
ORDER BY - Estabelece a ordenação lógica da tabela de resultados
ORDER BY DisPreço ASC CRESCENTE ou DESC DECRESCENTE
DCL – Linguagem de Controle de Dados - Incluir comandos para se trabalhar em ambiente multiusuário, permitindo estabelecer níveis de segurança e manipular transações.
INSERE FUNCIONÁRIO
SET TERM!!;
CREATE PROCEDURE InserirFuncionario(FuNumero INTEGER, FunNome VARCHAR(40), FunSalario FLOAT, FunSetCodigo INTEGER)
AS
DECLARE VARIABLE ValidaFuncionario INTEGER;
DECLARE VARIABLE ValidaSetor INTEGER;
BEGIN
SELECT FunNumero FROM Funcionario WHERE FunNumero = :FunNumero INTO ValidaFuncionario;
SELECT SetCodigo FROM Setor WHERE SetCodigo = :FunSetCodigo INTO ValidaSetor;
IF(ValidaFuncionario IS NULL) AND (ValidaSetor IS NOT NULL) THEN
INSERT INTO Funcionario(FunNumero, FunNome, FunSalario, FunSetCodigo)
VALUES(:FunNumero, :FunNome, :FunSalario, :FunSetCodigo)
ELSE
IF(ValidaFuncionario IS NOT NULL) AND (ValidaSetor IS NULL) THEN
EXCEPTION MSG01; // Funcionário existe e setor não existe
ELSE
IF(ValidaFuncionario IS NOT NULL) THEN
EXCEPTION MSG02; // Funcionário existe
IF(ValidaSetor IS NULL) THEN
EXCEPTION MSG03; // Setor inexistente
END !!
SET TERM;!!
INSERE SETOR
SET TERM!!;
CREATE PROCEDURE InsereSetor(SetCodigo INTEGER, SetNome VARCHAR(40), SetSigla VARCHAR(5), SetRamal INTEGER)
AS
DECLARE VARIABLE ValidaSetor INTEGER;
BEGIN
SELECT SetCodigo FROM Setor WHERE SetCodigo = :SetCodigo INTO ValidaSetor;
IF(ValidaSetor IS NULL) THEN
INSERT INTO Setor(SetCodigo, SetNome, SetSigla, SetRamal)
VALUES(:SetCodigo, :SetNome, :SetSigla, :SetRamal)
ELSE
EXCEPTION MSG01; // Setor já existe
END!!
SET TERM;!!
ALTERA FUNCIONÁRIO
CREATE PROCEDURE AlteraFuncionario(FunNumero INTEGER, FunNome VARCHAR(40), FunSalario FLOAT, FunSetCodigo INTEGER)
AS
DECLARE VARIABLE ValidaFuncionario INTEGER;
DECLARE VARIABLE ValidaSetor INTEGER;
BEGIN
SELECT FunNumero FROM Funcionario WHERE FunNumero = :FunNumero INTO ValidaFuncionario;
SELECT SetCodigo FROM Setor WHERE SetCodigo = :FunSetCodigo INTO ValidaSetor;
IF(ValidaSetor IS NULL) THEN
EXCEPTION MSG01; Setor inexistente
IF(ValidaFuncionario IS NOT NULL) THEN
UPDATE Funcionario SET
FunNome = :FunNome,
FunSalario = :FunSalario,
FunSetCodigo = :FunSetCodigo
WHERE FunNumero = :FunNumero;
ELSE EXCEPTION MSG02; // Funcionário ñ existe
ALTERA SETOR
CREATE PROCEDURE AlteraSetor(SetCodigo INTEGER, SetNome VARCHAR(40), SetSigla VARCHAR(5), SetRamal INTEGER)
AS DECLARE VARIABLE ValidaSetor INTEGER;
BEGIN
SELECT SetCodigo FROM Setor WHERE SetCodigo = :SetCodigo INTO ValidaSetor;
IF(ValidaSetor IS NOT NULL) THEN
UPDATE Setor SET
SetNome = :SetNome,
SetSigla = :SetSigla,
SetRamal = :SetRamal
WHERE SetCodigo = :SetCodigo;
ELSE EXCEPTION MSG02; // Setor inexistente
REMOVE FUNCIONÁRIO
CREATE PROCEDURE RemoveFunNumero(FunNumero INTEGER)
AS DECLARE VARIABLE ValidaFuncionario INTEGER;
BEGIN
SELECT FunNumero FROM Funcionario WHERE FunNumero = :FunNumero INTO ValidaFuncionario;
IF(ValidaFuncionario IS NOT NULL) THEN
DELETE FROM Funcionario
WHERE FunNumero = :FunNumero;
ELSE EXCEPTION MSG08; // Funcionário não existe
REMOVE SETOR
CREATE PROCEDURE RemoveSetNumero(SetCodigo INTEGER)
AS DECLARE VARIABLE ValidaSetor INTEGER;
BEGIN
SELECT SetCodigo FROM Setor WHERE SetCodigo = :SetCodigo INTO ValidaSetor;
IF(ValidaFuncionario IS NOT NULL) THEN
DELETE FROM Setor
WHERE SetCodigo = :SetCodigo;
ELSE EXCEPTION MSG08;// Setor não existe
CONSULTA SETOR POR CÓDIGO
CREATE PROCEDURE ConsultaSetorCodigo(SetCodigo INTEGER)
RETURNS(SetNome VARCHAR(40), SetSigla VARCHAR(8))
AS
DECLARE VARIABLE ValidaSetor INTEGER;
BEGIN
SELECT SetCodigo FROM Setor WHERE SetCodigo = :SetCodigo INTO ValidaSetor;
IF(ValidaSetor IS NOT NULL) THEN
FOR
BEGIN
SELECT SetNome, SetSigla FROM Setor WHERE SetCodigo = :SetCodigo
INTO SetNome, SetSigla
DO
SUSPEND;
END
ELSE EXCEPTION MSG01; // Setor não encontrado
CONSULTA SETOR POR FUNCIONÁRIO
CREATE PROCEDURE ConsultaFunNumero(FunNumero INTEGER)
RETURNS (FunNome, FunSalario, FunSetCodigo)
AS
DECLARE VARIABLE ValidaFuncionario INTEGER;
BEGIN
SELECT FunNumero FROM Funcionario WHERE FunNumero = :FunNumero INTO ValidaFuncionario;
IF(ValidaFuncionario IS NOT NULL) THEN
FOR
BEGIN
SELECT FunNome, FunSalario, FunSetCodigo FROM Funcionario WHERE FunNumero = :FunNumero
INTO FunNome, FunSalario, FunSetCodigo
DO
SUSPEND;
END
ELSE EXCEPTION MSG01; // Funcionário não encontrado