Aula 11 banco de dados

Click here to load reader

download Aula 11   banco de dados

of 63

Transcript of Aula 11 banco de dados

  • 1. Banco de Dados Jorge vila

2. Tabelas dos Exemplos As tabelas a seguir sero usadas nos exemplosque 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) 3. Criao de um Bando de Dados SQL Para a criao de um banco de dados em SQLtemos os seguintes comandos: Creat Data Base; Para conhecer quais os bancos de dadosexistentes 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. 4. Criao e Destruio de Tabelas O comando CREATE TABLE usado para criar umatabela. A sua forma geral : CREATE TABLE (, ); onde: dever ser substitudo pelo nome databela 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. 5. Script de Criao das Tabelas dos Exemplos Algumas colunas podem receber o valor NULL(nulo), e a coluna definida como chave primria, alm de no poder receber NULL. 6. Script de Criao das Tabelas dos Exemplos 7. Criao e Destruio de Tabelas Para excluirmos uma tabela existente devemos usaro comando DROP TABLE. A sua forma geral : DROP TABLE ; onde: dever ser substitudo pelo nome da tabela a ser excluda. Exemplos drop table item_pedido; drop table pedido; drop table vendedor; drop table produto; drop table cliente; 8. Executando Consultas sobre as Tabelas Selecionando Colunas Especficas de umaTabela Problema: Listar todos os produtos com as respectivasdescries, unidades e valores unitrios. 9. Executando Consultas sobre as Tabelas Problema: Listar os nomes dos clientes, as cidade e osestados onde eles esto localizados. 10. 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: 11. EXERCICIO 2. Marque V para verdadeiro e F para falso: ( ) CREATE, DROP, ALTER so comandos da Linguagem de Definio de Dados (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; 12. EXERCICIO 3. Relacione a primeira coluna com a segunda e no final, indique a resposta correta: 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; 13. INTRODUO AO MySQL 1 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). 14. INTRODUO AO MySQL 2 Passo: Depois de Aberto o MySQL, ele pede para quevoc entre com o password, ou seja, com a senha que voc definiu na hora da instalao. 15. INTRODUO AO MySQL 3 Passo: Para conhecer quais os bancos de dadosexistentes 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. 16. INTRODUO AO MySQL TIPOS DE DADOS NUMRICO: TIPODESCRIOBIT BOOLo mesmo que TINYINT o 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)] DECIMAL[(M,D)]O mesmo que DOUBLE[(M,D)] nmero de ponto flutuante armazenado como charNUMERIC[(M,D)]O mesmo que DECIMALDEC[(M,D)]O mesmo que DECIMAL 17. INTRODUO AO MySQL TIPOS 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) YYYEAR[(2)]anoYEAR[(4)]ano 18. INTRODUO AO MySQL TIPOS DE DADOS STRING: TIPOCHAR [NATIONAL]DESCRIO string de comprimento fixo M. NATIONAL especifica que o conjunto de caracteres padro (ANSI SQL) ser utilizado. BINARY especifica que os dados devem ser tratados de modo a no haver distino entre maisculas e minsculas (o padro distinguir). o mesmo que CHAR(1) string de comprimento varivelVARCHAR(M) [BINARY]string de tamanho varivel. O mesmo que [BINARY].TINYBLOB TINYTEXTBLOB pequeno TEXT pequenoBLOBBLOB normalTEXTTEXT normalMEDIUMBLOBBLOB mdioMEDIUMTEXTTEXT mdioLONGBLOBBLOB longoLONGTEXTTEXT longoENUM('valor1','valor2',...)armazenam um dos valores listados ou NULL[NATIONAL] CHAR(M) [BINARY] 19. Ateno Muito cuidado, pois o mysql tem comodelimitador 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. 20. NOT NULL So 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). 21. AUTO_INCREMENT O atributo AUTO_INCREMENT pode ser usadopara gerar uma identificao nica para um novo registro: 22. PRIMARY KEY define a chave primria da tabela, isto , ocampo 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) ) 23. FOREIGN KEY Os Bancos de Dados Relacionais so formadosde 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. 24. FOREIGN KEY Os campos com sublinhado simples so aschaves 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. 25. FOREIGN KEY Esse tipo de representao evita que para cadapedido 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>() 26. FOREIGN KEY OBS: o nome e o tipo de dado da PK devemser 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 DATETIME id_user INTEGER not null, primary key (id_recado), FOREIGN KEY (id_usr) REFERENCES usuario (id_usr) ) 27. EXERCICIO pg(88,89 e 90) 1) Comando SQL para criar um banco de dados chamado locadora a) 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; 28. EXERCICIO 5) 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 29. EXERCICIO 7) Relacione a primeira coluna com a segunda, aps, indique a sequncia correta: 1 - ALTER TABLE ADD ( ) Usado para apagar uma tabela de um BD 2 - ALTER TABLE CHANGE ( ) Usado para trocar o nome e o tipo de uma coluna 3- DROP TABLE ( ) Usadas para adicionar uma coluna em uma tabela A sequncia correta seria: a) 3 - 1 - 2; b) 2 - 3 - 1; c) 1 - 2 - 3; d) 3 - 2 - 1; 30. EXERCICIO 8) Marque a opo em que a criao da tabela "filmes" esta feito corretamente: 31. EXERCICIO 9) 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 32. EXERCICIO Crie o banco de dados de locao de automvelmediante a este diagrama: 33. Select O comando SQL que nos permite realizarconsultas ao banco de dados o comando SELECT. EX:SELECT * FROM DEPT; O exemplo utiliza o coringa "*" paraselecionar 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 34. Select Where como base das Restrio de tuplas. A clusula "where" corresponde ao operador restrioda 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, EMPSERV FROM EMP WHERE EMPSERV = 'GERENTE'; O conjunto de caracteres ou datas devem estar entre apstrofes () na clusula "where". 36. Select Selecione todos os departamentos cujooramento mensal seja maior que 100000. Apresente o Nome de tal departamento e seu oramento anual, que ser obtido multiplicandose o oramento mensal por 12. SELECT DEPNOME, DEPORCA * 12 FROM DEPT WHERE DEPORCA > 100000; 37. Select Apresente todos os salrios existentes naempresa, porm omita eventuais duplicidades. A clusula Distinct elimina duplicidades,significando que somente relaes distintas sero apresentadas como resultado de uma pesquisa. SELECT DISTINCT EMPSERV FROM EMP; 38. Select ORDER BY: At o momento vimos como obter dados de umatabela 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 >; 39. OBS Por padro o ORDER BY vem como ASCsignifica 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. 40. Exemplo Como exemplo irei usar uma tabela que crieianteriormente chamada produto: 41. Exemplo Perceba que a tabela possui 8 produtoscadastrados, 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: 42. Exemplo Podemos tambm ordenar os dados de outrasmaneiras, se eu quero ver os nomes e o preo dos produtos em ordem alfabtica basta ordenar pelo nome de forma ascendente. 43. Exemplo Tambm posso em vez de colocar o nome dacoluna 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: 44. INSTRUES DML UPDATE O 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 45. EXEMPLO Como exemplo usaremos a tabela cliente que foiusada nos exemplos anteriores. Suponhamos que o cliente de nome Francisco se mudou, ento precisamos atualizar o seu registro colocando o seu novo endereo. 46. EXEMPLO 47. UPDATE Tambm podemos alterar mais de um campo deuma 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 > ; 48. Exemplo 49. OBS 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 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. 50. INSTRUES DML DELETE A 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 >; 51. OBS Lembre-se que este comando, assim como oUPDATE, 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. 52. EXEMPLO Como exemplo vamos usar a mesma tabela queusamos 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. 53. EXEMPLO Perceba que usei a condio referenciando ocliente-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. 54. Exemplo LIKE Com 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: 55. EXEMPLO SELECT * FROM contatos WHERE nome LIKE' < condio > ' ; 56. EXEMPLO SELECT * FROM contatos WHERE nome LIKE' < condio > ' ; 57. jorgeavila11.wordpress.com 58. Gostou ? Compartilha...