Sei sulla pagina 1di 50

Introdução

a Linguagem SQL

Crícia Felício
O que é SQL?

n  Structured Query Language


n  Linguagem de Consulta Estruturada
n  Linguagem Padrão para acesso a banco de
dados
n  Origem:

n  Linguagem SEQUEL IBM, em 1973


n  Padrão ANSI
Linguagem SQL
•  Implementada a partir:
–  Operadores da Algebra Relacional;
–  Estrutura do Cálculo Relacional de Tuplas.
•  Operadores
–  Projeção
–  Seleção
–  Renomeação
–  União
–  Diferença
–  Produto Cartesiano
–  Interseção
–  Junção
Operador de Projeção
•  Usado para projetar uma ou mais coluna da
Reflexão: Que consultas poderiam
tabela
ser realizadas nos dados abaixo?
–  Exemplo: Selecionar o nome e RG do funcionário

CPF RG Nome Cod_depto

1234567 m45678 Carlos 001

1234568 m45679 Roberto 001

1234569 m45680 Maria 003

Cod_depto Nome_depto

001 Informatica

002 Financeiro
Operador de Seleção
•  Usado para selecionar linhas específicas da
tabela
–  Exemplo: Selecionar os dados dos funcionários de
sexo feminino

Exemplo(
Operador de Produto Cartesiano
Produto(cartesiano(entre(Funcionario(e(
Combina os dados de duas tabelas
• Departamento(
CPF RG Nome Cod_depto Cod_depto Nome_depto
001 Informatica
1234567 m45678 Carlos 001
× 002 Financeiro
1234568 m45679 Roberto 001
003 Recursos
1234569 m45680 Maria 003 Humanos

Funcionario × Departamento
•  Resultado Exemplo(
CPF RG Nome Cod_depto Cod_depto Nome_depto

1234567 m45678 Carlos 001 001 Informatica

1234567 m45678 Carlos 001 002 Financeiro

1234567 m45678 Carlos 001 003 Recursos


Humanos
1234568 m45679 Roberto 001 001 Informatica

1234568 m45679 Roberto 001 002 Financeiro

1234568 m45679 Roberto 001 003 Recursos


Humanos
1234569 m45680 Maria 003 001 Informatica

1234569 m45680 Maria 003 002 Financeiro

1234569 m45680 Maria 003 003 Recursos


Humanos
•  Listar(os(dados(dos(funcionários(com(os(
nomes(dos(departamentos(onde(eles(
Operador de Junção
trabalham(
CPF RG Nome Cod_depto Cod_depto Nome_depto
001 Informatica
1234567 m45678 Carlos 001

1234568 m45679 Roberto


Exemplo(
*
001
002 Financeiro

003 Recursos
1234569 m45680 Maria 003 Humanos

•  Resultado(

CPF RG Nome Cod_depto Nome_depto

1234567 m45678 Carlos 001 Informática

1234568 m45679 Roberto 001 Informática

1234569 m45680 Maria 003 Recursos Humanos


SQL - Sublinguagens

n  Pode ser dividida em:


n  Data Definition Language (DDL) – Comandos
definem estrutura ou esquema do banco de
dados.
n  Principais comandos:
n  CREATE – Criação de banco de dados/tabelas/visões, etc
n  ALTER – Alteração da estrutura das tabelas/banco de dados,
visões, etc
n  DROP – deleta uma tabela/banco de dados/visões, etc

SQL - Sublinguagens

n  Data Manipulation Language (DML) – Comandos


que fazem o gerenciamento dos dados da base
de dados
n  Principais comandos:
n  SELECT : Seleciona dados em uma ou mais tabelas/visões
n  INSERT: Insere dados em uma tabela/visão
n  UPDATE: Atualiza dados de uma tabela/visão
n  DELETE: Apaga dados de uma tabela/visão
n  CALL: Faz a chamada de um procedimento


SQL - Sublinguagens

n  Data Control Language (DCL)


n  GRANT: Concessão de privilégios de acesso
n  REVOKE: Retirada de privilégios de acesso
n  Transaction Control (TCL) – Comandos usados
para gerenciar as mudanças feitas por
comandos DML.
n  Permitem que comandos sejam agrupados em
transações lógicas
n  COMMIT: Confirma as alterações realizadas pela transação
n  SAVEPOINT: Cria pontos de controle
n  ROLLBACK: Desfaz as alterações realizadas pela transação


SGBD Mysql

n  Sistema de Gerenciamento de Banco de Dados


Relacional
n  Gratuito e código aberto

n  Utiliza o SQL Padrão

n  Download: https://dev.mysql.com/downloads/

mysql/
Acesso ao Mysql

n  Mysql comand line client ou Mysql Worbench


n  Comandos
n  show databases;
n  Mostra os bancos de dados já criados
n  use nome_do_banco;
n  Seleciona um banco de dados para ser utilizado
n  Show tables;
n  Mostra as tabelas do banco de dados
Linguagem DDL

n  Create database nome_do_banco;


n  Cria um banco de dados com o nome informado
n  Create table nome_da_tabela(
Nome_campo1 tipo,
Nome_campo 2 tipo,
.
.
);
Tipos de Dados do Mysql – Tipos Texto

Tipo Tamanho Observação


até 255 caracteres. Utiliza os n bytes, mesmo que o tamanho do campo seja
char(n) variável inferior.
até 255 caracteres, utiliza 1 byte para guardar o tamanho e ocupa somente o
varchar(n) variável tamanho do campo.

text 64 Kbytes até 65.535 caracteres.

TINYTEXT 255 bytes até 255 caracteres.

MEDIUMTEXT 16 Mbytes até 16.777.215 caracteres.

LONGTEXT 4 Gbytes até 4.294.967.295 caracteres.


Diferença entre char e varchar
Tipos de Dados do Mysql – Tipos Númericos

Tipo Tamanho Observação


1 byte
TINYINT -128 a 127 normal. 0 a 255 UNSIGNED.
2 bytes
SMALLINT -32768 a 32767 normal. 0 a 65535 UNSIGNED.

MEDIUMINT 3 bytes -8388608 a 8388607 normal. 0 a 16777215 UNSIGNED.

INT 4 bytes -2147483648 a 2147483647 normal. 0 a 4294967295 UNSIGNED


-9223372036854775808 a 9223372036854775807 normal. 0 a
BIGINT 8 bytes 18446744073709551615 UNSIGNED

FLOAT 4 bytes Numero decimal

NUMERIC(SIZE,D) variável Size+2 bytes se D > 0, Size+1 bytes se D = 0


Tipos de Dados do Mysql – Tipos Data e Hora

Tipo Tamanho Observação


Formato : YYYY-MM-DD. Suporta valores entre '1000-01-01' a
DATE 3 Bytes '9999-12-31'.
8 bytes Formato: YYYY-MM-DD HH:MI:SS . Suporta valores entre 1000-01-01
DATETIME 00:00:00' to '9999-12-31 23:59:59'

TIME 3 bytes Formato: HH:MI:SS


Atributos

n  Além do tipo do campo, podem ser utilizados alguns atributos


na criação da tabela
n  Auto_Increment: A coluna terá com valor um número sequencial
positivo, que é incrementado a cada nova inserção
n  Not null: Colunas de preenchimento obrigatório
n  Unsigned: Colunas que possui valores numéricos, mas que não terão
valores negativos
n  Zerofill: Preenche os espaços a esquerda de um numero com zeros,
dados com esse atributo tornam se automaticamente unsigned
n  Primary Key: indica que o campo é chave primária da tabela
Atributos

n  Há duas maneiras de definir a chave primária


n  Nome_campo tipo primary key ou
n  Primary key(nome_campo)
n  Foreign key: utilizada para definir uma chave
estrangeira
n  Sintaxe:
n  Foreign key(nome_do_campo_tabela_atual) references
nome_tabela_origem(nome_do_campo_tabela_origem)

Aluno
Curso
Mat Nome Entrada Cod_curso
Cod_curso Nome Sigla
1001 Paulo Silva 2016_1 1
1 Sistemas para Internet TSPI
1002 Carla Marins 2016_1 1
2 Licenciatura em Computação LCOMP
1003 Marcos Ferreira 2017_1 2
Disciplina
Professor
Cod_disc Nome Sigla Carga_hor
Cod_prof Nome
1 Lógica Log 105
1 Clarimundo
2 Algoritmos Alg 80
2 Mateus
3 Banco de Dados 1 BD1 75
3 Crícia
4 Programação Orientada a POO 120
Objetos Historico

Cod_turma Mat Cod_disc Media


Turma Alocação
Cod_turma Cod_disc Cod_prof 44 1001 1 6,0
Cod_turma Ano Sem
44 1 1 46 1001 2 5,5
44 2016 1
46 3 2 47 1001 3 7,0
46 2016 1
46 2 1 Pré_req
47 2016 2
47 3 3 Cod_disc Cod_disc_req
48 2017 1
48 4 1 2 1

4 2
Exemplo
create database academico;
use academico;

CREATE TABLE Curso (
cod_curso int PRIMARY KEY,
nome_curso varchar(40),
sigla varchar(8)
);

CREATE TABLE Aluno (
matr numeric(4) PRIMARY KEY,
nome varchar(50),
entrada char(6),
cod_curso int,
FOREIGN KEY(cod_curso) REFERENCES Curso (cod_curso)
);
Linguagem DDL
n  Comando drop
n  Apaga a estrutura de um banco, tabela, visão, procedimentos,
etc.
n  Drop database nome_do_banco
n  Apaga o banco de dados
n  Exemplo:
drop database academico;
n  Drop table nome_da_tabela
n  Apaga a tabela
n  Exemplo:
-- apaga a tabela aluno
drop table aluno;

Linguagem DDL
•  Comando ALTER TABLE
–  Altera a estrutura de uma tabela
n  Alter table nome_tabela açao
n  Adicionar uma nova coluna
n  ALTER TABLE nome_tabela ADD nome_coluna tipo;
n  Exemplo:
n  ALTER TABLE ALUNO ADD DATA_NASC DATE;


Linguagem DDL

n  Deletar uma coluna


n  ALTER TABLE nome_da_tabela
DROP COLUMN nome_coluna;
n  Exemplo:
ALTER TABLE ALUNO DROP COLUMN DATA_NASC;
n  Alterar o tipo de dado da coluna
n  ALTER TABLE nome_da_tabela
MODIFY COLUMN nome_coluna novo_tipo;
n  Exemplo:
ALTER TABLE ALUNO MODIFY COLUMN MATR
NUMERIC(5);

Linguagem DDL

n  Alterar o nome da coluna


n  ALTER TABLE nome_da_tabela
CHANGE COLUMN nome_antigo novo_nome tipo;
–  Exemplo:
ALTER TABLE ALUNO CHANGE COLUMN NOME
Nome_aluno varchar(50);

Linguagem DDL

n  Adicionar uma chave primaria


n  ALTER TABLE nome_da_tabela
ADD PRIMARY KEY(nome_coluna);
n  Exemplo: ALTER TABLE aluno ADD PRIMARY KEY(matr);
n  Retirar a chave primária
ALTER TABLE nome_da_tabela
DROP PRIMARY KEY;
n  Exemplo: ALTER TABLE aluno DROP PRIMARY KEY;

Linguagem DDL

n  Adicionar uma chave estrangeira


n  ALTER TABLE nome_da_tabela
ADD FOREIGN KEY(nome_coluna_tabela_atual)
REFERENCES
nome_tabela_origem(nome_coluna_tabela_origem);
n  Exemplo: ALTER TABLE aluno ADD FOREIGN KEY(cod_curso)
references curso(cod_curso);

Linguagem DML

n  Comando INSERT
n Sintaxe:
INSERT INTO nome_tabela(campos que serao inseridos,
separados por virgula) values (valores que serao inseridos)
Obs: Valores do tipo char,varchar,text,date e time devem vir
entre aspas

Linguagem DML
•  Comando INSERT
n  Exemplo:
-- seleciona o banco de dados para uso
use academico;
-- insercao na tabela curso
insert into curso(cod_curso,nome,sigla)
values(1, "Sistemas para Internet","TSPI"),
(2, "Licenciatura em Computação","LCOMP");
-- OU
insert into curso(cod_curso,nome,sigla)
values(1, "Sistemas para Internet","TSPI");
insert into curso(cod_curso,nome,sigla)
(2, "Licenciatura em Computação","LCOMP");

Exercício

n  De acordo com o esquema a seguir, crie o banco


de dados empresa e suas tabelas
n  Preencha as tabelas de acordo com as informações
presentes na figura
n  Esquema empresa
Cargo(cod_cargo,nome,nivel,salario)
Departamento(cod_depto,nome,sigla)
Funcionario(cod_func,nome,data_adm,sexo,cod_cargo,cod_depto)
Cod_cargo referencia cargo
Cod_depto referencia departamento
Cargo Departamento
Cod_depto Nome Sigla
Cod_cargo Nome Nível Salario
1 Informática INF
1 Analista de Sistemas JR 1500
2 Financeiro FIN
2 Desenvolvedor JR 2100
3 Pessoal RH
3 Desenvolvedor Pleno 3200

4 Atendente NA 980

5 Contador NA 4500
Funcionário
Cod_func Nome Data_adm Sexo Cod_cargo Cod_depto

1 João Nogueira 12/03/2008 M 1 1

2 Maria Silveira 20/03/2008 F 4 3

3 Marcos Silva 05/07/2008 M 2 1

4 Gabriel Pereira 10/07/2008 M 5 2

5 Carla Junqueira 15/08/2008 F 1 1

6 Janete Rosa 01/10/2008 F 4 3

7 Fernando Silva 03/02/2009 M 3 1

8 Marília Vieira 05/02/2009 F 2 1

9 Patrícia Chaves 01/03/2009 F 5 2

10 João Marques 15/03/2008 M 3 1


Linguagem DML

n  Comando SELECT
n  Sintaxe Comando Básico:
SELECT informaçoes que devem ser selecionadas
FROM nome_tabela1,nome_tabela2 ….
WHERE condicoes
n  Select corresponde a operação de projeção da Álgebra
relacional
n  Informa quais os as colunas devem ser listadas no resultado da
consulta
n  Select *
n  Lista todas as informações das tuplas obtidas como resultado da
consulta
Comando SELECT

n  Exemplo
n  Selecionar todas as informações dos funcionarios
Select *
from funcionario;
n  Selecionar o nome e sexo dos funcionarios

Select nome,sexo
from funcionario;


Comando SELECT

n  Recursos da cláusula where


n  Pode conter diversos operadores combinados através de
uma expressão booleana
n  Operadores de comparação
= : Igualdade
<>: Diferente, também ser representado por !=
> : Maior
< : Menor
>=: Maior Igual
<=:Menor Igual

Comando SELECT

n  Conectores Lógicos
n  And
n  C1 And C2 é verdadeiro se C1 é verdadeiro e C2 é verdadeiro
n  OR
n  C1 or C2 é verdadeiro se C1 e C2 for verdadeiro ou se uma das
condições for verdadeira
n  Not
n  Not C1 é verdadeiro se C1 for falso e é falso se C1 for
verdadeiro
Exemplo

n  Selecionar o codigo de cargo e nome dos


funcionários do sexo masculino
select nome,cod_cargo
From funcionario
where sexo='M';
n  Selecionar a codigo de funcionário e nome das
mulheres que trabalham no departamento 1
Select cod_func,nome
From funcionario
where sexo='F' and cod_depto=1;

Exercicio

n  Selecione o código do cargo,código do departamento


e nome das funcionárias que foram admitidas no ano
de 2008
n  Liste o nome dos cargos que tem salário entre 2000 e
5000
n  Liste o nome e o salario dos cargos que ganham acima
de R$ 3000
n  Liste as informações do funcionário Fernando Silva


Comando SELECT

n  Operador between
n  'A between B and C' é equivalente a:
n  (A>=B) and (A<=C)
n  'not (A between B and C)' é equivalente a:
n  A not between B and C
n  Exemplo:
Select nome,cod_cargo
From funcionario
Where data_adm between '2009-01-01' and '2009-12-31';
Comando SELECT

n  Operador Like e not like


n  É utilizado na cláusula where
n  Faz a busca por parte do conteúdo de uma string
n  Utiliza
n  % - corresponde a uma seqüência qualquer de 0 ou mais caracteres.
'_' - corresponde a qualquer caracter

n  Exemplo:
n Procure pelos funcionários que tenham o nome ou segundo
nome terminado em ‘o ‘
Select * from funcionario
Where nome like '%o %';
Comando SELECT

n  Selecione as informações dos funcionários cujo nome começa


com a letra J
Select * from funcionario
Where nome like 'J%';
n  Liste as informações dos funcionários que possuem nome com
13 caracteres:
Select * from funcionario
Where nome like '_____________';
n  Liste as informações dos cargos cujo nome não terminam com
'dor':
Select * from cargo
Where nome not like '%dor';
Exercicios

n  Liste as informações dos funcionários que tem o nome


terminado em 'eira'
n  Listar os dados dos funcionários que tem 'Silv' como
parte do sobrenome
n  Lista o nome e data de admissão dos funcionários que
possuem nomes que começam com a letra P ou a
letra M.
n  Liste as informações dos funcionarios que possuem
nomes que não começam com J e nem com G
n  Listar o nome e sexo dos funcionários que tem o
sobrenome Silva.

Comando SELECT

n  Operador IN e Not IN
n  Utilizado para verificar se um valor esta(ou não) contido num conjunto
de constantes
n  Indicado para fazer a comparação com mais de um valor
n  Exemplo
Select *
from funcionario
Where cod_depto in (2,3);
Irá selecionar os dados dos funcionários que trabalham no departamento 2 ou
3 equivalente a :
Select *
from funcionario
Where cod_depto=2 or cod_depto=3 ;

Comando SELECT

n  Listar o nome e data de admissão dos


funcionários que não são sejam do cargo de
código 1 e nem 2
Select nome,data_adm
from funcionario
Where cod_cargo not in (1,2);
Exercícios

n  Utilize operador IN e NOT IN


n  Listar o código e sigla dos departamentos de
informatica e financeiro
n  Listar o código e o nome dos funcionários que não

são mulheres e nem fazem parte dos


departamentos 1 e 3
n  Listar o código e os salários dos cargos de

atendente, contador e desenvolvedor



Comando SELECT

n  Operador is null e is not null


n  Usado para selecionar dados que contém(ou não contém) o
valor null
n  Exemplo:
n  Selecionar as informações dos funcionarios que não possuem a data
de admissão preenchida
Select *
From Funcionario
Where data_adm is null;
n  Selecionar as informações dos funcionarios que possuem o código do
departamento preenchido
Select *
From Funcionario
Where cod_depto is not null;


Comando Select
•  Operador Like com datas
-- Retorna os funcionarios que foram contratados no ano de 2008

Select * from funcionario


where data_adm like '2008-%';

-- Retorna os funcionarios que foram contratados no mês de março

Select * from funcionario


where data_adm like '%-03-%';
Comando Select
•  Funções year, month e day
Select * from funcionario
where year(data_adm)=2009;
Select * from funcionario
where month(data_adm)=3;
Select * from funcionario
Where day(data_adm)=10;

Exercício
•  Crie o banco de dados acadêmico contendo as
tabelas do exemplo mostrado no próximo
slide
•  Faça a inserção dos dados
•  Dê a consulta SQL para listar o nome das
disciplinas que possuem carga horária
superior a 100 horas
Aluno
Curso
Mat Nome Entrada Cod_curso
Cod_curso Nome Sigla
1001 Paulo Silva 2016_1 1
1 Sistemas para Internet TSPI
1002 Carla Marins 2016_1 1
2 Licenciatura em Computação LCOMP
1003 Marcos Ferreira 2017_1 2
Disciplina
Professor
Cod_disc Nome Sigla Carga_hor
Cod_prof Nome
1 Lógica Log 105
1 Clarimundo
2 Algoritmos Alg 80
2 Mateus
3 Banco de Dados 1 BD1 75
3 Crícia
4 Programação Orientada a POO 120
Objetos Historico

Cod_turma Mat Cod_disc Media


Turma Alocação
Cod_turma Cod_disc Cod_prof 44 1001 1 6,0
Cod_turma Ano Sem
44 1 1 46 1001 2 5,5
44 2016 1
46 3 2 47 1001 3 7,0
46 2016 1
46 2 1 Pré_req
47 2016 2
47 3 3 Cod_disc Cod_disc_req
48 2017 1
48 4 1 2 1

4 2

Potrebbero piacerti anche