sql server 2005 – parte 1 – overview

50
SQL Server 2005 – Parte 1 – Overview 9 09UTC março 09UTC 2010 Olá pessoal, começo mais uma série de artigos em meu blog. Desta vez, o assunto é SQL Server Básico. Pretendo, após terminar esta série de artigos, fazer outra falando sobre SQL Server Avançado. Aproveitem e postem sugestões ou pedidos de artigos! Irei falar desde a história do SQL Server, a origem, as versões lançadas, 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 também das cláusulas Where, Order By, Inner Join, Group By e muito mais! Vocês podem me perguntar: porquê falar da versão 2005 e não da versão 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 também que não há uma grande diferença entre as versões 2005 e 2008. De qualquer forma irei postar algumas coisas sobre SQL Server 2008. Começando a partir do próximo artigo a falar sobre a introdução e origem do SQL, diferenças entre versões, tutorial para baixar e instalar o SQL Server 2005 Express Edition e comandos básicos. Aguardem, até o final da semana surgirá um novo artigo! Abraços.

Upload: leandro-marcos

Post on 03-Oct-2015

23 views

Category:

Documents


3 download

DESCRIPTION

SQL Server 02

TRANSCRIPT

  • SQL Server 2005 Parte 1 Overview 9 09UTC maro 09UTC 2010

    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.

  • SQL Server 2005 Parte 2 Introduo e Origem, Diferenas entre verses, Tutorial de instalao e Comandos bsicos 13 13UTC maro 13UTC 2010

    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.

  • 2 Standard Edition Esta verso suporta quase todas as funcionalidades da verso Enterprise, com algumas limitaes e restries ao servio Analysis Services. 3 Personal Edition Esta verso possui quase tudo o que a verso Standard possui, com a exceo de que no podemos criar um Publicador/Distribuidor em uma replicao transacional. H tambm uma limitao de performance quando mais de 5 usurios enviam instrues SQL ao mesmo tempo. 4 Windows CE Edition Verso para dispositivos portteis que armazena temporariamente uma pequena quantidade de dados para depois transferir para outro SQL Server 2000. Possui diversas limitaes. 5 Developer Edition Possui todas as funcionalidades da verso Enterprise. A nica limitao que, como o prprio nome diz, esta verso exclusiva para o desenvolvimento de aplicaes em ambiente de desenvolvimento e no em um ambiente de produo. 6 Desktop Engine Este somente o engine do SQL Server, sem ferramentas grficas. No podemos criar um banco com mais de 2GB e possui a mesma limitao que a verso Personal. Esta verso tambm chamada de MSDE e pode ser distribuda livremente sem a necessidade de licena. - No SQL Server 2005, temos tambm 6 verses: 1 Express Edition Esta verso pode ser baixada gratuitamente e a mais utilizada por desenvolvedores e estudantes da rea. Conta com uma limitao de 4GB para os arquivos de dados 2 Workgroup Edition Verso para empresas, que precisam utilizar bancos de dados sem limites quanto ao tamanho e quantidade de usurios. 3 Developer Edition Verso para o desenvolvedor, permite desenvolver qualquer tipo de aplicao. 4 Standard Edition Oferece uma soluo para pequenas e mdias empresas que buscam uma soluo fcil de utilizar e que seja capaz de suportar atividades comerciais. 5 Enterprise Edition Opo mais indicada para os usurios que buscam a verso com maior escalabilidade e disponibilidade. 6 Mobile Edition Com esta edio, o desenvolvimento de aplicaes relacionadas Business Inteligence e ao gerenciamento de dados pode ser implementado em dispositivos mveis. - No SQL Server 2008, temos 5 verses: 1 Enterprise Edition Usada por grandes empresas que precisam de um fluxo maior de dados. H outras duas verses, Developer e Evaluation, que tem as mesmas funcionalidades da Enterprise com algumas restries em seu licenciamento. As diferenas entre as verses Standard e Enterprise so maiores no SQL 2008 do que na verso 2005. 2 Standard Edition Verso para pequenas e mdias empresas, tem um maior poder em anlise de dados e Reporting Services. 3 Workgroup Edition Inclui os recursos bsicos dos bancos de dados relacionais, muito usado para funes de replicao de dados. Mais apropriada para empresas que precisam de performance em sincronizao remota ou para servidores geograficamente distantes. 4 Express Edition Verso gratuita do SQL Server, essencial para quem quer aprender a construer aplicaes pequenas. Usada em larga escala por estudantes. 5 Compact Edition Mais uma verso gratuita do SQL Server, usada principalmente em aplicativos mveis, mais tambm em desktops e clientes. Fontes de pesquisa:

  • 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=220549b5-0b07-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:

    Como vemos pela imagem, temos 4 tipos de instalaes, que so:

    Database Only essa opo instala somente o SQL Server Database Engine, que cria bancos relacionais para processamento de transaes online ou dados de processamento analtico online. Tamanho = 84mb. Management Tools essa opo instala somente o SQL Server Management Studio Express, que a plataforma que precisamos para manipular os dados. Tamanho = 172mb.

  • 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-studio-2008-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:

    Abaixo podemos notar a janela de resultados quando executamos a instruo acima.

  • Podemos usar as teclas CTRL+R para ocultar essa janela se desejarmos. Para no estender muito o artigo, iremos parar por aqui. Na prxima parte de nossa srie de artigos, iremos ver os tipos de objetos do SQL Server, os databases e tabelas do sistema, os tipos de dados e iremos comear a criao de tabelas. Quaisquer dvidas, postem.

    Abraos.

    At o prximo artigo!

  • SQL Server 2005 Parte 3 Objetos do SQL Server, Databases, Tipos de Dados, Tabelas do Sistema e Criao de Tabelas 21 21UTC maro 21UTC 2010

    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 Transact-SQL. 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:

  • Como h de se esperar, assim que criamos um database, no h tabelas no mesmo, muito menos registros. Mais, antes que pensemos em inserir tabelas (e registros), precisamos informar ao SQL Server qual database iremos utilizar. Para isso, usamos a instruo USE nomedodatabase. Confira 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.

  • - Numrico(P,S) Considerado um sinnimo do datatype decimal, o nmerico tambm permite valores entre -10^38-1 e 10^38-1 e o espao ocupado o mesmo do anterior. - Baseados em Numricos Aproximados: - Float[(n)] O mesmo que double precision quando o valor de n 53, este datatype aceita valores entre -1.79E + 308 e 1.79E + 308. O espao ocupado varia de acordo com o valor de n. Se esse valor estiver entre 1 e 24, a preciso ser de 7 dgitos, sendo que o espao ocupado ser de 4 bytes. Se o valor de n estiver entre 25 e 53, sua preciso ser de 15 dgitos, assim sendo o espao ocupado ser de 8 bytes. - Real Este datatype similar ao float(n) quando o valor de n 24. Os valores aceitos variam entre -3.40E + 38 e 3.40E + 38. Esse datatype ocupa 4 bytes. - Baseados em Valores Numricos Monetrios: - Money Este datatype aceita valores entre -2^63 e 2^63-1, sendo que 8 bytes so ocupados. - Smallmoney possvel usar valores entre -2^31 e 2^31-1, sendo que 4 bytes so ocupados. - Baseados em Data e Hora: - Datetime Permite o uso de valores entre 1/1/1753 e 31/12/9999. Este datatype ocupa 8 bytes e sua preciso atinge 3.33 milisegundos. - Smalldatetime Aceita o uso de valores entre 1/1/1900 e 06/06/2079, sendo que sua preciso de 1 minuto e ocupa 4 bytes em disco. - Baseados em Binrios: - Binary[(n)] Este datatype representa os dados que sero usados no formato binrio. O espao ocupado de n+4 bytes, sendo que n pode variar entre 1 e 8000 bytes. - Varbinary[(n)] Aqui tambm usado o formato binrio, o espao ocupado e a variao den igual ao anterior. - Image O formato binrio tambm usado aqui, sendo que o espao ocupado de 2^31-1 bytes ou 2.147.483.647. - Baseados em Tipos de Dados Especiais: - Uniqueidentifier O formato hexadecimal usado para o armazenamento de dados binrios, sendo que este datatype ocupa 16 bytes. - Timestamp Um valor binrio gerado pelo SQL Server, sendo que esse datatype ocupa 8 bytes. - Bit Este datatype pode apresentar 0, 1 ou NULL, como valor, sendo ocupado 1 byte. Tambm utilizado como um tipo de dado int. - Sql_Variant Os valores aqui podem ser de qualquer datatype, sendo que possvel armazenar at 8016 bytes. - Cursor Datatype usado somente quando trabalhamos com variveis. - Table Datatype usado somente quando trabalhamos com variveis de memria. - Xml Por este datatype, podemos armazenar fragmentos de documentos XML em um banco de dados SQL. Estes fragmentos correspondem instncias XML que no possuem um determinado elemento de nvel superior. Essas instncias so armazenadas quando criamos variveis e colunas com datatype XML. O espao mximo ocupado deve ser de 2GB. Tabelas do Sistema Aps instalarmos o SQL Server, so criados alguns bancos de dados que permitem ao software gerenciar os sistemas de usurios, fazendo assim com que a integridade e a segurana dos dados sejam mantidas. Esses bancos de dados so chamados de bancos de dados gerenciais. Dentro deles, so criadas tabelas por meio da instalao do SQL Server, que recebem o nome de system tables. Abaixo descrevo estes bancos de dados:

  • - 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:

    Criao de Tabelas Os dados de um sistema so armazenados em objetos denominados tabelas. Cada uma das colunas de uma tabela refere-se a um atributo associado a uma determinada entidade. Os datatypes, ou seja, os formatos usados para a gravao dos dados no disco (descritos um a um anteriormente), devero ser especificados para cada coluna da tabela. Ok, aps descrever de forma resumida a parte terica, vamos a prtica. Para criarmos uma tabela, devemos usar a instruo CREATE TABLE, desde que criemos esta tabela em um banco de dados existente. No exemplo abaixo, crio e me conecto ao database Clientes e crio uma tabela simples de Cliente:

  • 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!

  • SQL Server 2005 Parte 4 Comandos DML Insert e Select 28 28UTC maro 28UTC 2010

    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:

    Se voc perceber, na imagem da tabela h 4 registros e na imagem acima, do Insert, tem apenas 3. J explico o porque disso.

    Existem dois tipos de INSERT, o posicional e o declarativo. O posicional deve ser usado quando precisamos incluir dados de acordo com a ordem fsica das colunas. O Insert da imagem acima um exemplo disso. J o Insert declarativo deve ser usado quando desejamos incluir dados na tabela de modo que possamos escolher a ordem dos valores a serem inclusos. Neste tipo de Insert, que nosso 4 que est faltando, nossa instruo fica como a imagem abaixo:

  • 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:

    Os nomes das colunas so, na ordem que aparece acima, CODCLIENTE, NOMECLIENTE,ENDERECOCLIENTE, FONECLIENTE, EMAILCLIENTE, SALARIOCLIENTE e DATACLIENTE. Para que elas fiquem com um nome melhor apresentvel ao usurio, como na imagem acima, faa a seguinte instruo:

    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:

    Que ir me retornar apenas 3 resultados:

    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:

    Neste caso devemos fazer como mostra a imagem a seguir:

  • 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!

  • Dica Rpida: Inserir Nmero de Linhas + Atalho no SQL Server 2005 21 21UTC abril 21UTC 2010

    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.

    Simples n? Qualquer dvida, s postar.

    Abraos.

  • SQL Server 2005 Parte 5 Comandos DML Update e Delete 21 21UTC abril 21UTC 2010

    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:

    Alterando os dados de vrias colunas Podemos alterar os dados de vrias colunas. Vamos usar desta vez a tabela Clientes, como exemplo. Vamos aumentar em 5% o salrio dos clientes que ganharem mais do que 1600.00. Aumentaremos tambm em 2 dias o campo DataCliente. A instruo de Update ficar assim:

  • E 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

  • e inserir alguns dados:

    Nossa tabela ficar com os seguintes dados:

    Agora vamos fazer um SELECT, que ir me retornar somente os produtos de Informtica. Para isso, uso a clusula WHERE, como na imagem a seguir:

    O resultado ser esse:

    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:

    E o meu resultado ser:

  • 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 [email protected]. Abraos.

    At o prximo artigo!

  • SQL Server 2005 Parte 6 Clusula Where e seus Operadores 13 13UTC maio 13UTC 2010

    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):

    Nossa tabela ficar assim:

    Percebeu a diferena? As colunas Processador e Monitor sofreram um acrscimo de 10% em seu valor. O operador OR usado especificamente quando desejamos atender a duas condies distintas. Considerando a tabela Produto, o OR deve ser utilizado quando desejamos, por exemplo, atribuir um acrscimo de 10% sobre o valor dos produtos do tipo Eletrnicos ou sobre o valor daqueles cujo preo maior ou igual a 350.00. Neste caso, uma das condies deve ser atendida. Para isso, precisamos executar a seguinte instruo (sempre lembrando que, como UPDATE no tem volta, fez t feito, use o Select * From Produtos para notar a diferena antes e depois do UPDATE):

    Que nos resultar nesta tabela:

  • 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

    Ambas as consultas nos traro o mesmo resultado:

    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:

    O resultado ser o seguinte:

  • Podemos perceber acima que foram exibidos apenas os produtos que no so do tipoEletrnicos ou Informtica. Podemos usar tambm o operador AND em conjunto com o sinal de comparao diferente () para obter o mesmo resultado, como a instruo a seguir nos mostra:

    WHERE com BETWEEN O operador BETWEEN tem a finalidade de permitir a consulta entre uma determinada faixa de valores. Dessa forma, podemos usar este operador para selecionar todos os produtos cujos valores estejam entre 300.00 e 500.00 na tabela Produtos. Para isso devemos fazer essa instruo:

    Que ter como resultado essa consulta:

    Outra forma de obter o mesmo resultado por meio do seguinte comando:

    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 desta instruo, o resultado obtido o seguinte:

    Outra forma de se obter o mesmo resultado o seguinte:

    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 [email protected]. Abraos.

    At o prximo artigo!

  • SQL Server 2005 Parte 7 Operadores Like e Not Like e Clusula Order By 1 01UTC junho 01UTC 2010

    Ol pessoal, depois de um tempo sem atividades no blog (fim de semestre de faculdade complicado!) voltamos ativa com nosso curso bsico de SQL Server.

    Nesta parte, veremos o uso da clusula WHERE em conjunto com os operadores LIKE e NOT LIKE. Veremos tambm as clusulas ORDER BY, TOP e TOP WITH TIES separadas e em conjunto. Acompanhem: WHERE com LIKE O operador LIKE empregado nas situaes em que usamos como base para realizar pesquisas (ou filtros) as colunas que esto no formato caractere, como as colunas NOMEPRODUTO e TIPOPRODUTO, de nossa tabela de Produtos. Por exemplo, podemos usar esse operador para obter como resultado todos os produtos cuja primeira letra seja C. Para que isso acontea, devemos executar a seguinte instruo:

    Que nos resultar nisso:

    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:

    O resultado ser esse:

    Tambm podemos obter como resultado as palavras que contenham um determinado caractere em qualquer posio. O comando descrito a seguir retornar como resultado todos os produtos contenham o caractere C em qualquer posio. Veja:

    O resultado ser o seguinte:

    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:

  • Com essa instruo, teremos os seguintes resultados:

    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:

    O resultado obtido ser este:

    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:

    O resultado ser esse:

    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:

    O resultado ser esse:

  • Tambm podemos obter como resultado as palavras que no contenham um determinado caractere em qualquer posio. O comando descrito a seguir retornar como resultado todos os produtos cujos nomes no contenham o caractere E em qualquer posio. Veja:

    O resultado ser esse:

    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:

    O resultado ser esse:

    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:

    O comando acima determina que as colunas NOMEPRODUTO e VALORPRODUTO sejam selecionadas. Alm disso, a exibio dos valores da coluna NOMEPRODUTO retornada em ordem alfabtica, como podemos ver:

  • 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:

    O resultado ser esse:

    ORDER BY ASC e DESC A clusula ORDER BY pode ser utilizada com as opes ASC eDESC, descritas abaixo: - ASC Quando utilizada, esta opo faz com que as linhas sejam retornadas em ordem ascendente. - DESC Quando utilizada, esta opo faz com que as linhas sejam retornadas em ordem descendente. Caso no especifiquemos ASC ou DESC, os dados da tabela sero retornados em ordem ascendente, que o valor padro. Veja abaixo o uso das opes:

    ASC Executemos a seguinte instruo:

    E veremos o seguinte resultado:

    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:

  • Iremos obter o seguinte resultado:

    DESC A instruo a seguir demonstra o uso da opo DESC junto ao ORDER BY:

    O resultado ser esse:

    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:

    O resultado ser esse:

    - 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:

    O resultado ser esse:

  • 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:

    O resultado ser esse:

    O uso da clusula TOP merece as seguintes consideraes: - Em Partitioned Views, TOP no pode ser aplicada junto s instrues UPDATE e INSERT. - No h ordem das linhas referenciadas na expresso TOP utilizada com as instruesINSERT, DELETE ou UPDATE, sendo que TOP n retornam linhas aleatrias n como resposta. CLUSULA TOP COM ORDER BY As clusulas TOP e ORDER BY podem e devem ser utilizadas de forma conjunta. Usando novamente a tabela Produtos como exemplo, vamos exibir os trs primeiros produtos de menor preo, dentre a relao de produtos da lista. Usamos a seguinte instruo:

    Que nos resultar nisso:

    Da mesma forma, se desejar retornarmos os dois produtos mais caros da tabela, por exemplo, usaremos a seguinte instruo:

    Que nos resultar nesses valores:

  • 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:

    O resultado ser esse:

    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:

    Que nos resultar nisso:

    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 [email protected]. Abraos.

    At o prximo artigo!

  • SQL Server 2005 Parte 8 Regras de Integridade e Consistncia de Dados e Constraints 5 05UTC julho 05UTC 2010

    Ol pessoal, voltamos com nosso mini-curso de SQL Server.

    Nesta parte, veremos os conceitos sobre integridade e consistncia de dados e os conceitos e exemplos prticos com as constraints. Acompanhem:

    Integridade e Consistncia de Dados Para que um sistema de banco de dados sempre possa fornecer informaes confiveis aos usurios, o administrador deve filtrar algumas aes realizadas a fim de evitar a ocorrncia de possveis erros relacionados s mesmas. Alm disso, esse sistema deve ser capaz de receber informaes de forma constante sem ter que sofrer alteraes com a mesma freqncia.

    O banco de dados deve possibilitar a insero de uma grande quantidade de dados sem que o mesmo precise ser alterado em sua estrutura.

    Diferentes tipos de integridade podem ser estabelecidos quando definida uma relao entre tabelas por meio das chaves primrias e estrangeiras (e outros tipos de chaves que irei descrever mais adiante).

    NULL / NOT NULL NULL (o mesmo que nulo) determina que uma coluna no deva receber nenhum valor, enquanto NOT NULL (no nulo) indica que uma coluna dever sempre receber um valor no momento em que uma linha acrescentada. Veja o exemplo a seguir:

    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:

    Constraints Constraints so objetos usados com a finalidade de estabelecer regras referentes integridade e consistncia nas colunas das tabelas pertencentes a um sistema de banco de dados. Isso importante porque para planejar e criar tabelas devemos garantir a integridade dos dados presentes nas colunas e identificar os valores vlidos para tais dados. Com o objetivo de assegurar a integridade dos dados de uma tabela, o SQL Server nos oferece cinco tipos diferentes de constraints, os quais esto relacionados a cinco tipos de integridades. Veja na tabela abaixo os cinco tipos de constraints e os respectivos tipos de integridade:

    Tipos de integridade Tipos de constraint

    Chave Primria Constraint Primary Key

  • Chave Estrangeira Constraint Foreign Key e Constraint References

    Chave Primria Secundria ou Chave nicas

    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 auto-incremento, sendo contada de 1 em 1 (definido pelos parmetros passados entre os

  • parnteses) e que PRIMARY KEY. Agora d um SELECT * FROM na tabela VENDAS e veja o resultado:

    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.

  • Chaves Estrangeiras Colunas que representam chaves estrangeiras so utilizadas com a finalidade de estabelecer um vnculo entre os dados de tabelas distintas. A criao deste tipo de chave requer a utilizao da constraint Foreign Key. Para compreendermos este assunto de forma mais adequada, destacamos que para criarmos uma chave estrangeira preciso que a coluna da primeira tabela, na qual se encontra a chave primria, seja referenciada pela coluna que se encontra na segunda tabela. Assim, a coluna da segunda tabela torna-se a chave estrangeira.

    Vale destacar que no necessrio que uma constraint Foreign Key em uma tabela esteja vinculada apenas a uma constraint Primary Key em outra tabela. Alm disso, embora aForeign Key possa conter valores nulos, possvel que, nesta situao, a verificao dos valores que formam esta constraint no ocorra. Podemos assegurar que a verificao dos valores de Foreign Key ocorra por meio da especificao do valor NOT NULL em todas as colunas que fazem parte deste tipo de constraint. Para entendermos melhor os conceitos de chaves estrangeiras, vamos usar a tabela deProdutos, muito usada nos artigos anteriores. Antes vamos excluir a coluna CODPRODUTO, que permite valores nulos, para cri-la novamente mais a frente:

    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:

    Na sintaxe acima criei a coluna CODPRODUTO, do tipo INT na tabela VENDAS, e j adicionei a constraint FOREIGN KEY, passando o nome a ela dentro dos parnteses e usando a clusula REFERENCES, apontando a que tabela ser feita o relacionamento dessa chave, que no caso a PRODUTOS. Os parnteses finais so para passar a chave primria que ser relacionada com a chave estrangeira que acabamos de criar. Assim, est criada nossa chave estrangeira, relacionando uma venda a um produto. Voc ver que nossa coluna est com o valor nulo, pois as chaves estrangeiras realmente aceitam valores nulos.

    Regras de Validao Alm de evitar que os usurios insiram valores inexistentes na tabela, as regras de validao dos dados evitam situaes como a ilustrada a seguir:

    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

  • colunas QTDEPRODUTO eVALORPRODUTO. Para isso, devemos criar a constraint CHECK, da seguinte forma:

    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:

    Para alterarmos isso podemos fazer um UPDATE simples no banco.

    Se quisermos fazer outro UPDATE e tentarmos alterar os valores das colunasQTDEPRODUTO e VALORPRODUTO para valores negativos, como a instruo abaixo nos sugere, ocorrer o erro a seguir:

    Msg 547, Level 16, State 0, Line 1 The UPDATE statement conflicted with the CHECK constraint CHK_QTDEPRODUTO. The conflict occurred in database Clientes, table dbo.PRODUTOS, column QTDEPRODUTO. The statement has been terminated.

    Este erro nos diz que o UPDATE que tentamos fazer entrou em conflito com uma de nossas constraints CHECK que criamos anteriormente (ao conflitar com a primeira constraint ele nem tenta a segunda). Observao importante: a constraint FOREIGN KEY tambm permite controlar os valores inseridos nas colunas, porm ela baseia-se em uma lista de valores vlidos obtidos a partir de uma tabela. A constraint CHECK, por sua vez, utiliza uma expresso lgica para definir os valores que podem ser adicionados, sem tomar como base os dados de outra coluna ou tabela. Com todos os procedimentos realizados para evitar a incluso de valores negativos, os dados estaro ntegros e consistentes.

    Valor Padro O valor padro outra regra que pode ser aplicada s colunas de uma tabela. Quando um valor padro estabelecido para uma coluna, o sistema assume que ele deve ser utilizado nas situaes em que o usurio deixa de inserir o valor desejado. Como nem sempre recomendvel trabalhar com colunas que aceitem valores nulos, a recomendao que usemos um valor padro para a coluna por meio da constraint DEFAULT. Para compreendermos melhor, voltemos tabela VENDAS. Vamos definir que o tipo da venda, por padro, ter o valor VISTA (lembrando que esse um exemplo fictcio).

  • Para inserirmos esta constraint a coluna TIPOVENDA, faa a seguinte instruo:

    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 Primary Key(Chave Primria) Uma coluna que definida como chave primria no pode aceitar valores nulos. Em cada tabela, pode haver somente uma constraint de chave primria.

    Constraint Foreign Key(Chave Estrangeira) Vrias colunas podem ser definidas como chave estrangeira. No entanto, para que uma coluna seja definida desta forma, preciso que ela j tenha sido definida como chave primria em outra tabela. As colunas definidas como chave estrangeira podem aceitar valores nulos, e os datatypes das colunas relacionadas devem ser iguais (int com int, por exemplo).

    Constraint Unique(Chave nica) Vrias colunas de uma tabela podem ser definidas como chave nica e, ainda, aceitar valores nulos.

    Constraint Check Diversas colunas de uma tabela podem ser definidas como constraint check. Essas colunas podem aceitar valores nulos, mais isso depende das regras que so determinadas para elas.

    Constraint Default Vrias colunas de uma tabela podem ser definidas como constraint default. Essas colunas podem aceitar valores nulos.

    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 [email protected]. Abraos.

    At o prximo artigo!