Академический Документы
Профессиональный Документы
Культура Документы
TABELAS: So agrupamentos de dados de objetos especficos. COLUNAS: Tem um nome nico, dados diferentes e tipos de dados associados a cada uma. LINHAS: So registros que so inseridos na tabelas. VALORES: So os valores de um registro para um coluna especfica. CHAVES: So os identificadores de um registro. Podemos ter uma chave primria (identificador nico) e uma chave estrangeira (identifica o relacionamento entre tabelas). RELACIONAMENTOS: So as relaes existentes entre as tabelas de um banco e so determinados pela chave estrangeira. Podem ser: 1 para 1: Um registro numa tabela possui um nico registro associado a ela numa outra tabela e vice-versa. 1 para N: Um registro numa tabela possui um nico registro associado a ela numa outra tabela, porm o registro da outra tabela pode conter vrios outros associados a ele. N para N: Um registro numa tabela possui vrios registros associados a ela numa outra tabela e vice-versa.
Book_Reviews(ISBN, Reviews)
As clusulas entre cochetes so opcionais. O privilgio deve ser uma lista de privilgios separados por vrgulas. O marcador colunas serve ara especificar privilgios especficos para colunas. O marcador item o banco de dados ou tabela a que os novos privilgios sero aplicados. Voc pode conceder privilgios em todos os bancos especificando *.* como o item. Isso chamado de concesso de privilgios globais. O nome_do_usuario deve ser o nome com o qual voc deseja que o usurio efetue um logon no MySQL. A senha deve ser a senha com a qual voc deseja que o usurio efetue o login. A expresso WITH GRANT OPTION, se especificada, premite que o usurio especificado conceda os prprios privilgios. Os privilgios so armazenados em quatro tabelas de sistema, no banco de dados chamado mysql. Essas quatro tabelas so mysql.user, mysql.db, mysql.tables_priv e mysql.collumns_priv e se relacionam diretamente com os quatro nveis de privilgio mencionados antes. TIPOS DE PRIVILGIOS:
Existem 3 tipos de privilgios bsicos no MySQL: privilgios adequados para conceder a usurios regulares, privilgios adequados para administradores e dois privilgios especiais. Os privilgios para usurios regulares se relacionam diretamente aos tipos de comandos especficos de SQL e se um usurio tem ou no permisso de execut-los. Privilgio SELECT INSERT Aplica-se a Descrio
Tabelas, colunas Permite que os usurios selecionem linhas de tabelas. Tabelas, colunas Permite que os usurios insiram novas linhas em tabelas.
UPDATE Tabelas, colunas Permite que os usurios modifiquem valores em linhas existentes de tabela. DELETE Tabelas Permite que os usurios excluam linhas existentes de tabelas Permite que os usurios criem e excluam ndices em tabelas Permite que os usurios alterem a estrutura de tabelas existentes.
INDEX
Tabelas
ALTER
Tabelas
CREATE Banco de dados, Permite que os usurios criem novos bancos de dados ou tabelas tabelas. DROP Banco de dados, Permite que os usurios excluam bancos de dados ou tabelas tabelas
Table 1: Privilgios para usurios O COMANDO REVOKE: Este comando utilizado para revogar os privilgios de um usurio:
REVOKE privilegios[(colunas)] ON item FROM nome_usuario
CREATE TABLE orders ( orderid int unsigned not null auto_increment primary key, customerid int unsigned not null, amount float(6,2), date date not null );
CREATE TABLE books ( isbn char(13) not null primary key, author char(30), title char(60), price float(4,2) );
CREATE TABLE order_items ( orderid int unsigned not null, isbn char(13) not null, quantity tinyint unsigned, primary key(orderid,isbn)
);
CREATE TABLE book_reviews ( isbn char(13) not null primary key, review text );
SIGNIFICADOS DAS PALAVRAS: NOT NULL: Significa que todas as linhas na tabela devem ter um valor nesse atributo. AUTO_INCREMENT: Isso significa que se deixarmos aquele camppo em branco ao inserir linhas na tabela, o MySQL automaticamente gerar um valor identificador nico. O valor ser maior que o valor mximo j existente na coluna. PRIMARY_KEY: Especifica que essa coluna a chave primria para tabela. As entradas nessa coluna precisam ser nicas. S pode ser usado quando a tabela possui uma nica chave primria. A construo do PRIMARY JEY na tabela ORDER_ITEMS a alternativa quando se tem mais duma chave primria. UNSIGNED: Significa que um tipo inteiro s pode ter um zero ou valor positivo.
Neste exemplo no especificamos quais colunas iramos inserir registros. Isto significa que todas as colunas devem apresentar valores associados. Por isso, tivemos que inserir o valor NULL para a coluna CUSTOMERID. Se quisermos especificar quais colunas devem ser inseridas e em qual ordem seguimos o exemplo abaixo:
INSERT INTO customers (name, city) VALUES ("Melissa Jones", "Nar Nar Goon North");
INSERT INTO orders VALUES (NULL, 3, 69.98, "2000-04-02"), (NULL, 1, 49.99, "2000-04-15"), (NULL, 2, 74.98, "2000-04-19"), (NULL, 3, 24.99, "2000-05-01");
INSERT INTO books VALUES ("0-672-31697-8", "Michael Morgan", "Java", 34.99), ("0-672-31745-1", "Thomas Down", "Debian", 24.99), ("0-672-31509-2", "Pruit, et al.", "GIMP", 24.99), ("0-672-31769-9", "Thomas Schenk", "OpenLinux", 49.99);
INSERT INTO order_items VALUES (1, "0-672-31697-8", 2), (2, "0-672-31769-9", 1), (3, "0-672-31769-9", 1), (3, "0-672-31509-2", 1), (4, "0-672-31745-1", 3);
INSERT INTO book_reviews VALUES ("0-672-31697-8", "O livro um bom suporte para a tecnologia Java");
Cada consulta ser analizada separadamente, mas vale a pena realizar duas consultas simples para verificar o funcionamento do comando. A primeira sero especificadas as colunas que se deseja selecionar e na segunda ser utilizado o * que representa que todas as colunas da tabela sero selecionadas.
SELECT name, city FROM customers; SELECT * FROM order_items;
Para acessar um subconjunto de linhas em uma tabela, precisamos especificar alguns critrios de seleo usando a clusula WHERE.
SELECT * FROM orders WHERE customerid = 3;
Neste exemplo, o comano ir selecionar todas as colunas da tabela pedidos onde somente as linhas com um ID de 3. Existe uma srie de operadores de comparao para clusulas WHERE, confome o especificado na tabela abaixo. Operador > < >= Nome Maior que Menor que Exemplo Amount > 60.00 Amount < 60.00 Descrio Testa se o valor maior que outro Testa se o valor menor que outro
Maior ou igual Amount>=60.00 Testa se o valor maior ou igual ao outro. Menor igual Diferente ou Amount <= 60.00 Testa se o valor menor ou igual ao outro. Quantify != 0 Testa se um valor diferente do outro.
<-
Operador IS NULL
Nome
BETWEEN
Amount between Testa se um valor maior ou igual a 0 and 60.00 um e menor que outro. City in (So Testa se um valor est em um Paulo, Aracaju) conjunto particular. City not in (So Testa se um valor no est em um Paulo, Aracaju) conjunto particular. Correspondn Name like (Fred Verifica se um valor corresponde a um cia de padro %) padro utilizando correspondncia de padro.
IN
NOT IN
LIKE
RECUPERANDO DADOS DE DIVERSAS TABELAS: Frequentemente faz-se necessrio realizar consultas em vrias tabelas ao mesmo tempo. Para tanto, voc deve realizar uma operao juno ou JOIN. Isso significa simplesmente unir duas ou mais tabelas para seguir os relacionamentos entre os dados. Existem vrios tipos de junes. O primeiro tipo o INNER JOIN que pode ou no possuir uma construo prpria para esta juno. A operao de INNER JOIN significa: Aceite as tabelas listadas e faa uma tabela grande. A tabela grande deve ter uma linha para cada possvel combinao de linhas de cada uma das tabelas listadas, quer isso faa sentido ou no. No exemplo:
SELECT orders.orderid, orders.amount, orders.date FROM customers, orders WHERE customers.cname = 'Julie Smith' AND customers.cutomerid = orders.customerid;
Neste caso, obtemos uma tabela, que tem cada linha da tabela Customers correspondida a cada linha da tabela Orders, independentemente de um cliente particular ter feito um pedido particular. RECUPERANDO DADOS EM UMA ORDEM PARTICULAR Se quiser exibir linhas recuperadas por uma consulta em uma ordem particular, voc pode utilizar a clasula ORDER BY da instruo SELECT.
SELECT name, address FROM customers ORDER BY name;
Aps o nome da ou das colunas que se deja fazer a ordenao, pode ser indicado se essa ordeno ascendente (ASC) ou descendente (DESC). AGRUPANDO E AGREGANDO DADOS: O MySQL possui um conjunto de funes agregadas que aumenta as possibilidades de consultas a serem realizadas. Estas funes podem ser aplicadas a uma tabela como a um total ou grupos de dados dentro de uma tabela. Nome AVG(coluna) COUNT(itens) Descrio Mdia de valores na coluna especificada. Se voc especificar uma coluna, essa funo fornecer o nmero de valores no-NULL nessa coluna. Se adicionar a palavra DISTINCT na frente do nome de coluna, voc obter uma contagem de valores distintos somente nessa coluna. O valor mnimo na coluna especificada. O valor mximo na coluna especificada. Desvio padro dos valores na coluna especificada. Soma de valores na coluna especificada.
A fim de obter informaes mais detalhadas, podemos utilizar a clusula GROUP BY. Isso permite visualizar o total mdio de pedidos por grupo por exemplo, por nmero de cliente.
SELECT customeridm,avg(amount) FROM orders GROUP BY customerid; SELECT customeridm,avg(amount) FROM orders GROUP BY customerid HAVING avg(amount) > 50;
A idia bsica atualizar a tabela chamada nomedatabela, configurando cada uma das colunas chamadas como expresso apropriada. Voc pode limitar UPDATE para linhas particulares com uma clusula WHERE e limitar o nmero total de linhas para afetar com uma clusula LIMIT. EXEMPLOS: 1) Se quisermos aumentar 10% do preo de todos livros:
UPDATE books SET price = price*1.1;
2) Se quisermos alterar uma nica linha, por exemplo, atualizar um endereo do cliente:
UPDATE customers SET address = '250 Olsens Road' WHERE cutomerid = 4;
Prtica 1(exerccios)
Crie um BD com nome Clinica;
Crie as seguintes tabelas neste BD, considerando que os atributos sublinhados so chaves primrias e os em itlico so chaves estrangeiras: Ambulatorios: nroa (int), andar (numeric(3)) (no nulo), capacidade (smallint) Medicos: codm (int), nome (varchar(40)) (no nulo), idade (smallint) (no nulo), especialidade (char(20)), CPF (numeric(11)) (nico), cidade (varchar(30)), nroa (int) Pacientes: codp (int), nome (varchar(40)) (no nulo), idade (smallint) (no nulo), cidade (char(30)), CPF (numeric(11)) (nico), doenca (varchar(40)) (no nulo) Funcionarios: codf (int), nome (varchar(40)) (no nulo), idade (smallint), CPF (numeric(11)) (nico), cidade (varchar(30)), salario (numeric(10)), cargo (varchar(20)) 5. Consultas: codm (int), codp (int), data (date), hora (time); Crie a coluna nroa (int) na tabela Funcionrios; Crie os seguintes ndices: Mdicos: CPF (nico), nroa; Pacientes: doena;
Remover o ndice doena em Pacientes; Remover as colunas cargo e nroa da tabela de Funcionrios; Povoar as tabelas conforme o prximo Slide.
O paciente Paulo mudou-se para Ilhota; A consulta do mdico 1 com o paciente 4 passou para s 12:00 horas do dia 4 de Julho de 2006; A paciente Ana fez aniversrio e sua doena agora cncer; A consulta do mdico Pedro com o paciente Carlos passou para uma hora e meia depois; O funcionrio Carlos deixou a clnica; As consultas marcadas aps as 19 horas foram canceladas; Os pacientes com cncer ou idade inferior a 10 anos deixaram a clnica; Os mdicos que residem em Baguau e Palhoa deixaram a clnica.