Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
SQL FLUENTE TREINAMENTO AVANÇADO DE LINGUAGEM SQL PARA BANCO DE DADOS
Desenvolva, manipule e administre bancos de dados Guia resumido projetado para aprendizagem rápida para programadores Revelado método de aprendizagem acelerada de linguagem de programação e SQL Explicação simples e direta permitindo uma assimilação rápida na linguagem SQL Diferente dos outros livros com linguagem rebuscada, teorias longas e centenas de páginas Com certeza o melhor guia de treinamento e suporte para programação de banco de dados
Autor: Leandro Gonçalves dos Santos Programador linguagem C# e SQL nível avançado Penetration Tester Linux BackTrack 5
1
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
ÍNDICE
SQL Básico • • • •
• • • • • • • • • • • •
4 - O que é SQL? 4 - Introdução a linguagem SQL 5 - SQL Server 2008 express– Ferramentas para desenvolvimento de banco de dados 14 - Passos para efetuar conexão com Banco de dados e comandos SQL p or meio de programas com linguagem C# 19 - Método de aprendizagem rápida para linguagens de programação e SQL 20 - Sintaxe SQL 22 - Create DataBase – Criando um banco da dados 22 - Create Table – Criando uma tabela no banco de dados d ados 23 – Select 25 – Distinct 25 – Where 27 - And & Or 29 - Order By 31 - Insert 32 - Update 34 - Delete
SQL Avançado – Segue abaixo o conteúdo do livro completo • • • • • • • • • • • • • • • • • • • • • • • • • •
Top Like Wildcards In Between Alias Joins Inner Join Left Join Right Join Full Join Union Select Into Constraints Not Null Unique Primary Key Foreign Key Check Default Create Index Drop Alter Increment Views Dates GETDATE() DATAPART() o o
2
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
ÍNDICE
SQL Básico • • • •
• • • • • • • • • • • •
4 - O que é SQL? 4 - Introdução a linguagem SQL 5 - SQL Server 2008 express– Ferramentas para desenvolvimento de banco de dados 14 - Passos para efetuar conexão com Banco de dados e comandos SQL p or meio de programas com linguagem C# 19 - Método de aprendizagem rápida para linguagens de programação e SQL 20 - Sintaxe SQL 22 - Create DataBase – Criando um banco da dados 22 - Create Table – Criando uma tabela no banco de dados d ados 23 – Select 25 – Distinct 25 – Where 27 - And & Or 29 - Order By 31 - Insert 32 - Update 34 - Delete
SQL Avançado – Segue abaixo o conteúdo do livro completo • • • • • • • • • • • • • • • • • • • • • • • • • •
Top Like Wildcards In Between Alias Joins Inner Join Left Join Right Join Full Join Union Select Into Constraints Not Null Unique Primary Key Foreign Key Check Default Create Index Drop Alter Increment Views Dates GETDATE() DATAPART() o o
2
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
o o o
•
Nulls isnull() Data Types
•
Funções SQL
• •
• • • • • • • • • • • • • • • • • •
3
DATEADD() DATEDIFF() DATECONVERT()
avg() count() first() last() max() min() sum() Group By Having ucase() lcase() mid() len() round() now() format() Quick Ref Hosting
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
SQL BÁSICO O que é SQL? SQL é uma linguagem padrão para acessar base de dados de programas. Nosso guia de SQL lhe habilitará a usar o acesso ao banco de dados e manipular dados nos seguintes bancos de dados. • • • • • •
MySQL SQL Server Access, Oracle Sybase DB2 E outros sistemas de banco de dados.
Porém entraremos com mais ênfase e detalhes com o uso do SQL Server 2008 express, totalmente gratuito e muito eficiente para iniciantes. A codificação da linguagem SQL é praticamente igual para qualquer outro banco de dados, mas cada qual tem sua particularidade. Praticamente todo sistema da informação possui bancos de dados, por exemplo, um banco de dados de clientes de uma locadora de vídeo, possui armazenado cada cliente, seu nome, RG, CPF, endereço para cobrança. Isto são dados que estão em uma tabela do banco de dados. E temos outra tabela que diz respeito ao filme que nosso cliente está alugando, qual a data de entrega, qual o preço pago, se foi pago ou não. Esta outra tabela tem associação com a primeira. Como você já percebeu, não adianta ser especialista em uma linguagem de programação, mas é primordial você possuir habilidades avançadas em linguagem SQL por que banco de dados fazem parte constantemente de sistemas de alta qualidade seja em webpages ou sistemas do tipo desktop como o SAP por exemplo ou até mesmo aplicativos para home users.
Introdução a Linguagem SQL O que podemos então fazer com a linguagem SQL. • •
Permite-nos manipular banco de dados. O SQL é ANSI – American National Standards Institute – Ou seja, é uma linguagem padrão para todos os bancos de dados usados. Uma linguagem universal, então entendendo com este livro a linguagem SQL você estará apto a trabalhar com qualquer banco de dados.
O que é possível fazer com a linguagem SQL? 4
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
• • • • • • • • •
Podemos fazer buscas avançadas de vários tipos no banco de dados Podemos inserir dados dentro do banco de dados. Podemos atualizar dados dentro do banco de dados. Podemos deletar dados dentro do banco de dados. Podemos criar novas base de dados. Podemos criar novas tabelas dentro de uma ou mais base de dados. Podemos criar procedimentos padrões dentro da base de dados. Podemos criar estilos de visualizações padrão dentro da base de dados. Podemos determinar permissões nas tabelas, procedimentos e visualizações na base de dados.
O SQL é padrão, mas mesmo assim existem diferentes versões da linguagem SQL. Mas apesar deles serem um pouco diferente eles suportam a maioria dos comandos principais que são SELECT, UPDATE, DELETE, INSERT, WHERE numa forma similar.
Usando o SQL no seu WebSite Para construir seu website, algumas informações na base de dados, vão ser necessárias: Um programa para criação de banco de dados como SQL Server, MS Access, MySQL etc...) Um servidor para alojar os dados do banco de dados. A linguagem SQL aplicada a construição do banco de dados. A linguagem HTML / CSS aplicada ao desenvolvimento do WebSite.
SQL SERVER 2008 EXPRESS – FERRAMENTA GRATUITA DA MICROSOFT PARA CRIAÇÃO DE BANCO DE DADOS Vamos ensinar o passo a passo para a instalação do SQL Express + ferramentas. Se você desejar o mesmo, ao realizar o download escolha a opção Microsoft SQL Server 2008 Express with Tools
(executável: SQLEXPRWT_x86_ENU.exe); o tamanho do executável é de
aproximadamente
235
MB.
Acesse
o
link
abaixo
para
download:
http://www.microsoft.com/brasil/servidores/sql/editions/express.mspx . Antes de iniciar a instalação do SQL Server Express você deverá verificar: •
Se o seu framework é o 3.5 SP1 (ou superior), se não, baixe e atualize: http://go.microsoft.com/fwlink/?LinkId=120550
•
Se o Windows Installer é o 4.5 (ou superior), se não, baixe e atualize: http://go.microsoft.com/fwlink/?LinkId=123422
5
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
•
E se o Windows PowerShell é o 1.0, se não, faça o download e atualize: http://go.microsoft.com/fwlink/?LinkId=120552
INSTALAÇÃO DO SQL SERVER 2008 EXPRESS Observação: Existem diversas configurações para instalação do SQL Server, vou ensinar aqui uma maneira básica apenas para você fazer seu primeiro banco de dados. Lembrando que no Google digitando ‘Tutorial instalação Sql Server 2008’ você acha diversos tutoriais e fórum com todo o passo a passo. Clique em Nova instalação ou adicionar recursos de um instalação existente:
Aceite os termos de licença:
6
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
Na próxima tela selecione todas as opções de recursos:
Você pode nomear a instância ou usar a instância padrão, eu recomendo neste momento configurar como instância padrão e após clique em avançar: 7
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
Na configuração do servidor, nome da conta seleciona a opção com AUTORIDADE NT/SYSTEM
8
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
Na próxima tela, sobre configuração do mecanismo de banco de dados, escolha, mixed mode e coloque a senha: No caso eu coloquei 12345 apenas para efeito didático: Lembrando que neste caso, seu usuário é chamado sa e sua senha é 12345.
Nesta próxima tela você pode escolher se quer ou não enviar relatórios de erros, eu recomendo que sim: Clique em avançar para iniciar o processo completo de instalação do SQL Server:
9
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
INSTALAÇÃO DO SQL MANAGEMENT STUDIO O SQL MANAGEMENT STUDIO é uma plataforma gráfica para manipulação e gerenciamento do SQL Server. Para instala-lo, clique ou digite o link abaixo: http://www.microsoft.com/downloads/details.aspx?FamilyID=08e52ac2-1d62-45f6-9a4a4b76a8564a2b&DisplayLang=pt-br ou procure no site da Microsoft o SQL MANAGEMENT STUDIO http://www.microsoft.com/downloads . A instalação é muito simples, é só seguir o roteiro de instalação ensinada pelo próprio programa.
CRIANDO UM BANCO DE DADOS E UMA TABELA COM O SQL SERVER 2008 EXPRESS POR INTERFACE GRÁFICA USANDO O SQL MANAGEMENT STUDIO.
10
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
Inicie o SQL MANAGEMENT STUDIO e uma tela com sua senha e usuário préconfigurada irá aparecer. Digite os dados corretos para iniciar sua plataforma.
No caso, se você escolheu mixed mode. Sua senha é 12345, e usuário sa, lembrando que você precisa selecionar no tipo de autenticação o modo Sql Server Authentication:
Clique como botão direito do mouse em DataBase e new DataBase.
11
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
Em DataBase Name vamos neste exemplo chamar nossa base de dados de LIVRO_EXEMPLO. Clique em Ok para criar sua base de dados.
Depos de criada sua base de dados, clique com o botão esquerdo do mouse no sinal de + que há no nome de sua database e procure por Tables. Clique em tables com o botão direito e clique em create new table.
12
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
Aparecerá uma tela para adicionar as colunas com tipo de dado aceito para esta coluna. Neste exemplo para em Colunm Name, DataType e Allow Null vamos adicionar o seguinte: Colunm Name ID Autor
DataType int(10) varchar(50)
Allow Null yes yes
Colunm Name é o nome da coluna. DataType é o tipo de dado, no exemplo acima int (10) são para números inteiros com até 10 dígitos. varchar(10) são textos e números juntos que podem ser misturados nesta coluna com limite de 10 digitos. Allow Null: Se não habilitado, a coluna só aceita dados em suas linhas com conteúdo, se habilitado aceita linhas com dados e sem dados.
13
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
Clique em save e grave o nome da tabela como AUTORES. Agora vá em tables, clique com o botão direito em cima da tabela que acabou de criar e clique em Open Table. Abrirá sua tabela e você poderá adicionar os dados conforme figura abaixo, e depois salvar. Pronto, você já criou seu primeiro banco de dados simples.
Este banco de dados é simples, e foi feito para você se familiarizar com a criação de banco de dados por interface gráfica. Vamos aprender técnicas avançadas para desenvolvimento de bancos de dados, ao longo do livro. PASSOS PARA EFETUAR CONEXÃO COM BANCO DE DADOS E COMANDOS SQL COM USO DE LINGUAGEM DE PROGRAMAÇÃO Bom meus amigos, sabemos que ficar e se especializar em criar e treinar os comandos SQL por meio do SQL Server não é a melhor opção pois sabemos que os sistemas de informação e aplicativos fazem conexão com banco de dados por meio de comandos na 14
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
linguagem de programação do aplicativo ou sistema e executa os comandos SQL DO PROGRAMA, POR MEIO DO PROGRAMA, POR MEIO DO USUÁRIO QUE USA O PROGRAMA! Então vou ensinar o passo a passo para se conectar ao banco de dados em qualquer linguagem, mas aqui vou dar um exemplo com o C#, mas o conceito é o mesmo para qualquer linguagem o que muda são os códigos, mas seguem praticamente um mesmo padrão. Lembrando que para entender poderosamente esta parte, é preciso fazer um curso de lógica de programação e de programação de uma específica linguagem. Temos em nosso site o curso de C# avançado que possui todos estes recursos de aprendizagem em vídeo aula de alta qualidade: www.cybershield.com.br .
String de conexão com o bando de dados Usamos a string de conexão na linguagem C# da seguinte forma: string nome_da_string = @”Data Source = endereço do banco de dados; Initial Catalog = Nome_da_base de dados; User ID = Nome_do_usuário; pwd = senha_do_usuário”; Bom, isso é uma parte que muitos tem dificuldades, então vou dar tudo de mão beijada para vocês. Vamos encontrar o Data Source no SQL Server. Clique no nome do seu banco de dados com o botão direito e clique em properties:
15
Todos os direitos reserv ados a Leandro Gonçalves dos Santos – www.cybershiield.com.br
Temos o nome D-B G132F2JH\SQLEXPRESS, mas na string de co exão ficará Data Source = .\SQLEXPRESS; Initial Catalog é o n me de nossa base de dados que é LIVRO_EX EMPLO. Então na parte da string de conexão p ra Initial Catalog = LIVRO_EXEMPLO; Na parte de USER ID = sa; Se você escolheu na configuração o modo sa. Na parte de PWD é exemplo.
senha. pwd = 12345. (Coloque senhas melh res, isto é só um
Veja agora como fico nossa string de conexão com banco de dados u sando o C#. string
servidor = @"Data Source =.\SQLEXPRESS;Initial Catalog =
LIVRO_EXEMPLO; User Id =sa; pwd=12345";
COMO USAR A STRING DE CONEXÃO E EFETUAR COMANDOS SQL NO PROGRAMA 1 – Selecionar as bibliotecas o SQL no C# que são: using System.Data.SqlClient; using System.Data;
2 – Usar a função SqlConnec ion e chamar a string de conexão que é nomeado no exemplo de servidor. SqlConnection conexao = ne SqlConnection (servidor); SqlConnection = função para fazer conexão com bancos de dados SQL Conexão = nome dado a fun ão a ser usada 16
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
new SqlConnection =
Instanciamento da função, habilitando o uso dela com o nome
dado a função
(servidor) = string de conexão com banco de dados
3 – Usar a função SqlCommand para adicionar o comando Sql ao programa, indicar qual é a tabela ou tabelas do comando a ser usado, e chamar após o comando a conexão com o servidor. SqlCommand comando = new SqlCommand("select * from AUTORES", conexao); SqlCommand = Função para operar e executar comandos SQL Commando = Nome dada para a função SqlCommand new SqlCommand = instanciamento da função, habilitando o uso dela com o nome dado a função "select * from AUTORES" = Comando SQL para selecionar e mostrar conteúdo da tabela AUTORES conexao = string de conexão chamada pelo seu nome já instanciado que é conexão. 4 – Usar outros tipos de recursos do C# para possibilitar a transferência dos dados da tabela para serem mostrados no programa. No caso usaríamos o datagridview do C# para mostrar estes dados da tabela do banco de dados. Então o restante do código fica assim.
SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = comando; DataTable datatable = new DataTable(); adapter.Fill(datatable); Bom, antes de mais nada, vamos colocar isso dentro de uma classe, e criar um método dentro de uma classe, e depois chamar a classe, e associar o comando com o método desta forma a seguir: datagridview.DataSource = classe_usada.nome_do_método_usado; Em resumo ficaria assim: Na classe da string e comandos SQL temos o método: Nome da Classe é SQL Nome do método: public DataTable carregar() Código completo do método da classe SQL. public DataTable carregar() - “carregar = nome do método.” 17
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
{ SqlConnection conexao = new SqlConnection (servidor); SqlCommand comando = new SqlCommand("select * from AUTORES", conexao);
SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = comando; DataTable datatable = new DataTable(); adapter.Fill(datatable); return datatable } No programa em C# teríamos um botão para carregar o banco de dados então, dentro do botão vamos adicionar o seguinte código:
SQL sql = new SQL(); - chamando a classe SQL que criamos datagridview.DataSource = sql.carregar(); Associamos o método ao datagridview. No caso o datagridview tem um nome e o nome que demos a ele no programa em questão foi dgv, então o código fica assim: dgv.DataSource = sql.carregar();
Aqui temos o DataGridView que nomeamos como dgv
Bom, quando iniciamos o programa clicando no botão carregar, temos a seguinte visualização:
18
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
Clicando no botão carregar, temos o seguinte resultado:
Talvez, muitos que não entendem bem sobre lógica de programação ou possui nível intermediário de algorítimos e não conhece nenhuma linguagem de programação tenha ficado um pouco confuso. Mas não se preocupe, quando começar a entender ficará tudo claro e nítido e verá que é fácil programar para quem pratica e persiste. É recomendável antes de continuar, que você estude uma linguagem de programação e lógica de programação também. Eu recomendo o C# e inclusive temos um curso avançado de C# em vídeo aula disponível para download em WWW.CYBERSHIELD.COM.BR . Nos próximos capítulos você se habilitará passo a passo a como ser fluente no SQL e ter condições de programar sistemas avançados.
MÉTODO DE APRENDIZAGEM RÁPIDA PARA LINGUAGENS DE PROGRAMAÇÃO E SQL Antes de iniciar a sua jornada para aprender SQL, vou ensinar aqui como não perder seu tempo estudando, estudando da forma incorreta como acontece com a maioria dos programadores que iniciam, e se tornar péssimos programadores ou até mesmo desistem. Aprender a programar não é difícil, mas é uma questão de estratégia. Primeiro coisa que devemos fazer é, saber como memorizar os códigos e os algorítimos. Como fazer isso? Bom você pode fazer isso usando estratégias de repetição e realmente digitar o código. É impossível aprender a programar sem praticar. Apenas lendo ou assistindo aulas, não fará de você um programador. Se quer aprender a programar, vai ter que suar a camisa e digitar os códigos. E não pense que colar códigos vai lhe ajudar. Isso só piora as coisas. Bom, você já sabe que precisa praticar, digitar os códigos. Então, qual é o método de aprendizagem para ser fluente em uma linguagem de programação. Simples! 1 – Para cada comando de SQL ou para cada Algorítimo de uma linguagem de programação, vamos ler, entender, interpretar, fechar o livro, e ESCREVER O CÓDIGO, SEM CONSULTAR O LIVRO no programa ou até mesmo em um notepad a parte. E depois que concluirmos vamos checar no livro se está correto e ainda, testar o código no programa para ver se ele funciona. 19
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
Se errou o código, reiniciar o processo de novo, até você acertar o código. Lembrando que isso é para memorizar o código. 2 – Depois de ter conseguido acertar o código, vamos repetir 3 vezes a digitação do código. Por que fazer isso. Bom isso é uma questão de memorização, mas estudos dizem que precisamos repetir a aprendizagem por meio de revisões, caso contrário a mente esquece. Então repita a digitação do código 3 vezes, mas preferencialmente 7 vezes. Eu acho suficiente 3 vezes apenas. 3 – Vamos agora passar para o próximo código ou algorítimo do livro e repetir o processo. 4 – Repetir a revisão dos códigos todos os dias do início ao fim e nunca parar. Por que nunca parar? Bom para você ter uma idéia, para a linguagem C# do qual sou programador, eu reviso todos os dias 1 algorítimo ou lição de C# referente ao conteúdo do C# que preciso saber de memória e prontidão para ser fluente na linguagem. São mais de 100 lições que reviso e reprogramo os códigos e testo, mas é assim que tem que ser. E faço o mesmo para o SQL, todo dia eu reviso 5 códigos SQL e demoro cerca de 1 mês para finalizar todas as lições revisadas para SQL e C#. Por isso que eu já sei tudo de memória. E programadores profissionais precisam disso. Por tanto, revise sua linguagem sempre, pois se parar, sua mente automaticamente poderá jogar o conhecimento fora, e você perdeu seu tempo estudando. 5 – Selecionar e descobrir o essencial da linguagem de programação e desenvolver ou selecionar em livro uma maratona de exercícios para fazer suas revisões eternas. Como é isso? Bom, analise em livros e cursos o conteúdo essencial que o fará fluente em uma linguagem. Não pense que você pode memorizar todos os códigos de uma linguagem ou todos os tipos de algorítimos. Você só poderá fazer isso, se trabalhar com a linguagem e só depois de 5 a 10 anos e mesmo assim talvez não consiga... Quem fala inglês fluente, sabe todas as palavras do dicionário inglês ou todos os termos técnicos de várias áreas em inglês? Claro que não. Mas ele tem a capacidade com o conteúdo que ele aprendeu de inglês para dominar e aprender novas expressões e estruturas em inglês facilmente. Isso é fluência! Na programação, o que você precisa é saber entender os algorítimos que encontrar nas suas pesquisas e livros avançados de programação sobre novos recursos avançados e aprender isso. Existem diversos recursos e algorítimos usamos para programação de jogos que não tenho a mínima idéia de como fazer. Mas por entender o essencial do C#, eu posso aprender e entender tudo e aprender estes novos recursos e métodos. Por isso você precisa saber o essencial. Nosso curso de C# Possui o essencial para você dominar o essencial da linguagem C# e depois que ter memorizado e entendido todos os algorítimos dele, você já é fluente e avançado no C#, basta se aperfeiçoar. Veja e faça o download em WWW.CYBERSHIELD.COM.BR . Este manual de SQL possui o essencial para se tornar fluente e avançado na linguagem SQL. Depois de praticar as revisões e memoriar todos os comandos, criar programas será mamão com açúcar.
SQL Syntax Uma base de dados geralmente contém uma ou mais tabelas. Cada tabela é identificada por um nome. Abaixo temos uma tabela que é chamada de Pessoal. Precisamos antes de tudo criar uma base de dados e dar um nome a mesma, e depois criar tabela ou tabelas para esta base de dados. P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua João - 45
São Paulo
20
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
3
Ferreira
Lilian
Rua Stormer - 20
Rio de Janeiro
Nesta Tabela possuímos 5 colunas e 3 linhas. Declarações em SQL A maioria dos comandos SQL para manipular banco de dados é feito através de declarações em SQL. E podemos fazer isso com o seguinte exemplo a seguir. SELECT * FROM PESSOAL Neste caso, temos a tabela pessoal acima, com o comando select pedimos para o banco de dados exibir a tabela completa chamada PESSOAL. GRAVE ISSO URGENTE O SQL não é case sensitive, ou seja, você pode escrever as declarações de comandos SQL tanto em minúsculo como em maiúsculo que o comando funcioná perfeitamente. SQL DML e DDL O SQL é dividido em duas partes: DML – Data Manipulation Language e DDL Data Definition Language. Para buscar ou atualizar comandos da parte DML do SQL: SELECT – Extrai dados da base de dados. UPDATE – atualiza dados na base de dados DELETE – apaga dados da base de dados INSERT INTO – insere ou grava dados na base dados. A parte DDL do SQL que tabelas na base de dados sejam deletadas ou criadas. A mais importante declaração DDL é CREATE DATABASE – isso cria uma base de dados ALTER DATABASE – modifica uma base de dados CREATE TABLE – cria uma tabela dentro de uma base de dados ALTER TABLE – modifica uma tabela de uma base de dados DROP TABLE – apaga uma tabela de uma base de dados CREATE A INDEX – cria um índice (uma chave de busca chamada de search key) 21
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
SQL CREATE A DATABASE Você aprendeu como criar uma base de dados e uma tabela dentro de uma base de dados por meio de interface gráfica no SQL Server, vamos agora aprender como criar tabelas por meio de códigos, por que muitos programas ou sistemas precisam criar base de dados e novas tabelas para guardar dados, a partir da plataforma de software por meio do próprio usuário da plataforma. Para criar uma base de dados, usamos a seguinte sintaxe: SINTÁXE SQL CREATE DATABASE CREATE DATABSE nome_da_base_de_dados
EXEMPLO Agora vamos criar uma base de dados chamada LIVRO_EXEMPLOS como foi criada por meio da interface gráfica anteriormente. Mas agora será na base do comando SQL CREATE DATABASE. Vamos usar a seguinte declaração: CREATE DATABASE LIVRO_EXEMPLOS
Sua base de dados já foi criada.
SQL CREATE TABLE O SQL CREATE TABLE é usado para criar tabelas dentro de um base de dados. SINTÁXE DO SQL CREATE TABLE CREATE TABLE nome_da_tabela ( Nome_da_coluna1 data_type, Nome_da_coluna2 data_type, Nome_da_coluna3 data_type, ... )
22
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
O data type especifica o tipo de dado que no caso pode ser, texto, inteiros etc... você conhecerá ao longo do curso uma tabela guia para todos os data types. EXEMPLO Vamos agora criar um tabela chamada Pessoal que tem 5 colunas. P_Id, Sobrenome, Nome, Endereço e cidade. CREATE TABLE Pessoal ( P_Id int, Sobrenome varchar(50), Nome varchar(50), Endereço varchar(50), Cidade varchar(50) )
A coluna P_Id só terá um número e só poderá ser inteiro, o data type para inteiros é int. As outras colunas são textos que podem ter números mesclados, então usamos o varchar que é um data type para estas características. Os números entre () são a quantidade de caracteres que cada campo da coluna aceita no máximo. Veja a abaixo nossa tabela Pessoal criada: P_Id
Sobrenome
Nome
Endereço
Cidade
A tabela está vazia pois não foi atribuído nenhum valor para os campos das colunas.
SQL SELECT Vamos agora aprender sobre o comando SELECT do SQL, um dos mais importantes comandos para visualizarmos tabelas em diversas formas de seleção. SÍNTAXE DO SQL SELECT SELECT nome_da_coluna(s) FROM nome_da_tabela Ou SELECT * FROM nome_da_tabela
23
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
EXEMPLO DE SQL SELECT A tabela Pessoal que vimos anteriormente: P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua João - 45
São Paulo
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
3
Ferreira
Lilian
Rua Stormer - 20
Rio de Janeiro
Agora vamos usar o comando SELECT para selecionar o conteúdo das colunas Sobrenome e Nome apenas e nossa pesquisa com SELECT. SELECT Sobrenome, Nome FROM Pessoal
Veja o resultado a seguir: Sobrenome
Nome
Santos
Leandro
Figueiredo
Luciano
Ferreira
Lilian
Outro exemplo é usarmos o comando select para exibir uma das tabelas da base de dados com todo o seu conteúdo: SELECT * FROM Pessoal
O asterístico é uma parte do comando que significa selecionar toda a tabela. O resultado simplesmente é a exibição da tabela completa com todos os dados. P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua João - 45
São Paulo
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
24
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
3
Ferreira
Lilian
Rua Stormer - 20
Rio de Janeiro
SQL SELECT DISTINCT Vamos aprender agora sobre como usar o SQL SELECT DISTINCT. Em uma tabela, temos valores duplicados, isso não é um problema caso deseja mostrar valores diferentes na tabela, esta duplicidade com certeza não causará para você impossibilidades de seleção distintas. A declaração SQL DISTINCT permite retornar dados diferentes no processo de pesquisa e visualização do banco de dado. SINTAXE DO SQL SELECT DISTING SELECT DISTINCT nome_da_coluna(s) FROM nome_da_tabela
EXEMPLO A Tabela Pessoal abaixo com os seguintes dados: P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua João - 45
São Paulo
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
3
Ferreira
Lilian
Rua Stormer - 20
Rio de Janeiro
Agora podemos selecionar apenas os valores distintos da coluna chamada cidade da tabela acima. Vamos usar a declaração SELECT: SELECT DISTINCT cidade FROM Pessoal
O resultado é o seguinte: Cidade São Paulo Rio de Janeiro
SQL WHERE 25
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
O comando WHERE é para selecionar ou efetuar outro comando de acordo com específicos critérios estabelecidos com o comando WHERE. É como uma estrutura de seleção que efetua um comando específico SE a condição escolhida for atendida. SINTAXE DO COMANDO WHERE SELECT nome_da_coluna(s) FROM nome_da_tabela WHERE nome_da_tabela = valor X
Veja a tabela de nome Pessoal abaixo: P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua João - 45
São Paulo
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
3
Ferreira
Lilian
Rua Stormer - 20
Rio de Janeiro
Vamos solicitar ao banco de dados para exibir apenas os nomes de pessoas que moram só em São Paulo. O resto não aparece na consulta. SELECT * FROM Pessoal WHERE Cidade = ‘São Paulo’
Veja o resultado do comando: P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua João - 45
São Paulo
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
IMPORTANTE: Quando for usar os comandos SQL para nomes usaremos entre estes nomes ‘’ e para números não usaremos nada. Veja um exemplo explicativo abaixo: Para valores em Texto: Isto é o certo SELECT * FROM Pessoal WHERE Nome =’Leandro’ Isto abaixo já está errado SELECT * FROM Pessoal WHERE Nome =Leandro
26
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
OPERADORES PERMITIDOS COM O COMANDO WHERE Segue a abaixo a lista de operadores relacionais usados com o comando WHERE Operador
Descrição
=
Igual
<>
Não é igual
>
Maior do que
<
Menor do que
>=
Maior do que ou igual
<=
Menor do que e igual
BETWEEN
Dentro de um range de valor específico
LIKE
Procura como padrão ou por comparação
IN
Se souber o exato valor que deseja retornará pelo menos uma das colunas
Em algumas outras versões do SQL o operador <> pode ser escrito como !=
SQL AND & OR OPERADORES Os operadores AND e OR são usados para filtrar dados baseados em mais de uma condição, o WHERE vimos que é uma condição usando operadores relacionais, mas o AND e OR trata de mais de uma condição. O comando and vai mostrar uma específica requisição feita por comando SQL quando uma condição declarada e mais outra condição declarada são verdadeiras. O comando OR vai mostrar uma específica requisição feita por comando SQL quando uma ou outra condição declarada for verdadeira. EXEMPLO – OPERADOR AND Na tabela Pessoal P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua João - 45
São Paulo
27
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
3
Ferreira
Lilian
Rua Stormer - 20
Rio de Janeiro
Agora vamos pedir para ser exibido apenas as linhas da tabela cujo Nome é igual a Leandro E (AND) Sobrenome igual a Santos. SELECT * FROM Pessoal WHERE Nome = ‘Leandro’ AND Sobrenome = ‘Santos’
Veja o resultado do comando abaixo: P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua João - 45
São Paulo
EXEMPLO OPERADOR OR Agora vamos fazer a exibição das linhas da tabela cujo Nome = Leandro ou Nome = Luciano. Veja o comando abaixo a ser usado para este fim: SELECT * FROM Pessoal WHERE Nome = ‘Leandro’ OR Nome = ‘Luciano’
O resultado comando será: P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua João - 45
São Paulo
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
Podemos ainda combinar o uso do comando OR e AND dentro de uma declaração SQL Veja a declaração com os comando a seguir e vamos ver o resulado da consulta: SELECT * FROM Pessoal WHERE Sobrenome = ‘Figueiredo’ AND (Nome = ‘Leandro’ OR Nome = ‘Luciano’
28
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
P_Id
Sobrenome
Nome
Endereço
Cidade
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
SQL ORDER BY O comando SQL ORDER BY é um comando para classificar automaticamente uma certa coluna selecionada em ordem alfabética ou em ordem numérica. Ele pode ser usado para classificar normalmente ou seja, em ordem ascendente, no caso de número, 0,1,2,3,4... ou em caso de letras ou textos, A,B,C,D... ou pode ser feito de trás para frente, ou seja em ordem descendente, que no caso de números, 10,9,8,7,6... e no caso de letras D,C,B,A... Para classificar em ordem descendente você deverá usar o comando DESC. SÍNTAXE DO SQL ORDER BY SELECT nome_da_coluna FROM nome_da_tabela ORDER BY nome_da_coluna(s) ASC|DESC
EXEMPLO Vamos analizar a tabela Pessoal P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua João - 45
São Paulo
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
3
Ferreira
Lilian
Rua Stormer - 20
Rio de Janeiro
4
Nilton
Tomás
Rua Julião - 25
Rio de Janeiro
Nós desejamos agora selecionar a tabela inteira, no entanto, desejamos classificar o sobrenome das pessoas por ordem alfabética e de forma ascendente. Vamos usar então este comando SQL. SELECT * FROM Pessoal ORDER BY Sobrenome
] Abaixo temos o resultado da exibição: 29
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
P_Id
Sobrenome
Nome
Endereço
Cidade
3
Ferreira
Lilian
Rua Stormer - 20
Rio de Janeiro
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
4
Nilton
Tomás
Rua Julião - 25
Rio de Janeiro
1
Santos
Leandro
Rua João - 45
São Paulo
ORDER BY DESC EXEMPLO Agora vamos fazer o mesmo processo de classificação no entanto, vamos fazer uma classificação decrescente: O comando a ser usado é: SELECT * FROM Pessoal ORDER BY Sobrenome DESC
O resultado aparece na ordem contrária: Veja abaixo: P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua João - 45
São Paulo
4
Nilton
Tomás
Rua Julião - 25
Rio de Janeiro
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
3
Ferreira
Lilian
Rua Stormer - 20
Rio de Janeiro
SQL INSERT INTO O INSERT INTO é usado para inserir novos dados no banco de dados SÍNTAXE DO COMANDO SQL INSERT INTO Temos duas maneiras de declarar o comando INSERT INTO: 1 – A primeira o comando insert into é usado sem especificar o nome das colunas, mas simplesmente devemos adicionar os valores na mesma ordem das colunas. 30
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
INSERT INTO Pessoal values (valor1, valor2, valor3, valor4)
2 – Na segunda forma especificamos as colunas que desejamos fazer a inser ção de dados e depois especificamos os valores a serem adicionados em cada coluna mencionada no comando. INSERT INTO Pessoal (coluna1, coluna2, coluna3, coluna4) values (valor1, valor2, valor3, valor4)
EXEMPLO Na tabela Pessoal: P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua João - 45
São Paulo
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
3
Ferreira
Lilian
Rua Stormer - 20
Rio de Janeiro
INSERT INTO Pessoal VALUES (4,’Romero’, ‘Paulo’, ‘Rua Maria -15’, ‘Belo Horizonte’)
Segue o resultado abaixo: P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua João - 45
São Paulo
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
3
Ferreira
Lilian
Rua Stormer - 20
Rio de Janeiro
4
Romero
Paulo
Rua Maria -15
Belo Horizonte
INSERINDO DADOS EM UMA ESPECÍFICA COLUNA Neste comando exemplar, vamos adicionar uma nova linha a tabela, mas vamos adicionar valores para as colunas P_Id, Sobrenome e Nome: INSERT INTO Pessoal (P_Id, Sobrenome, Nome) VALUES (5, ‘Lorenzo’, Lidiane’)
31
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
Resultado segue abaixo: P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua João - 45
São Paulo
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
3
Ferreira
Lilian
Rua Stormer - 20
Rio de Janeiro
4
Romero
Paulo
Rua Maria -15
Belo Horizonte
5
Lorenzo
Lidiane
SQL UPDATE O comando update no SQL é usado para atualizar dados dentro de uma tabela de um banco de dados. SÍNTAXE DO SQL UPDATE UPDATE nome_da_tabela SET coluna1 = valor1, coluna2 = valor2, ... WHERE determinada_coluna = determinado_valor
Observe que devemos usar o comando where para modificar os dados de uma determinada linha, se no caso omitíssimos o comando where na declaração acima, modificaríamos a tabela inteira se tratando da coluna 1 e coluna 2 do exemplo acima. EXEMPLO Tabela Pessoal: P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua João - 45
São Paulo
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
3
Ferreira
Lilian
Rua Stormer - 20
Rio de Janeiro
4
Romero
Paulo
Rua Maria -15
Belo Horizonte
32
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
5
Lorenzo
Lidiane
Agora vamos atualizar na tabela a linha com os dados Lorenzo e Lidiane das colunas Sobrenome e Nome. UPDATE Pessoal SET Endereço = ‘ Rua Álvaro – 32’, Cidade = ‘São Paulo’ WHERE Sobrenome = ‘Lorenzo’ AND ‘Nome = ‘Lidiane’
A tabela Pessoal resultará na seguinte exibição abaixo: P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua João - 45
São Paulo
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
3
Ferreira
Lilian
Rua Stormer - 20
Rio de Janeiro
4
Romero
Paulo
Rua Maria -15
Belo Horizonte
5
Lorenzo
Lidiane
Rua Álvaro - 32
São Paulo
AVISO URGENTE SOBRE O SQL UPDATE SE VOCÊ USASSE O UPDATE E ESQUECE A CLÁUSULA WHERE O RESULTADO SERIA O SEGUINTE: DECLARAÇÃO USADA SEM USAR A CLÁUSULA WHERE UPDATE Pessoal SET Endereço = ‘ Rua Álvaro – 32’, Cidade = ‘São Paulo’
P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua Álvaro
São Paulo
2
Figueiredo
Luciano
Rua Álvaro
São Paulo
3
Ferreira
Lilian
Rua Álvaro
São Paulo
4
Romero
Paulo
Rua Álvaro
São Paulo
5
Lorenzo
Lidiane
Rua Álvaro
São Paulo
33
Todos os direitos reservados a Leandro Gonçalves dos Santos – www.cybershield.com.br
Isto é muito perigoso, pois se você cometer este erro, poderá comprometer todo o banco de dados. Por isso em caso de cometer erros assim, é sempre importante manter back ups, de seus bancos de dados. Todos os dias faça o back do banco de dados manualmente ou implemente um método automático para sua aplicação fazer o back up.
SQL DELETE O comando DELETE é usado para apagar linhas no banco de dados. SINTÁXE SQL DELETE DELETE FROM nome_da_tabela WHERE alguma_coluna = algum valor
Observação: se você omitir a cláusula WHERE você apagará a tabela inteira, por isso é importante quando desejar apagar uma linha, sempre se lembrar de usar o WHERE ou apagará sua tabela inteira. EXEMPLO Veja abaixo a tabela Pessoal que vamos usar para apagar uma das linhas com o comando DELETE: P_Id
Sobrenome
Nome
Endereço
Cidade
1
Santos
Leandro
Rua João - 45
São Paulo
2
Figueiredo
Luciano
Rua Luan - 23
São Paulo
3
Ferreira
Lilian
Rua Stormer - 20
Rio de Janeiro
4
Romero
Paulo
Rua Maria -15
Belo Horizonte
5
Lorenzo
Lidiane
Rua Álvaro - 32
São Paulo
Vamos deletar agora a linha que consta o Nome Lidiane. O comando para apagar esta linha segue abaixo: DELETE FROM Pessoal WHERE Sobrenome = ‘Lorenzo’ AND Nome = ‘Lidiane’
Vejamos abaixo o resultado do commando. Perceba que apagamos a linha 5 com o nome Lidiane: P_Id
34
Sobrenome
Nome
Endereço
Cidade