Page 1. Prof. Constantino Jacob



Documentos relacionados
Linguagem de pesquisa declarativa para banco de dados relacional; 1ª Versão - Desenvolvida pela IBM no laboratório de pesquisa de San José;

Banco de Dados. Prof. Antonio

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Sumário. SQL - Criação de Tabelas. Structured Query Language. SQL Versões. André Restivo. October 18, 2010

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 16. Escola Politécnica da Universidade de São Paulo

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

SQL - Structured Query Language. Karine Reis Ferreira

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

Modelagem Física e SQL

O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de

Manipulação de Dados com SQL

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea

Laboratório de Banco de Dados II Aula 04. Prof. Érick de Souza Carvalho

Bases de Dados. DDL Data Definition Language

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

BCD29008 Banco de dados

Banco de Dados I Introdução SQL

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

SQL (Tópicos) Structured Query Language

Modelagem Física e SQL

A U L A 1 0 C R I A N D O V I E W S V I E W S ( V I S Õ E S )

BANCO DE DADOS. Vinícius Pádua

Revisão Banco de Dados

A & F Consultoria em Sistemas e Treinamentos 2014 af.tecnoserv@gmail.com. A linguagem SQL. Autor: Hélio de Almeida Fonte: Wikipédia

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Banco de Dados. Linguagem SQL

Sistemas de Banco de Dados

IMPLEMENTAÇÃO DE BANCO DE DADOS

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

Linguagem de Consulta Estruturada SQL- DML

A U L A 1 I N T R O D U Ç Ã O A B A N C O D E D A D O S E V I S Ã O G E R A L D O S Q L

Linguagem de Consulta Estruturada SQL- DML

A linguagem SQL

BANCO DE DADOS GERENCIAL 1 A U L A 2

ANÁLISE E PROJETO DE BANCO DE DADOS

Structured Query Language (SQL)

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Projeto e Administração de Banco de Dados

Comandos de Manipulação

Fundamentos de SQL. Curso: Técnico em Redes de Computadores Disciplina: Tecnologias e Linguagem de Banco de dados Professor: Rodrigo da Rocha

BANCO DE DADOS PARA NINJAS

SQL Structured Query Language

MySql. Introdução a MySQL. Andréa Garcia Trindade

Definição de Dados com SQL

PROGRAMA. 3.SQL Básico. 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação. Prof. Dr. Marcos Tsuzuki

Aula 06 Sistemas Embarcados LT38C

Revisão de Bancos de Dados

Linguagem de Definição de Dados (DDL)

Mysql. Quanto mais informações você busca, mais você evolui. Vitor Ramos. Disciplina de Banco de Dados

Banco de Dados I 5 Linguagens de Consulta

O que são Bancos de Dados?

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

EXEMPLOS DE COMANDOS NO SQL SERVER

SQL Linguagem de Definição de Dados

SQL S Q L. Introdução. Enfoques de SQL. SQL - Origem/Histórico. Usos de SQL. SQL - Vantagens. Gerenciamento de Dados e Informação

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

STRUCTURED QUERY LANGUAGE (SQL)

Linguagem SQL. ENG1518 Sistemas de Informação Gerenciais Prof. Marcos Villas

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

E-BOOK GUIA RÁPIDO DE SQL W W W. T R E I N A W E B.C O M. B R

Unidade 5 05/11/2008. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Redes de Computadores

A Linguagem SQL. Tecnologia de Base de Dados. MSc. Eugénio. Macumbe

SQL. Prof. Roger Cristhian Gomes

SQL BÁSICO. Luiz Antônio Vivacqua Corrêa Meyer

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

Linguagem de Consulta Estruturada (SQL)

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

Rápida revisão do Modelo Relacional

Exercício Aula Passada. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

MODELAGEM DE DADOS - INTRODUÇÃO AO SQL: DML. Prof. Angelo Augusto Frozza, M.Sc.

Revisão + Visões + Sub-Consultas + JOINS

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS

UFG - Instituto de Informática

AULA 1 INTRODUÇÃO A BANCO DE DADOS E VISÃO GERAL DO SQL CONCEITUANDO BANCO DE DADOS MODELO RELACIONAL

MODELAGEM DE DADOS MODELO FÍSICO

TLBD II. Continuação (04)

SQL - Criação de Tabelas

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

SISTEMAS DE INFORMAÇÃO BANCO DE DADOS SQL PROF: EDSON THIZON

Fundamentos de Banco de Dados Postgre com Sql

INTRODUÇÃO AO MYSQL PROF. ME. HÉLIO ESPERIDIÃO

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Linguagem SQL. Comandos Básicos

Oracle Database 11g: Introdução à Linguagem SQL Novo

Introdução à linguagem SQL

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

Oracle Database 10g: Fundamentos de SQL e PL/SQL

Transcrição:

Tópicos Introdução à SQL Definição Tipos de Operações Instrução SELECT Sintaxe básica Operações relacionais de restrição, projeção e junção Instruções DML Delete, Update e Insert Instruções DDL Create Table Prof. Constantino Jacob Page 1

Introdução à SQL Visão Geral - Padrões Edgar Frank Codd publica um artigo sobre o Modelo de Dados Relacional em 1970. O SQL foi concebido pela IBM em 1978. SQL ANSI 1986 / (ISO 1987) SQL ANSI 1992 (SQL2 ou SQL-92) SQL ANSI 1999 (SQL3 ou SQL-99) Novos tipos de dados Suporte a sintaxe OR (Object-Relational) SQL ANSI 2003 (SQL:2003) Melhoria do suporte a sintaxe OR Uso de dados semi estruturados: SQL/XML Os principais membros são da Oracle e da IBM Infelizmente, ainda não há nenhum banco de dados comercial que adote 100% ao padrão. Os bancos Open-Source são mais fiéis, com destaque no PostGreSql. Page 2

Introdução à SQL Tipos de Operações Structured Query Language, ou Linguagem de Consulta Estruturada Operações de Definição de Dados (DDL) CREATE TABLE DROP TABLE CREATE VIEW. Operações de Manipulação de Dados (DML) SELECT INSERT DELETE UPDATE DML (Data Manipulation Language - Linguagem de Manipulação de Dados) DDL (Data Definition Language - Linguagem de Definição de Dados) Alguns autores defendem algumas variações: DCL (Data Control Language - Linguagem de Controle de Dados) Comandos GRANT e REVOKE DTL - Linguagem de Transação de Dados BEGIN WORK / START TRANSACTION (1) COMMIT ROLLBACK DQL - Linguagem de Consulta de Dados SELECT ( também é considerado um comando DML ) (1) No Oracle, a execução da primeira instrução DML ( INSERT,UPDATE e DELETE ) inicia uma transação, que deve ser finalizada com COMMIT ( em caso de sucesso ) ou ROLLBACK no caso de uma FALHA. Não se esqueçam que as transações deve ser atômicas ( propriedade da atomicidade (2) ). (2) A propriedade de atomicidade garante que todas as operações de um banco de dados, em uma transação, sejam executadas ou nehuma delas o seja. ( Elsmasri; Sistema de Banco de Dados; p. 9) Page 3

Sintaxe básica SELECT * coluna1, coluna2, coluna n FROM <referência de tabelas> [WHERE <expressão condicional>] [ORDER BY <coluna1, coluna 2, coluna n>] [GROUP BY <coluna1, coluna 2, coluna n>] [HAVING <expressão condicional>] Todas as colunas são recuperadas no SELECT quando se usa * Os valores entre [] indica que estas instruções são opcionais Page 4

Sintaxe SQL 1999 SELECT table1.column, table2.column FROM table1 [CROSS JOIN table2] [NATURAL JOIN table2] [JOIN table2 USING (column_name)] [JOIN table2 ON(table1.column_name = table2.column_name)] [LEFT RIGHT FULL OUTER JOIN table2 ON (table1.column_name = table2.column_name)]; Page 5

Sintaxe SQL 1999 Query Simples SELECT nome, salario * 1.5 as salario_novo, Oi Mundo hello FROM empregados WHERE salario > 1000 And cargo = Gerente And ( comissao = S Or dept_id is null); Page 6

Sintaxe SQL 1999 INNER JOIN SELECT d.dept_id, d.dept_nome, d.loca_id, l.cidade FROM departamentos d [INNER] JOIN localidades l ON (d.loca_id = l.loca_id); Este é o padrão ANSI mais recente. Mas, há uma outra forma de se fazer JOINs, ainda muito em uso. Re-escrevendo o exemplo acima: SELECT d.dept_id, d.dept_nome, d.loca_id, l.cidade FROM departamentos d,localidades l WHERE (d.loca_id = l.loca_id); O ANSI achou que esta forma de escrita não deixa claro que uma operação de JOIN está sendo feita. Page 7

Sintaxe SQL 1999 Junção Natural SELECT dept_id, dept_nome, loca_id, cidade FROM departamentos NATURAL JOIN localidades; Foi omitda a instrução: departamentos.loca_id = localidades.loca_id O interpretador estabelece as condições de igualdade com base nos nomes dos atributos. Page 8

Sintaxe SQL 1999 Using SELECT dept_id, dept_nome, loca_id, cidade FROM departamentos JOIN localidades USING (loca_id); Neste caso, o usuário está informando qual é a coluna que possui um nome em comum entre as duas tabelas que deve ser utilizada para a condição de JOIN. Outros atributos que tenham nomes iguais serão ignorados. Page 9

Sintaxe SQL 1999 Produto Cartesiano SELECT nome, departamento FROM empregados CROSS JOIN departamentos; Page 10

Sintaxe SQL 1999 Junção de N tabelas SELECT empregado_id, cidade, dept_nome FROM empregados e JOIN departamentos d ON d.dept_id = e.dept_id JOIN localidades l ON d.loca_id = l.loc_id AND d.dept_id = 20 Page 11

Sintaxe SQL 1999 Outer JOINS SELECT empregado_id, cidade, dept_nome FROM empregados e LEFT OUTER JOIN departamentos d ON (d.dept_id = e.dept_id) O OUTER JOIN é útil quando o usuário deseja recuperar dados de uma tabela, mesmo que ela não satisfaça as condições impostas pelo JOIN. No exemplo acima todos os empregados são recuperados, inclusive os que não possuem departamento associado. Page 12

Sintaxe SQL 1999 Outer JOINS SELECT empregado_id, cidade, dept_nome FROM empregados e RIGHT OUTER JOIN departamentos d ON (d.dept_id = e.dept_id) No exemplo acima todos os departamentos são recuperados, inclusive os que não possuem empregados. Page 13

Sintaxe SQL 1999 Outer JOINS SELECT empregado_id, cidade, dept_nome FROM empregados e FULL OUTER JOIN departamentos d ON (d.dept_id = e.dept_id) É a união dos resultados do LEFT e do RIGTH JOIN em uma única consulta. Seu equivalente seria: SELECT empregado_id, cidade, dept_nome FROM empregados e LEFT OUTER JOIN departamentos d ON (d.dept_id = e.dept_id) UNION SELECT empregado_id, cidade, dept_nome FROM empregados e RIGHT OUTER JOIN departamentos d ON (d.dept_id = e.dept_id) Page 14

Instrução DELETE Sintaxe: DELETE FROM <TABELA> [WHERE <expressão condicional>] Exemplo: DELETE FROM EMPREGADOS WHERE SALARIO > 1000 DELETE irá excluir as linhas de uma tabela. Se a cláusula WHERE não for informada todas as linhas serão excluídas. Em alguns bancos, como o Oracle, o uso da palavra FROM é opcional. Lembrando: o comando DELETE (no Oracle) inicia uma transação. Para concluí-lo, execute um: COMMIT Confirma as alterações na base de dados. ROLLBACK Desfaz as alterações feitas. Page 15

Instrução UPDATE Sintaxe: UPDATE <TABELA> SET COLUNA1=VALOR1, [COLUNA2=VALOR2,] [COLUNAN=VALORN,] [WHERE <expressão condicional>] Exemplo: UPDATE EMPREGADOS SET SALARIO = SALARIO*1,15 WHERE SALARIO > 1000 UPDATE irá atualizar os atributos especificados em cada SET. Se a cláusula WHERE não for informada todas as linhas terão os atributos indicados atualizados. Lembrando: o comando UPDATE (no Oracle) inicia uma transação. Para concluí-lo, execute um: COMMIT Confirma as alterações na base de dados. ROLLBACK Desfaz as alterações feitas. Page 16

Instrução INSERT Sintaxe: INSERT INTO <TABELA> [(COLUNAS)] VALUES ( VALORES ) Exemplo: INSERT INTO DEPT VALUES ( 10, VENDAS ); INSERT irá incluir uma linha em uma tabela (existem variações como INSERT / SELECT que serão vistas mais tarde). Não é necessário informar as COLUNAS, desde que se conheça a estrutura da tabela, mas esta não é uma BOA PRÁTICA para ser adotada dentro de aplicativos. O recomendado sempre é informar as colunas. O exemplo acima ficaria assim: INSERT INTO DEPT ( DEPTNO, DNAME ) VALUES ( 10, VENDAS ); A estrutura da tabela DEPT é essa: DESC DEPT Name Null Type ------------------------------ -------- ------------------------------------------ DEPTNO NOT NULL NUMBER(2) DNAME VARCHAR2(14) LOC VARCHAR2(13) Reparem que a coluna LOC aceita valores NULOS. A mesma foi omitida no INSERT acima, e o banco automaticamente atribuiu NULO para a coluna LOC. Apesar de ser prático, a informação explícita desta coluna deixaria a instrução mais clara, como no exemplo abaixo: INSERT INTO DEPT ( DEPTNO, DNAME, LOC ) VALUES ( 10, VENDAS, NULL); Lembrando: o comando INSERT (no Oracle) inicia uma transação. Para concluí-lo, execute um: COMMIT Confirma as alterações na base de dados. ROLLBACK Desfaz as alterações feitas. Page 17

Instrução CREATE TABLE Sintaxe: CREATE TABLE NOME_DA_TABELA ( NOME_COLUNA1 TIPO, NOME_COLUNA2 TIPO, NOME_COULNAN TIPO. ) O comando CREATE TABLE é um comando DDL. Sua sintaxe ANSI mais básica é válida em qualquer banco relacional. Page 18

Tipos de Dados - Oracle Tipo de Dado VARCHAR2(size) CHAR(size) NUMBER(p,s) DATE TIMESTAMP CLOB RAW and LONG RAW BLOB BFILE ROWID Descrição Dado alfa-numérico de tamanho variável Dado alfa-numérico de tamanho fixo Dados numéricos Data e hora Data, hora e frações de segundo Dado alfa-numérico de tamanho variável (até 4 GB) * Dados binários Dados binários (até 4 GB) * Ponteiro para um arquivo externo Um número base-64 que representa uma linha no banco dados No Oracle VARCHAR2 Limite máximo 4000 caracteres CHAR - Limite máximo 2000 caracteres NUMBER - 1.0 x 10-130 a 1.0 x 10 126 ( e dependendo do valor requer de 1 a 22 bytes para armazenamento ) ROWID é um tipo específico do Oracle, que representa o endereço físico da linha no SGBD. É de uso interno, e geralmente não é especificado na criação de uma tabela. Veremos ROWID com mais detalhes quando estudarmos índices. Page 19

CREATE TABLE / Tipos de Dados CREATE TABLE EMPREGADOS ( MATRICULA NUMBER(10), NOME VARCHAR2(50), DATA_CONTRATACAO DATE, SALARIO_BASE NUMBER(10,2), SEXO VARCHAR(1), OBSERVACOES CHARACTER VARYING(100), DEPT_ID NUMBER(10) ) / Como mostra o exemplo acima, o Oracle aceita os tipos ANSI mais genéricos ( o que é bom para gerar scripts portáveis ). Para conhecimento ( não cai na avaliação ) ANSI > Oracle CHARACTER(n) > CHAR(n) CHAR(n) > CHAR(n) CHARACTER VARYING(n) > VARCHAR(n) CHAR VARYING(n) > VARCHAR(n) NUMERIC(p,s) > NUMBER(p,s) DECIMAL(p,s) > NUMBER(p,s) INTEGER > NUMBER(38) INT > NUMBER(38) SMALLINT > NUMBER(38) FLOAT > NUMBER DOUBLE PRECISION > NUMBER REAL > NUMBER Page 20