A SQL é a linguagem de programação não procedural planejada para funcionar com conjuntos de dados em sistemas de gerenciamento de bases de dados relacionais. Ela é parte fundamental no Curso Oracle PL/SQL, sem o SQL o PL/SQL não existiria, na verdade o PL/SQL eu gosto de tratar como uma evolução do SQL, já que esta linguagem foi criada para resolver problemas lógicos que somente o SQL puro não resolveria. Ela é importantíssima, pois um bom SQL deixa o código mais robusto e performático, evitando problemas.
A SQL permite que você defina, modifique e remova objetos da base de dados, faça transações de dados, controle o fluxo das transações e solicite os dados. Os comandos da linguagem SQL estão frequentemente agrupados por função em três grupos que são chamados da linguagens: DDL (CREATE, ALTER, DROP e GRANT com o DDL você define, modifica e remove objetos “Objetos entenda como Triggers, Procedures, Packages, Functions e Types”), DML (SELECT, INSERT, DELETE e UPDATE, ela é a linguagem responsável por solicitar dados e manipular dados) e o DCL (SAVEPOINT, COMMIT e ROLLBACK, serve para você controlar as transações).
Bom não entendeu algumas dessas siglas ou não tem noção do que elas são, fique tranquilo quando você finalizar este Curso Oracle PL/SQL você vai dominar tudo isso. Agora vou passar para vocês os tipos de dados mais comuns que existem no Oracle, vou passar os mais comuns porque os Tipos de dados não é o foco deste curso, no futuro estou planejando uma surpresa para vocês, totalmente focado no SQL, mas como é uma surpresa, aguardem, logo após o Curso Oracle PL/SQL, vocês receberão novidades.
Existem ao todo 23 tipos de dados, mas para esta aula vou passar apenas 5 tipos de dados, porque existem tipos que serão utilizados apenas em situações especiais e que no momento não interessam, no futuro vou escrever uma matéria apenas dos tipos de dados e assim eles ficam disponíveis para futuras consultas.
[well]CHAR: Ela tem um tamanho fixo de bites ou caracteres, este tipo de dado é muito utilizado para armazenar informações do tipo string que nunca mudam o tamanho, por exemplo siglas de sexo que apenas um carácter, CEP (Você deve estar se perguntando mas CEP é número, explico melhor isso no tipo Number), Telefone, CPF/CNPJ, basicamente informações não variáveis, na sua declaração você deve usar a seguinte forma CHAR(“Tamanho do Campo”). Ex: CD_SEXO CHAR(1);[/well]
[well]VARCHAR2: Este tipo de dado é utilizado para armazenar strings de tamanhos variados, com um tamanho de até 4000 caractéres. Este tipo de dados é utilizado para strings variáveis, por exemplo Nome da Pessoa, Rua, Cidade, basicamente campos que não tem como você prever o tamanho deles no início. Para a declarar o VARCHAR2, utilizamos a seguinte sintaxe CHAR, que seria por exemplo NM_CLIENTE VARCHAR2(70):[/well]
[well]CLOB: Este tipo é utilizado para guardar caracteres de um tamanho até 4GB. Ele é muito utilizado para guardar arquivos transacionais, como por exemplo XMLs (Antigamente não existiam as XMLs Types no Oracle e como a maioria dos sistemas de hoje foram feitos antigamente, vocês vão encontrar muitos XMLs armazenados desta forma). Esses tipos não são definidos sem nenhum parâmetro para o tamanho. Ex: TRANSACAO_XML CLOB;[/well]
[well]NUMBER: É uma coluna numérica de tipo de dados, com um tamanho de até 38 posições. Ele é utilizado para gravar todos os tipos valores numéricos no banco, esse valores podem ser definidos da seguinte forma, NUMBER(8,2) , onde o 8 é o tamanho total do campo e 2 a precisão, ou seja nesse campo você só poderia chegar a casa dos milhões, uma vez que o dois também faz parte do 8, então o número máximo que poderia ser colocado neste campo seria 999999,99. Além disso o NUMBER nunca começa com zero, por esse motivo precisamos usar o CHAR para salvarmos informações como o CEP, Telefone, etc.[/well]
[well]DATE: o Date possui 7 bytes e armazena de janeiro de 4712 A.C. até 31 de dezembro de 9999, usando a resentação do calendário Grego, que é o que utilizamos. A máscara de formato padrão é DD-MON-RR (DD -> Dia, MON -> ‘Jan’, ‘Feb’, RR -> ’13’ “Os dois ultimos dígitos do ano”). Para alterar o padrão é necessário alterar o parâmetro NLS_DATE_FORMAT, aí se o administrador do Banco de Dados, ou DBA, quiser ele pode colocar no padrão brasileiro que é “DD/MM/RRRR“. Ele é utilizado para gravar campos com datas. [/well]
Todos os tipos que forma passados acima, possuem outros subtipos, porém se eu fosse passar todos eles aqui levaria a matéria inteira e sinceramente vocês vão usá-los muito pouco, como eu já falei acima, duas aulas apenas do assunto SQL é muito pouco, por esse motivo vou preparar algo especial para vocês logo depois de terminar o Curso Oracle PL/SQL.
Já passei a vocês os tipos de códigos, agora vamos criar as tabelas que desenhamos na ultima aula se utilizando dessas informações, para quem não se lembra segue a imagem do relacionamento feito.
Então vamos usar a tabela TB_PRODUTO como exemplo, na tabela nela temos os campos ID_PRODUTO, NM_PRODUTO, ID_TIPO_PRODUTO, VL_COMPRA_PRODUTO, VL_VENDA_PRODUTO, DT_VALIDADE_PRODUTO e NR_LOTE_PRODUTO. Vamos criar o nosso primeiro código DDL agora para criarmos uma tabela. E ele vai logo abaixo!
[well]
CREATE TABLE TB_PRODUTO (
ID_PRODUTO NUMBER(10),
NM_PRODUTO VARCHAR2(50),
ID_TIPO_PRODUTO NUMBER(10),
VL_COMPRA_PRODUTO NUMBER(8,2),
VL_VENDA_PRODUTO NUMBER(8,2),
DT_VALIDADE_PRODUTO DATE,
NR_LOTE_PRODUTO VARCHAR2(30));
Caramba, acabamos de criar o nosso primeiro código DDL no curso, isso é um marco :). Mas você deve ter muitas dúvidas agora, e a maior delas deve ser, criei o meu primeiro DDL, mas onde eu vou coloca-lo? Lembram da primeira aula, para quem não lembrar é só clicar aqui , lá no final da instalação definimos um usuário e uma senha, para acessarmos o banco de dados, não é o system da instalação, é o ultimo usuário que você criou. Agora você vai entrar neste endereço http://127.0.0.1:8080/apex e vai acessar com aquele ultimo usuário criado.
Após isso você vai clicar no ícone da imagem abaixo:
Vai abrir a janela abaixo e você vai clicar em SQL Commands, conforme destacado na imagem.
Você vai entrar nesta tela, aqui dentro nós vamos colocar o código de criação de tabela e clicar no botão “Run” e como resultado teremos a mensagem destacada na imagem.
Agora sim podemos dizer que temos o nosso primeiro objeto criado. Porém você temos um identificador único na tabela TB_PRODUTO, o ID_PRODUTO, mas como é feito essa diferenciação de campo, isso é fácil nós vamos criar uma Primary Key que é um identificador única para esta tabela.
[well] ALTER TABLE TB_PRODUTO ADD CONSTRAINT PK_PRODUTO PRIMARY KEY (ID_PRODUTO); [/well]
Legal né, mais um código feito e uma chave primária criada, um pouco de explicação, o código “ALTER TABLE” é o código DDL que indica que nós vamos alterar a tabela, depois desse código vem o nome da tabela, TB_PRODUTO, que vai ser alterada, após isso nós vamos falar para o banco o que nós vamos fazer nesta tabela e por isso colocamos o código “ADD CONTRAINT” e após isso vamos colocar o nome dessa constraint, que vai ser PK_PRODUTO, após colocarmos o nome vamos por o tipo da constraint que vamos colocar nesta tabela e o campo que ela vai representar “PRIMARY KEY (ID_PRODUTO)“.
Agora vou usar outro código DDL para vermos como ficou a nossa tabela TB_PRODUTO, que é o DESC, ele tem a função de descrever tudo que existe na tabela. E eu vou destacar a coluna ID_PRODUTO nesta imagem na coluna Primary Key, vocês viram que ela está como 1 , isso indica que esta coluna é única e que sempre teremos um código diferenciado para esta coluna.
Vocês viram que além da coluna Primary Key eu também destaquei a coluna Nullable, que significa que aquele campo pode ser inserido como nulo, mas existem campos nesta tabela que não podem ser nulos, mas eles podem ser repetidos, como por exemplo o campo NM_PRODUTO, e como vamos fazer para alterar esta informação, é simples, alterar esta coluna e colocarmos ela como NOT NULL.
[well]ALTER TABLE TB_PRODUTO MODIFY NM_PRODUTO NOT NULL;[/well]
Temos um novo ALTER TABLE, onde como no outro caso vem o nome da tabela que vamos alterar, no caso TB_PRODUTO, após vem o código que vamos fazer nessa tabela, que vai ser o MODIFY, e o nome da coluna que nós vamos modificar NM_PRODUTO e o que vamos fazer com esta coluna, NOT NULL.
Bastante coisa né, agora só falta mais um assunto na aula de hoje para fecharmos, que é as ligações entre as tabelas, como vocês viram o Oracle é um SGBD que é relacional, ou seja existe uma relação entre as informações, e todas as tabelas estão relacionadas, sendo assim as tabelas dentro do Oracle se relacionam e para se relacionarem existe uma ligação entre elas que é feita pela Foreing Key ou Chave Estrangeira, agora vamos aprender a fazer uma FK.
Vocês viram TB_PRODUTO tem ligação com tabela TB_ITEM_PRODUTO, onde temos um relacionamento de (1:N), e para ligar as tabelas primeiro temos que criar a tabela TB_ITEM_PRODUTO, então segue o script dela.
[well]
CREATE TABLE TB_TIPO_PRODUTO
(ID_TIPO_PRODUTO NUMBER(10) NOT NULL,
NM_TIPO_PRODUTO VARCHAR2(10) NOT NULL);
ALTER TABLE TB_TIPO_PRODUTO ADD CONSTRAINT PK_TIPO_PRODUTO PRIMARY KEY(ID_TIPO_PRODUTO);
[/well]Neste momento vamos ligar a tabela TB_TIPO_PRODUTO com a tabela TB_PRODUTO, com o código
[well]
ALTER TABLE TB_PRODUTO ADD CONSTRAINT FK01_PRODUTO FOREIGN KEY (ID_TIPO_PRODUTO)
REFERENCES TB_TIPO_PRODUTO(ID_TIPO_PRODUTO);
Mais um ALTER TABLE, e após ele vem o nome da tabela, TB_PRODUTO, onde o campo está sendo referenciado ou o que pode ter muitos dados da outra tabela que pode ter apenas um, após vem o ADD CONSTRAINT e o nome da constraint, FK01_produto, aí vem o tipo da constraint FOREIGN KEY e o campo desta constraint na tabela ID_TIPO_PRODUTO. Agora vem a referencia, de onde este campo é único, por isso colocamos o código REFERENCES e o nome da tabela referenciada, TB_TIPO_PRODUTO e em seguida deve-se colocar o campo da tabela referenciada que vai ser alterado ID_TIPO_PRODUTO.
Agora já podemos finalizar a primeira aula de SQL, hoje vocês aprenderam os principais tipos de campos do Oracle, como criar uma tabela, como criar uma chave primária, como alterar uma coluna de uma tabela, como criar uma chave estrangeira e como ver os dados da tabela. Bastante coisa né? Agora vocês viram que falta um monte de tabelas do nosso projeto para se relacionarem, e para fazermos toda essa relação convido vocês à terminarem todo o relacionamento do nosso projeto da segunda aula e a postarem o script de tudo pronto no nosso grupo de alunos no facebook. O melhor projeto entregue até o dia 25/10/2013, vai ganhar um prêmio especial, eu vou bater um papo via skype com essa pessoa e vamos conversar um pouco sobre profissão, tecnologia e qualquer dúvida que você quiser perguntar para mim, ao vivo.
Gostou? Ficou com alguma dúvida? então comente abaixo.
Link permanente
Link permanente
Tenho duas dúvidas:
1º Qual é a diferencia do tipo VARCHAR para o tipo VARCHCAR2?
2º No Oracle não e possível criar uma chave estrangeira quando já exista a tabela a ser referenciada sem usar o ALTER TABLE?
Link permanente
Tenho duas dúvidas:
1º Qual é a diferencia do tipo VARCHAR para o tipo VARCHCAR2?
2º No Oracle não e possível criar uma chave estrangeira quando já exista a tabela a ser referenciada sem usar o ALTER TABLE?
Link permanente
Tenho duas dúvidas:
1º Qual é a diferencia do tipo VARCHAR para o tipo VARCHCAR2?
2º No Oracle não e possível criar uma chave estrangeira quando já exista a tabela a ser referenciada sem usar o ALTER TABLE?
Link permanente
Tenho duas dúvidas:
1º Qual é a diferencia do tipo VARCHAR para o tipo VARCHCAR2?
2º No Oracle não e possível criar uma chave estrangeira quando já exista a tabela a ser referenciada sem usar o ALTER TABLE?
Link permanente
Tenho duas dúvidas:
1º Qual é a diferencia do tipo VARCHAR para o tipo VARCHCAR2?
2º No Oracle não e possível criar uma chave estrangeira quando já exista a tabela a ser referenciada sem usar o ALTER TABLE?
Link permanente
Tenho duas dúvidas:
1º Qual é a diferencia do tipo VARCHAR para o tipo VARCHCAR2?
2º No Oracle não e possível criar uma chave estrangeira quando já exista a tabela a ser referenciada sem usar o ALTER TABLE?
Link permanente
Tenho duas dúvidas:
1º Qual é a diferencia do tipo VARCHAR para o tipo VARCHCAR2?
2º No Oracle não e possível criar uma chave estrangeira quando já exista a tabela a ser referenciada sem usar o ALTER TABLE?
Link permanente
Tenho duas dúvidas:
1º Qual é a diferencia do tipo VARCHAR para o tipo VARCHCAR2?
2º No Oracle não e possível criar uma chave estrangeira quando já exista a tabela a ser referenciada sem usar o ALTER TABLE?
Link permanente
Tenho duas dúvidas:
1º Qual é a diferencia do tipo VARCHAR para o tipo VARCHCAR2?
2º No Oracle não e possível criar uma chave estrangeira quando já exista a tabela a ser referenciada sem usar o ALTER TABLE?
Link permanente
Tenho duas dúvidas:
1º Qual é a diferencia do tipo VARCHAR para o tipo VARCHCAR2?
2º No Oracle não e possível criar uma chave estrangeira quando já exista a tabela a ser referenciada sem usar o ALTER TABLE?
Link permanente
Tenho duas dúvidas:
1º Qual é a diferencia do tipo VARCHAR para o tipo VARCHCAR2?
2º No Oracle não e possível criar uma chave estrangeira quando já exista a tabela a ser referenciada sem usar o ALTER TABLE?
Link permanente
Tenho duas dúvidas:
1º Qual é a diferencia do tipo VARCHAR para o tipo VARCHCAR2?
2º No Oracle não e possível criar uma chave estrangeira quando já exista a tabela a ser referenciada sem usar o ALTER TABLE?
Link permanente
Tenho duas dúvidas:
1º Qual é a diferencia do tipo VARCHAR para o tipo VARCHCAR2?
2º No Oracle não e possível criar uma chave estrangeira quando já exista a tabela a ser referenciada sem usar o ALTER TABLE?
Link permanente
Boa tarde! nao consigo acompanhar as aulas em directo. por causa do fuso horario. Estou em Lisboa. Acompanhei o video de instalacao, ja instalei. outros videos nao consegui acompanhar !
Link permanente
Tenho duas dúvidas:
1º Qual é a diferencia do tipo VARCHAR para o tipo VARCHCAR2?
2º No Oracle não e possível criar uma chave estrangeira quando já exista a tabela a ser referenciada sem usar o ALTER TABLE?
Link permanente
Não sei se acompanhei direito, mas parece que foi criada a tabela sem ser criado um banco de dados primeiro.
Pelo que vi na imagem há o BD “DB_CONFEITARIA”, mas acho que deveria ser mostrado como criar ele primeiro.
creio que seja:
CREATE SCHEMA DB_CONFEITARIA;
ou
CREATE DATABASE DB_CONFEITARIA;
ou não sei se é feito sem a necessidade de comando SQL
E depois selecionar o banco.
Acho que faltou esta parte.
Link permanente
legal
Link permanente
MASSA! CARA MUITO SHOW…
Link permanente
Muito boa essa aula, gostei muito, parabéns! !!