SQLBasico.pdf

31
GBDI - ICMC - USP Linguagem SQL Comandos Básicos Caetano Traina Júnior Grupo de Bases de Dados e Imagens Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos [email protected] 

Transcript of SQLBasico.pdf

Page 1: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 1/31

GBDI - ICMC - USP

Linguagem SQL

Comandos Básicos

Caetano Traina Júnior Grupo de Bases de Dados e Imagens

Instituto de Ciências Matemáticas e de ComputaçãoUniversidade de São Paulo - São Carlos

[email protected] 

Page 2: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 2/31

GBDI - ICMC - USP

Cria uma Tabela no Esquema da Aplicação

Comando CREATE TABLE

Sintaxe:CREATE TABLE <nome da tabela> (

<definição de Coluna>, . . .-- tantos atributos quantos necessários<Restrições de Integridade>

);

<definição de Coluna> pode ser <nome atr> <tipo de dado> [NULL | NOT NULL | USER |

DEFAULT <default- value> | COMPUTED BY <expresion>

Page 3: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 3/31

GBDI - ICMC - USP

Tipos de dados

Comando CREATE TABLE

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

[( int)]| BLOB}

Page 4: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 4/31

GBDI - ICMC - USP

Primeiro Exemplo

Comando CREATE TABLE

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 ) ;

Page 5: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 5/31

GBDI - ICMC - USP

Restrições de Integridade

Comando CREATE TABLE

<Restrições 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>, ... ) [ <ações> ]

| CHECK [<nome da condição>] ( <condição> )

<ações> podem ser:ON { UPDATE | DELETE }{ CASCADE | SET NULL | SET DEFAULT }

Page 6: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 6/31

GBDI - ICMC - USP

Segundo Exemplo

Comando CREATE TABLE

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 CASCADEON UPDATE CASCADE,

UNIQUE SiglaNumero (Sigla, Numero),CHECK LimiteDeVagas (Value <50)

);

Page 7: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 7/31

GBDI - ICMC - USP

Modifica tabelas já definidas

Comando ALTER TABLE

Sintaxe:

ALTER TABLE <nome da tabela>ADD <definição de Coluna>ADD <Restrição de integridade> -- Chaves primária, Secund. Estrang.MODIFY <definição de Coluna>MODIFY <definição de Coluna> DEFAULT <default-value>

MODIFY <definição de Coluna> [ NOT ] NULLDROP <definição de Coluna>DROP CHECK | DROP <nome da chave>DROP UNIQUE ( <definição de Coluna>, ... )DROP PRIMARY KEY | DROP FOREIGN KEYRENAME <novo nome>

RENAME <Atributo> TO <novo atributo>

<definição de coluna> pode ser:<Nome Atributo> <Tipo de Dado> [NULL ] |

[ DEFAULT default-value ] -- nao vale [NOT NULL]

Page 8: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 8/31

GBDI - ICMC - USP

Exemplos

Comando ALTER TABLE

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;

Page 9: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 9/31

GBDI - ICMC - USP

Remove completamente uma tabela e sua definição

Comando DROP TABLE

Sintaxe:DROP TABLE <nome da tabela>;

Exemplo:DROP TABLE Aluno;

Page 10: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 10/31

GBDI - ICMC - USP

Cria um tipo de dado definido pelo usuário

Comando CREATE DOMAIN

Sintaxe:CREATE DOMAIN [ AS ] <Nome do Domínio> <Tipo de Dado>

| [ [ NOT ] NULL ]| [ DEFAULT valor-default ]| [ CHECK ( Condição ) ]

Page 11: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 11/31

GBDI - ICMC - USP

Cria um tipo de dado definido pelo usuário

Comando CREATE DOMAIN

<condição> = {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>| ( <Condição>)| NOT <Condição>| <Condição> OR <Condição>

| <Condição> AND <Condição>}

<operador> = {= | < | > | <= | >= | !< | !> | <> | !=

Page 12: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 12/31

GBDI - ICMC - USP

Exemplos

Comando CREATE DOMAIN

CREATE DOMAIN DNome_Pessoa CHAR (40) NULL;

CREATE DOMAIN DCodigo INT NOT NULL;

CREATE DOMAIN DIdade INTCHECK (VALUE BETWEEN 1 AND 120);

Page 13: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 13/31

GBDI - ICMC - USP

Elimina um tipo de dado já definido pelo usuário

Comando DROP DOMAIN

Sintaxe:DROP DOMAIN <Nome do Domínio>

Exemplo:DROP DOMAIN Nome_Pessoa;

Page 14: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 14/31

GBDI - ICMC - USP

Comandos da DDL

Exercícios

Considerando a definição para a Base de Dados “ALUNOS”, dada previamente,

a) (*) Re-escrever o Script original, para definir todas asrestrições de integridade; b) (*) Escrever um novo Script, para remover todas as restrições

de integridade;c) (*) Escrever um novo Script, para reativar todas as restriçõesde integridade;d) Escrever um novo Script, para ativar a verificação de pelomenos 4 condições para os atributos individuais.

Entregar apenas os Exercícios marcados com (*)

Page 15: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 15/31

GBDI - ICMC - USP

Realiza as consultas em uma base de dados

Comando SELECT

Sintaxe:SELECT [ ALL | DISTINCT ] <lista de atributos>FROM <lista de Tabelas>[ WHERE <condição> ][ GROUP BY <Atributo>, ...

[ HAVING <condição> ] ]ORDER BY <Lista de atributos> [ ASC | DESC ], ... ]

Page 16: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 16/31

GBDI - ICMC - USP

Comando SELECTRealiza as consultas em uma base de dados

...

R

F

FF

C1

SELECT A1FROM RWHERE C1

B

A1

Page 17: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 17/31

GBDI - ICMC - USP

Comando SELECTRealiza as consultas em uma base de dados

...

R

F

FF

C1

SELECT A1FROM RWHERE C1GROUP BY A2

HAVING C2

B

A1+A2

C2

F

F B

A1

Page 18: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 18/31

GBDI - ICMC - USP

Realiza as consultas em uma base de dados

Comando SELECT

Exemplo:Listar os alunos, disciplinas e notas tiradas em turmas commais de 10 alunos

SELECT A.Nome, T.Sigla Disciplinas, M.NotaFROM Alunos A, Turma T, Matricula MWHERE A.NUSP=M.NUSP AND

M.CodigoTurma=T.Codito ANDT.NNAlunos>10ORDER BY A.Nome, T.Sigla;

 AlunosL A

TurmaL T

MatriculaL M

R C1

A.NUSP=M.NUSP

M.CodigoTurma=T.Codigo

T.NNAlunos>10

A1

 A.Nome

T.Sigla L Disciplinas

M.Nota

Page 19: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 19/31

GBDI - ICMC - USP

Comando SELECTRealiza as consultas em uma base de dados

Exemplo:Listar A média das notas das disciplinas em turmas com maisde 10 alunos

SELECT T.Sigla Disciplinas, AVG(M.Nota)FROM Turma T, Matricula MWHERE M.CodigoTurma=T.Codito AND

GROUP BY T.SiglaHAVING T.NNAlunos>10;

TurmaL T

MatriculaL M

R C1

M.CodigoTurma=T.Codigo

A2T.Sigla

( L Disciplinas )

T.NNAlunos

AVG(M.Nota)

+A1

C2T.NNAlunos

>10

A1T.Sigla  L Disciplinas

AVG(M.Nota)

Page 20: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 20/31

GBDI - ICMC - USP

Comando SELECTRealiza 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 vários outros), as tabelas do sistemas sãofiltradas para não serem mostradas no ISQL, mas podem ser acessadasnormalmente. Seus nomes começam com RDB$.

Exemplo:SELECT RDB$Field_Name, RDB$Relation_Name,

RDB$Field_PositionFROM RDB$Relation_FieldsWHERE RDB$Relation_Name NOT LIKE 'RDB$%'ORDER BY RDB$Relation_Name, RDB$Field_Position

Page 21: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 21/31

GBDI - ICMC - USP

Lista de tabelas

Comando SELECT

<Lista de Tabelas> = <joined_table> | <Tabela>

<joined_table> = <Tabela> <join-type> JOIN <Tabela>ON <CondiçãoJunção> | ( <joined_table>)

<join-type> = { } JOIN

Page 22: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 22/31

GBDI - ICMC - USP

Lista de tabelas

Comando SELECT

<CondiçãoJunção> = {<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>| ( <CondiçãoJunção>)| NOT <CondiçãoJunção>| <CondiçãoJunção> OR <CondiçãoJunção>| <CondiçãoJunção> AND <CondiçãoJunção>

}

Page 23: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 23/31

GBDI - ICMC - USP

Lista de tabelas

Comando SELECT

Exemplo:SELECT D.Sigla, D.Nome, Pre.SiglaFROM Discip D LEFT OUTER JOIN Discip Pre

ON D.SiglaPreReq=Pre.Sigla

Page 24: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 24/31

GBDI - ICMC - USP

Insere tuplas em uma Relação

Comando INSERT INTO

Sintaxe:Formato 1: -- Insere uma tupla de cada vez.

Formato 2: -- Insere múltiplas tuplas a partir de uma tabela.

INSERT INTO <Tabela> [( <Atributo>, ... )]VALUES ( expression | DEFAULT, ... );

INSERT INTO <Tabela> [( <Atributo>, ... )]<Comando SELECT>;

Page 25: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 25/31

GBDI - ICMC - USP

Insere tuplas em uma Relação

Comando INSERT INTO

ExemplosFormato 1: - Insere uma tupla de cada vez.

Formato 2: -- Insere múltiplas tuplas a partir de uma tabela.

insert into Professor values ('Antonio', '5656', 'MS-3', 33);insert into Professor ( Nome, Grau, NNfuncional)

values ('Antoninho', 'MS-3', '5757');

INSERT INTO pessoa ( Nome, Idade )SELECT nome, idade from aluno;

INSERT INTO Sancarlenses

SELECT *FROM alunoWHERE cidade like “S%Carlos’;

Page 26: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 26/31

GBDI - ICMC - USP

Altera o valor de atributos de tuplas de uma relação

Comando UPDATE TABLE

Sintaxe:UPDATE <tabela>

SET <Atributo> = <expressão>, ...[ WHERE <Condição> ]

<expressão> = {<Atributo>| <constante> | <expr> | NULL | USER | ?}

<expr> = Qualquer comand SELECT que resulte em apenas umatupla e uma coluna.

Page 27: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 27/31

GBDI - ICMC - USP

Comando UPDATE TABLE

Altera o valor de atributos de tuplas de uma relação

Exemplo:UPDATE Alunos

SET Idade=Idade+1 -- Todas as tuplas da relação têm idadeincrementada de um (1)

UPDATE TurmaSET NNAlunos= (

SELECT count (*)FROM matriculaWHERE codigoTurma=101 )

WHERE Codigo=101 --Apenas as tuplas de Turma com código=101

Page 28: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 28/31

GBDI - ICMC - USP

Remove tuplas de uma relação

Comando DELETE FROM

Sintaxe:DELETE [FROM] <tabela>[WHERE <Condição>]

Exemplos:

DELETE FROM AlunoWHERE NUSP=1234; -- Apaga tupla cujo NUSP vale 1234

DELETE FROM AlunoWHERE Cidade = ‘Mirim-Guaçu' -- Remove todos os Alunosem que o atributo Cidade tem o valor indicado.

DELETE FROM Aluno; -- Apaga Todas as tuplas da relação

Page 29: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 29/31

GBDI - ICMC - USP

Linguagem SQL

Comandos Básicos

Caetano Traina Júnior Grupo de Bases de Dados e Imagens

Instituto de Ciências Matemáticas e de ComputaçãoUniversidade de São Paulo - São Carlos

[email protected] 

Page 30: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 30/31

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));

Page 31: SQLBasico.pdf

7/27/2019 SQLBasico.pdf

http://slidepdf.com/reader/full/sqlbasicopdf 31/31

GBDI - ICMC - USP

Matriculas de alunos

Esquema Exemplo

Professor = { Nome, N#Funcional , Grau, Idade}

Aluno = {Nome, N#USP, Idade, Cidade}

Turma = { Sigla, Número , Código, N#Alunos}

Discip. = { Sigla, Nome, SiglaPréReq, N#Créd.}

Matrícula = { CódigoTurma, N#USP , nota}

Ministra = { N#FuncProf, Código , livro}