Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Disciplina: BANCO
DE DADOS II
SELECT
Usado para Projetar , Ordenar o processo de exibio dos dados. DML (Data Manipulation Language)
REVOKE, GRANT
Usado para permitir ou bloquear acessos a estrutura e dados.
TIPOS DE DADOS
CHAR
Variveis ou constantes que armazenam valores alfanumricos com no mximo de 255 caracteres.
Exemplo:
Pagamento CHAR(40); VARCHAR2 Variveis que armazenam valores alfanumricos de tamanho varivel at o tamanho mximo de 2000.
Exemplo:
Nome VARCHAR2(45);
TIPOS DE DADOS
NUMBER
Variveis ou constantes que armazenam valores numricos com no mximo de 38 caracteres. Caso no seja informado o tamanho, o default 38. Tambm pode ser definido preciso escalar.
TIPOS DE DADOS
DATE
Variveis ou constantes que armazenam data, hora (com minutos e segundo e o sculo).
Exemplo:
Data_receb DATE; BOOLEAN Variveis ou constantes que armazenam TRUE, FALSE ou NULL. Exemplo: Flag BOOLEAN;
Comando Create
...
[CONSTRAINT "PK_<tableName>] primary key (<campo1>,[<campo2>,...,<campon>]), [CONSTRAINT FK_<tableName>][foreign key] (<campo>) REFERENCES <table>(campo)
);
DDL
Exemplo Oracle:
Create table pessoa ( cod_pessoa number(5) NOT NULL, nome varchar2(150) NOT NULL, endereco varchar2(150) , fone varchar2(11) , tipo char(1) NOT NULL, CONSTRAINT PK_PESSOA primary key (cod_pessoa) );
DDL
Exemplo 1 MySql:
Create table pessoa ( cod_pessoa numeric(5) NOT NULL, nome varchar(150) NOT NULL, endereco varchar(150), fone varchar(11), tipo char(1) NOT NULL, CONSTRAINT PK_COD_PESSOA PRIMARY KEY (COD_PESSOA) ); Dessa forma voc cria a chave primria junto com a tabela.
DDL
Exemplo 2 MySql:
Create table pessoa ( cod_pessoa numeric(5) NOT NULL, nome varchar(150) NOT NULL, endereco varchar(150), fone varchar(11), tipo char(1) NOT NULL ); alter table pessoa add primary key (cod_pessoa); Dessa forma voc Cria e depois alterar a tabela criando a chave que voc queira.
ALTER TABLE pessoa DROP PRIMARY KEY ; Elimana a chave primaria criada.
DDL
Exemplo Oracle:
funcionario ( number(5) NOT NULL, number(5) NOT NULL, number(5,2) , PK_FUNC primary key (cod_pessoa), FK_PESSOA foreign key (cod_pessoa) pessoa(cod_pessoa), FK_CARGO foreign key (cod_cargo) cargo(cod_cargo)
Create table cod_pessoa cod_cargo salario CONSTRAINT CONSTRAINT references CONSTRAINT references );
DDL
Exemplo MySQL:
funcionario ( numeric(5), numeric(5), numeric(5,2), PK_FUNC primary key (cod_pessoa), FK_PESSOA foreign key (cod_pessoa) pessoa(cod_pessoa), FK_CARGO foreign key (cod_cargo) cargo(cod_cargo)
Create table cod_pessoa cod_cargo salario CONSTRAINT CONSTRAINT references CONSTRAINT references );
DDL
Ex:
DDL
Ex:
DDL
Ex:
DDL
Ex:
DDL
DDL
DDL
DDL
Criao de Tabelas
CREATE TABLE <tabela> ( <coluna> <tipo da coluna> [ restrio do atributo ] { , <coluna> <tipo da coluna> [ restrio do atributo ] } [ <restrio da tabela> { , <restrio da tabela> } ] )
CREATE TABLE DEPARTAMENTO (Nome Numero VARCHAR(15) INTEGER NOT NULL, PRIMARY KEY); NOT NULL, NOT NULL,
CREATE TABLE EMPREGADO (Nome VARCHAR(30) CPF CHAR(9) Data-Nasc DATE, Endereo VARCHAR(30), Sexo CHAR(1), Salrio INTEGER, Supervisor CHAR(9) Dept INTEGER PRIMARY KEY (CPF), UNIQUE (Nome));
Alterao de Tabelas
ALTER TABLE <tabela> <lista de alteraes na tabela>
COMANDOS DE MANIPULAO
DE DADOS EM BANCO INSERT, DELETE, UPDATE e SELECT. Os comando relacionados so utilizados atravs de sintaxe que utilizam valores para realizar procedimentos ralacionados Para controlar as transaes com o banco de dados (iniciadas implicitamente com qualquer comando de modificao de dados), utiliza-se os comandos COMMIT, SAVEPOINT e ROLLBACK.
Para garantir que os dados a serem manipulados no sero alterados ou excludos por outros usurios, utiliza-se o comandos LOCK TABLE ou o comando SELECT com a clusula FOR UPDATE.
UPDATE <tabela> SET <coluna> = <valor> {, <coluna> = <valor>} [ WHERE <condio de seleo> ]
Comando Insert
Insert into [<esquema.>]<tabela> [(campo1,...,campon)] values (valor1,...,valorn);
DML
Comando Update
update [<esquema.>]<tabela> set campo1 = valor1,...,campon = valorn WHERE condio
Ex.: Update pessoa set endereco = novo_endereco, fone = null where cod_pessoa = 1; Update funcionario set salario = 650.60 where cod_pessoa = 1
DML
Comando Delete
Delete from [<esquema.>]<tabela> WHERE condio
Ex.:
Delete from funcionario where cod_pessoa = 1;
DML
Comando Select
Select {* | <campo1,...,campon>} from <tabela> [where condio] Ex.: /* Listando todos os atributos de todas as pessoas */ Select * from pessoa; /* Listando nome e endereco de todas as pessoas */ Select nome,endereco from pessoa;
/* Listando nome e cargo de todos os funcionrios */ Select pessoa.nome, cargo.descricao from pessoa, cargo, funcionario where pessoa.cod_pessoa = funcionario.cod_pessoa and funcionario.cod_cargo=cargo.cod_cargo;
DML
Comando Select
Consultas encadeadas
/* Listar o cliente que possui mais pontos*/ Select pessoa.nome from pessoa, cliente where cliente.pontos = (select MAX(cliente.pontos) from cliente) and pessoa.cod_pessoa = cliente.cod_pessoa;
DML
Comando Select
Clusula Distinct
/* Listando todos os cargos que possuem ao menos um funcionrio*/ Select distinct cargo.descricao from funcionario, cargo where funcionario.cod_cargo = cargo.cod_cargo;
DML
Comando
Select
Clusula Group By /* Listando os cargos e a quantidade de funcionrios em cada cargo agrupados por cargo */ select cod_cargo, count(cod_cargo) as soma from funcionario group by funcionario.cod_cargo
DML
Comando Select
Clusula Having
/* Listando os cargos e a quantidade de funcionrios em cada cargo agrupados por cargo, porm s para aqueles cargos que possuem mais de dois funcionrios atrelados a ele. */ select cod_cargo, count(cod_cargo) as soma from funcionario group by funcionario.cod_cargo having count(*) >= 2;
DML
Comando Select
Clusula order by
/* Listando o nome dos clientes em ordem alfabtica */ Select pessoa.nome from pessoa where pessoa.tipo = C order by pessoa.nome; /* Listando os salrios em ordem decrescente */ Select funcionario.salario from funcionario order by salario desc;
DML
Comando Select
Clusulas in e or
/* Listando o nome dos funcionrios cujo cargo seja caixa ou embalador */ Select pessoa.nome from pessoa,funcionario,cargo where pessoa.cod_pessoa = funcionario.cod_pessoa and funcionario.cod_cargo = cargo.cod_cargo and cargo.descricao in (caixa,embalador);
Select pessoa.nome from pessoa,funcionario,cargo where pessoa.cod_pessoa = funcionario.cod_pessoa and funcionario.cod_cargo = cargo.cod_cargo and cargo.descricao = caixa or cargo.descricao = embalador;
DML
Comando Select
/* Mostrar o valor do maior salrio dos funcionrios */ Select MAX (salario) from Funcionario
/* Mostrar qual o a mdia de pontos dos clientes */ Select AVG (pontos) from Cliente
/* Mostrar quantos clientes possuem mais de 1000 pontos */ Select COUNT (*) from Cliente where pontos > 1000 /* Mostrar as despesas com pagamento de salrio dos funcionrios que o supermercado possui */ Select SUM (salario) from Funcionario
Fim
40