Click here to load reader

Aula 11 banco de dados

Embed Size (px)

Citation preview

Banco de Dados

Jorge vilaBanco de Dados

Tabelas dos Exemplos As tabelas a seguir sero usadas nos exemplos que se seguem: CLIENTE (cod_cli, nome_cli, endereco, cidade, cep, uf) VENDEDOR (cod_vend, nome_vend, sal_fixo, faixa_comiss) PEDIDO ( num_ped, prazo_entr, cd_cli, cd_vend) ITEM_PEDIDO (no_ped, cd_prod, qtd_ped) PRODUTO (cod_prod, unid_prod, desc_prod, val_unit)

Criao de um Bando de Dados SQLPara a criao de um banco de dados em SQL temos os seguintes comandos:Creat Data Base;Para conhecer quais os bancos de dados existentes dentro do MySQL basta usar o comando SHOW DATABASES. SHOW significa mostrar, apresentar, exibir e DATABASES significa bases de dados ou bancos de dados, ou seja, manda mostrar os bancos de dados existentes.

Criao e Destruio de TabelasO comando CREATE TABLE usado para criar uma tabela. A sua forma geral : CREATE TABLE (, ); onde: dever ser substitudo pelo nome da tabela a ser criada. deve ser substituda pela relao das colunas da tabela e seus respectivos tipos de dados (por exemplo, smallint, char, varchar, integer, number, float e etc). deve ser substituda pela lista das colunas que so tratadas como chaves estrangeiras.

Script de Criao das Tabelas dos ExemplosAlgumas colunas podem receber o valor NULL (nulo), e a coluna definida como chave primria, alm de no poder receber NULL.

Script de Criao das Tabelas dos Exemplos

Criao e Destruio de TabelasPara excluirmos uma tabela existente devemos usar o comando DROPTABLE. A sua forma geral :DROP TABLE ;onde: dever ser substitudo pelo nome da tabela a ser excluda.Exemplosdrop table item_pedido;drop table pedido;drop table vendedor;drop table produto;drop table cliente;

Executando Consultas sobre as TabelasSelecionando Colunas Especficas de uma Tabela

Problema:Listar todos os produtos com as respectivas descries, unidades e valores unitrios.

Executando Consultas sobre as TabelasProblema:Listar os nomes dos clientes, as cidade e os estados onde eles esto localizados.

EXERCICIO1. Com base no que voc j aprendeu sobre banco de dados faa uma produo textual de no mnimo 5 linhas descrevendo o diagrama abaixo:

EXERCICIO2. Marque V para verdadeiro e F para falso:( ) CREATE, DROP, ALTER so comandos da Linguagem de Definio deDados (DDL);( ) possvel usarmos o comando CREATE para alterar estruturas da base de dados.( ) O comando UPDATE realiza a excluso de registros em uma tabela;( ) Para apagar linhas da tabela tanto faz usar o comando DROP como o DELETE.( ) O comando INSERT realiza a incluso de um ou mais registros em uma tabela;A sequncia correta seria:a) V - V - F V - F;b) V - F - F V - V;c) F - V - V F - F;d) V - F - F F - V;

EXERCICIO3. Relacione a primeira coluna com a segunda e no final, indique a respostacorreta:1 - CREATE ( ) Comando responsvel por inserir valores em uma tabela;2 INSERT ( ) - Responsvel por retornar registros de uma tabela;3 DROP ( ) - Remove registros de uma tabela;4 SELECT ( ) - Tem o poder de remover estruturas do banco de dados;5 DELETE ( ) - Responsvel por criar estruturas no banco de dados;A sequncia correta seria:a) 4 - 2 - 1 - 3 - 5;b) 2 - 4 - 5 - 3 - 1;c) 3 - 5 - 4 - 2 - 1;d) 2 - 1 - 3 - 4 - 5;

INTRODUO AO MySQL1 Passo:Aps a Instalao do MySQL no seu computador, abra o MySQL Command Line Client. No meu caso eu baixei a verso 5.5 e sempre deixo fixado no Menu Iniciar, mas qualquer coisa s voc seguir o caminho (Iniciar-> Todos os Programas-> MySQL-> MySQL Server).

INTRODUO AO MySQL2 Passo:Depois de Aberto o MySQL, ele pede para que voc entre com o password, ou seja, com a senha que voc definiu na hora da instalao.

INTRODUO AO MySQL3 Passo:Para conhecer quais os bancos de dados existentes dentro do MySQL basta usar o comando SHOW DATABASES. SHOW significa mostrar, apresentar, exibir e DATABASES significa bases de dados ou bancos de dados, ou seja, manda mostrar os bancos de dados existentes.

INTRODUO AO MySQLTIPOS DE DADOS NUMRICO:

TIPODESCRIOBITo mesmo que TINYINTBOOLo mesmo que TINYINTSMALLINT[(M)]inteiros pequenosINT[(M)]inteiros regularesINTEGER[(M)]o mesmo que INTBIGINT[(M)]inteiros grandesFLOAT(preciso)nmeros de ponto flutuante de preciso simples ou duplaFLOAT[(M,D)]nmeros de ponto flutuante de preciso simples. O mesmo que FLOAT(4)DOUBLE[(M,D)]nmeros de ponto flutuante de preciso dupla. O mesmo que FLOAT(8)DOUBLEO mesmo que DOUBLE[(M,D)]PRECISION[(M,D)]O mesmo que DOUBLE[(M,D)]REAL[(M,D)]O mesmo que DOUBLE[(M,D)]DECIMAL[(M,D)]nmero de ponto flutuante armazenado comocharNUMERIC[(M,D)]O mesmo que DECIMALDEC[(M,D)]O mesmo que DECIMAL

INTRODUO AO MySQLTIPOS DE DADOS DATA:

TIPODESCRIODATEdata. Exibido como YYYY-MM-DDTIMEhora. Exibido como HH:MM:SSDATETIMEdata e hora. Exibido como YYYY-MM-DD HH:MM:SSTIMESTAMP[(M)]registro de data e hora til para transaes. Os formatos de exibio podem ser:TIMESTAMP YYYYMMDDHHMMSS TIMESTAMP(14) YYYYMMDDHHMMSS TIMESTAMP(12) YYMMDDHHMMSS TIMESTAMP(10) YYMMDDHHMM TIMESTAMP(8) YYYYMMDD TIMESTAMP(6) YYMMDD TIMESTAMP(4) YYMM TIMESTAMP(2) YY YEAR[(2)]anoYEAR[(4)]ano

INTRODUO AO MySQLTIPOS DE DADOS STRING:

TIPODESCRIO[NATIONAL] CHAR(M)[BINARY]string de comprimento fixoM.NATIONALespecifica que o conjunto de caracteres padro (ANSI SQL) ser utilizado.BINARYespecifica que os dados devem ser tratados de modo a no haver distino entre maisculas e minsculas (o padro distinguir).CHARo mesmo que CHAR(1)[NATIONAL]string de comprimento varivelVARCHAR(M) [BINARY]string de tamanho varivel. O mesmo que [BINARY].TINYBLOBBLOB pequenoTINYTEXTTEXT pequenoBLOBBLOB normalTEXTTEXT normalMEDIUMBLOBBLOB mdioMEDIUMTEXTTEXT mdioLONGBLOBBLOB longoLONGTEXTTEXT longoENUM('valor1','valor2',...)armazenam um dos valores listados ou NULLSET('valor1','valor2',...)armazenam um ou mais dos valores listados ou NULL

AtenoMuito cuidado, pois o mysql tem como delimitador o ponto e vrgula (;), ou seja, se um ponto e vrgula (;) aparecer em meio a um cdigo, o mysql entende que ali, o comando est encerrado e no h necessidade de continuidade. Muitos erros acontecem por falta do (ponto e vrgula) no final do comando.Outra dica. No linux, o mysql case-sensitive por padro. No windows no, tanto faz letras maisculas como minsculas. Para desabilitar a sensibilidade do Linux, habilite o parmetro "lower_case_table_names" no MySQL e pronto.

NOT NULLSo usados quando campo no pode ser nulo, ou seja, no pode estar em branco.Tenha em mente que NULL diferente de 0 (zero) e uma string vazia, ou seja, campos com valores NULL so aqueles que no possuem nenhum valor (NULL significa ausncia de valor).

AUTO_INCREMENTO atributoAUTO_INCREMENTpode ser usado para gerar uma identificao nica para um novo registro:

PRIMARY KEYdefine a chave primria da tabela, isto , o campo que serve como chave da tabela e que no pode ser repetido.Exemplo:Vamos criar uma tabela para cadastro de clientes.

CREATE TABLE clientes(codigo int(4) AUTO_INCREMENT,nome varchar(30) NOT NULL,email varchar(50),data_nascimento date,PRIMARY KEY (codigo))

FOREIGN KEYOs Bancos de Dados Relacionais so formados de vrias tabelas e utilizam chaves como forma de referenciar outras tabelas. Esse relacionamento entre as tabelas feito atravs das chaves estrangeiras. Quando falamos de chave estrangeira usamos a sigla FK referente palavra FOREIGN KEY.Por exemplo, poderamos abaixo fazer a tabela CLIENTE com os campos cliente_id, nome, endereo cidade e a tabela PEDIDO com os campos pedido_id, cliente_id, preo, data para armazenar os pedidos.

FOREIGN KEYOs campos com sublinhado simples so as chaves primrias (PK) que do uma identificao nica a cada item, e o campo com pontilhado uma chave estrangeira atravs da qual a tabela CLIENTE se relaciona com a tabela PEDIDO.

FOREIGN KEYEsse tipo de representao evita que para cada pedido precisemos colocar a toda a identificao do cliente, basta armazenarmos o id do cliente na tabela de pedidos e atravs dele podemos identificar de quem o pedido. Uma chave estrangeira sempre se relaciona com a chave primria da tabela do relacionamento.Tratando de cdigos, Vamos criar um banco de dados chamado VENDA e as duas tabelas CLIENTE e PEDIDO com os campos que foram definidos.A definio da chave estrangeira segue o seguinte padro:FOREIGN KEY REFERENCES < tabela da PK>()

FOREIGN KEYOBS: o nome e o tipo de dado da PK devem ser o mesmo da FK. A palavra REFERENCES usada para dizer qual tabela a FK est referenciando.Exemplo:create table recado (id_recado INTEGER not null auto_increment,assunto VARCHAR(100),recado TEXT,datahora DATETIMEid_user INTEGER not null,primary key (id_recado),FOREIGN KEY (id_usr) REFERENCES usuario (id_usr))

EXERCICIO pg(88,89 e 90)1) Comando SQL para criar um banco de dados chamado locadoraa) create databases locadora;b) create locadora;c) create database locadora;d) use database locadora;2) Comando SQL para apagar um banco de dados chamado "supermercado"a) delete database supermercado;b) drop table supermecado;c) drop supermercado;d) drop database supermercado;e) delete supermercado;3) Comando SQL para entrar no banco de dados chamado "EEEP"a) use database EEEP;b) use table EEEP;c) create EEEP;d) usage EEEP;e) use EEEP;4) Comando SQL para mostrar todos os bancos de dados existentes;a) show database;b) show tables;c) show databases;d) show BD;

EXERCICIO5) Comando SQL para apagar a tabela "produtos" do BD "supermercado"a) drop table produtos;b) delete table produtos;c) drop supermercado;d) drop table supermercado;e) drop produtos;6) Assinale a opo correta:O comando DESCRIBE gera o mesmo resultado do comando________________ .A opo que melhor completa a sentena a) SHOW DETAILS FROM;b) SELECT DETAILS FROM;c) SHOW FIELDS FROM;d) SELECT FIELDS FROM;

EXERCICIO7) Relacione a primeira coluna com a segunda, aps, indique a sequncia correta:1 - ALTER TABLE ADD ( ) Usado para apagar uma tabela de um BD2 - ALTER TABLE CHANGE ( ) Usado para trocar o nome e o tipo de uma coluna3- DROP TABLE ( ) Usadas para adicionar uma coluna em uma tabelaA sequncia correta seria:a) 3 - 1 - 2;b) 2 - 3 - 1;c) 1 - 2 - 3;d) 3 - 2 - 1;

EXERCICIO8) Marque a opo em que a criao da tabela "filmes" esta feito corretamente:

EXERCICIO9) Com base no exemplo que criamos chave primria(PK) e chave estrangeira(FK), crie um banco de dados EMPRESA e as duas tabelas DEPTO e EMP descritas abaixo com suas respectivas colunas.

Escreva o cdigo da criao

EXERCICIOCrie o banco de dados de locao de automvel mediante a este diagrama:

SelectO comando SQL que nos permite realizar consultas ao banco de dados o comando SELECT.EX:SELECT * FROM DEPT;O exemplo utiliza o coringa "*" para selecionar as colunas na ordem em que foram criadas. A instruo Select, como pudemos observar seleciona um grupo de registros de uma (ou mais) tabela(s). No caso a instruo From nos indica a necessidade de pesquisarmos tais dados apenas na tabela Dept.

SelectWhere como base das Restrio de tuplas.A clusula "where" corresponde ao operador restrio da lgebra relacional. Contm a condio que as tuplas devem obedecer a fim de serem listadas. Ela pode comparar valores em colunas, literais, expresses aritmticas ou funes.Operadores lgicos:operador significado= igual a> maior que>= maior que ou igual a< menor que 10;

SELECT EMPNOME, EMPSERVFROM EMPWHERE EMPSERV = 'GERENTE';O conjunto de caracteres ou datas devem estar entre apstrofes () na clusula "where".

SelectSelecione todos os departamentos cujo oramento mensal seja maior que 100000. Apresente o Nome de tal departamento e seu oramento anual, que ser obtido multiplicando-se o oramento mensal por 12.

SELECT DEPNOME, DEPORCA * 12FROM DEPTWHERE DEPORCA > 100000;

SelectApresente todos os salrios existentes na empresa, porm omita eventuais duplicidades.A clusula Distinct elimina duplicidades, significando que somente relaes distintas sero apresentadas como resultado de uma pesquisa.SELECT DISTINCT EMPSERVFROM EMP;

SelectORDER BY:At o momento vimos como obter dados de uma tabela utilizando os comandos SELECT e WHERE. Porm, frequentemente precisamos listar os dados por uma ordem em particular. Pode ser por ordem ascendente ou descendente. Para isso podemos utilizar a clusula ORDER BY para ordenar os dados. A sintaxe bsica da clusula ORDER BY a seguinte:SELECT < coluna > FROM < tabela > ORDER BY < coluna >;

OBSPor padro o ORDER BY vem como ASC significa que os resultados sero apresentados por ordem ascendente, ou seja, do menor para o maior.Mais tambm pode ser DESC significa que os resultados sero apresentados por ordem descendente, para isso acontecer voc precisa declara-lo.

ExemploComo exemplo irei usar uma tabela que criei anteriormente chamada produto:

ExemploPerceba que a tabela possui 8 produtos cadastrados, suponhamos que eu preciso ver os preos de forma ascendente, ento iremos selecionar o nome e o preo ordenado pelo prprio preo, veja como ficou:

ExemploPodemos tambm ordenar os dados de outras maneiras, se eu quero ver os nomes e o preo dos produtos em ordem alfabtica basta ordenar pelo nome de forma ascendente.

ExemploTambm posso em vez de colocar o nome da coluna que eu quero ordenar basta colocar o numero dela na sequencia selecionada, por exemplo, se eu selecionei nome e preo ento nome 1 e preo 2 e assim por diante:

INSTRUES DML UPDATEO comando para atualizar os dados UPDATE, ele possui a seguinte sintaxe:UPDATE < tabela > SET < campo > = novo valor WHERE < condio > ;tabela: nome da tabela que ser modificada set: define qual campo ser alterado campo: campo que ter seu valor alterado novo valor: valor que substituir o antigo dado cadastrado em campo where: se no for informado, a tabela inteira ser atualizada condio: regra que impe condio para execuo do comando

EXEMPLOComo exemplo usaremos a tabela cliente que foi usada nos exemplos anteriores. Suponhamos que o cliente de nome Francisco se mudou, ento precisamos atualizar o seu registro colocando o seu novo endereo.

EXEMPLO

UPDATETambm podemos alterar mais de um campo de uma vez. Suponhamos que o cliente Pedro se mudou para outra cidade, precisamos alterar o endereo e a cidade atual, no precisamos criar dois UPDATES basta separa-los por vrgula.

UPDATE < tabela > SET < campo1 > = valor1, < campo2 > = valor2 WHERE < condio > ;

Exemplo

OBSDevemos 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 diversos problemas, dependendo do tamanho e da complexidade da sua tabela. Imagina se esquecermos de colocar uma condio em uma tabela de 1.000 registros e alterarmos todos os endereos dos clientes para um s.

INSTRUES DML DELETEA forma mais simples de se fazer um DELETE excluindo todos os dados de uma tabela. A sntese bsica :DELETE FROM < nome da tabela >;Se no for especificada nenhuma condio ento sero excludos todos os dados da tabela, porm se voc quer excluir somente um registro preciso usar a clusula WHERE informando qual ser a condio para deletar.DELETE FROM < nome da tabela > WHERE < condio >;

OBSLembre-se 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.

EXEMPLOComo exemplo vamos usar a mesma tabela que usamos nos comandos INSERT, SELECT e UPDATE, que a tabela cliente do banco de dados venda.Suponhamos que o Francisco no mais o nosso cliente, ento devemos exclui-lo da nossa tabela, para isso usamos o comando DELETE.

EXEMPLOPerceba que usei a condio referenciando o cliente-id. Em banco de dados todo registro deve possuir o seu cdigo, quando vamos alterar ou excluir um registro bom que coloquemos como condio o cdigo do registro, porque o nome pode ser que aparea outro igual, mais o cdigo no.

Exemplo LIKECom este operador, podemos comparar Strings. O percentual (%) substitui nenhum, um ou mais caracteres, j a sublinha (_) substitui somente um caractere.Utilizando a combinao desses caracteres especiais com o que se quer localizar, pode-se conseguir uma variedade muito grande de expresses. Veja na tabela a seguir algumas possveis combinaes:

EXEMPLOSELECT * FROM contatos WHERE nome LIKE ' < condio > ' ;

EXEMPLOSELECT * FROM contatos WHERE nome LIKE ' < condio > ' ;

jorgeavila11.wordpress.com

Gostou ? Compartilha...