banco de dados em rede aula – comandos sql no mysql prof. francisco olivar junior

41
Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior http://www.bancodedadosemrede.worpress.com

Upload: internet

Post on 16-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

Banco de Dados em Rede

Aula – Comandos SQL no MYSQLProf. Francisco Olivar Junior

http://www.bancodedadosemrede.worpress.com

Page 2: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

Modelo Entidade-Relacionamento (ER)

2

•Revisão Aula Anterior•Comandos DDL•Comandos DML•Exercício

Plano de Aula

Page 3: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

Introdução ao SQL – Criando o Banco de Dados

• Podemos criar um banco de dados qualquer com o comando:CREATE DATABASE <nome_do_banco>;

Exemplo: CREATE DATABASE FARMACIA;

OBS: Após criar o banco de dados para criar as tabelas dentor desse novo banco de dados utilize o comando:

USE <nome_do_banco>Exemplo:USE FARMACIA;

Comandos DDL

Page 4: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

Comandos DDL

Create Table Nome_da_Tabela( campo_1 tipo_do_campo restrição_do_campo, ... campo_n tipo_do_campo restrição_do_campo, Constraint x Primary Key ( lista de campos que compõem a chave primaria)) Tipos de Dados Usados Na Definição dos Campos- BigInt: inteiros de 18 dígitos.- Blob: ( binary large object ) – tem tamanho variãvel de até 64 Kbytes e é usado para imagens, aúdio, vídeo.-Char(n) ou Character(n) : armazena “n“ caracteres (máximo 32.767).-Date: armazena datas e usa 64 bits.- Decimal(precisão, escala): valores decimais de tamanho variável.- Float: armazena valores de ponto flutuante com precisão de 7 dígitos.- Integer: valores inteiros de 32 bits.- Numeric: valores decimais de tamanho variável.- SmallInt: valores inteiros de 16 bits.-VarChar(n): armazena “n” caracteres.

Page 5: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

Introdução ao SQL - Criando Tabelas

• Podemos criar uma tabela qualquer dentro de um banco de dados. A sintaxe básica para criarmos é:CREATE TABLE nome_tabela (

nome_campo_1 tipo_1,nome_campo_2 tipo_2, ...nome_campo_n tipo_n,

PRIMARY KEY ( campo_x,...));

Comandos DDL

Page 6: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

• CREATE TABLE é o comando usado para criação da tabela e deve ser seguida pelo nome que daremos à tabela. Dentro do comando, devemos definir os nomes dos campos de acordo com a conveniência do banco de dados, e determinar o tipo de dado que poderá ser incluído neste campo.

• PRIMARY KEY define a chave primária da tabela, isto é, o campo que serve como chave da tabela e que não pode ser repetido.

• NOT NULL é usado quando desejamos que um campo seja de preenchimento obrigatório.Ex:CREATE TABLE nome_tabela (

nome_campo_1 tipo_1 NOT NULL,nome_campo_2 tipo_2, ...nome_campo_n tipo_n, PRIMARY KEY(campo_x,...));

Introdução ao SQL - Criando Tabelas

Comandos DDL

Page 7: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

Introdução ao SQL - Tipos de Dados

• Tipos de dados definem os tipos de informação que podem ser inseridos em um campo. Abaixo os tipos suportados por um banco de dados Oracle:

VARCHAR(N) : Permite a inclusão de dados alfanuméricos com tamanho pré-definido. O número de caracteres é definido entre os parênteses.Limite de 4000 bytes.

NUMBER(N,D) : Permite a inclusão de números positivos ou negativos de ponto flutuante. “N” corresponde ao número máximo de Digitos, sem considerar o ponto decimal e ”D” é o número máximo de casas decimais. Limite = 38 dígitos

CHAR(N) : Permite a inclusão de caracteres. “N” corresponde ao tamanho fixo do campo em bytes. Limite =2000 bytes. Se um dado ocupar menos que o definido, será completado com espaços em branco à direita

DATE : Colunas do tipo DATE ocupam sempre 7 bytes internamente. A faixa de datas no Oracle 9i vai de 01-janeiro-4712 a.C até 31-dezembro-9999 d.C. Além da data(dia, mês e ano), o tipo DATE também contém o horário(hora, minuto e segundo). Para precisão de frações de segundo, considerar o tipo de dado TIMESTAMP

Comandos DDL

Page 8: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

Introdução ao SQL - Tipos de Dados

• Exemplo:Como exemplo do uso do comando CREATE TABLE, imaginemos a necessidade de uma tabela que deva possuir os dados dos clientes de uma loja.

CREATE TABLE Cliente (Codigo INT NOT NULL,Nome VARCHAR (60) NOT NULL,Data_Nascimento DATE,Telefone CHAR (8),PRIMARY KEY (Codigo) );

Comandos DDL

Page 9: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

Introdução ao SQL - Tipos de Dados

• Neste comando, criamos uma tabela chamada Cliente. Esta tabela contém quatro campos:

O primeiro campo é o Código do cliente. Este campo será utilizado como chave primária de forma que não poderá se repetir nunca. Desta forma o campo deve ser sempre preenchido (NOT NULL), é numérico do tipo inteiro (INT).

O campo Nome é do tipo VARCHAR (60), ou seja aceita dados alfa-numéricos com até 60 caracteres. No entanto se um nome for inserido com menos de 60 caracteres, o número de bytes consumidos pelo campo será de acordo com o nome inserido.

O campo de Data_Nascimento é do tipo DATE, ou seja, uma data, que no entanto não de preenchimento obrigatório (por isto não foi declarado o NOT NULL).

O campo Telefone foi determinado como sendo alfa-numérico com oito caracteres definidos, e mesmo que sejam utilizados menos caracteres, o número de bytes consumidos serão sempre os mesmos independente dos dados. Isto é útil para dados alfanuméricos que não variam de tamanho, como o caso de UF no Brasil, cuja abreviação sempre são de dois caracteres.

A instrução PRIMARY KEY define qual dos campos será a chave primária e não pode ser repetido, sendo o diferenciador entre os diversos clientes que sejam inseridos nesta tabela.

Comandos DDL

Page 10: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

Ao criarmos uma tabela dentro de um banco de dados devemos ter em mente as Regras de Integridade, que garantam a consistência, integridade e não redundância dos dados. Entre estas regras podemos englobar as chaves primárias, checagem e chave estrangeira.

Regras de Integridade

Page 11: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

• CHAVE PRIMÁRIANo exemplo vimos a seguinte declaração na criação da tabela:

PRIMARY KEY ( campo_x,...);

Esta declaração diz que os campos inseridos entre os parênteses formam a chave primária da tabela. As chaves primárias funcionam como os campos que diferenciam os dados uns dos outros, e que não podem ser repetidos de nenhuma forma. Por exemplo, em nossa tabela Cliente, o código do Cliente funciona como a chave-primária, ou seja, os clientes podem até ter o mesmo nome, endereço ou telefone, mas terão códigos diferentes uns dos outros. Se dois códigos iguais forem inseridos o SGBD retornará erro.

Regras de Integridade

Page 12: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

• CHAVE ESTRANGEIRA

A chave estrangeira é uma cláusula que deve ser incluída quando possuímos mais de duas tabelas em um banco de dados. Através da chave estrangeira estabelecemos as relações entre duas ou mais tabelas. A chave estrangeira desta forma referencia o campo que é chave primária de outra tabela.

FOREIGN KEY (Campo1, Campo2, Campo3 ...) REFERENCES Nome_Tabela2 (Nome_Chave);

Regras de Integridade

Page 13: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

• Checagem

Podemos inserir em uma tabela depois do campo chave primária e antes do último parêntese a cláusula:

CHECK Nome _Campo IN (valor1 , valor2, valor n);

Esta cláusula força a um campo a aceitar apenas os valores especificados entre os parênteses. Isto pode ser útil para definir, por exemplo, campos como sexo. Desta forma forçamos as opções através de:CHECK Sexo IN ('M','F');

Onde o campo Sexo só podem assumir a forma M (Masculino) ou F (Feminino).

Regras de Integridade

Page 14: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

• Uníco Está Contraint determina que uma coluna não poderá ter 2 linhas com o mesmo valor.

• Não NuloDetermina que a coluna tem preenchimento obrigatório

Nome_Campo VARCHAR2(40) NOT NULL UNIQUE

Regras de Integridade

Page 15: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

• DESCRIBE

Após criarmos uma tabela, elas podem ser manipuladas de diversas formas, inserindo, alterando ou excluindo dados. Podemos visualizar a estrutura e campos de uma tabela criada utilizando o comando DESCRIBE ou DESC:DESCRIBE Nome_Tabela;Ou:DESC Nome_Tabela;

Comandos do SGDB

Page 16: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

• DESCRIBE

Após criarmos uma tabela, elas podem ser manipuladas de diversas formas, inserindo, alterando ou excluindo dados. Podemos visualizar a estrutura e campos de uma tabela criada utilizando o comando DESCRIBE ou DESC:DESCRIBE Nome_Tabela;Ou:DESC Nome_Tabela;

Comandos do SGDB

Page 17: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

O Data Definition Language parte (DDL) das tabelas de banco de dados SQL permite que seja criado, modificado ou excluído. Nós também podemos definir índices (chaves), especifique as ligações entre as tabelas, e impor restrições entre as tabelas do banco de dados.

As demonstrações mais importantes DDL em SQL são:

CREATE TABLE - cria uma nova tabela no bancoALTER TABLE - altera (muda) uma tabela de banco de dadosDROP TABLE - apaga uma tabela de banco de dadosCREATE INDEX - cria um índice (chave de busca)DROP INDEX - exclui um índice

Comandos DDL

Page 18: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

SQL (Structured Query Language) é uma sintaxe para a execução de consultas. Mas a linguagem SQL inclui também uma sintaxe para atualizar, inserir e excluir registros.Estes comandos de consulta e atualização, juntos, formam a linguagem de manipulação de dados (DML) parte de SQL:

SELECT - extrai dados de uma tabela de banco de dadosUPDATE - atualiza os dados em uma tabela de banco de dadosDELETE - exclui dados de uma tabela de banco de dadosINSERT INTO - insere novos dados em uma tabela de banco de dados

Comandos DML

Page 19: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

SQL Database TablesO BD com a tabela “Persons").

LastName FirstName Address City

Hansen Ola Timoteivn 10 Sandnes

Svendson Tove Borgvn 23 Sandnes

Pettersen Kari Storgt 20 Stavanger

Comando DML

Page 20: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

O Comando de Consulta nas tabelas é :

SELECT LastName FROM Persons

Resultado:

LastName

Hansen

Svendson

Pettersen

Comando DML

Page 21: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

A instrução SELECT é usado para selecionar dados de uma tabela. O resultado tabular é armazenado em uma tabela de resultados (o chamado conjunto de resultados).

Syntax

SELECT column_name(s)FROM table_name

Sintax SELECT

Page 22: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

Para selecionar as colunas com o nome “lastName" e “FirstName", use uma instrução SELECT como este:SELECT LastName, FirstName FROM Persons

Persons

LastName FirstName Address City

Hansen Ola Timoteivn 10 Sandnes

Svendson Tove Borgvn 23 Sandnes

Pettersen Kari Storgt 20 Stavanger

výsledok

LastName FirstName

Hansen Ola

Svendson Tove

Pettersen Kari

Sintax SELECT

Page 23: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

Para Selecionar todas colunas da tabela “Persons” use o simbolo *

SELECT * FROM Persons

LastName FirstName Address City

Hansen Ola Timoteivn 10 Sandnes

Svendson Tove Borgvn 23 Sandnes

Pettersen Kari Storgt 20 Stavanger

Selecionando todas Colunas

Sintax SELECT

Page 24: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

A palavra-chave DISTINCT é usada para retornar somente valores distintos (diferentes).A instrução SELECT retorna informações de colunas da tabela. Mas o que se só deseja selecionar elementos distintos?Com o SQL, tudo o que precisamos fazer é adicionar uma palavra-chave DISTINCT para a instrução SELECT:

Syntax

SELECT DISTINCT column_name(s)

FROM table_name

SELECT Distinct

Page 25: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

Para selecionar todos valores da coluna de nome "Company" demos usar SELECT :

SELECT Company FROM Orders

Orders

Company OrderNumber

Sega 3412

W3Schools 2312

Trio 4678

W3Schools 6798

Company

Sega

W3Schools

Trio

W3Schools

SELECT Distinct

Page 26: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

Para selecionar apenas os valores diferentes de a coluna denominada "Company" usamos uma instrução SELECT DISTINCT assim

SELECT DISTINCT Company FROM Orders

Company

Sega

W3Schools

Trio

Orders

Company OrderNumber

Sega 3412

W3Schools 2312

Trio 4678

W3Schools 6798

SELEC Distinct

Page 27: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

The WHERE clause is used to specify a selection criterion.

The WHERE Clause

To conditionally select data from a table, a WHERE clause can be added to the SELECT statement.

Syntax

SELECT column FROM table

WHERE column operator value

SELECT Distinct

Page 28: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

Com a cláusula WHERE, os seguintes operadores podem ser usados:

Operator Description

= Equal

<> Not equal

> Greater than

< Less than

>= Greater than or equal

<= Less than or equal

BETWEEN Between an inclusive range

LIKE Search for a pattern

Nota: Em algumas versões do SQL o operador <> pode ser escrita como =!

Cláusula WHERE

Page 29: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

Para selecionar apenas as pessoas que vivem na cidade "Sandnes", que adicionar uma cláusula WHERE para a instrução SELECT:

SELECT * FROM PersonsWHERE City='Sandnes'

LastName FirstName Address City Year

Hansen Ola Timoteivn 10 Sandnes 1951

Svendson Tove Borgvn 23 Sandnes 1978

Svendson Stale Kaivn 18 Sandnes 1980

Pettersen Kari Storgt 20 Stavanger 1960

LastName FirstName Address City Year

Hansen Ola Timoteivn 10 Sandnes 1951

Svendson Tove Borgvn 23 Sandnes 1978

Svendson Stale Kaivn 18 Sandnes 1980

Cláusula WHERE

Page 30: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

Note que nós usamos aspas simples em torno dos valores condicional nos exemplos.SQL usa aspas simples em torno de valores de texto (a maioria dos sistemas de banco de dados também aceitam aspas). Valores numéricos não deve ser colocada entre aspas.Para valores de texto:

Este é o correto:

SELECT * FROM Persons WHERE FirstName='Tove'

Este é o Errado::

SELECT * FROM Persons WHERE FirstName=Tove

Aspas

Page 31: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

A condição LIKE é usado para especificar uma busca por um padrão em uma coluna.

SyntaxSELECT column FROM table

WHERE column LIKE pattern

A "%" sinal pode ser usado para definir wildcards (faltando letras no padrão) antes e após o padrão.

Condição LIKE

Page 32: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

A seguinte instrução SQL retornará pessoas com nomes que começam com um 'O':

SELECT * FROM personsONDE FirstName LIKE '% O'

A seguinte instrução SQL retornará pessoas com nomes que terminam com um 'a':

SELECT * FROM personsONDE FirstNameLIKE '% a'

Condição LIKE

Page 33: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

A seguinte instrução SQL retornará pessoas com primeiros nomes que contenham o padrão 'la':

SELECT * FROM Persons

WHERE FirstName LIKE '%la%'

Condição LIKE

Page 34: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

A instrução INSERT INTO é utilizado para inserir novas linhas em uma tabela.

Syntax

INSERT INTO table_name

VALUES (value1, value2,....)

Você também pode especificar as colunas para o qual você deseja inserir dados:

INSERT INTO table_name (column1, column2,...)

VALUES (value1, value2,....)

INSERT INTO

Page 35: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

LastName FirstName Address City

Pettersen Kari Storgt 20 Stavanger

SQL statement:

INSERT INTO Persons

VALUES ('Hetland', 'Camilla', 'Hagabakka 24', 'Sandnes')

LastName FirstName Address City

Pettersen Kari Storgt 20 Stavanger

Hetland Camilla Hagabakka 24 Sandnes

INSERT INTO

Page 36: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

LastName FirstName Address City

Pettersen Kari Storgt 20 Stavanger

Hetland Camilla Hagabakka 24 Sandnes

Especificando a coluna no SQL:

INSERT INTO Persons (LastName, Address)

VALUES ('Rasmussen', 'Storgt 67')

LastName FirstName Address City

Pettersen Kari Storgt 20 Stavanger

Hetland Camilla Hagabakka 24 Sandnes

Rasmussen Storgt 67

INSERT INTO

Page 37: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

A instrução UPDATE é usada para modificar os dados em uma tabela.

Syntax

UPDATE table_name

SET column_name = new_value

WHERE column_name = some_value

UPDATE

Page 38: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

LastName FirstName Address City

Nilsen Fred Kirkegt 56 Stavanger

Rasmussen Storgt 67

Queremos adicionar um primeiro nome para a pessoa com um sobrenome de "Rasmussen":

UPDATE Person SET FirstName = 'Nina'WHERE LastName = 'Rasmussen'

LastName FirstName Address City

Nilsen Fred Kirkegt 56 Stavanger

Rasmussen Nina Storgt 67

UPDATE

Page 39: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

Queremos mudar o endereço e adicionar o nome da cidade:

UPDATE Person

SET Address = 'Stien 12', City = 'Stavanger'

WHERE LastName = 'Rasmussen'

LastName FirstName Address City

Nilsen Fred Kirkegt 56 Stavanger

Rasmussen Nina Stien 12 Stavanger

LastName FirstName Address City

Nilsen Fred Kirkegt 56 Stavanger

Rasmussen Storgt 67

UPDATE

Page 40: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

A instrução DELETE é usado para apagar linhas de uma tabela.

Syntax

DELETE FROM table_name

WHERE column_name = some_value

DELETE

Page 41: Banco de Dados em Rede Aula – Comandos SQL no MYSQL Prof. Francisco Olivar Junior

LastName FirstName Address City

Nilsen Fred Kirkegt 56 Stavanger

Rasmussen Nina Stien 12 Stavanger

"Nina Rasmussen" vai ser excluído

DELETE FROM Person WHERE LastName = 'Rasmussen'

LastName FirstName Address City

Nilsen Fred Kirkegt 56 Stavanger

DELETE