Академический Документы
Профессиональный Документы
Культура Документы
Ol pessoal, comeo mais uma srie de artigos em meu blog. Desta vez, o assunto SQL
Server Bsico.
Pretendo, aps terminar esta srie de artigos, fazer outra falando sobre SQL Server
Avanado. Aproveitem e postem sugestes ou pedidos de artigos!
Irei falar desde a histria do SQL Server, a origem, as verses lanadas, mostrar
umtutorial para baixar e instalar o SQL Server 2005, mostrar os objetos do SQL
Server, osdatabases previamente instalados, os comandos mais usados
como Select, Insert, Update eDelete, os tipos de Constraints, as Regras de
Relacionamento, MER, DER, falarei tambm das clusulas Where, Order By, Inner
Join, Group By e muito mais!
Vocs podem me perguntar: porqu falar da verso 2005 e no da verso 2008, j que
mais nova? E eu lhes respondo: estou usando como base de meus artigos minha apostila
daImpacta, onde fiz cursos de SQL Server 2005. Sem contar tambm que no h uma
grande diferena entre as verses 2005 e 2008. De qualquer forma irei postar algumas coisas
sobre SQL Server 2008.
Comeando a partir do prximo artigo a falar sobre a introduo e origem do SQL, diferenas
entre verses, tutorial para baixar e instalar o SQL Server 2005 Express Edition e comandos
bsicos.
Aguardem, at o final da semana surgir um novo artigo!
Abraos.
Ol pessoal, comeamos definitivamente nossa srie de artigos sobre SQL Server 2005. Nesta
parte iremos falar contar a histria do SQL, sua origem, falarmos das diferenas entre as
verses 2000, 2005 e 2008 (e suas respectivas edies), mostrar um tutorial passo a passo
de instalao da verso 2005, um link de um tutorial para instalao da verso 2008 e
descrever os comandos bsicos. Ento, vamos l!
Introduo e origem do SQL Server O SQL Server um SGBD Sistema Gerenciador
de Banco de Dados criado pela Microsoft. Um banco muito robusto usado por sistemas
corporativos de diversos segmentos. A sigla SQL significa Structured Query
Language(Linguagem Estruturada de Consulta) e um padro ANSI desde 1986
e ISO desde 1987. Usada principalmente para alterar, consultar, incluir e excluir registros,
com um leque muito variado de opes para manipular dados.
Hoje em dia conta com trs verses: o T-SQL (Transacted Structured Query Language
padro Microsoft), PL/SQL (Procedural Language/Structured Query Language padro
Oracle) e SQL PL (SQL Procedural Language padro IBM).
A linguagem foi desenvolvida em meados da dcada de 70, com base nos trabalhos sobre
bancos de dados relacionais de Edgar Francis Codd. Apesar de que, em 1969, uma verso
beta j circulava nos corredores da IBM. Na dcada de 70, um grupo de IBM desenvolveu o
sistema de banco de dados System R, tendo como base os trabalhos de Edgar F. Codd, como
dito acima. A linguagem desenvolvida para manipular os dados deste modelo se
chamouSEQUEL (Structured English Query Language), mais algum tempo depois mudou
para SQL, pois uma marca da Inglaterra j usava o nome SEQUEL.
No fim da dcada de 70, IBM e Oracle (na poca com o nome de Relational Software Inc.)
desenvolveram sistemas baseados nos conceitos do SQL.
Em 1979, trs empresas se juntaram (Sybase, Microsoft e Ashton-Tate) com o intuito de
desenvolver um produto para concorrer com os bancos de dados da IBM e Oracle. Assim
nasce o SQL Server 1.0 para OS/2.
Somente em 1992, a Microsoft lana seu prprio banco de dados, chamado de Microsoft
SQL Server 4.2. Aps isso foram lanadas diversas verses: 4.21 para Windows NT, 6.0, 7.0
(com interface grfica) e 2000 (o primeiro que teve uma verso para a plataforma de 64 bits
da Intel.
As verses mais recentes tiveram diversas alteraes. Em Novembro de 2005 lanado
o SQL Server 2005 com aumento de performance e alteraes na IDE, nos comandos,
integrao com a CLR, entre outras. A ltima verso teve mais alteraes como novos tipos
de dados, segurana e performance melhorados, etc.
Fontes de pesquisa:
Wikipedia http://pt.wikipedia.org/wiki/Sql-server
Blog 50 Minutos http://www.50minutos.com.br/blog/post/Algo-sobre-o-SQL-Server.aspx
Diferenas entre verses
- No SQL Server 2000, temos 6 tipos de verses que podem ser instaladas, vejam a
seguir um breve descritivo de todas elas:
1 Enterprise Edition Esta verso suporta todas as funcionalidades do SQL Server 2000
e pode ser utilizada tanto em um ambiente OLTP como em OLAP.
IMasters
http://imasters.uol.com.br/artigo/263/sql_server/as_diferentes_versoes_do_sql_server/
DevBr.Net http://devbr.net/blog/?p=6
Tutorial de instalao
SQL Server 2005
Acesse este link: http://www.microsoft.com/downloads/details.aspx?familyid=220549b50b07-4448-8848-dcc397514b41&displaylang=en. Role a tela para baixo e escolha a opo
de53.5mb clicando em Download, como mostra a imagem abaixo:
Aps ter feito o download, execute o arquivo para que a instalao se inicie. Neste caso j
tenho uma instncia do SQL Server instalada em meu pc, mais no tem problema, pois a
verso Express do SQL 2005 nos permite instalar at 50 instncias em um mesmo
computador, desde que cada uma tenha uma identificao diferente. Como j tenho instalado
uma instncia em meu pc, iremos instalar mais uma, o que seria praticamente a mesma coisa
se eu estivesse instalando da 1 vez. Ok, aps dar dois cliques no SQLEXPR.exe, ir
aparecer um aviso do Windows perguntando se deseja executar, clique em Executar e
aguarde at que aparea uma tela como a da imagem abaixo:
Clique na opo para aceitar os termos de licena e clique em Next. Aguarde alguns
segundos. Na prxima tela, clique em Next
Ir ser rodado um utilitrio chamado System Configuration Check, que checa se o seu
hardware e software so compatveis com a instalao. Na imagem abaixo mostra um aviso
que, como j tenho uma instncia do SQL Server instalada, para alternar entre as instncias
devo rodar o instalador do prompt de comando e incluir o parmetro SKUUPGRADE = 1.
Clique em Next e aguarde. Na prxima tela, digite seu nome e clique em Next
Na tela abaixo, perguntado quais componentes voc deseja instalar e aonde. Deixe como
est e clique em Next.
A prxima tela ir aparecer apenas para quem j tem uma instncia do SQL Server instalada
no pc, como o meu caso. Se voc estiver nesse caso, d um nome diferente do nome da
instncia que voc j tem instalada e clique em Next.
Na tela abaixo, perguntado qual ser o modo de autenticao no SQL, deixe como Windows
Authentication Mode e clique em Next.
Na prxima tela ir aparecer um resumo do que ser instalado em seu computador, apenas
clique em Install e aguarde a instalao ser concluda.
Aps instalado com sucesso, o SQL Server poder ser acessado atravs do menu Iniciar >
Todos os programas > Microsoft SQL Server 2005 > SQL Server Management Studio
Express
Caso voc tenha mais instncias instaladas em seu pc, para alternar simples: quando o SQL
Server se abrir, clique no menu Server Name e clique na opo Browse for more Agora
expanda a aba Database Engine e escolha sua instncia, como mostra a imagem abaixo:
Fazendo isso, seu SQL Server 2005 estar instalado e pronto para ser utilizado corretamente.
SQL Server 2008
Diferente da verso 2005, o SQL 2008 um pouco mais complexo para ser instalado. Aps
baixado, deve ser seguida uma srie de instrues para que a instalao seja efetuada com
sucesso. Como o foco aqui no SQL 2005, abaixo demonstro os passos para baixar e
escolher a verso que melhor se encaixa ao que voc quer. Logo aps tem um link para um
tutorial detalhado:
1 Acesse o SQL 2008 em http://www.microsoft.com/sqlserver e clique na opo SQL Server
2008 Express (free), como mostra a imagem abaixo:
Na pgina que se abre, clique na aba Installation Options, para escolher que tipo de
instalao voc deseja baixar. A imagem abaixo lista todas as opes de instalao:
Database with Management Tools essa opo vir com o Database Engine e mais
oManagement Studio. A mais indicada para usurios iniciantes e estudantes. Tamanho =
224mb.
Database with Advanced Services essa opo a mais completa, pois alm de ter
oDatabase Engine e o Management Studio, contm tambm o Full Text-Search, que
uma espcie de servio de pesquisa do SQL Server e o Reporting Services, que nos permite
exibir relatrios por meio de algumas ferramentas como o Gerenciador de
Relatrios. Tamanho = 515mb.
Link do tutorial de instalao passo a passo:
http://www.marcosdellantonio.net/2009/06/08/instalando-o-sql-server-management-studio2008-express/
Comandos Bsicos Aps ter aberto o SQL, clique em New Query abaixo do menu
superior ou aperte CTRL+N para criar uma nova consulta. Abaixo desse boto New Query
existe a barra de ferramentas SQL Editor, que possui uma dropdownlist chamada Avaliable
Databases, por meio da qual podemos escolher o banco de dados que queremos acessar,
como mostra a imagem:
Para executar qualquer comando no SQL Server, escreva o determinado comando na tela de
consultas do centro da tela e logo acima, na barra de ferramentas, clique no
boto Execute ou simplesmente aperte F5. J, se voc tiver mais do que um comando, como
por exemplo a imagem abaixo nos mostra uma instruo SELECT e abaixo dela
uma DELETE, necessrio que selecionemos qual instruo queremos executar para a sim
podermos clicar no respectivo boto ou apertar F5 como desejado:
Ol pessoal, voltamos com nosso curso bsico de SQL Server. Nesta parte, iremos descrever
os Objetos do SQL Server, mostrar a definio e criao de um Database, mostrarmos os
tipos de dados, as tabelas do sistema e comear a criao das tabelas. Acompanhem:
Objetos do SQL Server A verso 2005 do SQL Server nos oferece diferentes tipos de
objetos, como descrevemos abaixo:
- Database Os objetos do sistema so criados dentro de uma estrutura lgica que
corresponde ao objeto Database, iremos falar dele mais adiante.
- Table Os dados do sistema so inclusos neste objeto de duas dimenses, que formado
por linhas e colunas.
- Constraint, Default e Rule Consistem em regras usadas para implementar a
consistncia e a integridade dos dados. Mais sobre elas em artigos futuros.
- Data Type e User Defined Data Type Os dados so armazenados no disco sob um
formato representado pelo datatype. Um datatype dever ser atribudo a cada coluna de
uma tabela.
- View Este objeto nos oferece uma visualizao lgica dos dados de uma tabela, de modo
que diversas aplicaes possam compartilh-la.
- Index So objetos responsveis pela otimizao de acesso aos dados de uma tabela, com
o objetivo de agilizar determinadas pesquisas de dados.
- Procedure Neste objeto, encontramos um bloco de comandos Transact-SQL,
responsvel por uma determinada tarefa. Sua lgica pode ser compartilhada por vrias
aplicaes. Muito utilizado atualmente em praticamente todo tipo de empresa.
- Trigger Como a Procedure, este objeto tambm possui um bloco de comandos TransactSQL. criado sobre uma tabela e ativado no momento da execuo dos
comandos UPDATE,INSERT e/ou DELETE.
- Function Neste objeto, temos um bloco de comandos Transact-SQL responsvel por uma
determinada tarefa. Como a Procedure, sua lgica pode ser compartilhada por N aplicaes.
Importante dizer que uma funo SEMPRE retornar um valor.
Obs: Os objetos Procedure, Trigger e Function so processados rapidamente, pois seu
cdigo tende a ficar compilado na memria. Isso acontece porque estes objetos so
executados no servidor de dados.
Databases Como dito anteriormente, dentro do objeto Database so criados os objetos
que fazem parte do sistema, ou seja, uma estrutura lgica formada por dois tipos de arquivo,
um responsvel pelo armazenamento dos dados e outro que armazena as transaes feitas.
Ok, mais como eu crio um Database? Simples! Por meio da instruo CREATE DATABASE.
Por exemplo, vamos dizer que quero criar um database chamado Clientes. Para isso, abro o
SQL Server, crio uma nova query, digito a instruo CREATE DATABASE Clientes e
aperto F5ou clico em Execute. Veja abaixo:
Logo abaixo da minha instruo usei a palavra GO, que nada mais que uma simples
maneira de dizer ao SQL para seguir na respectiva instruo. Esse comando no
obrigatrio.
Da mesma forma, se desejarmos excluir o database recm criado, devemos usar a
instruoDROP DATABASE. Apenas ressaltando que, se estivermos dentro do database que
iremos excluir, o SQL nos impede de fazermos isso. Para resolver isso, simplesmente saia do
database e v para o master por exemplo, como mostra a imagem a seguir:
Podemos notar que o database foi mesmo excludo, pois vemos acima no
DropDownListAvaliable Databases.
Tipos de Dados Os tipos de dados so classificados em diferentes categorias e permitem
N formatos. Abaixo uma descrio de cada categoria e de cada tipo de dado do SQL Server
2005:
- Baseados em Caracteres:
- Char(n) Trata-se de um datatype que aceita como valor qualquer dgito, sendo que o
espao ocupado no disco de um dgito por caractere. possvel utilizar at 8 mil dgitos.
- Varchar(n) Tambm aceita como valor qualquer dgito e o espao ocupado em disco
de um dgito por caractere. Permite usar tambm no mximo 8 mil dgitos. A diferena pro
Char, que o Varchar geralmente usado quando no sei o tamanho fixo de um campo.
- Text Qualquer dgito pode ser usado neste datatype, sendo ocupado 1 byte por caractere,
o equivalente a 2.147.483.647 bytes.
- Baseados em Caracteres Unicode:
- Nchar(n) Neste datatype, pode usar qualquer dgito, sendo ocupados 2 bytes a cada
caractere. possvel usar at 8 mil bytes.
- Nvarchar(n) Igual ao tipo anterior, com a nica diferena que uso esse tipo quando no
sei o tamanho fixo de um campo. 2 bytes so ocupados a cada caractere. possvel usar
at8 mil bytes.
- Ntext Tambm aceita qualquer digito, 2 bytes so ocupados a cada caractere. Podem ser
usados at 1.073.741.823 bytes.
- Baseados em Numricos Inteiros:
- Bigint Aceita valores entre -2^63 e 2^63-1, sendo que esse datatype ocupa 8 bytes.
- Int Os valores aceitos aqui variam entre -2^31 a 2^31-1. Ocupa 4 bytes.
- Smallint Aceita valores entre -32768 at 32767 e ocupa 2 bytes.
- Tinyint Os valores aceitos aqui variam entre 0 e 255, ocupa apenas 1 byte.
- Bit um tipo de dado inteiro (conhecido tambm como booleano), cujo valor pode
corresponder a NULL, 0 ou 1. Podemos converter valores de string TRUE e FALSE em
valores de bit, sendo que TRUE corresponde a 1 e FALSE a 0.
- Baseados em Numricos Exatos:
- Decimal(P,S) Os valores aceitos variam entre -10^38-1 e 10^38-1, sendo que o espao
ocupado varia de acordo com a preciso. Se a preciso for de 1 a 9, o espao ocupado de 5
bytes. Se a preciso de 10 a 19, o espao ocupado de 9 bytes, j se a preciso for de 20
a 28, o espao ocupado de 13 bytes, e se a preciso for de 29 a 38, o espao ocupado de
17 bytes.
- Resource Este banco possui todos os objetos de sistema do SQL Server, os quais so
visualizados de forma lgica no esquema sys de todos os bancos de dados. O Resource, que
um banco de dados somente leitura, no possui metadados ou dados dos usurios. Ele
permite a rpida atualizao de verses e o fcil rollback dos pacotes de
servios. Importante salientar que, em hiptese alguma, devemos mover ou
renomear o arquivo do banco de dados Resource pois, se isso acontecer, o SQL
Server no ser iniciado.
- Master O banco Master o responsvel por efetuar os registros de todas as informaes
do nvel do sistema. Ele registra as informaes para iniciar o SQL Server, contas de login,
configuraes referentes ao sistema e a existncia de outros bancos de dados e seus
arquivos. Se este banco estiver indisponvel, torna-se invivel iniciar o SQL Server.
- TEMPDB Este o banco responsvel por manter todo o tipo de armazenamento
temporrio, inclusive o de tabelas de carter temporrio. Ele considerado um recurso
global, visto que armazena tabelas e stored procedures temporrias que podem ser
acessadas por todos os usurios que estiverem conectados. Todas as vezes que o SQL Server
iniciado, este banco recriado, o que significa que sempre h uma cpia limpa do banco de
dados quando o sistema iniciado. Dessa forma, quando o SQL encerrado, no existem
conexes ativas, sendo que entre uma sesso e outra no h itens a serem salvos em um
banco de dados tempdb. Vale ressaltar que no podemos fazer o backup ou restaurar esse
banco de dados.
- MODEL Este banco usado como modelo para criar todos os outros bancos de dados.
Dessa forma, quando solicitamos a criao de um novo banco de dados ao SQL Server, este
copia todos os objetos armazenados no MODEL para o novo banco de dados. Caso sejam
feitas alteraes sobre este banco de dados, todos aqueles criados posteriormente tambm
refletiro tais modificaes.
- MSDB Este banco usado pelo SQL Server Agent com a finalidade de registrar
operadores e programar a execuo de jobs e de alerts. O msdb utilizado para realizar o
armazenamento de dados no apenas pelo SQL Server Agent, mais tambm pelo SQL Server
Management Studio. Um histrico completo de backup e restaurao online mantido pelo
SQL Server no banco de dados msdb. Esses dados so usados pelo SQL Server a fim de criar
um planejamento de restaurao do banco de dados e aplicar backups de log de transao.
Recomenda-se realizar um backup do msdb com freqncia caso esse banco sofra
constantes alteraes. Caso esse banco seja danificado, as informaes referentes ao backup
e restaurao so perdidas, bem como as informaes utilizadas pelo SQL Server Agent.
Visualizando os bancos de dados do sistema Caso voc deseje visualizar os bancos de
dados do sistema, faa o seguinte: abra o SQL Server, v a janela Object Explorer (F8),
expanda a opo Databases e expanda a opo System Databases, como mostra a imagem a
seguir.
Se voc quiser ver os databases via instruo SQL, crie uma nova query e digite SELECT *
FROM SYSDATABASES. Veja o resultado abaixo:
De forma simplificada assim que criamos nossas tabelas, lembrando sempre de usar esta
estrutura CREATE TABLE NomeDaTabela ( ), dentro dos parnteses vai toda a estrutura
da minha tabela, como os nomes das colunas e os tipos de dados referentes as colunas. Para
exibir minha tabela criada uso a instruo SELECT, que ser abordada no prximo artigo.
Desta forma, terminamos aqui mais uma parte de nossa srie de artigos, ou melhor dizendo,
de nosso mini curso bsico de SQL Server. Na prxima parte, comearemos a falar dos
comandos DML, como o INSERT e SELECT. Aguardem!
Quaisquer dvidas, postem.
Abraos.
At o prximo artigo!
Ol pessoal, voltamos com nosso curso bsico de SQL Server. Nesta parte, iremos aprender o
que so os Comandos DML, e falaremos sobre dois deles, o Insert e o Select, seguidos de
alguns exemplos que ilustram o uso dos comandos. Acompanhem:
Comandos DML Os comandos Data Manipulation Language, ou apenas DML so utilizados
para realizar incluses, consultas, excluses e alteraes de dados presentes em registros.
Por estes comandos, estas tarefas podem ser executadas em vrios registros de diversas
tabelas ao mesmo tempo.
Os DML responsveis pelas funes citadas acima
so INSERT, SELECT, UPDATE e DELETE, respectivamente. Como dito anteriormente,
neste artigo irei falar sobre os dois primeiros mostrando os conceitos e alguns exemplos
prticos no SQL Server.
Insert Usamos o comando Insert para incluir dados em uma ou mais colunas de uma
tabela. Este comando tem a seguinte sintaxe:
INSERT [INTO] NomedaTabela [(nomesdascolunas)] VALUES (Valores)
Os valores entre colchetes, so opcionais, ou seja, voc pode usar somente
INSERT NomedaTabela VALUES (Valores)
Os valores descritos junto ao comando INSERT so transformados em uma ou mais linhas da
tabela. Os nomes das colunas nas quais os dados sero inseridos devem ser separados por
vrgulas.
As colunas que no foram declaradas no comando INSERT podem apresentar um valor
padro, caso essa definio seja configurada pelo usurio, ou o valor NULL.
Vamos tomar como exemplo a tabela de clientes abaixo:
Para faz-la, precisamos fazer o uso da instruo INSERT, como mostra a imagem a seguir:
Neste exemplo, o resultado ser o mesmo, j que usei a mesma ordem do Insert posicional,
mais fica a dica se voc quiser alterar a ordem e ver o resultado. Para ver os resultados, voc
ter que usar a instruo SELECT, instruo essa que abordarei a partir de agora.
Select O Select o principal comando usado em SQL para realizar consultas a dados
pertencentes a uma tabela. Por meio desse simples comando, podemos retornar dados para
outros comandos SQL e tambm para outras aplicaes.
Para exibir todas as colunas da tabela Clientes, uso SELECT * FROM CLIENTES, j para
exibir algumas colunas, devemos substituir o uso do asterisco pelos respectivos nomes das
colunas, como por exemplo SELECT NomeCliente, EnderecoCliente FROM CLIENTES.
Usando Alias o nome de uma coluna pode ser substitudo por uma espcie de apelido,
criado para facilitar sua visualizao ao usurio. Esse apelido chamado de Alias. Vamos
tomar como exemplo novamente nossa tabela de clientes abaixo:
No necessrio usar a clusula AS para obter o resultado desejado. Entretanto, como boas
prticas, diversos usurios preferem manter essa clusula para facilitar a identificao do
alias. Podemos omitir o AS ou troc-lo por um sinal de igual.
Como voc pode perceber na imagem, quando queremos dar um nome composto ao Alias,
temos que coloc-los entre colchetes.
Coluna Virtual Podemos tambm criar uma coluna virtual usando o Select, ou seja,
podemos exibir uma coluna no disponvel fisicamente na tabela. No exemplo abaixo, a
coluna Tipo de Cliente no faz parte do banco de dados, mais por meio do Select, podemos
defini-la como existente:
Exibindo um clculo Nem sempre necessrio gravar o resultado de um clculo para que
esse valor seja exibido na tabela. Por exemplo, imaginemos que o salrio dos clientes possui
um aumento de 10%. Desejamos visualizar esse aumento, mais no inseri-los no banco. Para
isso, faa o seguinte:
Dessa forma, obtemos uma rpida visualizao de quanto seria o aumento aos clientes, sem
precisar gravar esses dados no banco.
Uso da Clusula Distinct Por meio dessa clusula, exibido apenas uma vez os dados
repetidos de determinada tabela. Como voc pode perceber na imagem acima, j tenho uma
coluna duplicada propositalmente, que a cliente Andressa. No exemplo abaixo, tenho na
tabela Clientes as colunas duplicadas, me gerando assim o dobro dos dados de que preciso
visualizar:
No exemplo, so apenas 8, mais imagine o cenrio em uma grande empresa com milhares
(at milhes) de dados repetidos. Seria um grande desperdcio de tempo e produtividade
visualizarmos vrios dados repetidos. Para isso, usamos a clusula Distinct, por meio da
seguinte instruo:
Copiando dados de uma tabela a outra Caso as estruturas de duas tabelas sejam
similares ou diferentes, podemos copiar os dados de uma para outra por meio dos seguintes
comandos.
Insert com Select quando as tabelas so iguais Para fazer este exemplo, vamos criar
uma outra tabela, com a mesma estrutura de colunas da tabela de Clientes. Crie a tabela a
seguir:
Logicamente esta tabela est sem dados, pois acabou de ser criada. Para que copiemos os
dados da tabela Clientes, mais simples do que voc imagina:
Com apenas duas linhas de instrues SQL, consigo copiar os dados de uma tabela em outra
vazia.
Insert com Select quando as tabelas so diferentes Vamos supor que temos duas
tabelas distintas, Clientes e Funcionarios, com nmeros de colunas diferentes:
Embora a tabela Clientes contenha dados, nem todas as colunas de Funcionario podem ser
encontradas na Cliente. Para que seja possvel copiar dados de Clientes para Funcionario,
devemos usar o comando SELECT de colunas virtuais, como mostra a imagem abaixo:
Desta forma, usando colunas virtuais, consigo copiar os dados existentes da tabela Clientes
para a tabela Funcionrio.
Caso as colunas da tabela Funcionario aceitem valores nulos (NULL), podemos escrever a
instruo de outra forma, como mostra a imagem:
Agora vamos supor o contrrio, ou seja, agora a tabela Funcionario que ter menos dados
que a tabela Clientes:
Desta forma, terminamos aqui mais uma parte de nossa srie de artigos.
Estou disponibilizando a quem se interessar o script de todo este artigo, com os assuntos
abordados aqui. O script est comentado para melhor entendimento. Quem quiser baixar,
sclicar aqui.
Na prxima parte, continuaremos falando dos comandos DML, abordando o UPDATE e
oDELETE. Aguardem!
Quaisquer dvidas, postem.
Abraos.
At o prximo artigo!
Ol pessoal, a dica de hoje simples, mais importante: como inserir os Line Numbers, ou
os nmeros nas linhas no SQL Server 2005. Para isso, abra o SQL Server 2005, clique
em Tools > Options. Na janela que se abrir, clique em Text Editor > All Languages.
No menu ao lado, s clicar na opo Line Numbers e dar Ok. Pronto! Sua instruo SQL
agora tem numerao! Importante para quando usamos ou fazemos longos scripts e
precisamos voltar ao incio para pesquisar algo. Para isso minha outra dica usar o
atalhoCTRL + G, que ir abrir uma tela para voc digitar o nmero da linha que deseja
navegar.
Ol pessoal, voltamos com nosso curso bsico de SQL Server. Nesta parte, iremos ver os
comandos DML Update e Delete e veremos a clusula Where. Da mesma forma como fizemos
na parte anterior, iremos fazer nessa alguns exemplos para melhor entendimento desses
comandos. Confiram:
Update Os dados pertencentes a mltiplas linhas de uma tabela podem ser alterados por
meio do comando UPDATE. Quando usarmos o UPDATE, devemos especificar algumas
informaes, como o nome da tabela que ser atualizada e os filtros que sero usados na
atualizao. Sintaxe bsica: UPDATE nomedatabela SET coluna1 = valor1, coluna2 = valor2,
coluna3 = valor3, WHERE critrio. Importante: Devemos passar sempre o Where, que
uma espcie de filtro em nossa tabela, porque seno o passarmos atualizaremos TODOS os
dados da tabela e isso pode acarretar em diversos problemas, dependendo do tamanho e da
complexidade da sua tabela.
Falarei mais a respeito do Where daqui a pouco.
Alterando os dados de uma coluna Para simplificar o uso do UPDATE, vamos usar as
tabelas do artigo anterior, Clientes e Funcionarios, conforme voc v abaixo:
Vamos alterar os salrios dos funcionrios, da tabela Funcionario. Para isso, faa o seguinte
comando:
Nessa instruo SQL, do um aumento de 10% no salrio dos funcionrios que estiverem com
o salrio menor que 1900,00, que nesse exemplo so os 2 primeiros, j que o 3 e o 4 so o
mesmo. O resultado ser esse:
Podemos usar a clusula Update de outras maneiras tambm, para atualizar uma ou mais
colunas, como vimos nestes exemplos. Sempre bom lembrar que deve se tomar um
cuidado ao usar o comando Update, principalmente em tabelas complexas, que contenham
um nmero grande de dados, porque o Update no tem volta, fez t feito! Por isso tambm a
importncia de usar a clusula Where junto ao Update.
Deixo para que voc usem a criatividade e criem exemplos bsicos de uso do Update.
Qualquer dvida com relao ao uso dele, mande um email para o endereo que est no fim
deste artigo.
Delete O comando DELETE deve ser usado quando desejamos excluir os dados de uma
tabela. Sintaxe bsica: DELETE FROM nomedatabela. Por exemplo, se quisermos, remover os
dados da tabela Funcionario, devemos executar a seguinte instruo SQL:
Que nos resultar na limpeza completa dos dados da tabela Funcionario:
Simples n? Lembrando que este comando, assim como o UPDATE, pode ser perigoso em
algumas situaes, j que, uma vez executado esses comandos, no ser possvel desfazer a
ao realizada. Portanto, devemos ficar atentos ao usar esses comandos em tabelas
complexas.
Clusula Where Como dito anteriormente, a utilidade da clusula WHERE a de ser um
filtro, que determina quais os dados que sero afetados, podendo ser usada juntamente
comSELECT, UPDATE e DELETE. Podemos dizer ento que essa clusula determina o
escopo de uma consulta a algumas linhas, realizando a filtragem dos dados que estejam de
acordo com as condies definidas. Abaixo vamos criar uma nova tabela, a de Produtos, e
utilizaremos a clusula Where juntamente com as instrues SELECT, UPDATE e DELETE:
De incio vamos criar a tabela Produtos
Ok, a consulta s me retornou os produtos do tipo Informtica, por meio da clusula WHERE.
Agora quero aumentar em 5% o valor dos produtos do tipo Informtica. Como eu fao?
Usando UPDATE com WHERE:
Pronto, aumentei em 5% o valor dos produtos de Informtica. Agora quero apagar todos os
produtos que tiverem um valor menor que 100.00. Como fazer?
Usando DELETE com WHERE:
Como s tnhamos 2 produtos com valor abaixo de 100.00, minha tabela ter agora 8
produtos:
Com o Where, podemos fazer milhares de filtros especficos para colunas diversas.
Estou disponibilizando a quem se interessar o script de todo este artigo, com os assuntos
abordados aqui. O script est comentado para melhor entendimento. Quem quiser baixar,
sclicar aqui.
Essa foi apenas uma breve introduo a clusula Where. Na prxima parte, veremos o uso do
Where com vrios operadores especficos, como o AND, OR, IN, BETWEEN, LIKE, entre
outros. Aguardem!
Quaisquer dvidas, postem nos comentrios ou sintam-se vontade para mandar emails
parawellingtonbalbo@gmail.com.
Abraos.
At o prximo artigo!
Ol pessoal, voltamos com nosso curso bsico de SQL Server. Nesta parte, iremos ver o uso
da clusula WHERE em conjunto com os
operadores AND, OR, IN, NOT IN, BETWEEN e NOTBETWEEN.
Deixaremos a explicao e os exemplos do uso dos operadores LIKE e NOT LIKE para a
prxima parte de nosso curso.
Como feito em partes anteriores, faremos nessa alguns exemplos para melhor entendimento
do uso do Where com esses operadores. Como foi explicado os conceitos e mostrados
exemplos do Where na parte anterior, nessa iremos direto ao uso dele com os operadores.
Acompanhem os conceitos e exemplos:
WHERE com AND e OR Usamos os operadores AND e OR junto com Where quando
necessrio usar mais de uma condio de comparao. Como exemplo, iremos usar a tabela
de Produtos ao longo de todo este artigo, criada na parte anterior (ao final do artigo, irei
disponibilizar o script dos exemplos). Vamos ao exemplo: iremos utilizar o
operador AND para determinar um acrscimo de 10% nos produtos de Informtica cujo
valor seja igual ou inferior a 350.00. Para isso, faa a seguinte instruo (antes d um Select
* From Produtos e note o valor dos produtos Processador e Monitor):
Neste exemplo observamos que o uso do operador OR muito mais abrangente do que o
operador AND, j que podemos perceber que uma quantidade maior de linhas foi atingida
aps o uso do UPDATE.
Dito isto, podemos concluir que o operador AND permite realizar a avaliao de duas
expresses conjuntamente, sendo que o resultado obtido apenas ser verdadeiro se ambas
as expresses forem verdadeiras. Ao contrrio, o operador OR permite que realizemos a
avaliao de duas expresses de forma separada. Assim, o resultado ser verdadeiro se
somente uma expresso for verdadeira ou se ambas forem verdadeiras.
WHERE com IN Podemos usar o operador IN no lugar do operador OR em
determinadas situaes. O IN permite verificar se o valor de uma coluna est presente em
uma lista de elementos. Considerando a tabela Produtos, podemos utilizar o IN ou o OR para
selecionar os produtos do tipo Eletrnicos ou do tipo Informtica. Confira a seguir como
fazer esta consulta com ambos os operadores:
- Operador OR
- Operador IN
WHERE com NOT IN Este operador, ao contrrio do IN, permite obter como resultado o
valor de uma coluna que no pertence a uma determinada lista de elementos, como podemos
perceber pela seguinte instruo:
Por meio do operador AND e dos operadores relacionais =, < e > tambm possvel
consultar uma determinada faixa de valores. No entanto, por meio do BETWEEN esta
consulta torna-se ainda mais simples. Este operador permite checar se o valor de uma coluna
encontra-se em um determinado intervalo. Ele pode ser utilizado para verificar intervalos de
data, caracteres, entre outros.
WHERE com NOT BETWEEN O operador NOT BETWEEN, ao contrrio do anteriormente
descrito, permite consultar os valores que no se encontram em uma determinada faixa.
Considerando nossa tabela, podemos consultar os produtos cujos valores no esto
entre300.00 e 500.00. Para isso, preciso executar o comando descrito a seguir:
Com a execuo deste comando, o resultado obtido com a tabela Produtos o mesmo
apresentado com a execuo do operador NOT BETWEEN. Assim finalizamos mais esta parte
de nosso curso bsico de SQL Server.
Estou disponibilizando a quem se interessar o script de todo este artigo, com os assuntos
abordados aqui. O script est comentado para melhor entendimento. Quem quiser baixar, s
clicar aqui.
Na prxima parte, iremos ver o uso do Where em conjunto com os operadores LIKE e NOT
LIKE. Veremos tambm os conceitos e exemplos das clusulas ORDER BY, TOP,
e TOP WITHTIES. Aguardem!
Quaisquer dvidas, postem nos comentrios ou sintam-se vontade para mandar emails
parawellingtonbalbo@gmail.com.
Abraos.
At o prximo artigo!
Como desejamos determinar apenas a letra inicial da palavra a fim de obter o resultado,
devemos utilizar o caractere % para representar que quaisquer outros caracteres podem
estar contidos na palavra, desde que ela se inicie com a letra C. Sendo assim, o % representa
um caractere coringa.
Vale destacar que no apenas o primeiro caractere que pode ser determinado para uma
consulta. Veja o comando descrito a seguir, no qual desejamos obter como resultado todos os
nomes de produtos cujo caractere inicial seja C e que contenha o caractere D em qualquer
posio na palavra:
Alm destes tipos de consulta descritos, o operador LIKE tambm permite consultar nomes
de produtos que contenham uma determinada slaba. Por exemplo, para realizar uma
consulta obtendo como resultado os nomes dos produtos que contenham a slaba or, basta
executarem a seguinte instruo:
Podemos restringir ainda mais esta consulta determinando no apenas uma slaba que deve
estar presente nos nomes dos produtos, mas tambm outra que deve estar presente no tipo
de produto. Vejamos o comando descrito a seguir, no qual desejamos obter como resultado
da consulta os produtos cujos nomes possuam a slaba or e os tipos que possuam a
slabati:
Com isso, podemos concluir que o operador LIKE em conjunto da clusula WHERE muito
til quando queremos realizar filtros diversos em consultas.
WHERE com NOT LIKE Os operadores NOT LIKE so usados de forma oposta ao
operadorLIKE. Com eles obtemos o resultado de uma consulta os nomes e tipos de produtos
que no possuem tais caracteres ou slabas determinadas neste filtro. Para ficar clara a
diferena entre os operadores, usaremos os mesmos exemplos que usamos acima, mais
agora a fim de explicar a finalidade dos operadores NOT LIKE. Veja:
Assim como o operador LIKE, o NOT LIKE tambm permite que mais de um caractere seja
usado para uma consulta. Veja o comando descrito a seguir, no qual desejamos obter como
resultado todos os nomes de produtos cujo caractere inicial no seja C e que no contenha o
caractere D em qualquer outra posio da palavra:
Como feito anteriormente, com o operador NOT LIKE podemos restringir ainda mais nossa
consulta, determinando uma slaba que no deve estar presente no nome dos produtos e
tambm uma slaba que no deve estar presente no tipo do produto. O comando a seguir nos
permite obter como resultado os produtos cujos nomes no possuem a slaba or e os tipos
que no possuem a slaba ti:
Assim terminamos nossos exemplos com o uso dos operadores LIKE e NOT LIKE. Fica a dica
para que treinem outros exemplos com o uso destes operadores em conjunto com a
clusulaWHERE.
CLUSULA ORDER BY Quando precisamos que o resultado de nossa consulta a uma
tabela seja fornecido em uma ordem especfica, de acordo com um determinado critrio,
devemos usar a clusula ORDER BY que, como o prprio nome diz, considera uma certa
ordem para retornar os dados de uma consulta. A sintaxe padro a seguinte: SELECT
coluna1, coluna2 FROM nomedatabela ORDER BY coluna1. Usaremos os exemplos a
seguir usando a tabela Produtos.
Ordenando por uma coluna Para que os dados sejam retornados e exibidos de acordo
com o nome da coluna, usamos o seguinte comando:
Ordenando por vrias colunas possvel usar a clusula ORDER BY para ordenar os
dados por vrias colunas, com base nos nomes das colunas e nas posies das mesmas
no SELECT. Com o comando a seguir conseguimos isso:
A opo ASC tambm pode ser usada para ordenar os dados de uma tabela conforme duas
colunas diferentes. Para isso, devemos usar a seguinte instruo:
DESC A instruo a seguir demonstra o uso da opo DESC junto ao ORDER BY:
Assim como o ASC, a opo DESC tambm pode ser adotada para ordenar os dados de uma
tabela conforme duas ou mais colunas diferentes. Para isso, podemos usar o seguinte
comando:
- ASC e DESC Suponhamos que precisamos retornar o resultado de duas colunas de uma
tabela, mas ser necessrio que os itens de uma coluna sejam exibidos em ordem crescente
e a da outra em ordem decrescente. Neste caso, podemos usar as
opes ASC e DESC juntas, como mostra o exemplo a seguir:
Percebam que podemos fazer diversas combinaes de consultas com ASC e DESC.
CLUSULA TOP Como resultado de uma consulta a uma tabela de banco dados, temos a
opo de retornar a quantidade de linhas desejada, a partir da primeira linha selecionada.
Para isso, usamos a clusula TOP. Usando a tabela Produtos como exemplo, usamos a
seguinte instruo para retornar as cinco primeiras linhas desta tabela:
Da mesma forma, se desejar retornarmos os dois produtos mais caros da tabela, por
exemplo, usaremos a seguinte instruo:
CLUSULA TOP WITH TIES COM ORDER BY Permitida apenas em instrues SELECT e
quando uma clusula ORDER BY especificada, a clusula TOP WITH TIES determina que
linhas adicionais sejam retornadas a partir do conjunto de resultados base com o mesmo
valor apresentado nas colunas ORDER BY, sendo exibidas como as ltimas das linhas TOP n
(PERCENT).
Considerando nossa tabela de Produtos, vamos exibir seus dados em ordem crescente
conforme a coluna QTDEPRODUTO. Isso feito pela seguinte instruo:
O resultado esse:
Vamos supor agora que precisamos obter como resultado o produto com a menor quantidade
de unidades. Porm, preciso considerar a existncia de produtos com a mesma quantidade
de unidades. Neste caso, executamos a seguinte instruo para retornar os produtos com o
menor nmero de unidades:
Podemos observar na imagem acima que existem trs produtos com a mesma quantidade de
unidades, ou seja, todos eles representam a menor quantidade de unidades da tabela.
Neste exemplo, alm das clusulas ORDER BY e TOP, j descritas anteriormente, a
clusulaWITH TIES retorna a primeira linha da tabela, alm de todas as linhas que
apresentam quantidade idntica quantidade do produto que a clusula TOP 1 selecionou.
Da mesma forma, por exemplo, se quisermos retornar um resultado com os dois produtos
que possuem maior quantidade de unidades, seguido dos produtos que apresentam a mesma
quantidade do segundo produto, usamos a seguinte instruo:
E aqui finalizamos nosso artigo. Ficou um pouco extenso, mais acho que valeu a pena pelo
contedo apresentado.
Estou disponibilizando a quem se interessar o script de todo este artigo, com os assuntos
abordados aqui. O script est comentado para melhor entendimento. Quem quiser baixar, s
clicar aqui.
No percam a prxima parte de nosso mini-curso. Iremos ver as regras de integridade e
consistncia dos dados e os tipos de constraints, como as chaves primrias e as chaves
estrangeiras. Aguardem!
Quaisquer dvidas postem nos comentrios ou sintam-se vontade para mandar emails
parawellingtonbalbo@gmail.com.
Abraos.
At o prximo artigo!
No exemplo acima, temos trs valores que no permitem valores nulos e dois que permitem
nulos, que so os campos pra Cpf/Cnpj do cliente e pra Telefone. Crie a tabela Vendas e
insira os registros abaixo, pois iremos us-la mais a frente:
Tipos de integridade
Tipos de constraint
Chave Primria
Chave Estrangeira
Constraint Unique
Regras de Validao
Constraint Check
Valor Padro
Constraint Default
Veja agora a explicao de cada uma das constraints e o uso prtico em exemplos:
Chaves Primrias Geralmente, as tabelas possuem uma coluna contendo valores capazes
de identificar uma linha de forma exclusiva. Essa coluna recebe o nome de chave primria,
tambm conhecida como Primary Key, cuja finalidade assegurar a integridade dos dados
da tabela.
A chave primria pode ser gerada no momento da criao ou da alterao da tabela,
bastando para isso definir uma constraint Primary Key. importante ter em mente que cada
tabela pode conter apenas uma constraint Primary Key, sendo que a coluna que a
representa no pode aceitar valores nulos. Este tipo de constraint capaz de assegurar que
os dados sejam nicos e exclusivos, portanto, comum que a coluna que a representa seja
chamada de coluna de identidade.
O Database Engine o responsvel por assegurar a exclusividade dos dados quando usamos
a constraint Primary Key. Para tanto, ele cria um ndice nico para as colunas relacionadas
chave primria, o qual possibilita acessar os dados de forma rpida nas situaes em que so
realizadas consultas por meio dessas chaves.
H situaes em que a constraint Primary Key definida em vrias colunas. Quando isso
ocorre, possvel que haja valores duplicados em uma coluna, porm, a combinao de
valores da coluna que representa a constraint Primary Key deve ser nica.
PS: Como j dito em artigos anteriores, partes dos conceitos descritos ao longo deste artigo e
de outros foram retirados das minhas apostilas de SQL Server, da Impacta Tecnologia.
Em nossos exemplos vamos usar a tabela Vendas, que criamos e inserimos registros
anteriormente.
Faa um SELECT * FROM na tabela Vendas e veja o resultado:
Nela, podemos observar nos registros que podemos ter duas vendas com o mesmo tipo e
mesmo valor, alm de ambas estarem com Telefone e CPF/CNPJ com valor nulo.
Com esta situao, caso desejamos alterar o tipo de venda de apenas um registro, de
VISTA para CHEQUE, por exemplo, ser preciso identific-los individualmente. Uma das
solues para este caso acrescentar na tabela uma coluna cujos valores so nicos para
cada venda. Neste caso, precisamos acrescentar uma coluna CodVenda, que ser nica para
cada registro. Para incluir esta coluna, execute a seguinte instruo:
Na instruo acima, inseri a coluna CODVENDA, que IDENTITY, ou seja, ela autoincremento, sendo contada de 1 em 1 (definido pelos parmetros passados entre os
Quando trabalhamos com o SQL Server, a nova coluna inserida sempre no final da tabela.
Com a incluso de uma coluna referente a cdigo da venda, possvel identificar cada
funcionrio individualmente e, dessa forma, aplicar as alteraes necessrias, sabendo que
estamos tratando da venda certa.
A chave primria deve fazer parte da integridade referencial que se estabelece entre duas
tabelas relacionadas. Mais sobre isso logo abaixo.
Chaves Primrias Secundrias ou Chaves nicas Alm das constraints Primary Key,
tambm podemos utilizar constraints Unique, as quais asseguram que dados duplicados no
sejam inseridos em colunas que no fazem parte das chaves primrias. A Unique uma
constraint que tambm capaz de assegurar a exclusividade dos dados. Em uma tabela,
vrias colunas podem ser definidas com constraints Unique.
As colunas nas quais so definidas constraints Unique permitem a incluso de valores nulos,
desde que seja apenas um por coluna.
As constraints do tipo Unique podem ser utilizadas para referenciar uma chave estrangeira.
A chave primria usada na coluna CODVENDA no impediria que uma venda para o mesmo
cliente fosse duplicada. Um exemplo disso j tem em nossa tabela, nos registros 1 e 4, onde
h duas vendas exatamente iguais.
Neste caso, mesmo com a chave primria na coluna CODVENDA, essa insero de uma
mesma venda mais do que uma vez no seria evitada. Ao mesmo tempo, no seria vivel
exigir que os usurios consultassem a tabela inteira antes de inserir nela alguma informao
(imagine uma tabela complexa, com milhares de registros).
Para resolver este problema, podemos inserir uma coluna RGCLIENTE como mostra a
instruo a seguir:
Tendo em vista que no h duas pessoas com o mesmo RG, poderamos colocar a chave
primria nesta coluna a fim de evitar a incluso de uma mesma venda duas ou mais vezes na
tabela. Como j temos a chave primria na coluna CODVENDA e a mesma no pode se
repetir devemos usar as chaves primrias secundrias, tambm chamadas de chaves nicas.
Desta forma, podemos colocar a chave primria na coluna CODVENDA para que cada linha
seja identificada como nica, e a chave nica na coluna RGCLIENTE para evitar que valores
j existentes na tabela sejam registrados novamente.
Agora na tabela Produtos, faa a seguinte instruo pra criarmos uma coluna que ser a
chave primria desta tabela, j que a mesma no contm chaves primrias:
Agora na tabela Vendas, iremos criar a chave estrangeira que ir referenciar a chave
primria criada anteriormente na tabela Produtos. Para isso, use a seguinte instruo:
Como voc pode ver, na tabela Produtos, na coluna QTDEPRODUTO, temos um valor
negativo, que o do Monitor, que est com -100. Esse um valor errneo e que pode
causar problemas dependendo da complexidade e das regras de negcios envolvidas em suas
tabelas.
Para resolver este (e muitos outros que podem acontecer) problema, devemos utilizar as
regras de validao nas colunas a fim de evitar a incluso de valores inadequados. Neste
caso, a regra de validao no permitir valores negativos nas
Reparem que usei WITH NOCHECK. Isto indica que a constraint que adicionei no ser
capaz de validar dados antigos, ou seja, se eu der um SELECT * FROM na
tabela PRODUTOS, verei que o valor negativo da coluna QTDEPRODUTO continua l:
Lembre-se de colocar o FOR para indicar para qual coluna a constraint ser aplicada.
Assim, se no especificarmos o tipo da venda, por default, ela ser VISTA.
Regras de Constraints Cada tipo de constraint possui suas prprias regras. Veja na
tabela a seguir quais so elas:
Tipos de constraints
Descrio
Constraint Check
Constraint Default
E aqui finalizamos nosso artigo. Estou disponibilizando a quem se interessar o script de todo
este artigo, com os assuntos abordados aqui. O script est comentado para melhor
entendimento. Quem quiser baixar, s clicar aqui.
No percam a prxima parte de nosso mini-curso. Iremos ver os conceitos do MER e do DER,
os tipos e regras de relacionamentos. Aguardem!
Quaisquer dvidas postem nos comentrios ou sintam-se vontade para mandar emails
parawellingtonbalbo@gmail.com.
Abraos.
At o prximo artigo!