SlideShare uma empresa Scribd logo
LINGUAGEM SQL BÁSICO 
Wagner Bianchi 
Certified MySQL 5.0 Developer 
Certified MySQL 5.0 Database Administrator 
Certified MySQL 5.1 Cluster Database Administrator
Introdução 
! Structured Query Language, ou Linguagem de Consulta Estruturada ou 
SQL, é uma linguagem de pesquisa declarativa para bancos de dados 
relacional (base de dados relacional). Muitas das características originais 
do SQL foram inspiradas na álgebra relacional. 
! O SQL foi desenvolvido originalmente no início dos anos 70 nos 
laboratórios da IBM em San Jose, dentro do projeto System R, que tinha 
por objetivo demonstrar a viabilidade da implementação do modelo 
relacional proposto por E. F. Codd. O nome original da linguagem era 
SEQUEL, a c r ô n imo p a r a " S t r u c t u r e d E n g l i s h Query 
Language" (Linguagem de Consulta Estruturada em Inglês), vindo daí o 
fato de, até hoje, a sigla, em inglês, ser comumente pronunciada "síquel" 
ao invés de "és-kiú-él", letra a letra. No entanto, em português, a pronúncia 
mais corrente é a letra a letra: "ése-quê-éle".
Introdução 
! A linguagem SQL é um grande padrão de banco de dados. Isto decorre 
da sua simplicidade e facilidade de uso. Ela se diferencia de outras 
linguagens de consulta a banco de dados no sentido em que uma consulta 
SQL especifica a forma do resultado e não o caminho para chegar a ele. 
Ela é uma linguagem declarativa em oposição a outras linguagens 
procedurais. Isto reduz o ciclo de aprendizado daqueles que se iniciam na 
linguagem. 
! Embora o SQL tenha sido originalmente criado pela IBM, 
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.
Introdução 
! O SQL foi revisto em 1992 e a esta versão foi dado o nome de SQL-92. Foi 
revisto novamente em 1999 e 2003 para se tornar SQL:1999 (SQL3) e 
SQL:2003, respectivamente. 
! O SQL:1999 usa expressões regulares de emparelhamento, queries 
recursivas e gatilhos (triggers). Também foi feita uma adição controversa 
de tipos não-escalados e algumas características de orientação a objeto. 
! O SQL:2003 introduz características relacionadas ao XML, seqüências 
padronizadas e colunas com valores de auto-generalização (inclusive 
colunas-identidade). 
! Tal como dito anteriormente, o SQL, embora padronizado pela ANSI e ISO, 
possui muitas variações e extensões produzidos pelos diferentes 
fabricantes de sistemas gerenciadores de bases de dados. Tipicamente a 
linguagem pode ser migrada de plataforma para plataforma sem mudanças 
estruturais principais.
Subdivisões 
! A linguagem SQL se subdivide basicamente em três tipos: 
– DML – Data Manipulation Language; 
– DDL – Data Definition Language; 
– DCL – Data Control Language; 
– DTL – Data Transaction Language;
Subdivisões: DDL 
! Conhecida como Data Manipulation Language ou, em português, como 
Linguagem de Manipulação de Dados; 
! É a subdivisão da linguagem mais importante de todas por conter os 
elementos mais utilizados no funcionamento das aplicações; 
! A DML é um subconjunto da linguagem usada para selecionar, inserir, 
atualizar e apagar dados. 
! Dentro da DML temos os seguintes elementos: 
– SELECT 
– DELETE 
– INSERT 
– UPDATE 
Para a linguagem SQL utilizada 
no MySQL, temos mais elementos 
dentro da DML, os quais veremos 
mais à frente!
Subdivisões: DDL 
! O segundo grupo é a DDL (Data Definition Language - Linguagem de 
Definição de Dados). Uma DDL permite ao usuário definir tabelas novas e 
elementos associados. A maioria dos bancos de dados de SQL comerciais 
tem extensões proprietárias no DDL. 
! Alguns sistemas de banco de dados usam o comando ALTER, que permite 
ao usuário alterar um objeto, por exemplo, adicionando uma coluna a uma 
tabela existente. outros comandos DDL: 
– ALTER 
– DROP 
– CREATE 
– RENAME 
Para a linguagem SQL utilizada 
no MySQL, temos mais elementos 
dentro da DDL, os quais veremos 
mais à frente!
Subdivisões: DDL 
! CREATE TABLE LIKE ... 
! ALER TABLE ... ADD | DROP 
! RENAME TABLE TO ...
Subdivisões: DCL 
! O terceiro grupo é o DCL (Data Control Language - Linguagem de Controle 
de Dados). DCL controla os aspectos de autorização de dados e licenças 
de usuários para controlar quem tem acesso para ver ou manipular dados 
dentro do banco de dados. 
! No MySQL, tais elementos tem o nome de Account Management 
Statements, provê muito mais comandos do que a SQL original, definida e 
por Codd e padronizada pelo ANSI. 
– GRANT 
– REVOKE 
Para a linguagem SQL utilizada 
no MySQL, temos mais elementos 
dentro da DCL, os quais veremos 
mais à frente!
Subdivisões: DTL 
! A DTL é uma parte da linguagem SQL que abriga elementos utilizados em 
transações de bancos de dados, geralmente utilizados em meio à 
programas armazenados no SGBD, vinculados ou não a um banco de 
dados. Tais programas são chamados também de procedimentos 
armazenados ou *Stored Procedures; 
! O MySQL dá suporte em 100% ao modelo ACID, no tocante à transações 
e por consequência, à todos os elementos definidos na SQL padrão ANSI, 
que são: 
– BEGIN WORK (ou START TRANSACTION, dependendo do dialeto SQL) pode ser 
usado para marcar o começo de uma transação; 
– COMMIT torna permanentes os dados modificados em meio a uma transação. 
– ROLLBACK faz com que as mudanças nos dados existentes desde que o último 
COMMIT ou ROLLBACK sejam descartadas.
DML: SELECT 
! O primeiro e mais importante elemento da DML que veremos é o elemento 
SELECT. Muito utilizado por ser o elemento que nos possibilita recuperar 
dados em meio a uma query – se pronuncia “kuiêri” - ou consulta, no 
português; 
SELECT campo1, campo2, campon… 
FROM tabela1, tabela2, tabelan 
WHERE condição 
GROUP BY campo1, campo2, campon… 
HAVING condição sobre o agrupamento 
ORDER BY campo1 { ASC | DESC }, campo2 { ASC | DESC }… 
LIMIT number_start, count_register 
A seguir, estudaremos cada cláusula que forma um SELECT.
SELECT 
! SELECT: aqui são abordadas as colunas da tabela, das quais queremos 
recuperar os dados. Os nomes dos campos devem ser escritos separados 
por vírgula, como o exemplo abaixo: 
SELECT campo1, campo2, campon… 
…ainda existe uma maneira de utilizar o * - asterisco – para selecionarmos 
todas as colunas da tabela, como no exemplo abaixo: 
SELECT * 
…vale salientar que não é uma boa utilizar o * - asterisco - quando se 
deseja obter valores de apenas algumas colunas de todo o conjunto.
FROM 
! Esta cláusula da sintaxe do elemento SELECT é responsável por passar ao 
parser do SGDB, qual ou quais são as tebelas onde estão os campo 
mencionados na lista de seleção; 
SELECT * FROM tabela; 
! O FROM pode apresentar *subqueries; 
SELECT LENGTH(data) AS CountCharData 
FROM (SELECT NOW() AS data) AS Tmp;
WHERE 
! Na cláusula WHERE são aplicados filtros em forma de condição para 
recuperação da informação; 
! Condições podem ser expressões; 
! Condições não aceitam *aliases; 
! Condições podem apresentar funções; 
! WHERE pode ser utilizado em SELECT, UPDATE e DELETE. Para evitar 
acidentes, inicie o mysqld com a opção --safe-updates; 
! Após obter o conjunto ou os conjuntos que respondem à consulta, aplica o 
filtro e os dados são retornados;
WHERE 
! Utilizando o banco de dados World, disponibilizado para download pela 
MySQL AB, suponhamos que temos a seguinte consulta: 
SELECT Code, Name, Population, Capital 
FROM Country 
…podemos combinar, por exemplo, os seguintes filtros para retorno dos 
dados: 
WHERE Name =‘Brazil’; 
WHERE Continent =‘South America’; 
WHERE (Population > 1000) AND (Population < 10000); 
WHERE ISNULL(Capital); 
WHERE LifeExpectancy IS NULL;
GROUP BY 
! A cláusula GROUP BY é utilizada quando desejamos obter dados 
sumarizados, ou seja, quando queremos obter dados agrupados por uma 
ou mais colunas; 
! Nesta cláusula, podemos abordar uma ou mais colunas; 
! As colunas que deverão estar presentes em GROUP BY podem estar ou 
não na lista de colunas da cláusula SELECT; 
! Deve-se abordar em GROUP BY pelo menos uma coluna que não faz parte 
da função agregada, utilizada na cláusula SELECT; 
! Funções de agregação são: 
– COUNT(*), COUNT(field), AVG(), SUM(), MAX(), MIN(), 
GROUP_CONCAT(), STD() e STDEV().
GROUP BY 
! Digamos que, utilizando o banco de dados World, disponibilizado para 
download pela MySQL AB, queiramos selecionar quantas cidades temos 
para cada país, utilizando somente a tabela país: 
…não se preocupe com as novidades da consulta, mais à frente 
veremos todos os detalhes.
GROUP BY 
! A cláusula GROUP BY ainda apresenta uma outra cláusula que é 
GROUP BY … WITH ROLLUP, que pode totalizar os dados para cada 
combinação de colunas na cláusula GROUP BY para produzir dados 
resumidos ou ainda super-agregados; 
! No resultado de uma consulta com GROUP BY … WITH ROLLUP, NULL 
representa o fim de cada resumo; 
SELECT a.Continent, a.Name, SUM(a.Population) 
FROM Country a 
WHERE a.Continent ='South America' 
GROUP BY a.Continent, a.Name 
WITH ROLLUP;
GROUP BY
HAVING 
! A cláusula HAVING é utilizada para filtrar dados de agrupamento; 
! Podemos abordar um alias de uma coluna em HAVING; 
! Somente poderá ser utilizado quando o SELECT apresentar GROUP BY;
ORDER BY 
! ORDER BY é a penúltima cláusula de um SELECT, aplicada na ordenação 
do conjunto recuperado. Antes que o conjunto seja retornado, a ordenação 
solicitada é aplicada; 
! Dependendo do conjunto-resultado a ser recuperado, pode apresentar 
problemas graves de performance; 
! Aceita vários campos; 
! Os campos abordados não precisam fazer parte da lista de colunas do 
SELECT; 
! O padrão sempre será ASC – ascendente – caso contrário, podemos 
abordar DESC para resultados ordenados de forma decrescente; 
! Podem ser abordados alias de colunas; 
! Podemos identificar colunas para a ordenação pelos sua posição na lista 
de seleção – 1, 2, 3…;
ORDER BY 
! Utilizando o banco de dados World, disponibilizado para download 
pela MySQL AB, suponhamos que temos a seguinte consulta: 
SELECT Name, (Population) AS QtdPopulation 
FROM City 
…temos os seguintes exemplos de ordenação do resultado da consulta 
com a cláusula ORDER BY: 
ORDER BY CountryCode ASC; 
ORDER BY Name ASC, QtdPopulation DESC; 
ORDER BY ID; -- coluna não abordada na seleção
LIMIT 
! A cláusula LIMIT é utilizada determinada a quantidade de linhas a serem 
exibida a partir do resultado obtido pela consulta e já ordenado; 
! Pode ser utilizada com um ou opcionalmente com dois parâmetros. O 
primeiro diz quantas linhas retornar e o segundo diz, em conjunto com o 
primeiro, quantas linhas retornar a partir do registro x; 
! Bom para sistemas e/ou aplicações que utilizam paginação de resultados; 
! A utilização de LIMIT não impede que todos os registros da tabela sejam 
lidos, o que pode apresentar problemas de performance quando há muitas 
leituras;
LIMIT 
! Utilizando o banco de dados World, disponibilizado para download 
pela MySQL AB, suponhamos que temos a seguinte consulta: 
SELECT CountryCode, Name, Population 
FROM City 
WHERE CountryCode =‘BRA’ 
…podemos ter os seguintes exemplos de utilização da cláusula 
LIMIT: 
LIMIT 5; 
LIMIT 0, 5; 
LIMIT 10, 5;
Operadores 
! Operadores Lógicos 
– AND 
E lógico. Avalia as condições e devolve um valor verdadeiro 
caso ambos sejam corretos. 
– OR 
OU lógico. Avalia as condições e devolve um valor verdadeiro 
se algum for correto. 
– NOT 
Negação lógica. Devolve o valor contrário da expressão.
Operadores 
! Operadores Relacionais 
< Descrição – Menor que 
> Descrição – Maior que 
<> Descrição – Diferente de 
<= Descrição – Menor ou Igual que 
>= Descrição – Maior ou Igual que 
= Descrição – Igual a 
BETWEEN 
Utilizado para especificar um intervalo de valores. 
LIKE 
Utilizado na comparação de um modelo e para especificar registros de um 
banco de dados."Like" + extensão % vai significar buscar todos 
resultados com o mesmo início da extensão.
Operadores 
! O operador LIKE pode ser utilizado para buscas específicas, onde 
utiliamos o sinal % como coringa de busca. A posição do coringa determina 
aonde deverá constar a string especificada; 
SELECT Name FROM City WHERE Name 
…podemos fazer as seguintes buscas com LIKE: 
LIKE ‘%P’; -- todas os nomes iniciados com P 
LIKE ‘P%’; -- todas os nomes finalizados com P 
LIKE ‘P_u%’; -- todos os nomes que tem a primeira letra P e a 
terceira letra u
Operadores 
IS NULL 
Seleciona registros que tem o valor de uma coluna igual a NULL 
SELECT Capital FROM Country WHERE Capital IS NULL; 
IS NOT NULL 
Seleciona registros que não tem valor NULL em uma coluna 
SELECT Capital FROM Country WHERE Capital IS NOT NULL;
Funções Agregadas 
! As funções de soma se usam dentro de uma cláusula SELECT em grupos 
de registros para devolver um único valor que se aplica a um grupo de 
registros. 
– AVG() 
Utiliza para calcular a media dos valores de um campo determinado. 
– COUNT(field) ou COUNT(*) 
Utilizada para devolver o número de registros da seleção. 
– SUM() 
Utilizada para devolver a soma de todos os valores de um campo 
determinado.
Funções Agregadas 
– MAX() 
Utilizada para devolver o valor mais alto de um campo especificado. 
– MIN() 
Utilizada para devolver o valor mais baixo de um campo especificado 
By Wagner Bianchi
Exercícios 
! Utilizando o banco de dados World, implementado e oferecido pela MySQL 
AB para download no site mysql.com para fins educacionais, resolva todas 
as questões da LISTA 1. 
By Wagner Bianchi
DML: Sintaxe Geral 
! O próximo elemento é o INSERT, o qual nos permite inserir dados em 
tabelas de um banco de dados. Tal elemento nos permite duas sintaxes: 
INSERT INTO tabela (campo1, campo2, campo3) 
VALUES (valor1, valor2, valor3); 
…ou ainda: 
INSERT INTO tabela SET campo1 =valor1, 
campo2 =valor2, 
campo3 =valor3; 
By Wagner Bianchi
DML: Sintaxe Geral 
Utilizamos o database chamado world, fornecido pela MySQL AB para 
inserir uma língua chamada ‘MySQL’ na tabela CountryLanguage, cujo 
país tem código igual a ‘BRA’, não é uma língua oficial e 1% da 
população fala tal língua. 
By Wagner Bianchi
DML: Sintaxe Geral 
! Podemos ainda, dentro da DML, atualizar os registros contidos em uma 
tabela, em um banco de dados através do elemento UPDATE. Tal elemento 
nos permite acessar uma ou mais linhas para atulizar uma ou mais colunas 
que compõem os registros. Sua sintaxe geral é: 
– Single Table Syntax; 
UPDATE tabela SET coluna1 =valor1, coluna2 =valor2 
WHERE condicao 
ORDER BY campo1 { ASC | DESC }, campo2 { ASC | DESC } 
LIMIT number_start, count_register 
By Wagner Bianchi
DML: Sintaxe Geral 
Utilizamos o database chamado world, fornecido pela MySQL AB para 
atualizar o nome do país ‘Brazil’para ‘Brasil’.Note que primeiro fazemos 
um SELECT para mostrar como está o nome do país antes e depois de 
UPDATE.
DML: Sintaxe Geral 
! Outro elemento importante de dentro da DML é o elemento DELETE, que 
por sua vez, nos possibilita excluir registros. A sintaxe geral do elemento é: 
DELETE 
FROM tabela 
WHERE condicao 
ORDER BY campo1 { ASC | DESC }, campo2 { ASC | DESC } 
LIMIT row_count
DML: Sintaxe Geral 
Utilizamos o database chamado world, fornecido pela MySQL AB, 
inserimos uma nova cidade na tabela City chamada Neverland, e em 
seguida excluímos a mesma com o elemento DML DELETE.

Mais conteúdo relacionado

Mais procurados

Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
Daniel Brandão
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
Fabrício Lopes Sanchez
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
Marcio Marinho
 
Banco de Dados II Aula 06 - Modelagem de Dados (Modelo Físico)
Banco de Dados II Aula 06 - Modelagem de Dados (Modelo Físico)Banco de Dados II Aula 06 - Modelagem de Dados (Modelo Físico)
Banco de Dados II Aula 06 - Modelagem de Dados (Modelo Físico)
Leinylson Fontinele
 
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeiraBanco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Natanael Simões
 
Aula 2 - Comandos DDL DML DQL E DCL
Aula 2 - Comandos DDL DML DQL E DCLAula 2 - Comandos DDL DML DQL E DCL
Aula 2 - Comandos DDL DML DQL E DCL
César Augusto Pessôa
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
Igor Takenami
 
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScriptCurso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Rodrigo Bueno Santa Maria, BS, MBA
 
Banco de Dados - Part01
Banco de Dados - Part01Banco de Dados - Part01
Banco de Dados - Part01
Rangel Javier
 
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)
Leinylson Fontinele
 
Comandos básicos mysql
Comandos básicos mysqlComandos básicos mysql
Comandos básicos mysql
Carmen Rios Zapata
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
Thiago Freitas
 
Banco de Dados - Conceitos Básicos
Banco de Dados - Conceitos BásicosBanco de Dados - Conceitos Básicos
Banco de Dados - Conceitos Básicos
Adriano Leite da Silva
 
Exercicio banco de_dados
Exercicio banco de_dadosExercicio banco de_dados
Exercicio banco de_dados
Rafael Lima
 
Introdução ao MySQL
Introdução ao MySQLIntrodução ao MySQL
Introdução ao MySQL
Anderson Sanches
 
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro BancoBanco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
Leinylson Fontinele
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
Adriano Teixeira de Souza
 
Presentation slides of Sequence Query Language (SQL)
Presentation slides of Sequence Query Language (SQL)Presentation slides of Sequence Query Language (SQL)
Presentation slides of Sequence Query Language (SQL)
Punjab University
 
Mer - Modelo Entidade Relacionamento
Mer - Modelo Entidade RelacionamentoMer - Modelo Entidade Relacionamento
Mer - Modelo Entidade Relacionamento
Rademaker Siena
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL Básico
Igor Alves
 

Mais procurados (20)

Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Banco de Dados II Aula 06 - Modelagem de Dados (Modelo Físico)
Banco de Dados II Aula 06 - Modelagem de Dados (Modelo Físico)Banco de Dados II Aula 06 - Modelagem de Dados (Modelo Físico)
Banco de Dados II Aula 06 - Modelagem de Dados (Modelo Físico)
 
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeiraBanco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
 
Aula 2 - Comandos DDL DML DQL E DCL
Aula 2 - Comandos DDL DML DQL E DCLAula 2 - Comandos DDL DML DQL E DCL
Aula 2 - Comandos DDL DML DQL E DCL
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScriptCurso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
 
Banco de Dados - Part01
Banco de Dados - Part01Banco de Dados - Part01
Banco de Dados - Part01
 
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)
 
Comandos básicos mysql
Comandos básicos mysqlComandos básicos mysql
Comandos básicos mysql
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
 
Banco de Dados - Conceitos Básicos
Banco de Dados - Conceitos BásicosBanco de Dados - Conceitos Básicos
Banco de Dados - Conceitos Básicos
 
Exercicio banco de_dados
Exercicio banco de_dadosExercicio banco de_dados
Exercicio banco de_dados
 
Introdução ao MySQL
Introdução ao MySQLIntrodução ao MySQL
Introdução ao MySQL
 
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro BancoBanco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
 
Presentation slides of Sequence Query Language (SQL)
Presentation slides of Sequence Query Language (SQL)Presentation slides of Sequence Query Language (SQL)
Presentation slides of Sequence Query Language (SQL)
 
Mer - Modelo Entidade Relacionamento
Mer - Modelo Entidade RelacionamentoMer - Modelo Entidade Relacionamento
Mer - Modelo Entidade Relacionamento
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL Básico
 

Destaque

Banco de Dados 1 - Semana 5
Banco de Dados 1 - Semana 5Banco de Dados 1 - Semana 5
Banco de Dados 1 - Semana 5
Eder Samaniego
 
Semana 05 - Estruturas Condicionais - Exercícios
Semana 05   - Estruturas Condicionais - ExercíciosSemana 05   - Estruturas Condicionais - Exercícios
Semana 05 - Estruturas Condicionais - Exercícios
Eder Samaniego
 
Introdução a segurança da informação
Introdução a segurança da informaçãoIntrodução a segurança da informação
Introdução a segurança da informação
Cleber Fonseca
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
Albert Belchior
 
Aula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da InformaçãoAula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da Informação
Carlos Henrique Martins da Silva
 
A Linguagem sql
A Linguagem sqlA Linguagem sql
A Linguagem sql
Centro Paula Souza
 
Algoritmos 01 - Semana 08 - Estruturas de repetição
Algoritmos 01 - Semana 08 - Estruturas de repetiçãoAlgoritmos 01 - Semana 08 - Estruturas de repetição
Algoritmos 01 - Semana 08 - Estruturas de repetição
Eder Samaniego
 
Aula 05 sistemas de numeração
Aula 05   sistemas de numeraçãoAula 05   sistemas de numeração
Aula 05 sistemas de numeração
Daniel Moura
 
Introdução a informatica sist. numeracao
Introdução a informatica sist. numeracaoIntrodução a informatica sist. numeracao
Introdução a informatica sist. numeracao
jotaulio
 
Segurança da Informação e Políticas de Segurança
Segurança da Informação e Políticas de SegurançaSegurança da Informação e Políticas de Segurança
Segurança da Informação e Políticas de Segurança
Gilberto Sudre
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
Gleydson Sousa
 
Segurança da Informação
Segurança da InformaçãoSegurança da Informação
Segurança da Informação
Marco Mendes
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)
Marco Pinheiro
 
Structured Query Language (SQL) - Lecture 5 - Introduction to Databases (1007...
Structured Query Language (SQL) - Lecture 5 - Introduction to Databases (1007...Structured Query Language (SQL) - Lecture 5 - Introduction to Databases (1007...
Structured Query Language (SQL) - Lecture 5 - Introduction to Databases (1007...
Beat Signer
 

Destaque (14)

Banco de Dados 1 - Semana 5
Banco de Dados 1 - Semana 5Banco de Dados 1 - Semana 5
Banco de Dados 1 - Semana 5
 
Semana 05 - Estruturas Condicionais - Exercícios
Semana 05   - Estruturas Condicionais - ExercíciosSemana 05   - Estruturas Condicionais - Exercícios
Semana 05 - Estruturas Condicionais - Exercícios
 
Introdução a segurança da informação
Introdução a segurança da informaçãoIntrodução a segurança da informação
Introdução a segurança da informação
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Aula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da InformaçãoAula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da Informação
 
A Linguagem sql
A Linguagem sqlA Linguagem sql
A Linguagem sql
 
Algoritmos 01 - Semana 08 - Estruturas de repetição
Algoritmos 01 - Semana 08 - Estruturas de repetiçãoAlgoritmos 01 - Semana 08 - Estruturas de repetição
Algoritmos 01 - Semana 08 - Estruturas de repetição
 
Aula 05 sistemas de numeração
Aula 05   sistemas de numeraçãoAula 05   sistemas de numeração
Aula 05 sistemas de numeração
 
Introdução a informatica sist. numeracao
Introdução a informatica sist. numeracaoIntrodução a informatica sist. numeracao
Introdução a informatica sist. numeracao
 
Segurança da Informação e Políticas de Segurança
Segurança da Informação e Políticas de SegurançaSegurança da Informação e Políticas de Segurança
Segurança da Informação e Políticas de Segurança
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 
Segurança da Informação
Segurança da InformaçãoSegurança da Informação
Segurança da Informação
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)
 
Structured Query Language (SQL) - Lecture 5 - Introduction to Databases (1007...
Structured Query Language (SQL) - Lecture 5 - Introduction to Databases (1007...Structured Query Language (SQL) - Lecture 5 - Introduction to Databases (1007...
Structured Query Language (SQL) - Lecture 5 - Introduction to Databases (1007...
 

Semelhante a UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6

Aula 10 banco de dados
Aula 10   banco de dadosAula 10   banco de dados
Aula 10 banco de dados
Jorge Ávila Miranda
 
Aula 10 banco de dados
Aula 10   banco de dadosAula 10   banco de dados
Aula 10 banco de dados
Jorge Ávila Miranda
 
37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server
Art IT
 
TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQL
Fábio Delboni
 
37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server
José Henrique Sento Sé
 
Introdução ao MySQL - EuDala SF 2023.pptx
Introdução ao MySQL - EuDala SF 2023.pptxIntrodução ao MySQL - EuDala SF 2023.pptx
Introdução ao MySQL - EuDala SF 2023.pptx
EuclidesDala2
 
Apostila ib
Apostila ibApostila ib
Introdução ao BD Postgre
Introdução ao BD PostgreIntrodução ao BD Postgre
Introdução ao BD Postgre
Francisco Oliveira
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
Cezar Souza
 
Db2
Db2Db2
Boa apostila sql
Boa  apostila sqlBoa  apostila sql
Boa apostila sql
Rogerio Silva
 
2832014 curso plsql
2832014 curso plsql2832014 curso plsql
2832014 curso plsql
Valter Marcondes B. Leite
 
Apostila de sql server 2008
Apostila de sql server 2008Apostila de sql server 2008
Apostila de sql server 2008
marcos0512
 
SQL Parte 1 - Criação de Banco de Dados.pdf
SQL Parte 1 - Criação de Banco de Dados.pdfSQL Parte 1 - Criação de Banco de Dados.pdf
SQL Parte 1 - Criação de Banco de Dados.pdf
AndersonW5
 
Apostila sql
Apostila sqlApostila sql
Apostila sql
snetobr
 
Apostila sql
Apostila sqlApostila sql
Apostila sql
Charleston Anjos
 
Modulo 15 PSI
Modulo 15 PSIModulo 15 PSI
Modulo 15 PSI
Luis Ferreira
 
Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8
Emiliano Barbosa
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
QuitriaSilva550
 
Sql
SqlSql

Semelhante a UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6 (20)

Aula 10 banco de dados
Aula 10   banco de dadosAula 10   banco de dados
Aula 10 banco de dados
 
Aula 10 banco de dados
Aula 10   banco de dadosAula 10   banco de dados
Aula 10 banco de dados
 
37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server
 
TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQL
 
37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server
 
Introdução ao MySQL - EuDala SF 2023.pptx
Introdução ao MySQL - EuDala SF 2023.pptxIntrodução ao MySQL - EuDala SF 2023.pptx
Introdução ao MySQL - EuDala SF 2023.pptx
 
Apostila ib
Apostila ibApostila ib
Apostila ib
 
Introdução ao BD Postgre
Introdução ao BD PostgreIntrodução ao BD Postgre
Introdução ao BD Postgre
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Db2
Db2Db2
Db2
 
Boa apostila sql
Boa  apostila sqlBoa  apostila sql
Boa apostila sql
 
2832014 curso plsql
2832014 curso plsql2832014 curso plsql
2832014 curso plsql
 
Apostila de sql server 2008
Apostila de sql server 2008Apostila de sql server 2008
Apostila de sql server 2008
 
SQL Parte 1 - Criação de Banco de Dados.pdf
SQL Parte 1 - Criação de Banco de Dados.pdfSQL Parte 1 - Criação de Banco de Dados.pdf
SQL Parte 1 - Criação de Banco de Dados.pdf
 
Apostila sql
Apostila sqlApostila sql
Apostila sql
 
Apostila sql
Apostila sqlApostila sql
Apostila sql
 
Modulo 15 PSI
Modulo 15 PSIModulo 15 PSI
Modulo 15 PSI
 
Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
 
Sql
SqlSql
Sql
 

Mais de Wagner Bianchi

Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18
Wagner Bianchi
 
Maxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoinMaxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoin
Wagner Bianchi
 
Meetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de UsoMeetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de Uso
Wagner Bianchi
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Wagner Bianchi
 
NY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleNY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with Maxscale
Wagner Bianchi
 
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source ReplicationWebinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Wagner Bianchi
 
MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016
Wagner Bianchi
 
MySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationMySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source Replication
Wagner Bianchi
 
UNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - ReplicaçãoUNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - Replicação
Wagner Bianchi
 
UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6
Wagner Bianchi
 
UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6
Wagner Bianchi
 
UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6
Wagner Bianchi
 
UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6
Wagner Bianchi
 
UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6
Wagner Bianchi
 
UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6
Wagner Bianchi
 
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
Wagner Bianchi
 
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi
 
Introdução ao MySQL 5.6
Introdução ao MySQL 5.6Introdução ao MySQL 5.6
Introdução ao MySQL 5.6
Wagner Bianchi
 
Mysql for IBMers
Mysql for IBMersMysql for IBMers
Mysql for IBMers
Wagner Bianchi
 
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLInnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
Wagner Bianchi
 

Mais de Wagner Bianchi (20)

Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18
 
Maxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoinMaxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoin
 
Meetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de UsoMeetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de Uso
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
 
NY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleNY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with Maxscale
 
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source ReplicationWebinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
 
MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016
 
MySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationMySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source Replication
 
UNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - ReplicaçãoUNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - Replicação
 
UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6
 
UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6
 
UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6
 
UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6
 
UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6
 
UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6
 
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
 
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
 
Introdução ao MySQL 5.6
Introdução ao MySQL 5.6Introdução ao MySQL 5.6
Introdução ao MySQL 5.6
 
Mysql for IBMers
Mysql for IBMersMysql for IBMers
Mysql for IBMers
 
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLInnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
 

UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6

  • 1. LINGUAGEM SQL BÁSICO Wagner Bianchi Certified MySQL 5.0 Developer Certified MySQL 5.0 Database Administrator Certified MySQL 5.1 Cluster Database Administrator
  • 2. Introdução ! Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é uma linguagem de pesquisa declarativa para bancos de dados relacional (base de dados relacional). Muitas das características originais do SQL foram inspiradas na álgebra relacional. ! O SQL foi desenvolvido originalmente no início dos anos 70 nos laboratórios da IBM em San Jose, dentro do projeto System R, que tinha por objetivo demonstrar a viabilidade da implementação do modelo relacional proposto por E. F. Codd. O nome original da linguagem era SEQUEL, a c r ô n imo p a r a " S t r u c t u r e d E n g l i s h Query Language" (Linguagem de Consulta Estruturada em Inglês), vindo daí o fato de, até hoje, a sigla, em inglês, ser comumente pronunciada "síquel" ao invés de "és-kiú-él", letra a letra. No entanto, em português, a pronúncia mais corrente é a letra a letra: "ése-quê-éle".
  • 3. Introdução ! A linguagem SQL é um grande padrão de banco de dados. Isto decorre da sua simplicidade e facilidade de uso. Ela se diferencia de outras linguagens de consulta a banco de dados no sentido em que uma consulta SQL especifica a forma do resultado e não o caminho para chegar a ele. Ela é uma linguagem declarativa em oposição a outras linguagens procedurais. Isto reduz o ciclo de aprendizado daqueles que se iniciam na linguagem. ! Embora o SQL tenha sido originalmente criado pela IBM, 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.
  • 4. Introdução ! O SQL foi revisto em 1992 e a esta versão foi dado o nome de SQL-92. Foi revisto novamente em 1999 e 2003 para se tornar SQL:1999 (SQL3) e SQL:2003, respectivamente. ! O SQL:1999 usa expressões regulares de emparelhamento, queries recursivas e gatilhos (triggers). Também foi feita uma adição controversa de tipos não-escalados e algumas características de orientação a objeto. ! O SQL:2003 introduz características relacionadas ao XML, seqüências padronizadas e colunas com valores de auto-generalização (inclusive colunas-identidade). ! Tal como dito anteriormente, o SQL, embora padronizado pela ANSI e ISO, possui muitas variações e extensões produzidos pelos diferentes fabricantes de sistemas gerenciadores de bases de dados. Tipicamente a linguagem pode ser migrada de plataforma para plataforma sem mudanças estruturais principais.
  • 5. Subdivisões ! A linguagem SQL se subdivide basicamente em três tipos: – DML – Data Manipulation Language; – DDL – Data Definition Language; – DCL – Data Control Language; – DTL – Data Transaction Language;
  • 6. Subdivisões: DDL ! Conhecida como Data Manipulation Language ou, em português, como Linguagem de Manipulação de Dados; ! É a subdivisão da linguagem mais importante de todas por conter os elementos mais utilizados no funcionamento das aplicações; ! A DML é um subconjunto da linguagem usada para selecionar, inserir, atualizar e apagar dados. ! Dentro da DML temos os seguintes elementos: – SELECT – DELETE – INSERT – UPDATE Para a linguagem SQL utilizada no MySQL, temos mais elementos dentro da DML, os quais veremos mais à frente!
  • 7. Subdivisões: DDL ! O segundo grupo é a DDL (Data Definition Language - Linguagem de Definição de Dados). Uma DDL permite ao usuário definir tabelas novas e elementos associados. A maioria dos bancos de dados de SQL comerciais tem extensões proprietárias no DDL. ! Alguns sistemas de banco de dados usam o comando ALTER, que permite ao usuário alterar um objeto, por exemplo, adicionando uma coluna a uma tabela existente. outros comandos DDL: – ALTER – DROP – CREATE – RENAME Para a linguagem SQL utilizada no MySQL, temos mais elementos dentro da DDL, os quais veremos mais à frente!
  • 8. Subdivisões: DDL ! CREATE TABLE LIKE ... ! ALER TABLE ... ADD | DROP ! RENAME TABLE TO ...
  • 9. Subdivisões: DCL ! O terceiro grupo é o DCL (Data Control Language - Linguagem de Controle de Dados). DCL controla os aspectos de autorização de dados e licenças de usuários para controlar quem tem acesso para ver ou manipular dados dentro do banco de dados. ! No MySQL, tais elementos tem o nome de Account Management Statements, provê muito mais comandos do que a SQL original, definida e por Codd e padronizada pelo ANSI. – GRANT – REVOKE Para a linguagem SQL utilizada no MySQL, temos mais elementos dentro da DCL, os quais veremos mais à frente!
  • 10. Subdivisões: DTL ! A DTL é uma parte da linguagem SQL que abriga elementos utilizados em transações de bancos de dados, geralmente utilizados em meio à programas armazenados no SGBD, vinculados ou não a um banco de dados. Tais programas são chamados também de procedimentos armazenados ou *Stored Procedures; ! O MySQL dá suporte em 100% ao modelo ACID, no tocante à transações e por consequência, à todos os elementos definidos na SQL padrão ANSI, que são: – BEGIN WORK (ou START TRANSACTION, dependendo do dialeto SQL) pode ser usado para marcar o começo de uma transação; – COMMIT torna permanentes os dados modificados em meio a uma transação. – ROLLBACK faz com que as mudanças nos dados existentes desde que o último COMMIT ou ROLLBACK sejam descartadas.
  • 11. DML: SELECT ! O primeiro e mais importante elemento da DML que veremos é o elemento SELECT. Muito utilizado por ser o elemento que nos possibilita recuperar dados em meio a uma query – se pronuncia “kuiêri” - ou consulta, no português; SELECT campo1, campo2, campon… FROM tabela1, tabela2, tabelan WHERE condição GROUP BY campo1, campo2, campon… HAVING condição sobre o agrupamento ORDER BY campo1 { ASC | DESC }, campo2 { ASC | DESC }… LIMIT number_start, count_register A seguir, estudaremos cada cláusula que forma um SELECT.
  • 12. SELECT ! SELECT: aqui são abordadas as colunas da tabela, das quais queremos recuperar os dados. Os nomes dos campos devem ser escritos separados por vírgula, como o exemplo abaixo: SELECT campo1, campo2, campon… …ainda existe uma maneira de utilizar o * - asterisco – para selecionarmos todas as colunas da tabela, como no exemplo abaixo: SELECT * …vale salientar que não é uma boa utilizar o * - asterisco - quando se deseja obter valores de apenas algumas colunas de todo o conjunto.
  • 13. FROM ! Esta cláusula da sintaxe do elemento SELECT é responsável por passar ao parser do SGDB, qual ou quais são as tebelas onde estão os campo mencionados na lista de seleção; SELECT * FROM tabela; ! O FROM pode apresentar *subqueries; SELECT LENGTH(data) AS CountCharData FROM (SELECT NOW() AS data) AS Tmp;
  • 14. WHERE ! Na cláusula WHERE são aplicados filtros em forma de condição para recuperação da informação; ! Condições podem ser expressões; ! Condições não aceitam *aliases; ! Condições podem apresentar funções; ! WHERE pode ser utilizado em SELECT, UPDATE e DELETE. Para evitar acidentes, inicie o mysqld com a opção --safe-updates; ! Após obter o conjunto ou os conjuntos que respondem à consulta, aplica o filtro e os dados são retornados;
  • 15. WHERE ! Utilizando o banco de dados World, disponibilizado para download pela MySQL AB, suponhamos que temos a seguinte consulta: SELECT Code, Name, Population, Capital FROM Country …podemos combinar, por exemplo, os seguintes filtros para retorno dos dados: WHERE Name =‘Brazil’; WHERE Continent =‘South America’; WHERE (Population > 1000) AND (Population < 10000); WHERE ISNULL(Capital); WHERE LifeExpectancy IS NULL;
  • 16. GROUP BY ! A cláusula GROUP BY é utilizada quando desejamos obter dados sumarizados, ou seja, quando queremos obter dados agrupados por uma ou mais colunas; ! Nesta cláusula, podemos abordar uma ou mais colunas; ! As colunas que deverão estar presentes em GROUP BY podem estar ou não na lista de colunas da cláusula SELECT; ! Deve-se abordar em GROUP BY pelo menos uma coluna que não faz parte da função agregada, utilizada na cláusula SELECT; ! Funções de agregação são: – COUNT(*), COUNT(field), AVG(), SUM(), MAX(), MIN(), GROUP_CONCAT(), STD() e STDEV().
  • 17. GROUP BY ! Digamos que, utilizando o banco de dados World, disponibilizado para download pela MySQL AB, queiramos selecionar quantas cidades temos para cada país, utilizando somente a tabela país: …não se preocupe com as novidades da consulta, mais à frente veremos todos os detalhes.
  • 18. GROUP BY ! A cláusula GROUP BY ainda apresenta uma outra cláusula que é GROUP BY … WITH ROLLUP, que pode totalizar os dados para cada combinação de colunas na cláusula GROUP BY para produzir dados resumidos ou ainda super-agregados; ! No resultado de uma consulta com GROUP BY … WITH ROLLUP, NULL representa o fim de cada resumo; SELECT a.Continent, a.Name, SUM(a.Population) FROM Country a WHERE a.Continent ='South America' GROUP BY a.Continent, a.Name WITH ROLLUP;
  • 20. HAVING ! A cláusula HAVING é utilizada para filtrar dados de agrupamento; ! Podemos abordar um alias de uma coluna em HAVING; ! Somente poderá ser utilizado quando o SELECT apresentar GROUP BY;
  • 21. ORDER BY ! ORDER BY é a penúltima cláusula de um SELECT, aplicada na ordenação do conjunto recuperado. Antes que o conjunto seja retornado, a ordenação solicitada é aplicada; ! Dependendo do conjunto-resultado a ser recuperado, pode apresentar problemas graves de performance; ! Aceita vários campos; ! Os campos abordados não precisam fazer parte da lista de colunas do SELECT; ! O padrão sempre será ASC – ascendente – caso contrário, podemos abordar DESC para resultados ordenados de forma decrescente; ! Podem ser abordados alias de colunas; ! Podemos identificar colunas para a ordenação pelos sua posição na lista de seleção – 1, 2, 3…;
  • 22. ORDER BY ! Utilizando o banco de dados World, disponibilizado para download pela MySQL AB, suponhamos que temos a seguinte consulta: SELECT Name, (Population) AS QtdPopulation FROM City …temos os seguintes exemplos de ordenação do resultado da consulta com a cláusula ORDER BY: ORDER BY CountryCode ASC; ORDER BY Name ASC, QtdPopulation DESC; ORDER BY ID; -- coluna não abordada na seleção
  • 23. LIMIT ! A cláusula LIMIT é utilizada determinada a quantidade de linhas a serem exibida a partir do resultado obtido pela consulta e já ordenado; ! Pode ser utilizada com um ou opcionalmente com dois parâmetros. O primeiro diz quantas linhas retornar e o segundo diz, em conjunto com o primeiro, quantas linhas retornar a partir do registro x; ! Bom para sistemas e/ou aplicações que utilizam paginação de resultados; ! A utilização de LIMIT não impede que todos os registros da tabela sejam lidos, o que pode apresentar problemas de performance quando há muitas leituras;
  • 24. LIMIT ! Utilizando o banco de dados World, disponibilizado para download pela MySQL AB, suponhamos que temos a seguinte consulta: SELECT CountryCode, Name, Population FROM City WHERE CountryCode =‘BRA’ …podemos ter os seguintes exemplos de utilização da cláusula LIMIT: LIMIT 5; LIMIT 0, 5; LIMIT 10, 5;
  • 25. Operadores ! Operadores Lógicos – AND E lógico. Avalia as condições e devolve um valor verdadeiro caso ambos sejam corretos. – OR OU lógico. Avalia as condições e devolve um valor verdadeiro se algum for correto. – NOT Negação lógica. Devolve o valor contrário da expressão.
  • 26. Operadores ! Operadores Relacionais < Descrição – Menor que > Descrição – Maior que <> Descrição – Diferente de <= Descrição – Menor ou Igual que >= Descrição – Maior ou Igual que = Descrição – Igual a BETWEEN Utilizado para especificar um intervalo de valores. LIKE Utilizado na comparação de um modelo e para especificar registros de um banco de dados."Like" + extensão % vai significar buscar todos resultados com o mesmo início da extensão.
  • 27. Operadores ! O operador LIKE pode ser utilizado para buscas específicas, onde utiliamos o sinal % como coringa de busca. A posição do coringa determina aonde deverá constar a string especificada; SELECT Name FROM City WHERE Name …podemos fazer as seguintes buscas com LIKE: LIKE ‘%P’; -- todas os nomes iniciados com P LIKE ‘P%’; -- todas os nomes finalizados com P LIKE ‘P_u%’; -- todos os nomes que tem a primeira letra P e a terceira letra u
  • 28. Operadores IS NULL Seleciona registros que tem o valor de uma coluna igual a NULL SELECT Capital FROM Country WHERE Capital IS NULL; IS NOT NULL Seleciona registros que não tem valor NULL em uma coluna SELECT Capital FROM Country WHERE Capital IS NOT NULL;
  • 29. Funções Agregadas ! As funções de soma se usam dentro de uma cláusula SELECT em grupos de registros para devolver um único valor que se aplica a um grupo de registros. – AVG() Utiliza para calcular a media dos valores de um campo determinado. – COUNT(field) ou COUNT(*) Utilizada para devolver o número de registros da seleção. – SUM() Utilizada para devolver a soma de todos os valores de um campo determinado.
  • 30. Funções Agregadas – MAX() Utilizada para devolver o valor mais alto de um campo especificado. – MIN() Utilizada para devolver o valor mais baixo de um campo especificado By Wagner Bianchi
  • 31. Exercícios ! Utilizando o banco de dados World, implementado e oferecido pela MySQL AB para download no site mysql.com para fins educacionais, resolva todas as questões da LISTA 1. By Wagner Bianchi
  • 32. DML: Sintaxe Geral ! O próximo elemento é o INSERT, o qual nos permite inserir dados em tabelas de um banco de dados. Tal elemento nos permite duas sintaxes: INSERT INTO tabela (campo1, campo2, campo3) VALUES (valor1, valor2, valor3); …ou ainda: INSERT INTO tabela SET campo1 =valor1, campo2 =valor2, campo3 =valor3; By Wagner Bianchi
  • 33. DML: Sintaxe Geral Utilizamos o database chamado world, fornecido pela MySQL AB para inserir uma língua chamada ‘MySQL’ na tabela CountryLanguage, cujo país tem código igual a ‘BRA’, não é uma língua oficial e 1% da população fala tal língua. By Wagner Bianchi
  • 34. DML: Sintaxe Geral ! Podemos ainda, dentro da DML, atualizar os registros contidos em uma tabela, em um banco de dados através do elemento UPDATE. Tal elemento nos permite acessar uma ou mais linhas para atulizar uma ou mais colunas que compõem os registros. Sua sintaxe geral é: – Single Table Syntax; UPDATE tabela SET coluna1 =valor1, coluna2 =valor2 WHERE condicao ORDER BY campo1 { ASC | DESC }, campo2 { ASC | DESC } LIMIT number_start, count_register By Wagner Bianchi
  • 35. DML: Sintaxe Geral Utilizamos o database chamado world, fornecido pela MySQL AB para atualizar o nome do país ‘Brazil’para ‘Brasil’.Note que primeiro fazemos um SELECT para mostrar como está o nome do país antes e depois de UPDATE.
  • 36. DML: Sintaxe Geral ! Outro elemento importante de dentro da DML é o elemento DELETE, que por sua vez, nos possibilita excluir registros. A sintaxe geral do elemento é: DELETE FROM tabela WHERE condicao ORDER BY campo1 { ASC | DESC }, campo2 { ASC | DESC } LIMIT row_count
  • 37. DML: Sintaxe Geral Utilizamos o database chamado world, fornecido pela MySQL AB, inserimos uma nova cidade na tabela City chamada Neverland, e em seguida excluímos a mesma com o elemento DML DELETE.