Вы находитесь на странице: 1из 26

Curso:

A linguagem SQL (Structured Query


Language) e a sua utilização
pedagógica – Sessão Nº 2

Carla Mansilha
carla.mansilha@gmail.com
Resultado do Inquérito (23 respostas)
Costuma utilizar a linguagem SQL?

23%

Não
Sim

77%

Expectativas face à ação

37% Adquirir Conhecimentos de


SQL
Adquirir e Rever
63% Conhecimentos de SQL
Objetivos da Sessão
• Comandos:

• DDL - Linguagem de Definição de Dados:


• Comandos CREATE e DROP

• DML - Linguagem de Manipulação de Dados


• Comandos INSERT, UPDATE e DELETE
SQL - informações
• Embora o SQL tenha sido originalmente criado pela
IBM(início dos anos 70), rapidamente surgiram vários
"dialetos" desenvolvidos por outros produtores. Essa
expansão levou à necessidade de ser criado e adaptado
um padrão para a linguagem. Esta tarefa foi realizada pela
American National Standards Institute (ANSI) em 1986
e ISO em 1987.

• Foi publicada inicialmente em 1986 e foi sendo revista e


atualizada ao longo dos anos;
SQL - Notas
• Possui muitas variações e extensões produzidos pelos
diferentes fabricantes de sistemas de gestão de bases de
dados.

• No entanto, frequentemente, a linguagem pode ser


migrada de plataforma para plataforma sem mudanças
estruturais principais.
SQL - subconjuntos
• DDL - Linguagem de Definição de Dados
• Comandos CREATE e DROP
Sessão nº 2
• DML - Linguagem de Manipulação de Dados
• Comandos INSERT, UPDATE e DELETE
• DQL - Linguagem de Consulta de Dados
• Comando SELECT Sessão nº 3

• DCL - Linguagem de Controle de Dados


• Comandos GRANT e REVOKE
• DTL - Linguagem de Transação de Dados
Sessão nº 4
• Comandos GRANT, REVOKEBEGIN WORK (ou START
TRANSACTION, dependendo do dialeto SQL), COMMIT e
ROLLBACK
SQL – DDL
• Data Definition Language (DDL) – permite ao utilizador
definir tabelas novas e elementos associados. A maioria
das bases de dados de SQL comerciais tem extensões
proprietárias no DDL. Os comandos básicos da DDL são
poucos:

• CREATE: cria um objeto (uma Tabela, por exemplo) dentro da


base de dados.
• DROP: apaga um objeto da base de dados.

(Está restringida, normalmente, aos Administradores de Bases de Dados,


como forma de proteção)
SQL – CREATE DATABASE
• SINTAXE:
CREATE DATABASE nome_da_base_de_dados

CHARSET e COLLATE
Cada CHARSET possui COLLATEs, cada um com a sua particularidade.
Por exemplo:
• latin1_general_ci: Não há distinção entre letras maiúsculas e minúsculas. Se
pesquisarmos por “nome”, registos como “Nome” ou “NOME” serão devolvidos.
• latin1_general_cs: Distingue letras maiúsculas e minúsculas. A pesquisa por
“nome” somente devolverá “nome”. Opções como “Nome” e “NOME” não serão
devolvidas.
• latin1_swedish_ci: Não distingue letras minúsculas e maiúsculas e nem caracteres
acentuados e com cedilha, ou seja, o registo que contém a palavra “Acentuação”
será devoldida quando houver uma procura pela palavra “acentuacao”.
• EXEMPLO: ALTER DATABASE base_de_dados DEFAULT
CHARACTER SET latin1 COLLATE latin1_general_ci;
SQL – CREATE TABLE
• SINTAXE:
CREATE TABLE nome_da_tabela (
Atributo1 tipo [(tamanho)] [Null| Not Null] [Índice] ...,
Atributo2 tipo [(tamanho)] [Null| Not Null] [Índice] ...,
CONSTRAINT Nome <restrições> )

Os elementos em parêntesis retos são opcionais. O elemento


Atributo1 representa o nome do atributo da tabela. O
elemento tipo representa o domínio de cada atributo
(INTEGER, SMALLINT, DECIMAL, DOUBLE PRECISION,
FLOAT, CHAR, VARCHAR, BIT, DATE, TIME, etc.).
SQL – TIPOS DE DADOS
• A seleção dos tipos de dados é muito importante porque a
mesma é uma forma de classificar as informações que
serão armazenados na base de dados e de definir
antecipadamente:

• os tipos de valores que podem ser usados;


• que tamanhos podem ter;
• as operações que podem ser realizadas;
• se podem/serão indexados;
• como devem ser armazenados; etc

• Ver Tabela de Tipo de Dados aqui.


SQL – TIPOS DE DADOS: Exemplos
SQL – TIPOS DE DADOS
EXEMPLO:

Porquê VARCHAR e não CHAR?


VARCHAR possui um tamanho variável de acordo com o
valor nele inserido. Por exemplo: Ao inserir a palavra
“Carla" que contém 5 carateres numa coluna
VARCHAR(20) e o mesmo nome noutra coluna que é
CHAR(20) o resultado obtido é diferente. Na coluna
VARCHAR vão ser utilizados apenas 5 carateres dos 20, o
tamanho daquele registo vai ser igual ao de um CHAR(5).
Na coluna CHAR vão ser utilizados todos os 20 carateres
independente do tamanho do nome inserido ficando com
CHAR(20) e pesando mais na base de dados.
SQL – CONSTRAINT
• Podemos colocar restrições para limitar o tipo de dados a
introduzir numa tabela. Essas restrições podem ser
especificadas através do comando CREATE TABLE
ALTER TABLE. Alguns tipos comuns de restrições incluem
o seguinte:
• NOT NULL: Garante que uma coluna não pode ter o valor NULL.
• DEFAULT: Fornece um valor padrão para uma coluna quando
nenhum é especificado.
• UNIQUE: Garante que todos os valores numa coluna são
diferentes.
• Primary Key: Utilizado para identificar de forma única uma linha
na tabela (Chave primária).
• Foreign Key: Utilizado para garantir a integridade referencial dos
dados (Chave estrangeira).
• CHECK: Garante que todos os valores numa coluna satisfazem
um determinado critério.
SQL - TRIGGER
• Um TRIGGER é um tipo especial de procedimento
armazenado, que é executado sempre que há uma
tentativa de modificar os dados numa tabela que é
protegida por ele.

Nota: Nas últimas versões do MySQL/MariaDB têm vários


Bugs. Iremos ver mais tarde, de qualquer das formas a sua
utilização torna mais pesada a Base de Dados e há
alternativas, por exemplo, validação de dados no cliente com
javascript, garantindo que o INSERT, UPDATE ou DELETE
vão funcionar sem problemas.
SQL – CONSTRAINT: Exemplos
• CREATE TABLE turma
(id_turma int unsigned not null,
matricula int not null,
id_disciplina int unsigned not null,
Cria a
relação
CONSTRAINT fk_disc_01 FOREIGN KEY (id_disciplina) entre a
REFERENCES disciplina (id_disciplina), tabela
turma e
CONSTRAINT fk_mat_01 FOREIGN KEY (matricula) as
tabelas
REFERENCES aluno (matricula),
disciplina
PRIMARY KEY (id_turma)); e aluno

Nota: Campos numéricos "Unsigned " só podem ter valores positivos ou


zero. Campos numéricos "Signed" também podem ter valores negativos.
SQL – CREATE INDEX
• O uso de índices e de outras técnicas de otimização garante o ganho de
performance nas consultas a bases de dados e, consequentemente, nas
aplicações que os acedem.
SINTAXE:
CREATE INDEX nome_do_índice ON nome_da_tabela (atributo);
OU
Pode ser criado aquando da criação da tabela, por exemplo:
CREATE TABLE CLIENTES
( Codigo INT,
Nome VARCHAR(50),
INDEX (Codigo));
SQL - INDEX
SQL – DDL – ALTER TABLE
• Permite adicionar e apagar colunas a uma tabela, bem
como, redefinir o tipo de dados das colunas;
• SINTAXE:
• ALTER TABLE nome_da_tabela
• ADD nome_da_coluna tipo_de_dados
• ou
• ALTER TABLE nome_da_tabela
MODIFY COLUMN nome_da_coluna tipo_de_dados
• Ou
• ALTER TABLE nome_da_tabela
• DROP COLUMN nome_da_coluna
• Exemplo:
ALTER TABLE Departamento
ADD COLUMN nacionalidade CHAR(15)
SQL – DDL - DROP
• DROP TABLE – destrói uma tabela (definição, conteúdo,
views e índices);
• SINTAXE:
DROP DATABASE nome_base_de_dados
DROP TABLE nome_da_tabela

• Exemplo:
DROP TABLE faltas;
Nota:
Para eliminar apenas o conteúdo de uma tabela deve
utilizar o comando TRUNCATE:
TRUNCATE TABLE nome_da_tabela
SQL - Exercício
SQL - DML
• Data Manipulation Language (DML) – é um subconjunto
da linguagem SQL que é utilizado para realizar inserções,
alterações e exclusões de dados presentes em registos.
Estas tarefas podem ser executadas em vários registos de
diversas tabelas ao mesmo tempo. Os comandos que
realizam respetivamente as funções acima referidas são:
• Insert

• Update

• Delete
SQL – DML - INSERT
• INSERT – permite a introdução de dados na tabela
• SINTAXE:
• INSERT INTO nome_da_tabela
• VALUES (Valor1, Valor2, Valor3);
Ou
• INSERT INTO nome_da_tabela (coluna1, coluna2,coluna3 )
• VALUES (Valor1, Valor2, Valor3);
• Exemplo:
INSERT INTO Departamento
VALUES (50, 'Manutenção' , 'Lisboa');
Ou
INSERT INTO Departamento (Cod_Depart, Nome_dep,
Localizacao)
VALUES (50, 'Manutenção' , 'Lisboa');
SQL – DML - UPDATE
• UPDATE – permite a alteração de valores num ou mais
atributos de uma tabela e com critérios estabelecidos.
• SINTAXE:
UPDATE nome_da_tabela
SET coluna1=valor1,coluna2=valor2,...
WHERE uma_coluna=determinado_valor;

• Exemplo:

UPDATE Departamento
SET Nome_dep=‘Informática', Localizacao =‘Alijó'
WHERE Cod_Depart =1;
SQL – DML - DELETE
• Delete – permite a eliminação de um ou mais registos de
uma tabela e com critérios estabelecidos.
• SINTAXE:
DELETE FROM nome_da_tabela
WHERE uma_coluna=determinado_valor;

• Exemplo:

DELETE FROM Departamento


WHERE Dep_nome='Informática' AND Localizacao='Alijó';
Ou
DELETE FROM Departamento;
(Nota: esta última opção apaga TODOS os dados da tabela)
SQL - Exercício
• Pretende-se que crie uma base de dados (DTs) com as
seguinte tabelas e relacionamentos:
Sessão de hoje
• Marcação da presença;

• Vídeo da sessão

• Consulta do material fornecido

• Criação da base de dados pedida e


envio do ficheiro .sql

• Em caso de dúvidas utilize o fórum para


o efeito no topo da disciplina.

Вам также может понравиться