Click here to load reader

Tutorial de SQL

  • View
    41

  • Download
    1

Embed Size (px)

Text of Tutorial de SQL

Manuais e recursos para desenvolvimento web www.criarweb.com

Tutorial de SQL

Autores do manual Este manual foi criado pelos seguintes colaboradores de Criarweb.com: Rubn Alvarez(11 captulos)

Paulino Michelazzo

http://www.devmedia.com.br (1 captulo)

Fabio Correa

http://www.devmedia.com.br (1 captulo)

Glaucio Guerra

http://www.devmedia.com.br (1 captulo)

Eber M. Duarte

http://www.devmedia.com.br (1 captulo)

Miguel Angel Alvarez Traduo de JML(1 captulo)

Rosendo Lopez Robles(1 captulo)

Agustin Jareo(12 captulos)

Claudio

http://personal.lobocom.es/claudio/ (15 captulos)

Alfredo Lotar(1 captulo)

Jonathan Soriano Folch(1 captulo)

Pol Salvat

http://www.mistrucos.net (1 captulo)

Sara Alvarez Langa(1 captulo)

Manual Tutorial de SQL: http://www.criarweb.com/sql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

1

Manuais e recursos para desenvolvimento web www.criarweb.com

O que SQLAs aplicaes em rede so cada dia mais numerosas e versteis. Em muitos casos, o esquema bsico de operao uma srie de scripts que dirigem o comportamento de uma base de dados. Devido diversidade de linguagens e de base de dados existentes, a maneira de comunicar entre umas e outras seria realmente complicado de providenciar, a no ser pela existncia de padres que nos permite realizar as operaes bsicas de una forma universal. justamente disso que se trata o Structured Query Language que no mais do que uma linguagem padro de comunicao com base de dados. Falamos portanto, de uma linguagem normalizada que nos permite trabalhar com qualquer tipo de linguagem (ASP ou PHP) em combinao com qualquer tipo de base de dados (MS Access, SQL Server, MySQL...). O fato de ser padro no quer dizer que seja idntico para cada base de dados. Na prtica, determinadas bases de dados implementam funes especficas que no tm necessariamente que funcionar em outras. parte desta universalidade, o SQL possui outras duas caractersticas muito apreciadas. Por uma parte, apresenta potncia e versatilidade notveis que contrasta, por outra, com sua acessibilidade de aprendizagem. Artigo por Rubn Alvarez

Tipos de camposComo sabemos, um banco de dados composto por tabelas onde armazenamos registros catalogados em funo de diferentes campos (caractersticas). Um aspecto prvio a considerar a natureza dos valores que introduzimos nesses campos. Visto que um banco de dados trabalha com todo o tipo de informaes, importante especificar que tipo de valor estamos introduzindo de maneira a, por um lado, facilitar a busca posteriormente e por outro, otimizar os recursos de memria. Cada banco de dados introduz tipos de valores de campo que no necessariamente esto presentes em outros. Entretanto, existe um conjunto de tipos que esto representados na totalidade destes bancos. Estes tipos comuns so os seguintes: Alfanumricos Contm cifras e letras. Apresentam uma longitude limitada (255 caracteres) Existem de vrios tipos, principalmente, inteiros (sem decimais) e reais (com decimais). Possuem duas formas: Verdadeiro e falso (Sim ou No)

Numricos

Booleanos

Manual Tutorial de SQL: http://www.criarweb.com/sql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

2

Manuais e recursos para desenvolvimento web www.criarweb.com

Datas

Armazenam datas facilitando posteriormente sua explorao. Armazenar datas desta forma possibilita ordenar os registros por datas ou calcular os dias entre uma data e outra... So campos alfanumricos de longitude ilimitada. Apresentam o inconveniente de no poder ser indexados (veremos mais adiante o que isto quer dizer). So campos numricos inteiros que incrementam em uma unidade seu valor para cada registro incorporado. Sua utilidade mais que evidente: Servir de identificador j que so exclusivos de um registro.

Memos

Autoincrementveis

Artigo por Rubn Alvarez

Adicionar um novo registroOs registros podem ser introduzidos a partir de sentenas que empregam a instruo Insert. A sintaxe utilizada a seguinte: Insert Into nome_tabela (nome_campo1, nome_campo2,...) Values (valor_campo1, valor_campo2...) Um exemplo simples a partir da nossa tabela modelo a introduo de um novo cliente que seria feito com uma instruo deste tipo: Insert Into clientes (nome, sobrenomes, endereo, cidade, cdigo postal, e-mail, pedidos) Values ('Pedro', 'Palotes', 'Percebe n13', 'Londrina', '123456', '[email protected]', 33) Como se pode ver, os campos no numricos ou booleanos vo delimitados por apstrofes: '. Tambm interessante ver que o cdigo postal foi salvo como um campo no numrico. Isto devido a que em determinados pases (Inglaterra,por exemplo) os cdigos postais contm tambm letras.Nota: Se desejarmos praticar com um banco de dados que est vazio, primeiro devemos criar as tabelas que vamos preencher. As tabelas tambm se criam com sentenas SQL e aprendemos a fazer isso no ltimo captulo. Embora, de qualquer forma, pode ser que seja mais cmodo utilizar um programa com interface grfica, como Access, que pode nos servir para criar as tabelas em banco de dados do prprio Access ou por ODBC a outros bancos de dados como SQL Server ou MySQL, por dar dois exemplos. Outra possibilidade em um banco de dados como MySQL, seria criar as tabelas utilizando um software como PhpMyAdmin.

Obviamente, no imprescindvel preencher todos os campos do registro. Porm, poder ser que determinados campos sejam necessrios. Estes campos necessrios podem ser definidos quando construirmos nossa tabela mediante o banco de dados.Manual Tutorial de SQL: http://www.criarweb.com/sql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 3

Manuais e recursos para desenvolvimento web www.criarweb.com

Nota: Se no inserirmos um dos campos no banco de dados se iniciar com o valor padro que tivermos definido na hora de criar a tabela. Se no houver um valor padro, provavelmente se inicie como NULL (vazio), no caso de que este campo permita valores nulos. Se esse campo no permitir valores nulos (isso se define tambm ao criar a tabela) o mais seguro que a execuo da sentena SQL nos d um erro.

muito interessante, j veremos mais adiante o porqu, o introduzir durante a criao de nossa tabela um campo auto-incrementvel que nos permita atribuir um nico nmero a cada um dos registros. Deste modo, nossa tabela clientes apresentara para cada registro um nmero exclusivo do cliente que ser muito til quando consultarmos vrias tabelas simultaneamente. Artigo por Rubn Alvarez

Apagar um registroPara apagar um registro nos servimos da instruo Delete. Neste caso devemos especificar qual ou quais so os registros que queremos apagar. Por isso, necessrio estabelecer uma seleo que se realize mediante a clusula Where. A forma de selecionar ser vista; detalhadamente em captulos posteriores. Agora, nos contentaremos em mostrar qual o tipo de sintaxe utilizada para efetuar estas supresses: Delete From nome_tabela Where condicoes_de_selecaoNota: Se desejarmos praticar com um banco de dados que estiver vazio, primeiro devemos criar as tabelas que vamos preencher. As tabelas tambm se criam com sentenas SQL que aprendemos a fazer no ltimo captulo.

Se quisermos, por exemplo, apagar todos os registros dos clientes que se chamarem Pedro, faramos da seguinte forma: Delete From clientes Where nome='Pedro' Temos que ter cuidado com esta instruo, pois se no especificarmos uma condio com Where, o que estamos fazendo apagar toda a tabela: Delete From clientes Artigo por Rubn Alvarez

Atualizar um registroUpdate a instruo que nos serve para modificar nossos registros. Como para o caso de Delete, necessitamos especificar por meio de Where quais so os registros que queremos fazer efetivas nossas modificaes. Ademais, obviamente, teremos que especificar quais so os

Manual Tutorial de SQL: http://www.criarweb.com/sql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

4

Manuais e recursos para desenvolvimento web www.criarweb.com

novos valores dos campos que desejamos atualizar. A sintaxe deste tipo: Update nome_tabela Set nome_campo1 = valor_campo1, nome_campo2 = valor_campo2,... Where condicoes_de_selecao Um exemplo aplicado: Update clientes Set nome='Jos' Where nome='Pedro' Mediante esta sentena mudamos o nome Pedro por Jos em todos os registros cujo nome seja Pedro. Aqui tambm h que ser cuidadoso de no esquecer de usar Where, do contrrio, modificaramos todos os registros de nossa tabela. Artigo por Rubn Alvarez

Seleo de tabelas IA seleo total ou parcial de uma tabela se realiza mediante a instruo Select. Em tal seleo h que especificar: -Os campos que queremos selecionar -A tabela na qual fazemos a seleo Em nossa tabela modelo de clientes poderamos fazer, por exemplo, uma seleo do nome e endereo dos clientes com uma instruo deste tipo: Select nome, endereo From clientes Se quisssemos selecionar todos os campos, ou seja, toda a tabela, poderamos utilizar o asterisco * da seguinte forma: Select * From clientes Tambm muito til filtrar os registros mediante condies que vem expressas depois da clusula Where. Se quisssemos mostrar os clientes de uma determinada cidade usaramos uma expresso como esta: Select * From clientes Where cidade Like 'Rio de janeiro' Ademais, poderamos ordenar os resultados em funo de um ou vrios de seus campos. Para este ltimo exemplo poderamos orden-los por nome assim: Select * From clientes Where cidade Like 'Rio de janeiro' Order By nome Tendo em conta que pode haver mais de um cliente com o esmo nome, poderamos dar um segundo critrio que poderia ser o sobrenome: Select * From clientes Where cidade Like 'Rio de Janeiro' Order By nome, sobrenomeManual Tutorial de SQL: http://www.criarweb.com/sql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 5

Manuais e recursos para desenvolvimento web www.criarweb.com

Se invertssemos a ordem " nome,sobrenome " por " sobrenome, nome ", o resultado seria diferente. Teramos os clientes ordenados por sobrenome e aqueles que tivessem sobrenomes idnticos se sub-classificariam pelo nome. possvel tambm classificar por ordem inversa. Se por exemplo quisssemos ver nossos clientes por ordem de pedidos realizados tendo aos maiores em primeiro lugar escreveramos algo assim: Select * From clientes Order By pedidos Decres Uma opo interessante a de efetuar selees sem coincidncia. Se por exemplo, buscssemos saber em que cidades se encontram nossos clientes sem a necessidade de que para isso aparea vrias vezes a mesma cidade, usaramos uma sentena desta classe: Select Distinct cidade From clientes Order By cidade Assim evitaramos ver repetido Rio de Janeiro tantas vezes quantos clientes tivermos nessa cidade. Artigo por Rubn Alvarez

Seleo de tabelas IIQuisemos compilar na forma de tabela certos operadores que podem ser teis em determinados casos. Estes operadores sero utilizados depois da clusula Where e podem ser combinados habilmente mediante parnteses para otimizar nossa seleo a nveis bastante altos. Operadores matemticos: > < Maior que Menor que

>= Maior ou igual que