Texto

(1)
(2)

OBJETIVOS

Entender o que é SQL e sua importância como padrão de linguagem

estruturada de acesso a bancos de dados

Conhecer a classificação dos comandos SQL de acordo com as suas

funções

Dominar os comandos SQL

(3)

AGENDA

INTRODUÇÃO

DEFINIÇÕES

VANTAGENS

EXEMPLOS DE SGBDs

COMANDOS SQL

• DDL

(4)

INTRODUÇÃO

Os Sistemas Gerenciadores de Banco de Dados (SGBDs) são conjuntos de

programas de computador (softwares) responsáveis pelo gerenciamento

de um banco de dados

Objetivo: Retirar da aplicação em desenvolvimento a responsabilidade de

gerenciar o acesso, manipulação e organização dos dados (além controlar

ações de reorganização, recuperação e auditoria)

(5)

INTRODUÇÃO (CONT.)

Todo SGBD deve oferecer ferramentas para definir, popular e

manipular os dados em seu banco de dados

SQL

(

Structured

Query

Language

-

Linguagem

de

Consulta

Estruturada) foi fundamentada no modelo conceitual de Codd (1970)

Nome inicial

Sequel

O sucesso na utilização desta linguagem a tornou cada vez mais

popular, tornando-se um padrão adotado por diversos SGBDs

Em 1982 , a ANSI tornou a SQL um padrão, de direito, de linguagem

em ambiente relacional

(6)

DEFINIÇÕES

Apesar de QUERY no nome, não se trata de uma linguagem apenas

de consulta

Possui comandos para

definição

(DDL) e

manipulação

(DML) de

dados

Fundamentada no modelo relacional (

álgebra relacional

)

Diferente das linguagens de programação. É uma

linguagem

declarativa

- não é necessário programar algoritmos para acessar o

conteúdo das tabelas

Inicialmente uso de forma interativa, passou também a ser utilizada

como linguagem embutida em outras linguagens de programação

(7)

DEFINIÇÕES (CONT.)

DDL (

Data Definition Language

)

Parte do SQL responsável pela

definição

dos dados. Permite a definição da estrutura e organização

dos dados armazenados, bem como a relação entre eles

DML (

Data Manipulation Language

)

Parte do SQL responsável pela

manipulação

de dados. Permite que usuários (de forma interativa) ou

programas de aplicação

possam incluir, remover, alterar ou

simplesmente selecionar dados já armazenados no banco

(8)

DEFINIÇÕES (CONT.)

Linguagem de Definição de Dados (DDL)

Create

Alter

Drop

Criação e remoção de índices

Linguagem de Manipulação de Dados (DML)

(9)

VANTAGENS

SQL

• Independência do fabricante (adotada em praticamente todos os SGBDs) • Portabilidade

• Fácil de se aprender e dominar • Inglês estruturado (sentenças) • Consulta interativa

• Múltiplas visões de dados (em um mesmo banco)

• Flexibilidade na alteração das estruturas dos dados armazenados

(10)

EXEMPLOS DE SGBDs

Oracle – Surgiu nos anos 70, sendo desenvolvido pela empresa de mesmo nome, que é líder de mercado no segmento de banco de dados

SQL Server – Criado pela Microsoft em 1989, surgiu de uma parceria entre a Sybase, Ashton -Tate e Microsoft

PostgreSQL – SGBD de código aberto do tipo objeto relacional lançado em 1995

Firebird – SGBD de código aberto criado a partir do InterBase da Borland, quando da abertura de seu código em Julho de 2000

MySQL – SGBD de código aberto, criado na década de 1980 na Suécia, sendo considerado o SGBD open source mais popular no mundo atualmente, sendo utilizado por grandes corporações. Atualmente é um produto da Oracle.

(11)

LINGUAGEM DE DEFINIÇÃO DE

DADOS (DDL)

SINTAXE

CREATE DATABASE Nome_BD

Cria esquema de BD relacional

Agrupa as tabelas e outros comandos que pertencem à mesma

aplicação

O esquema inicial não possui tabelas/dados

DROP DATABASE Nome_BD

Remover um esquema de BD relacional

Tabelas/dados

(12)

EXERCÍCIO 1

Usando o MySQL, crie um banco de dados chamado Escola.

(13)

LINGUAGEM DE DEFINIÇÃO DE

DADOS (DDL)

CREATE TABLE

Nome_tabela

• Cria uma nova tabela (relação) no BD • A nova tabela não possui dados

DROP TABLE

Nome_tabela

• Remove uma tabela (relação) e todas as suas instâncias do BD

ALTER TABLE

Nome_tabela

(14)

CREATE TABLE

Uma relação SQL é definida usando o comando

CREATE TABLE

A

i

é o

nome do atributo

no esquema da relação

D

i

é p

tipo de domínio

do atributo

A

i

R

i

é a

restrição

que atua no atributo

A

i

CREATE TABLE

nome_tabela(

A1 D1 R1,

(15)

TIPOS DE DOMÍNIO BÁSICOS

Strings

Char(n) – uma string de caracteres de tamanho fixo

Varchar(n) – uma string de caracteres de tamanho variável com tamanho n máximo

Numéricos

Int – um inteiro

Smallint – um inteiro pequeno

Numeric(p,d) – um número de ponto fixo com precisão especificada

Real, double – números de ponto flutuante e ponto flutuante de precisão dupla

Float – um número de ponto flutuante, com precisão de pelo menos 2 dígitos

Hora/Data

(16)

RESTRIÇÕES

Restrições são regras.

Por exemplo:

• Pode-se usar as restrições UNIQUE para garantir que não há valores duplicados inseridos em colunas específicas que não participam de uma chave primária. • Através das restrições podemos determinar os valores aceitos para a respectiva

coluna, etc.

(17)

RESTRIÇÕES

Restrições

(Constraints)

• Integridade de Chave:

• PRIMARY KEY(atributos_chave)

• Integridade Referencial:

• FOREIGN KEY (atributo) REFERENCES tabela_base(atributo)

• Restrição de Coluna:

• Default

• Integridade de Vazio:

• NOT NULL

• Restrição de Domínio

• Definir o conjunto de valores possíveis ou permitidos que um campo pode ter.

(18)

RESTRIÇÕES

Valor nulo

• Representado por NULL

Restrição de Vazio

NOT NULL

• Quando especificado, não é permitido que o atributo receba valor nulo.

Exemplo: CREATE TABLE aluno (

nome varchar(45) NOT NULL, matricula int NOT NULL,

sexo char NOT NULL,

(19)

RESTRIÇÕES

Restrição de Coluna

• Determina os valores aceitos para a respectiva coluna. • Cláusula DEFAULT

Associa um valor default para um atributo, caso nenhum outro valor

seja especificado no momento da inserção do registro na tabela.

Exemplo:

CREATE TABLE nome varchar(45) NOT NULLaluno ( , matricula int NOT NULL,

sexo char NOT NULL,

cidade varchar(45) NULL default ‘Recife’,

(20)

RESTRIÇÕES

Restrição UNIQUE:

• Indica que o atributo tem valor único na tabela. Qualquer tentativa de se introduzir uma linha na tabela contendo um valor igual ao do atributo será rejeitada. Serve para indicar chaves secundárias.

• Embora a restrição UNIQUE e a restrição PRIMARY KEY impõem exclusividade, use a restrição UNIQUE em vez da restrição PRIMARY KEY quando for impor a exclusividade de uma coluna, ou uma combinação de colunas, que não seja uma chave primária.

Exemplo:

20

CREATE TABLE aluno (

nome varchar(45) NOT NULL, matricula int NOT NULL,

Sexo char NOT NULL,

Cidade varchar(45) NULL default ‘Recife’, RG int not null,

(21)

RESTRIÇÕES

Restrição de chave

• Cláusula PRIMARY KEY

Identifica os atributos da relação que formam a sua chave primária

Os atributos devem ser definidos como

NOT NULL

e

Único

Exemplo

:

CREATE TABLE aluno (

nome varchar(45) NOT NULL, matricula int NOT NULL,

Sexo char NOT NULL,

Cidade varchar(45) NOT NULL default ‘Recife’, RG int not null,

UNIQUE (RG),

(22)

EXERCÍCIO 2

No banco de dados Escola crie as tabelas:

• Aluno

Int matricula

Varchar(45) nome • Char sexo

• Professor

Int SIAPE

Varchar(45) nome • Float salario

Varchar(45) titulacao

(23)

RESTRIÇÕES

Integridade referencial

Dependência existente entre a

chave estrangeira

de uma relação

(T2) e a

chave primária

da relação relacionada (T1)

Problemas

Atualização ou exclusão de elementos da chave primária sem fazer

um ajuste coordenado nas chaves estrangeiras

(24)

RESTRIÇÕES

Restrição de Integridade referencial • Cláusula FOREIGN KEY

• Elimina a possibilidade de violação da integridade referencial

• Reflete nas chaves estrangeiras todas as alterações na chave primária

Exemplo: CREATE TABLE disciplina (

nome varchar(45) NOT NULL, carga int,

id_disc int, id_prof int, id_curso int,

PRIMARY KEY (id_disc),

FOREIGN KEY (id_prof) REFERENCES professor (id_professor),

(25)

RESTRIÇÕES

A cláusula FOREIGN KEY inclui regras de remoção/atualização:

Supondo que T2 tem uma chave estrangeira para T1, vejamos as cláusulas

ON DELETE e ON UPDATE

25

Create table tabela2(

….

FOREIGN KEY (coluna_tabela2)

REFERENCES tabela1 (coluna_tabela1) [ON DELETE

{RESTRICT|CASCADE|SET NULL| SET DEFAULT}]

[ON UPDATE

{RESTRICT|CASCADE|SET NULL| SET DEFAULT}]

(26)

RESTRIÇÕES

ON DELETE:

• RESTRICT: (default) significa que uma tentativa de se remover uma linha de T1 falhará se alguma linha em T2 combina com a chave

• CASCADE: remoção de uma linha de T1 implica em remoção de todas as linhas de T2 que combina com a chave de T1

• SET NULL: remoção de T1 implica em colocar NULL em todos os atributos da chave estrangeira de cada linha de T2 que combina.

• SET DEFAULT: remoção de linha em T1 implica em colocar valores DEFAULT nos atributos da chave estrangeira de cada linha de T2 que combina.

(27)

RESTRIÇÕES

ON UPDATE:

• RESTRICT: (default) update de um atributo de T1 falha se existem linhas em T2 combinando

• CASCADE: update de atributo em T1 implica que linhas que combinam em T2 também serão atualizadas

• SET NULL: update de T1 implica que valores da chave estrangeira em T2 nas linhas que combinam são postos par NULL.

• SET CASCADE: update de T1 implica que valores da chave estrangeira de T2 nas linhas que combinam terão valores default aplicados.

(28)

RESTRIÇÕES

Criando a tabela Disciplina, acrescentando

on delete cascade

nas chaves

estrangeiras id_prof e id_curso.

Exemplo

:

28

Create Table disciplina{

nome varchar NOT NULL,

carga int,

id_disc int,

id_prof int,

id_curso int,

Primary Key (id_disc),

(29)

RESTRIÇÕES

As restrições podem ter um

nome

e serem especificadas com a cláusula

CONSTRAINT

em uma tabela.

Isto permite que possamos no futuro eliminar (DROP) ou alterar (ALTER) o

constraint.

29

CONSTRAINT nome_da_restrição PRIMARY KEY (coluna)

CONSTRAINT nome_da_restrição FOREIGN KEY (coluna) REFERENCES

nome_da_tabela_pai (coluna_tabela_pai) [ON DELETE CASCADE]

(30)

RESTRIÇÕES

Criação da tabela aluno com a restrição de chave (constraint ct_aluno)

Exemplo:

30

CREATE TABLE aluno (

nome varchar(45) NOT NULL, matricula int NOT NULL,

Sexo char NOT NULL,

Cidade varchar(45) NULL default ‘Recife’, RG int not null,

UNIQUE (RG),

(31)

RESTRIÇÕES

Exemplo: criação da tabela disciplina com a restrição referencial (constraint

ct_fk_dis_prof e ct_fk_dis_curso

)

31

CREATE TABLE disciplina ( nome varchar NOT NULL, carga int,

id_disc int, id_prof int, id_curso int,

PRIMARY KEY (id_disc),

Constraint ct_fk_dis_prof FOREIGN KEY (id_prof) REFERENCES professor (id_professor),

(32)

EXERCÍCIO 3

• Ainda no banco de dados Escola crie as tabelas: • Curso

Int id

Varchar(45) nome

• Disciplina

Int id

Int carga

Varchar(45) nome

• Crie uma restrição unique

Int id_professor

Int id_curso

• AlunoDisciplina

Int matricula_aluno

Int id_disciplina

Float nota1

Float nota2

Float nota3

(33)

DROP TABLE

Comando

DROP TABLE

exclui do banco de dados a tabela

Exemplo:

(34)

ALTER TABLE

Comando

ALTER TABLE

usado para alterar uma relação no banco de dados

Adiciona colunas • Remove colunas

Altera tipos dos atributos, renomeia o nome das colunas e da tabela

(35)

ALTER TABLE

Incluir novas colunas na tabela

Eliminar uma coluna já existente da tabela

ALTER TABLE aluno ADD RG int

(36)

ALTER TABLE

Modificar o nome de uma coluna existente

Modificar o tipo de dado de uma coluna

ALTER TABLE disciplina CHANGE carga cargaHoraria int;

ALTER TABLE alunoDisciplina MODIFY nota1 numeric(2,2);

(37)

ALTER TABLE

Modificar o nome de uma tabela existente

(38)

ALTER TABLE

Constraint

• Alterando um atributo para Unique em uma tabela já criada:

ALTER TABLE disciplina

(39)

ALTER TABLE

Apagando uma

unique constraint

(40)

ALTER TABLE

Constraint

• Setando a chave primária de uma tabela já criada

Setando uma chave estrangeira em uma tabela já criada

ALTER TABLE aluno

ADD CONSTRAINT ct_pk PRIMARY KEY(RG)

ALTER TABLE alunoDisciplina ADD CONSTRAINT ct_fk

(41)

ALTER TABLE

Apagando uma

Primary Key Constraint

Apagando

Foreing Key Constraint

ALTER TABLE aluno DROP PRIMARY KEY

(42)

OBSERVAÇÕES IMPORTANTES:

Se o

tipo de dados a ser alterado não for compatível

com os dados já

existentes na coluna em questão, a

alteração não será efetuada

Se os tipos forem compatíveis, seus dados serão convertidos para o

novo tipo, o que poderá provocar a necessidade de algum

truncamento nos dados, ocasionando perda de informação.

Caso seja necessário alterar o tipo de um atributo, certifique-se de

que o novo tipo de dado não vai truncar os dados antigos, e caso

isso ocorra, que sejam perdas inexpressivas.

Imagem

Referências

temas relacionados :