Você está na página 1de 31

Linguagem SQL

Comandos Bsicos Caetano Traina Jnior Grupo de Bases de Dados e Imagens Instituto de Cincias Matemticas e de Computao Universidade de So Paulo - So Carlos caetano@icmc.sc.usp.br
GBDI - ICMC - USP

Comando CREATE TABLE


Cria uma Tabela no Esquema da Aplicao
Sintaxe: CREATE TABLE <nome da tabela> ( <definio de Coluna>, . . .-- tantos atributos quantos necessrios <Restries de Integridade> ); <definio de Coluna> pode ser <nome atr> <tipo de dado> [NULL | NOT NULL | USER | DEFAULT <default- value> | COMPUTED BY <expresion>

GBDI - ICMC - USP

Comando CREATE TABLE


Tipos de dados
<tipo de dado> pode ser: {SMALLINT | INTEGER | FLOAT | DOUBLE PRECISION} | {DECIMAL | NUMERIC} [( precision [, scale])] | DATE | {CHAR | CHARACTER | CHARACTER VARYING | VARCHAR} [( int)] | BLOB }

GBDI - ICMC - USP

Comando CREATE TABLE


Primeiro Exemplo
Exemplo: CREATE TABLE Aluno ( nome varchar(40) NOT NULL, NUSP decimal(8) NOT NULL, idade decimal(2) DEFAULT 18, cidade varchar(30), ID_Responsavel varchar(20) DEFAULT USER );

GBDI - ICMC - USP

Comando CREATE TABLE


Restries de Integridade
<Restries de Integridade> podem ser: PRIMARY KEY [<nome da chave>] ( <Atributo>,... ) | UNIQUE [<nome da chave>] ( <Atributo>,... ) | FOREIGN KEY [<nome da chave>] (< <Atributo>,... > ) REFERENCES <tabela> ( <Atributos chaves>, ... ) [ <aes> ] | CHECK [<nome da condio>] ( <condio> ) <aes> podem ser: ON { UPDATE | DELETE } { CASCADE | SET NULL | SET DEFAULT }

GBDI - ICMC - USP

Comando CREATE TABLE


Segundo Exemplo
CREATE TABLE Turma ( sigla char(7) NOT NULL, numero decimal(2) NOT NULL, codigo decimal(4) PRIMARY KEY, NNalunos decimal(3), FOREIGN KEY SiglaDaTurma (Sigla) REFERENCES Discip (Sigla) ON DELETE CASCADE ON UPDATE CASCADE, UNIQUE SiglaNumero (Sigla, Numero), CHECK LimiteDeVagas (Value <50) );

GBDI - ICMC - USP

Comando ALTER TABLE


Sintaxe: ALTER TABLE <nome da tabela> ADD <definio de Coluna> ADD <Restrio de integridade> -- Chaves primria, Secund. Estrang. MODIFY <definio de Coluna> MODIFY <definio de Coluna> DEFAULT <default-value> MODIFY <definio de Coluna> [ NOT ] NULL DROP <definio de Coluna> DROP CHECK | DROP <nome da chave> DROP UNIQUE ( <definio de Coluna>, ... ) DROP PRIMARY KEY | DROP FOREIGN KEY RENAME <novo nome> RENAME <Atributo> TO <novo atributo> <definio de coluna> pode ser: <Nome Atributo> <Tipo de Dado> [NULL ] | [ DEFAULT default-value ] -- nao vale [NOT NULL]
GBDI - ICMC - USP

Modifica tabelas j definidas

Comando ALTER TABLE


Exemplos
ALTER TABLE Professor ADD CorCabelos CHAR(25) DEFAULT Branco; ALTER TABLE Aluno ADD Altura INT DEFAULT NULL; ALTER TABLE Aluno DROP Altura; ALTER TABLE Professor MODIFY CorCabelos CHAR(30) ; ALTER TABLE Aluno ADD MonitoraDiscip CHAR(7) REFERENCES Disciplina (Sigla) ON UPDATE CASCADE ON DELETE SET NULL; ALTER TABLE Aluno DROP MonitoraDiscip;
GBDI - ICMC - USP

Comando DROP TABLE


Remove completamente uma tabela e sua definio
Sintaxe: DROP TABLE <nome da tabela>; Exemplo: DROP TABLE Aluno;

GBDI - ICMC - USP

Comando CREATE DOMAIN


Cria um tipo de dado definido pelo usurio
Sintaxe: CREATE DOMAIN [ AS ] <Nome do Domnio> <Tipo de Dado> | [ [ NOT ] NULL ] | [ DEFAULT valor-default ] | [ CHECK ( Condio ) ]

GBDI - ICMC - USP

Comando CREATE DOMAIN


Cria um tipo de dado definido pelo usurio <condio> = { VALUE <operador> <val> | VALUE [NOT] BETWEEN <val> AND <val> | VALUE [NOT] LIKE <val> [ESCAPE <val>] | VALUE [NOT] IN ( <val> [ , <val> ]) | VALUE IS [NOT] NULL | VALUE [NOT] CONTAINING <val> | VALUE [NOT] STARTING [WITH] <val> | ( <Condio>) | NOT <Condio> | <Condio> OR <Condio> | <Condio> AND <Condio> }
<operador> = {= | < | > | <= | >= | !< | !> | <> | !=
GBDI - ICMC - USP

Comando CREATE DOMAIN


Exemplos
CREATE DOMAIN DNome_Pessoa CHAR (40) NULL; CREATE DOMAIN DCodigo INT NOT NULL; CREATE DOMAIN DIdade INT CHECK (VALUE BETWEEN 1 AND 120);

GBDI - ICMC - USP

Comando DROP DOMAIN


Elimina um tipo de dado j definido pelo usurio
Sintaxe: DROP DOMAIN <Nome do Domnio>

Exemplo: DROP DOMAIN Nome_Pessoa;

GBDI - ICMC - USP

Exerccios
Comandos da DDL
Considerando a definio para a Base de Dados ALUNOS, dada previamente, a) (*) Re-escrever o Script original, para definir todas as restries de integridade; b) (*) Escrever um novo Script, para remover todas as restries de integridade; c) (*) Escrever um novo Script, para reativar todas as restries de integridade; d) Escrever um novo Script, para ativar a verificao de pelo menos 4 condies para os atributos individuais. Entregar apenas os Exerccios marcados com (*)

GBDI - ICMC - USP

Comando SELECT
Realiza as consultas em uma base de dados
Sintaxe: SELECT [ ALL | DISTINCT ] <lista de atributos> FROM <lista de Tabelas> [ WHERE <condio> ] [ GROUP BY <Atributo>, ... [ HAVING <condio> ] ] ORDER BY <Lista de atributos> [ ASC | DESC ], ... ]

GBDI - ICMC - USP

Comando SELECT
Realiza as consultas em uma base de dados
SELECT A1 FROM R WHERE C1

R ...

C1

F F

A1

B
GBDI - ICMC - USP

Comando SELECT
Realiza as consultas em uma base de dados
SELECT A1 FROM R WHERE C1 GROUP BY A2 HAVING C2

C2

F
C1

A1

R ...

F F

A1+A2

GBDI - ICMC - USP

Comando SELECT
Realiza as consultas em uma base de dados
Exemplo: Listar os alunos, disciplinas e notas tiradas em turmas com mais de 10 alunos SELECT A.Nome, T.Sigla Disciplinas, M.Nota FROM Alunos A, Turma T, Matricula M WHERE A.NUSP=M.NUSP AND M.CodigoTurma=T.Codito AND T.NNAlunos>10 ORDER BY A.Nome, T.Sigla;

R
Alunos L A Turma L T Matricula LM

C1
A.NUSP=M.NUSP M.CodigoTurma= T.Codigo T.NNAlunos>10 A.Nome T.Sigla L Disciplinas M.Nota

A1

GBDI - ICMC - USP

Comando SELECT
Realiza as consultas em uma base de dados
Exemplo: Listar A mdia das notas das disciplinas em turmas com mais de 10 alunos SELECT T.Sigla Disciplinas, AVG(M.Nota) A1 C2 T.Sigla FROM Turma T, Matricula M L Disciplinas WHERE M.CodigoTurma=T.Codito AND T.NNAlunos >10 GROUP BY T.Sigla AVG(M.Nota) HAVING T.NNAlunos>10;

R
Turma L T Matricula LM

C1
M.CodigoTurma= T.Codigo

A2
T.Sigla ( L Disciplinas ) T.NNAlunos

+A1
AVG(M.Nota)
GBDI - ICMC - USP

Comando SELECT
Realiza as consultas em uma base de dados
O Modelo Relacional um Meta Modelo: capaz de modelar a si mesmo. Assim existem: Tabelas de Tabelas, Tabelas de Atributos, etc. No gerenciador Interbase (e vrios outros), as tabelas do sistemas so filtradas para no serem mostradas no ISQL, mas podem ser acessadas normalmente. Seus nomes comeam com RDB$.

Exemplo: SELECT RDB$Field_Name, RDB$Relation_Name, RDB$Field_Position FROM RDB$Relation_Fields WHERE RDB$Relation_Name NOT LIKE 'RDB$%' ORDER BY RDB$Relation_Name, RDB$Field_Position

GBDI - ICMC - USP

Comando SELECT
Lista de tabelas
<Lista de Tabelas> = <joined_table> | <Tabela> <joined_table> = <Tabela> <join-type> JOIN <Tabela> ON <CondioJuno> | ( <joined_table>) <join-type> = { } JOIN

GBDI - ICMC - USP

Comando SELECT
Lista de tabelas
<CondioJuno> = { <val> <operator> <val> | <val> [NOT] BETWEEN <val> AND <val> | <val> [NOT] LIKE <val> [ESCAPE <val>] | <val> [NOT] IN ( <val> [ , <val> ] | <select_list>) | <val> IS [NOT] NULL | <val> {[NOT] {= | < | >} | >= | <=} {ALL | SOME | ANY} (<select_list>) | EXISTS ( <select_expr>) | SINGULAR ( <select_expr>) | <val> [NOT] CONTAINING <val> | <val> [NOT] STARTING [WITH] <val> | ( <CondioJuno>) | NOT <CondioJuno> | <CondioJuno> OR <CondioJuno> | <CondioJuno> AND <CondioJuno> }
GBDI - ICMC - USP

Comando SELECT
Lista de tabelas
Exemplo: SELECT D.Sigla, D.Nome, Pre.Sigla FROM Discip D LEFT OUTER JOIN Discip Pre ON D.SiglaPreReq=Pre.Sigla

GBDI - ICMC - USP

Comando INSERT INTO


Insere tuplas em uma Relao
Sintaxe: Formato 1: -- Insere uma tupla de cada vez. INSERT INTO <Tabela> [( <Atributo>, ... )] VALUES ( expression | DEFAULT, ... );

Formato 2: -- Insere mltiplas tuplas a partir de uma tabela. INSERT INTO <Tabela> [( <Atributo>, ... )] <Comando SELECT>;

GBDI - ICMC - USP

Comando INSERT INTO


Insere tuplas em uma Relao
Exemplos Formato 1: - Insere uma tupla de cada vez. insert into Professor values ('Antonio', '5656', 'MS-3', 33); insert into Professor ( Nome, Grau, NNfuncional) values ('Antoninho', 'MS-3', '5757'); Formato 2: -- Insere mltiplas tuplas a partir de uma tabela. INSERT INTO pessoa ( Nome, Idade ) SELECT nome, idade from aluno; INSERT INTO Sancarlenses SELECT * FROM aluno WHERE cidade like S%Carlos;

GBDI - ICMC - USP

Comando UPDATE TABLE


Altera o valor de atributos de tuplas de uma relao
Sintaxe: UPDATE <tabela> SET <Atributo> = <expresso>, ... [ WHERE <Condio> ] <expresso> = {<Atributo>| <constante> | <expr> | NULL | USER | ?} <expr> = Qualquer comand SELECT que resulte em apenas uma tupla e uma coluna.

GBDI - ICMC - USP

Comando UPDATE TABLE


Altera o valor de atributos de tuplas de uma relao
Exemplo: UPDATE Alunos SET Idade=Idade+1 -- Todas as tuplas da relao tm idade incrementada de um (1) UPDATE Turma SET NNAlunos= ( SELECT count (*) FROM matricula WHERE codigoTurma=101 ) WHERE Codigo=101 --Apenas as tuplas de Turma com cdigo=101

GBDI - ICMC - USP

Comando DELETE FROM


Remove tuplas de uma relao
Sintaxe: DELETE [FROM] <tabela> [WHERE <Condio>] Exemplos: DELETE FROM Aluno WHERE NUSP=1234; -- Apaga tupla cujo NUSP vale 1234 DELETE FROM Aluno WHERE Cidade = Mirim-Guau' -- Remove todos os Alunos em que o atributo Cidade tem o valor indicado. DELETE FROM Aluno; -- Apaga Todas as tuplas da relao

GBDI - ICMC - USP

Linguagem SQL
Comandos Bsicos Caetano Traina Jnior Grupo de Bases de Dados e Imagens Instituto de Cincias Matemticas e de Computao Universidade de So Paulo - So Carlos caetano@icmc.sc.usp.br
GBDI - ICMC - USP

Esquema Exemplo
create table Professor ( nome varchar(40) NOT NULL, NNfuncional char(7) NOT NULL, grau char(7), idade decimal(2)); create table Aluno ( nome varchar(40) NOT NULL, NUSP decimal(8) NOT NULL, idade decimal(2), cidade varchar(30)) ; create table Discip ( sigla char(7) NOT NULL, nome varchar(25) NOT NULL, siglaprereq char(7), NNcred decimal(2) NOT NULL); create table Turma ( sigla char(7) NOT NULL, numero decimal(2) NOT NULL, codigo decimal(4) NOT NULL, NNalunos decimal(3)); create table Matricula ( codigoturma decimal(4) NOT NULL, NUSP decimal(8) NOT NULL, nota decimal(3)); create table Ministra ( NNfuncprof char(7) NOT NULL, codigo decimal(4) NOT NULL, livro varchar(50));

GBDI - ICMC - USP

Esquema Exemplo
Matriculas de alunos
Professor = { Nome, N#Funcional , Grau, Idade} Aluno = { Nome, N#USP , Idade, Cidade} Turma = { Sigla, Nmero , Cdigo , N#Alunos} Discip. = { Sigla , Nome, SiglaPrReq, N#Crd.} Matrcula = { CdigoTurma, N#USP , nota} Ministra = { N#FuncProf, Cdigo , livro}
GBDI - ICMC - USP