Você está na página 1de 7

Nota de Aula: Linguagem SQL - DDL

Prof. Leandro Guarino de Vasconcelos FATEC Guaratinguet


A linguagem SQL (Structured Query Language Linguagem de Consulta Estruturada) uma linguagem declarativa utilizada por Sistemas Gerenciadores de Bancos de Dados Relacionais como: Oracle, SQL Server, MySQL, PostgreSQL, Firebird, e outros. Devido sua ampla utilizao por diversos SGBDs, surgiram vrios dialetos para os comandos, que geraram a necessidade de criao de um padro para a linguagem. Essa tarefa foi realizada pela American National Standards Institute (ANSI) em 1986 e ISO em 1987. Em 1992, foi realizao uma reviso da linguagem que recebeu o nome de SQL-92. Em 1999 e 2003, ocorreram novas revises. Na reviso de 1999, foram adicionados padres para expresses regulares, consultas recursivas, triggers e algumas caractersticas de orientao a objeto. Na reviso de 2003, foram introduzidas caractersticas relacionadas a XML, seqncias padronizadas e colunas com valores de auto-numerao. Uma dificuldade encontrada na utilizao da linguagem SQL por parte dos desenvolvedores ou administradores de bancos de dados a diferena entre os comandos nos diversos SGBDs, mesmo aps a definio dos padres. Porm, as diferenas no so grandes. Os comandos da linguagem SQL so subdivididos em algumas categorias de comandos como: DDL, DML e DCL. DDL (Data Definition Language Linguagem de Definio de Dados) Os comandos DDL so usados para definir a estrutura do banco de dados, organizando em tabelas que so compostas por campos (colunas). Comandos que compem a DDL: CREATE, ALTER, DROP. DML (Data Manipulation Language Linguagem de Manipulao de Dados) Os comandos DML permitem realizar operaes de insero, alterao, excluso e seleo sobre os registros (linhas) das tabelas. Comandos que compem a DML: INSERT, UPDATE, DELETE e SELECT. Alguns autores definem que o comando SELECT faz parte de uma subdiviso chamada DQL (Data Query Language Linguagem de Consulta de Dados). DCL (Data Control Language Linguagem de Controle de Dados) Os comandos DCL so usados para gerenciar usurios e permisses de acesso ao Sistema Gerenciador de Banco de Dados. Comandos que compem a DCL: GRANT e REVOKE. Alguns autores ainda definem uma subdiviso da linguagem SQL chamada DTL (Data Transaction Languagem Linguagem de Transao de Dados). Uma transao pode ser compreendida como um conjunto de comandos que executado de forma atmica, ou seja, ou todos os comandos so executados com sucesso ou nenhum dos resultados obtidos por eles ser mantido no banco de dados.

Linguagem SQL no SGBD Oracle


Tipos de Dados Nas linguagens de programao, h quatro tipos primitivos de dados que so: inteiro, real, literal (texto) e lgico. Em cada SGBD, existem tipos de dados derivados desses tipos primitivos. No SGBD Oracle, possvel destacar os seguintes: Tipo de Dado NUMBER(p, e) VARCHAR2 CHAR Descrio Representa um nmero com uma preciso de p e uma escala de e. A preciso p pode variar entre 1 e 38 e a escala e entre 84 e 127. Texto de tamanho varivel. Mximo de 2000 caracteres. Texto de tamanho fixo (preenche com espaos em branco os caracteres no preenchidos). Mximo de 255 caracteres. DATE Data BOOLEAN Valor lgico. TRUE ou FALSE BLOB, CLOB, Tipos de dados para contedos binrios at 4 Gigabytes internos ou NCLOB e externos BFILE (BFILE) base de dados. LONG Texto de tamanho varivel com at 2 GB TIMESTAMP Data e Hora CREATE TABLE Sintaxe: CREATE TABLE nome_da_tabela ( ... definio dos campos ... ); Exemplo: CREATE TABLE clientes( cpf number not null, nome varchar(100) not null, data_nascimento date not null, sexo char(1) default M, salario number(10,2) default 0, profissao varchar(30), primary key(cpf) ); Clusula DEFAULT A clusula DEFAULT permite definir um valor padro para um campo, que ser utilizado caso no seja informado nenhum valor para esse campo na insero de um registro na tabela.

Sintaxe: ... sexo char(1) default M, ... No exemplo acima, caso o campo sexo da tabela no seja preenchido com um valor durante a insero de um registro, ser assumido o valor M para o campo. Para campos do tipo NUMRICO, o valor DEFAULT escrito sem aspas. Exemplo: ... salario number(10,2) default 0, ... Para campos do tipo DATA e/ou HORA, comum utilizar um valor DEFAULT que recupere a DATA/HORA do sistema no momento da insero de um registro. Isso til, por exemplo, quando se deseja armazenar a DATA/HORA de cadastro de um produto no sistema. Exemplo: ... data_hora_cadastro DATE default SYSDATE, ... SYSDATE retorna a data atual e SYSTIMESTAMP retorna a data e a hora atuais do sistema operacional. CONSTRAINTS a) NOT NULL: define que um campo da tabela obrigatrio (deve receber um valor na insero de um registro); b) PRIMARY KEY: define que um campo ou conjunto de campos para garantir a identidade de cada registro. Quando um campo definido como chave primria, seu valor no pode se repetir em registros diferentes. Cada tabela s pode ter uma nica chave primria. CHAVE PRIMRIA SIMPLES: composta por um nico campo. Exemplo: se for definido que em um sistema de hotis no podem existir dois clientes com o mesmo CPF, portanto este campo dever ser definido como CHAVE PRIMRIA. CHAVE PRIMRIA COMPOSTA: formada por dois ou mais campos. Exemplo: se for definido em um sistema de Agncias bancrias que no podem existir duas contas com o mesmo nmero da mesma agncia, ento esses dois campos formaro uma CHAVE PRIMRIA COMPOSTA, pois a combinao deles no pode se repetir. Nmero da Nmero da Conta Agncia 1234 123 1234 567 3432 123

Observe que o nmero da conta pode se repetir individualmente, e o mesmo vale para o nmero da agncia, porm a combinao desses dois campos no pode se repetir, garantindo que no existiro duas contas com o mesmo nmero na mesma agncia. Sintaxe: Criao de uma chave primria simples CREATE TABLE contas( numero number not null primary key, saldo number default 0, agencia_numero number not null ) Ou CREATE TABLE contas( numero number not null, saldo number default 0, agencia_numero number not null, primary key(numero) ) Ou CREATE TABLE contas( numero number not null, saldo number default 0, agencia_numero number not null, constraint pk_conta primary key(numero) )

Criao de uma chave primria composta CREATE TABLE contas( numero number not null, saldo number default 0, agencia_numero number not null, primary key(numero,agencia_numero) ) Ou CREATE TABLE contas( numero number not null, saldo number default 0, agencia_numero number not null, constraint pk_conta primary key(numero,agencia_numero) ) c) FOREIGN KEY

Uma chave estrangeira definida quando se deseja relacionar tabelas do banco de dados. Sintaxe: CREATE TABLE contas( numero number not null, saldo number default 0, agencia_numero number not null, primary key(numero,agencia_numero), foreign key(agencia_numero) references agencias(numero) ) Ou CREATE TABLE contas( numero number not null, saldo number default 0, agencia_numero number not null, primary key(numero,agencia_numero), constraint fk_contaagencia foreign key(agencia_numero) references agencias(numero) ) Na criao da chave estrangeira do exemplo anterior, pode-se ler da seguinte forma: O campo agencia_numero da tabela contas faz referncia ao campo numero da tabela agencias. d) UNIQUE Uma constraint UNIQUE definie que o valor de um campo ou de uma sequncia de campos no pode se repetir em registros da mesma tabela. Essa constraint criada de forma implcita quando definida uma chave primria para uma tabela. Como s possvel ter uma chave primria por tabela, a utilizao de constraints UNIQUE uma soluo quando se deseja restringir valores repetidos em outros campos. Exemplo: CREATE TABLE clientes( cpf number not null, nome varchar(100) not null, data_nascimento date not null, sexo char(1) default M, salario number(10,2) default 0, profissao varchar(30), rg number not null, estado char(2) not null, primary key(cpf), constraint un_rgestado unique(rg,estado) );

A criao da constraint acima garante que um nmero de RG no se repetir em um mesmo estado. DROP TABLE O comando DROP TABLE usado para apagar uma tabela do Banco de dados. Sintaxe: DROP TABLE nome_da_tabela; ALTER TABLE Para no se apagar uma tabela e recri-la, possvel fazer alteraes em sua estrutura por meio do comando ALTER TABLE. Isso importante pois a execuo do comando DROP TABLE apaga (obviamente) todos os registros da tabela, j a execuo do comando ALTER TABLE no exclui nenhum registro. Adicionar um campo Sintaxe: ALTER TABLE nome_da_tabela ADD nome_do_campo tipo_de_dado atributos Exemplo: ALTER TABLE clientes ADD endereco varchar(90) not null; Alterar o tipo de dado de um campo Sintaxe: ALTER TABLE nome_da_tabela MODIFY nome_do_campo tipo_de_dado Exemplo: ALTER TABLE clientes MODIFY endereco varchar(200); Renomear um campo Sintaxe: ALTER TABLE nome_da_tabela RENAME COLUMN nome_do_campo TO novo_nome Exemplo: ALTER TABLE clientes RENAME COLUMN data_nascimento TO datanasc Renomear uma tabela Sintaxe: ALTER TABLE nome_da_tabela RENAME TO novo_nome_da_tabela Exemplo: ALTER TABLE clientes RENAME TO pessoas_fisicas Apagar um campo Sintaxe: ALTER TABLE nome_da_tabela DROP COLUMN nome_do_campo Exemplo: ALTER TABLE clientes DROP COLUMN endereco;

Adicionar uma PRIMARY KEY Sintaxe: ALTER TABLE nome_da_tabela ADD CONSTRAINT nome_da_constraint PRIMARY KEY(campo1[,campo2,campo3,...,campoN]) Exemplo: ALTER TABLE clientes ADD CONSTRAINT pk_cpf PRIMARY KEY(cpf) Apagar uma PRIMARY KEY Sintaxe: ALTER TABLE nome_da_tabela DROP PRIMARY KEY Ou ALTER TABLE nome_da_tabela DROP CONSTRAINT nome_da_constraint_da_primary_key Exemplo: ALTER TABLE clientes DROP PRIMARY KEY; Ou ALTER TABLE clientes DROP CONSTRAINT pk_cpf; Adicionar uma FOREIGN KEY Sintaxe: ALTER TABLE nome_da_tabela ADD CONSTRAINT nome_da_constraint FOREIGN KEY(campo1[,campo2,campo3,...,campoN]) REFERENCES nome_da_tabela(campo1[,campo2,campo3,...,campoN]); Exemplo: ALTER TABLE contas ADD CONSTRAINT fk_contaagencia FOREIGN KEY(agencia_numero) REFERENCES agencias(numero); Adicionar uma constraint UNIQUE Sintaxe: ALTER TABLE nome_da_tabela ADD CONSTRAINT nome_da_constraint UNIQUE(campo1[,campo2,campo3,...,campoN]) Exemplo: ALTER TABLE clientes ADD CONSTRAINT un_rgestado UNIQUE(rg,estado) Apagar uma CONSTRAINT qualquer Sintaxe: ALTER TABLE nome_da_tabela DROP CONSTRAINT nome_da_constraint Exemplo: ALTER TABLE contas DROP CONSTRAINT fk_contaagencia