SQLBasico.pdf
-
Upload
julia-karen -
Category
Documents
-
view
217 -
download
0
Transcript of 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
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>
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}
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 ) ;
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 }
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)
);
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]
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;
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;
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 ) ]
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> = {= | < | > | <= | >= | !< | !> | <> | !=
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);
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;
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 (*)
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 ], ... ]
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
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
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
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)
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
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
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>
}
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
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>;
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’;
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.
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
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
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
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));
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}