Anda di halaman 1dari 67

SQL - Structured Query Language

Banco de Dados

Me. Reginaldo Gotardo UNISEB

Cincia da Computao 4o semestre

Contedo 1. Introduo 2. SQL DDL


Criao Alterao Remoo ndices

3. SQL DML
Insero Alterao Excluso Consulta (Aula Separada)

4. SQL DCL
Banco de Dados Structured Query Language

Reginaldo Gotardo 2

Banco de Dados

Structured Query Language

Reginaldo Gotardo 3

Introduo

Introduo

Manipulao e controle de bancos de dados relacionais Acesso ao banco de dados:


Reginaldo Gotardo 4

Ambiente interativo de consultas Embutida em linguagens hospedeiras

Recursos:
Alto poder de consulta Gerenciamento de ndices Construo de vises Execuo de instrues em blocos

Banco de Dados

Structured Query Language

SQL - Tipos

Linguagem de Definio de Dados (DDL): comandos para definir, alterar e remover tabelas e ndices; Linguagem de Manipulao de Dados (DML): comandos para inserir, remover, atualizar e consultar os dados armazenados nas tabelas; Linguagem de Controle de Dados (DCL): comandos para se trabalhar em ambiente multiusurio, permitindo estabelecer nveis de segurana e manipular transaes.

Banco de Dados

Structured Query Language

Reginaldo Gotardo 5

SQL Tipos (Outros) Linguagem de Transao de Dados (DTL)


Controle de Incio e Fim de transaes Em geral implementada nos BDs transacionais O usurio pode solicitar os comandos manualmente

Linguagem de Consulta de Dados (DQL)


Diviso da DML Foco na consulta apenas e manipulao dos resultados
Reginaldo Gotardo 6

Banco de Dados

Structured Query Language

SQL - Criao de um banco de dados

necessrio possuir permisso de criao <nome> no deve possuir espao em branco Informaes opcionais
Conjunto de caracteres
latin1_bin e latin1_swedish_ci
Reginaldo Gotardo 7

Opes para Portugus Ingls


utf8_bin Sintaxe: CREATE DATABASE <nome> [CHARACTER SET <conjunto>] COLLATE <subconjunto>;
Banco de Dados Structured Query Language

SQL Visualizando bancos de dados

Somente os bancos de dados que o usurio logado em questo possuir acesso sero mostrados Pode haver outros bancos cujo usurio no tem acesso
Reginaldo Gotardo

Sintaxe: SHOW DATABASES;


Banco de Dados Structured Query Language

SQL Ativando um banco de dados

Necessrio para a maioria das operaes no BD

Sintaxe: USE <nome_do_banco>;


Banco de Dados Structured Query Language

Reginaldo Gotardo 9

SQL Alterando um banco de dados

opcional informar o nome do banco


Caso seja omitido, o banco padro ser alterado

Sintaxe: ALTER DATABASE [<nome_do_banco>] [ CHARACTER SET <conjunto> ] [ COLLATE <subconjunto> ];


Banco de Dados Structured Query Language

10

Reginaldo Gotardo

SQL Excluindo um banco de dados

necessrio que o usurio em questo tenha permisso de DROP ! Toda estrutura e os dados contidos no banco em questo sero excludos de forma definitiva e irreversvel.
Certifique-se se deseja, realmente, fazer isto!
Sintaxe: DROP DATABASE [<nome_do_banco>];

Banco de Dados

Structured Query Language

11

Reginaldo Gotardo

SQL DDL Linguagem de Definio de Dados - Criao de Tabelas

Ative o banco de dados onde deseja cri-la Tambm possvel fazer isto sem informar o banco
Reginaldo Gotardo
Structured Query Language

Nome_banco.nome_tabela

Sintaxe: DROP DATABASE [<nome_do_banco>];

Banco de Dados

12

SQL DDL Criao de uma tabela/relao

Nome da tabela
No usar espao em branco (preferencialmente) Tamanho inferior a 64 caracteres
Reginaldo Gotardo
Banco de Dados Structured Query Language

Sintaxe: CREATE TABLE <nome_tabela> ( <colunas> ) [opes_avanadas];

13

SQL DDL Criao de uma tabela/relao


Sintaxe: <nome_coluna> <tipo> [NULL | NOT NULL] [DEFAULT <valor>] [AUTO_INCREMENT] [PRIMARY KEY | INDEX]

Banco de Dados

Structured Query Language

14

Reginaldo Gotardo

SQL DDL Criao de uma tabela/relao


Sintaxe: <nome_coluna> <tipo> [NULL | NOT NULL] [DEFAULT <valor>] [AUTO_INCREMENT] [PRIMARY KEY | INDEX]

Voc pode definir na frente de cada coluna se ser uma chave primria ou ser um ndice.

Banco de Dados

Structured Query Language

15

Reginaldo Gotardo

SQL DDL Criao de uma tabela/relao


[ PRIMARY KEY (<nome_coluna> ) ] [ UNIQUE (nome_coluna) ] [ FOREIGN KEY (nome_coluna) ON DELETE CASCADE/SET NULL/SET DEFAULT ON UPDATE CASCADE/SET NULL/SET DEFAULT ];
Reginaldo Gotardo 16

REFERENCES nome_tabela (nome_coluna)

Banco de Dados

Structured Query Language

SQL DDL Criao de uma tabela/relao


[ PRIMARY KEY (<nome_coluna> ) ] [ UNIQUE (nome_coluna) ] [ FOREIGN KEY (nome_coluna) ON DELETE CASCADE/SET NULL/SET DEFAULT ON UPDATE CASCADE/SET NULL/SET DEFAULT ];
Reginaldo Gotardo 17

REFERENCES nome_tabela (nome_coluna)

Aps definir as colunas tambm possvel configurar a chave primria desta forma

Banco de Dados

Structured Query Language

SQL DDL Criao de uma tabela/relao


[ PRIMARY KEY (<nome_coluna> ) ] [ UNIQUE (nome_coluna) ] [ FOREIGN KEY (nome_coluna) ON DELETE CASCADE/SET NULL/SET DEFAULT ON UPDATE CASCADE/SET NULL/SET DEFAULT ];
Reginaldo Gotardo 18

REFERENCES nome_tabela (nome_coluna)

Outra possibilidade a criao de ndices

Banco de Dados

Structured Query Language

SQL DDL Criao de uma tabela/relao

Ou a configurao de chaves estrangeiras


[ PRIMARY KEY (<nome_coluna> ) ] [ UNIQUE (nome_coluna) ] [ FOREIGN KEY (nome_coluna) REFERENCES nome_tabela (nome_coluna) ON DELETE CASCADE/SET NULL/SET DEFAULT ON UPDATE CASCADE/SET NULL/SET DEFAULT ];
Reginaldo Gotardo 19

Banco de Dados

Structured Query Language

SQL DDL Tipos de Atributos


Tipos de dados mais usuais: - CHAR(n) ou CHARACTER(n): cadeia de caracteres de tamanho fixo, com o tamanho n definido pelo usurio; - VARCHAR(n): cadeia de caracteres de tamanho varivel, com o tamanho mximo n definido pelo usurio; - INT ou INTEGER: nmero inteiro, geralmente de -32768 a 32767; - SMALLINT: nmero inteiro pequeno, geralmente de 0 a 65535; - NUMERIC(t,d): nmero de ponto decimal fixo, que consiste de t dgitos totais e d dgitos direita do ponto decimal, com t e d definidos pelo usurio; - REAL: nmero de ponto flutuante, geralmente de 1.17E-38 a 3.4E+38; - DOUBLE PRECISION: nmero de ponto flutuante de dupla preciso, geralmente de 2.2E-308 a 1.7E+308; - FLOAT(n): nmero de ponto flutuante com a preciso n definida pelo usurio; - DATE: formato de data, contendo dia, ms e ano; - TIME: formato de horrio, contendo horas, minutos e segundos.
Banco de Dados Structured Query Language

20

Reginaldo Gotardo

SQL DDL Recursos Avanados

Para definir mais colunas deve-se separ-las por vrgula No possvel definir duas ou mais colunas com o mesmo nome (idnticos) Nas opes avanadas voc pode:

Banco de Dados

Structured Query Language

21

Reginaldo Gotardo

SQL DDL Recursos Avanados

Nas opes avanadas voc pode:

ENGINE = <valor> AUTO_INCREMENT = <valor> CHARACTER SET = <valor>

Definir o mecanismo de armazenamento utilizado nesta tabela.

Banco de Dados

Structured Query Language

22

Reginaldo Gotardo

SQL DDL Recursos Avanados

Nas opes avanadas voc pode:

ENGINE = <valor> AUTO_INCREMENT = <valor> CHARACTER SET = <valor>

Definir qual valor a coluna de auto-incremento deve assumir no momento (obrigatrio em migrao e backups para que seja assumido este valor quando ocorrer a reconstruo do banco).

Banco de Dados

Structured Query Language

23

Reginaldo Gotardo

SQL DDL Recursos Avanados

Nas opes avanadas voc pode:

ENGINE = <valor> AUTO_INCREMENT = <valor> CHARACTER SET = <valor>

Definir o conjunto de caracteres da tabela em questo. Existem opes para lngua portuguesa e lngua inglesa (alm de outras) como o latin1_bin e o utf8_bin.

Banco de Dados

Structured Query Language

24

Reginaldo Gotardo

SQL DDL Exemplo Banco de Dados Escola

Banco de Dados

Structured Query Language

25

Reginaldo Gotardo

SQL DDL Exemplo Tabela Disciplina

Banco de Dados

Structured Query Language

26

Reginaldo Gotardo

SQL DDL Exemplo Tabela Disciplina


CREATE TABLE Disciplina ( codD nomeD cargaD areaD preReqD int varchar(45) varchar(45) varchar(45) int , NOT NULL, , ,
Reginaldo Gotardo 27

PRIMARY KEY (CodD), FOREIGN KEY (preReqD) REFERENCES Disciplina (codD) ON DELETE CASCADE ) ENGINE=InnoDB;

Banco de Dados

Structured Query Language

SQL DDL Exemplo Tabela Disciplina

Para visualizar a tabela criada


Ative o BD com o USE

Depois
Reginaldo Gotardo 28

SHOW TABLES;

Para visualizar informaes estruturais de uma tabela:


DESCRIBE <nome_tabela>;

Banco de Dados

Structured Query Language

SQL DDL Exemplo Tabela Curso

Banco de Dados

Structured Query Language

29

Reginaldo Gotardo

SQL DDL Exemplo Tabela Curso


CREATE TABLE curso ( codC nomeC duracaoC mensC ) ENGINE=InnoDB; int varchar(45) int float NOT NULL, , ,
Reginaldo Gotardo 30

PRIMARY KEY (CodC)

Banco de Dados

Structured Query Language

SQL DDL Exemplo Tabela Professor

Banco de Dados

Structured Query Language

31

Reginaldo Gotardo

SQL DDL Exemplo Tabela Professor


CREATE TABLE professor ( codP nomeP cidadeP tituloP ) ENGINE=InnoDB; int varchar(45) varchar(45) varchar(45) NOT NULL, , ,
Reginaldo Gotardo 32

PRIMARY KEY (codP)

Banco de Dados

Structured Query Language

SQL DDL Exemplo Tabela Grade !!!!

Banco de Dados

Structured Query Language

33

Reginaldo Gotardo

SQL DDL Exemplo Tabela Grade !!!!


CREATE TABLE Grade ( Curso_codC Disciplina_codD Professor_codP sala int int int int, NOT NULL, NOT NULL, NOT NULL,
Reginaldo Gotardo 34

PRIMARY KEY (Curso_codC, Disciplina_codD, Professor_codP), FOREIGN KEY (Curso_codC) REFERENCES Curso (CodC) ON DELETE CASCADE, FOREIGN KEY (Disciplina_codD) REFERENCES Disciplina (CodD) ON DELETE CASCADE, FOREIGN KEY (Professor_codP) REFERENCES Professor (CodP) ON DELETE CASCADE ) ENGINE=InnoDB;
Banco de Dados Structured Query Language

SQL DDL Alterando Tabelas

Opes de customizao so as mesmas do comando de criao de tabelas Alteraes mais importantes:


Reginaldo Gotardo
Banco de Dados Structured Query Language

Insero Alterao Excluso

de colunas

ALTER TABLE <nome> <opes>;

35

SQL DDL Alterando Tabelas

Adicionando uma coluna a uma tabela existente


ALTER TABLE <nome> ADD <nome_nova_coluna> <tipo> [COLLATE <subconjunto>] [NULL | NOT NULL] [DEFAULT <valor>] [FIRST | AFTER <coluna_existente>] ;
Reginaldo Gotardo 36

[CHARACTER SET <conjunto>]

Banco de Dados

Structured Query Language

SQL DDL Alterando Tabelas

[COLLATE <subconjunto>] [NULL | NOT NULL] [DEFAULT <valor>] [FIRST | AFTER <coluna_existente>] ;

Banco de Dados

Structured Query Language

37

Reginaldo Gotardo

Caso no seja especificado ALTER TABLE <nome> ser inserido no ADD <nome_nova_coluna> <tipo> final da [CHARACTER SET <conjunto>]tabela!!

Adicionando uma coluna a uma tabela existente

SQL DDL Alterando Tabelas

Alterando uma coluna de uma tabela existente


ALTER TABLE <nome> CHANGE <nome_coluna><nome_novo> <tipo> [COLLATE <subconjunto>] [NULL | NOT NULL] [DEFAULT <valor>] ;
Reginaldo Gotardo 38

[CHARACTER SET <conjunto>]

Banco de Dados

Structured Query Language

SQL DDL Alterando Tabelas

Alterando uma coluna de uma tabela existente


ALTER TABLE <nome> CHANGE <nome_coluna><nome_novo> <tipo> [COLLATE <subconjunto>] [NULL | NOT NULL] [DEFAULT <valor>] ;
Reginaldo Gotardo 39

[CHARACTER SET <conjunto>]

Se no quiser alterar o nome, repita-o em novo_nome


Structured Query Language

Banco de Dados

SQL DDL Alterando Tabelas

Alterando uma coluna de uma tabela existente


ALTER TABLE <nome> CHANGE <nome_coluna><nome_novo> <tipo> [COLLATE <subconjunto>] [NULL | NOT NULL] [DEFAULT <valor>] ;
Reginaldo Gotardo 40

[CHARACTER SET <conjunto>]

Se no for definido assume o valor NULL para a coluna alterada


Structured Query Language

Banco de Dados

SQL DDL Alterando Tabelas

Removendo uma coluna de uma tabela existente


ALTER TABLE <nome_tabela> DROP <nome_coluna>
Reginaldo Gotardo
Banco de Dados Structured Query Language

41

SQL DDL Alterando Tabelas

Removendo uma Tabela


DROP TABLE <nome_tabela> ;
Reginaldo Gotardo 42

Se desejar apenas excluir todos os dados da tabela, mas manter a estrutura existente use:
TRUNCATE <nome_tabela> ;

Banco de Dados

Structured Query Language

SQL DDL ndices

Recurso ligado otimizao de um servidor de banco de dados


Prepara estruturas de organizao de registros para tornar a busca e consulta mais rpida e precisa Interessante quando existem mais buscas e consultas do que inseres, atualizaes, remoes.

Banco de Dados

Structured Query Language

43

Reginaldo Gotardo

SQL DDL ndices

Criando um ndice numa Tabela


CREATE [<tipo_indice] INDEX <nome_indice> ON <nome_tabela> (<coluna>)
Reginaldo Gotardo
Banco de Dados Structured Query Language

44

SQL DDL ndices Tipos (MySQL)


UNIQUE valores do ndice no se repetem e isto levado em conta no armazenamento FULLTEXT criar ndices para campos de texto
Faixa de caracteres Funciona apenas no MyISAM
Reginaldo Gotardo 45

SPATIAL ndice para tipos de dados geomtricos (dados espaciais para um espao euclidiano em geral) Tipos de busca nos ndices (logo aps o tipo de ndice parmetro USING <tipo> )
BTREE Mtodo padro do MySQL HASH mais eficiente quando a maioria das solicitaes de ndices encontra seus resultados espalhados na tabela de ndice e no entre os primeiros registros

Banco de Dados

Structured Query Language

SQL DDL ndices

Alterando um ndice numa Tabela


No h mecanismo no MySQL (em particular)
Pesquisar outros bancos

Mtodo
Reginaldo Gotardo
Banco de Dados Structured Query Language

Remover Recriar

46

SQL DDL ndices

Removendo um ndice numa Tabela


DROP INDEX <nome_indice> ON <nome_tabela> ;
Reginaldo Gotardo

Ao remover uma tabela, automaticamente seus ndices so excludos

Banco de Dados

Structured Query Language

47

SQL DML Linguagem de Manipulao de Dados Incluso de tuplas

Alterao de tuplas
Reginaldo Gotardo
Banco de Dados Structured Query Language

Remoo de tuplas

Consultas

48

SQL DML Linguagem de Manipulao de Dados Incluso de tuplas

Alterao de tuplas
Reginaldo Gotardo
Banco de Dados Structured Query Language

Remoo de tuplas

Consultas

49

SQL DML INSERO

Sintaxe: INSERT VALUES ; (<valor>, ...)


Reginaldo Gotardo 50

INTO <nome_tabela> ( <nome_coluna>, .....)

Banco de Dados

Structured Query Language

SQL DML INSERO - Exemplo


codP 1 2 3 4 5 nomeP Jos Paulo Andr Gil Juliana cidadeP Rib Preto Batatais Rib Preto S Carlos S Carlos tituloP Mestre Espec Doutor Doutor Ps Doc
Reginaldo Gotardo 51

Inserir a linha 1 da tabela Professor INSERT INTO Professor (CodP, NomeP, CidadeP, TituloP) VALUES (1, 'Jos', 'Rib Preto', 'Mestre');
Banco de Dados Structured Query Language

SQL DML INSERO Exerccio (parte 1 de 4)


codP 1 2 3 4 5 nomeP Jos Paulo Andr Gil Juliana cidadeP Rib Preto Batatais Rib Preto S Carlos S Carlos tituloP Mestre Espec
Reginaldo Gotardo 52

Doutor Doutor Ps Doc

Faa a Insero dos demais valores na tabela Professor.


Banco de Dados Structured Query Language

SQL DML INSERO Exerccio (parte 2 de 4)


codD 1 2 3 4 5 6 nomeD TLP1 Clculo1 Ingls Ed Fsica G Analtica Projeto Final cargaD 2 4 2 3 5 6 areaD Computao Matemtica Humanas Sade Matemtica null preReqD 2 null
Reginaldo Gotardo 53

null null 2 1

Faa a Insero dos demais valores na tabela Disciplina.


Banco de Dados Structured Query Language

SQL DML INSERO Exerccio (parte 3 de 4)


codC 1 2 3 4 5 nomeC Anlise Sist Eng Mecatrnica Cincia Comp Eng Eltrica Turismo duracaoC 4 5 4 4 3 mensC 400 600 450 600 350
Reginaldo Gotardo 54

Faa a Insero dos demais valores na tabela Curso.


Banco de Dados Structured Query Language

SQL DML INSERO Exerccio (parte 3 de 4)


Curso_codC 1 2 3 4 4 5 5 Disciplina_codD 6 2 2 1 3 4 4 Professor_codP 1 2 2 5 3 3 4 sala 305 305 305 201 204 204 207
Reginaldo Gotardo 55

Faa a Insero dos demais valores na tabela Grade.


Banco de Dados Structured Query Language

SQL DML Linguagem de Manipulao de Dados Incluso de tuplas

Alterao de tuplas
Reginaldo Gotardo
Banco de Dados Structured Query Language

Remoo de tuplas

Consultas

56

SQL DML ATUALIZAO

Sintaxe: UPDATE nome_tabela WHERE (condio de localizao)


Reginaldo Gotardo 57

SET nome_coluna = valor, .....

Banco de Dados

Structured Query Language

SQL DML ATUALIZAO - Exemplo


codC 1 2 3 4 5 nomeC Anlise Sist Eng Mecatrnica Cincia Comp Eng Eltrica Turismo duracaoC 4 5 4 4 3 mensC 400 600
Reginaldo Gotardo 58

450 600 350

Alterar o valor da mensalidade do curso de Cincia da Computao para 650,00 UPDATE Curso SET MensC = 650 WHERE (NomeC = Cincia Comp)
Banco de Dados Structured Query Language

SQL DML ATUALIZAO - Exemplo


codC 1 2 3 4 5 nomeC Anlise Sist Eng Mecatrnica Cincia Comp Eng Eltrica Turismo duracaoC 4 5 4 4 3 mensC 400 600
Reginaldo Gotardo 59

650 600 350

Banco de Dados

Structured Query Language

SQL DML Linguagem de Manipulao de Dados Incluso de tuplas

Alterao de tuplas
Reginaldo Gotardo
Structured Query Language

Remoo de tuplas

Consultas

Banco de Dados

60

SQL DML REMOO

Sintaxe: DELETE FROM nome_tabela


Reginaldo Gotardo 61

WHERE (condio de localizao)

Banco de Dados

Structured Query Language

SQL DML REMOO - Exemplo


codP 1 2 3 4 5 nomeP Jos Paulo Andr Gil Juliana cidadeP Rib Preto Batatais Rib Preto S Carlos S Carlos tituloP Mestre Espec Doutor Doutor Ps Doc
Reginaldo Gotardo 62

Remover da tabela Professor todos os professores que tm ttulo de Doutor DELETE FROM Professor WHERE (TituloP = Doutor)
Banco de Dados Structured Query Language

SQL DML REMOO - Exemplo


CodP 1 2 3 4 5 NomeP Jos Paulo Andr Gil Juliana CidadeP Rib Preto Batatais Rib Preto S Carlos S Carlos TituloP Mestre Espec Doutor Doutor Ps Doc
Reginaldo Gotardo 63

Estas Tuplas foram removidas!!


Banco de Dados Structured Query Language

SQL DML Linguagem de Manipulao de Dados Incluso de tuplas

Alterao de tuplas
Reginaldo Gotardo
Structured Query Language

Remoo de tuplas

Consultas

Banco de Dados

64

SQL DML CONSULTAS Sintaxe: SELECT FROM [WHERE [HAVING [DISTINCT] <nome_coluna>,.... (condies) [ sub-select] ] (condies)]
Reginaldo Gotardo 65

<nome_tabela>, ....

[GROUP BY <nome_coluna>, ....] [ [INTERSECT | MINUS | UNION] <comando_select>] [ORDER BY <nome_coluna> [ASC | DESC], ....]
Banco de Dados Structured Query Language

SQL DML CONSULTAS

Exemplo (bem) simples!

SELECT nomeD FROM Disciplina WHERE codD = 1;

Banco de Dados

Structured Query Language

66

Reginaldo Gotardo

SQL DML CONSULTAS

Antes de Falar mais precisamos de um pouco de lgebra!!


Reginaldo Gotardo
Banco de Dados Structured Query Language

67

Anda mungkin juga menyukai