Вы находитесь на странице: 1из 9

CEFET.PHB - PI Prof.

Jefferson Silva

ROTEIRO
I PARTE - INTRODUO AO SQL COMANDOS E SUAS PARTES DA LINGUAGEM SQL II PARTE ADMINSTRAO DE BANCO DE DADOS UTILIZANDO MYSQL PRINCIPAIS INSTRU ES III PARTE - PRTICA ESTUDO DE CASO UTILIZANDO MYSQL

SQL (MySql)

A Linguagem SQL (I parte)


n

As partes da linguagem SQL


n

Embora se fale que a linguagem SQL uma linguagem de consulta, essa linguagem possui outras capacidades alm de realizar consultas em um banco de dados. A linguagem SQL possui recursos para definio da estrutura de dados, para modificar dados no banco de dados e recursos para especificar restries de segurana e integridade.

Data Definition Language (DDL) (Linguagem de Defini o de Dados). A SQL DDL fornece comandos para defini o e modificao de esquemas de relao, remoo de relaes e criao de ndices. Os principais comandos que fazem parte da DDL so: CREATE, ALTER, DROP. Data Manipulation Language (DML) (Linguagem de Manipulao de Dados). A SQL DML inclui uma linguagem de consulta baseada na lgebra relacional e no clculo relacional. Compreende tambm comandos para inserir, remover e modificar informaes em um banco de dados. Os comandos bsicos da DML so: SELECT, INSERT, UPDATE, DELETE
4

SQL (Strutured Query Language). Muitos Sistemas Gerenciadores de Banco de Dados suportam a linguagem SQL. A SQL estabeleceu-se como a linguagem padro de banco de dados relacional. Embora existam diversas verses, com algumas diferen as entre elas, a estrutura da SQL se mantm inalterada desde a sua criao.
3

As partes da linguagem SQL


(continuao) n

A Linguagem de Definio de Dados (SQL-DDL)


A Linguagem de Defini o de Dados da SQL (SQL-DDL) um conjunto especfico de instrues SQL que fornece meios para a defini o e modificao de esquemas de relao, remoo de relaes e criao de ndices. Criando tabelas Uma tabela (ou relao) SQL definida usando o comando create table:
n

Data Control Language (Linguagem de Controle de Dados). o conjunto de comandos que fazem o cadastramento de usurios e determina seu nvel de privilgio para os objetos do banco de dados. Os principais comandos so: GRANT, REVOKE

Transactions control (Controle de Transaes). A SQL inclui comandos para especificao do incio e fim das transaes. Diversas implementaes permitem o trancamento explcito de dados para o controle de concorrncia. (COMMIT, ROLLBACK, SAVEPOINT)

create table r (A1 D1, A2 D2,...,An Dn) onde r o nome da relao, Ai o nome de um atributo no esquema da relao r e Di o tipo do atributo Ai.

A Linguagem de Definio de Dados (SQL-DDL)


(continuao) n n n n n n n

A Linguagem de Definio de Dados (SQL-DDL)


(continua o)

create table cliente (nome char(30), sexo char(1), CPF number(11), endereco char(30), cidade char(30) ) Uma relao criada inicialmente vazia. O comando insert pode ser usado para carregar os dados para a relao.

n n

n n

Removendo uma Tabela Para remover uma relao de um banco de dados SQL, usa-se o comando drop table . O comando drop table remove todas as informaes sobre a relao. O comando drop table r onde r o nome de uma relao (tabela) existente.

A Linguagem de Definio de Dados (SQL-DDL)


(continua o)

A Linguagem de Definio de Dados (SQL-DDL)


(continua o)

n n

n n n

Alterando uma Tabela O comando alter table usado para adicionar, excluir ou alterar atributos em uma relao existente. Para inserir um novo atributo em uma tabela usada a clusula add. Todas as tuplas na relao so assinaladas como null para o valor do novo atributo. alter table r add ( A1 D1, A2 D2, ... ) onde r o nome de uma relao existente e A1 D1, A2 D2, ... uma lista contendo nome do atributo (A) a ser adicionado e o tipo do atributo (D), respectivamente.

n n n n

n n n

Para excluir colunas de uma tabela utiliza-se a clusula drop. alter table r drop A1, A2, ... onde r o nome de uma relao existente e A1, A2, ... uma lista dos atributos a serem removidos. Para alterar o nome de um atributo de uma tabela utiliza-se a clusula rename. alter table r rename A NA onde r o nome de uma relao existente, A o nome do atributo a ter o seu nome alterado para NA . Para alterar o tipo de um atributo

utiliza-se a clusula modify.


9

10

A Linguagem de Definio de Dados (SQL-DDL)


(continua o)

A Linguagem de Definio de Dados (SQL-DDL )


(continua o)

n n n

alter table r modify A1 D1, A2 D2, ... onde r o nome de uma relao existente, A1 D1, A2 D2,... uma lista contendo o nome do atributo (An) a ter o seu tipo alterado para (Dn).

n n

Restries de Integridade As restries de integridade servem para garantir as regras inerentes ao sistema que est sendo implementado, prevenindo a entrada de informaes inv lidas pelos usurios desse sistema. Para isso, o SGBD deve prover ferramentas para a definio de regras de integridade, a fim de evitar a inconsistncia dos dados que nele sero armazenados.
12

11

A Linguagem de Definio de Dados (SQL-DDL)


(continua o)

A Linguagem de Definio de Dados (SQL-DDL)


(continua o)

n n n

Restries de Integridade Evitando valores nulos muito comum definirmos atributos que no podem conter valores nulos. Isto , o seu preenchimento obrigatrio para que se mantenha a integridade dos dados no sistema. Para evitar que em algum momento uma coluna de uma tabela possa conter valor nulo (ou no conter valor algum) deve-se utilizar a clusula NOT NULL aps a definio da coluna.
13

Exemplo:

n n n n n n n

create table cliente (nome char(30) NOT NULL, sexo char(1), CPF number(11), endereco char(40), cidade char(20) ) No exemplo acima, a atribuio de um valor coluna nome obrigatrio. Caso o usu rio se esquea de preenche-lo , o SGBD apresentar uma mensagem de erro.
14

A Linguagem de Definio de Dados (SQL-DDL)


(continua o)

A Linguagem de Definio de Dados (SQL-DDL)


(continua o)

n n

Evitando valores duplicados Podem existir situaes onde o valor armazenado em um atributo de um registro deve ser nico em relao a todos os registros da tabela. Isto , no pode haver dois registros com o mesmo valor para um determinado atributo. Para implementar esta restrio de integridade deve -se utilizar a clusula UNIQUE aps a especifica o de uma coluna.

n n n n n n n n

Exemplo: create table cliente (nome char(30) NOT NULL, sexo char(1), CPF number(11) UNIQUE, endereco char(40), cidade char(20) ) No exemplo acima, caso o usurio atribua ao campo CPF um valor j existente em outro registro desta tabela o SGBD apresentar uma mensagem de erro.
16

15

A Linguagem de Definio de Dados (SQL-DDL)


(continua o)

A Linguagem de Definio de Dados (SQL-DDL)


(continua o)

n n

n n n n n n

Definindo valores default Pode-se definir um valor padro para uma coluna acrescentando sua defini o a clusula DEFAULT. Esta clusula permite substituir automaticamente os valores nulos por um valor inicial desejado. create table cliente (nome char(30) NOT NULL, sexo char(1), CPF number(11) UNIQUE, endereco char(40), cidade char(20) DEFAULT Maceio )
17

n
n

Evitando valores invlidos

Existem situaes onde o valor de um atributo deve pertencer a um determinado domnio. Para que o valor de um atributo fique restrito a um conjunto de valores, utiliza-se a clusula CHECK.

n n n n n n

A finalidade da clusula CHECK especificar uma condi o, isto , uma limitao de integridade. create table cliente ( nome char(30) NOT NULL, sexo char(1) CHECK(sexo IN (M, F)), CPF number(11) UNIQUE, endereco char(40), cidade char(20) DEFAULT Maceio )

18

A Linguagem de Definio de Dados (SQL-DDL)


(continua o)

A Linguagem de Definio de Dados (SQL-DDL)


(continua o)

n n

n n n n n n n n

Chave Prim ria A funo da chave primria identificar univocamente uma linha da tabela. Cada tabela deve possuir uma chave primria. Quando se define um atributo como chave primaria, fica impl cito as clusulas UNIQUE e NOT NULL para este atributo, no sendo necessrio a especificao destas. create table cliente (codigo number(5) primary key, nome char(30) not null, sexo char(1) CHECK (sexo IN (M, F)), CPF number(11) UNIQUE, endereco char(40), cidade char(20) DEFAULT Maceio ) Opcionalmente pode-se definir a chave primria aps a especificao de 19 todos os atributos da tabela.

n n n n n n n n n

Exemplo: create table cliente (codigo number(5), nome char(30) not null, sexo char(1) CHECK(sexo IN (M, F)), CPF number(11) UNIQUE, endereco char(40), cidade char(20) DEFAULT Maceio, primary key (codigo) )

20

A Linguagem de Definio de Dados (SQL-DDL)


(continua o)

A Linguagem de Definio de Dados (SQL-DDL)


(continua o)

ATENO: Quando uma tabela possui uma chave primria composta por mais de um atributo, esta forma OBRIGATRIA. create table movimento (agencia number(5), conta number(7), valor number(16,2), primary key (agencia, conta) )

n n

n n n n n

Integridade referencial Freqentemente desejamos assegurar que o valor de um determinado campo de uma tabela esteja presente na chave primria de outra tabela. Este campo chamado chave estrangeira (FOREIGN KEY). A SQL original padro no inclua instrues para especificar chaves estrangeiras. Um aperfeioamento posterior foi aprovado como uma adio ao padro. Este recurso permite a especificao de chaves primrias e estrangeiras como parte da instruo create table. create table movimento
n n n n

(agencia conta valor primary

number references agencias(codigo), number references contas(numero), number , key (agencia, conta ) )
22

21

Assim como na defini o da chave primria, pode-se definir a chave estrangeira aps a especificao de todos os campos (dom nio) da tabela.

A Linguagem de Definio de Dados (SQL-DDL)


(continua o)

DML
Linguagem de Manipulao de Dados

Exemplo:

create table movimento (agencia number conta number valor number, primary key (agencia, conta) foreign key (agencia) references agencias, foreign key (conta) references contas)

23

24

Linguagem de Manipulao de Dados - DML


A principal estrutura da SQL DML consiste em trs clusulas : select, from e where. select A1, A2, A3, ..., An from r1, r2, ..., rm where P onde Ai representa um atributo ri uma tabela P um predicado (condio/critrio de seleo).
n
25
n n n n

Linguagem de Manipulao de Dados DML


(continuao)

n n n n n n n

n n

select Fcodigo, status from Fornecedor where cidade = Paris A condio (ou predicado) que segue where pode incluir operadores de comparao =, <> (diferente), >, >=, < e <=; os operadores booleanos AND, OR e NOT. Select Fcodigo, nome from Fornecedor where cidade = Paris and status > 20 Fcodigo nome 3 Blake A lista A1, A2, ..., An de atributos pode ser substituda por um asterisco (*) para selecionar todos os atributos de todas as relaes presentes na clusula from. select * 26 from Fornecedor

Linguagem de Manipulao de Dados DML


(continuao) n

Linguagem de Manipulao de Dados DML


(continuao) n n

n n n

n n

O resultado da consulta acima ser uma cpia da relao Fornecedor. O resultado de uma consulta SQL uma relao. select status from Fornecedor Linguagens de consultas formais so baseadas em noes matemticas de relao. Assim, nunca deveriam aparecem tuplas duplicadas nas relaes. Na prtica, a eliminao de duplicao uma relativa perda de tempo. Todavia, a SQL permite duplicaes em rela es. Nos casos em que queremos forar a eliminao de duplicaes, inserimos a palavra distinct depois de select. select distinct status from Fornecedor
27

n n n n n n n n

Ordenando o resultado de uma consulta A linguagem SQL oferece uma maneira de controlar a ordem que as tuplas de uma relao sero dispostas. A clusula ORDER BY ocasiona o aparecimento de tuplas no resultado de uma consulta em uma ordem determinada. SELECT A1, A2, ..., An FROM ...r1, r2, ..., rn WHERE ...p ORDER BY A1 [ASC/DESC] A2 [ASC/DESC] ... An [ASC/DESC ] Onde An so nomes de atributos que serviro como parmetro de ordenamento da consulta.
28

Linguagem de Manipulao de Dados DML


(continuao) n

Modificando o Banco de Dados


n

n n

n n n n n n n

A clusula ORDER BY permite ordenar as linhas do resultado da consulta segundo algum(s) atributo(s) indicado, em ordem crescentes ou decrescente. Quando for necessrio utilizar esta clusula ela sempre deve aparecer na ltima linha da consulta. No h limite quanto ao nmero de atributos utilizados para ordenao. As palavras ASC e DESC determinam se a ordenao ser ascendente ou descendente. Caso nada seja especificado, assumido a ordenao ascendente (ASC). select distinct status from Fornecedor order by status select status, nome from Fornecedor order by status DESC, nome ASC Uma vez que a classifica o de um grande nmero de tuplas pode ser custoso, aconselhvel classificar apenas quando necessrio.
29

Como inserir remover ou alterar informaes usando a SQL

Insero de registros n Para inserir um dado em uma relao, ou especificamos uma tupla para ser inserida ou escrevemos uma consulta cujo resultado seja um conjunto de tuplas a serem inseridas. Obviamente, os valores dos atributos para tuplas inseridas precisam ser membros do dom nio do atributo. Da mesma forma, as tuplas inseridas precisam ser do mesmo tipo. n A instruo insert mais simples uma requisio para inserir uma tupla. Suponha que desejamos inserir o fato de que Paulo Coelho Farias tem 1.200 na conta 9732 da agncia Pajuara.

30

Modificando o Banco de Dados


(continuao)

Modificando o Banco de Dados


(continuao) n n

n n n

insert into contas values (Pajucara,9732,Paulo Coelho Farias,1200) No exemplo acima, os valores so especificados na ordem na qual os atributos correspondentes esto listados no esquema da relao. Para facilitar os usurios que podem no se lembrar da ordem dos atributos, a SQL permite que os atributos sejam especificados como parte da instruo insert. insert into contas(numero_conta, nome_agencia, saldo, nome_cliente) values (9732,Pajucara,1200,Paulo Coelho Farias)
31

n n n n

n n n

Remoo de registros Uma remoo expressa da mesma forma que uma consulta. Pode-se remover apenas tuplas inteiras, no podemos remover atributos particulares. delete from r where P P representa um predicado e r representa uma relao. O comando delete opera em apenas uma relao. Se desejarmos remover tuplas de diversas relaes, devemos usar um comando delete para cada relao. O predicado na clusula where pode ser to complexo quanto uma clusula where do comando select. Num outro extremo, podemos ter uma clusula where vazia. A requisio delete from emprestimos remove todas as tuplas da relao emprstimos.
32

Modificando o Banco de Dados


(continuao) n

Modificando o Banco de Dados


(continuao) n n

"Remova todos os registros da conta de Paulo Coelho Farias" n delete from contas n where nome_cliente = Paulo Coelho Farias "Remova todos os emprstimos com nmeros entre 1300 e 1500" n delete from emprestimos n where numero between 1300 and 1500

Alterao de registros Em certas situaes, podemos desejar mudar um valor em uma tupla sem mudar todos os valores da tupla . Para isto, a instruo update pode ser usada. Como era o caso para insert e delete , podemos escolher as tuplas que sero atualizadas usando uma consulta. Suponha que esteja sendo feito um pagamento de juros, e que em todos os saldos sejam acrescidos 5%. n update contas n set saldo = saldo * 1.05 A instruo acima aplicada uma vez para cada tupla em contas.

33

34

Modificando o Banco de Dados


(continuao) n n

Modificando o Banco de Dados


(continuao) n n

A instruo acima aplicada uma vez para cada tupla em contas. Suponhamos agora que contas com saldos superiores a 10.000 recebam 6% de juros e todas as outras recebam 5%.
n n n n n n

A ordem na qual as duas instrues update so escritas importante. Se mudarmos a ordem das duas instrues, uma conta cujo saldo esteja abaixo de 10.000 poder receber juros de 11.3%.
35

update contas set saldo = saldo * 1.06 where saldo > 10000 update contas set saldo = saldo * 1.05 where saldo <= 10000

Funes Agregadas A SQL oferece a habilidade para computar funes em grupos de tuplas usando a clusula group by. O atributo ou atributos utilizados na clusula group by so usados para formar grupos. Tuplas com o mesmo valor em todos os atributos na clusula group by so colocados em um grupo. A SQL inclui funes para computar: A linguagem SQL possui algumas funo especficas para clculos em grupos de tuplas:
n n n n n

mdia: avg mnimo: min mximo: max total: sum contar: count

As operaes como a avg so chamadas funes agregadas porque operam em agrega es de tuplas . O resultado de uma funo agregada um valor nico. Para ilustrar, considere a consulta:
36

Modificando o Banco de Dados


(continuao)
n

II E III PARTES
n

"Encontre a m dia dos saldos em todas as contas"


n n

select avg(saldo) from contas

A funo agregada count usada freq entemente para contar o nmero de tuplas numa relao. A notao para isto count(*). Assim para achar o nmero de tuplas da relao cliente, escrevemos: n select count(*) n from clientes

II PARTE ADMINSTRA O DE BANCO DE DADOS UTILIZANDO MYSQL PRINCIPAIS INSTRUES III PARTE - PRTICA ESTUDO DE CASO UTILIZANDO MYSQL
38

37

II PARTE ADMINSTRAO DE BANCO DE DADOS


n

Conexo com MySql


n

MYSQL PRINCIPAIS INSTRUES Viso Geral


Para acessar o servidor MySQL, preciso utilizar o comando que segue. importante lembrar, que o MySQL tem seu prprio cadastro de nomes e senhas, sendo que voc pode possuir uma conta no servidor SQL, mas no telnet, e o oposto tambm v lido..
39

mysql -u root -p supersenha Sintaxe: mysql -u (usurio) -p (senha) ou mysql -h servidor -u (usu rio) --password=(senha) Aps validada a senha, e pr -supondo que o MySQL tenha sido corretamente instalado, voc ver algo como: Cliente MySQL- NBS Bem vindo ao monitor do MySQL. Use ; ap s os comandos ou \g. Sua id 49, e voc est conectado a um servidor verso 3.21.23 -beta-log Digite ' help' para ajuda. mysql>

40

Criao e Utilizao de um Banco de Dados


n n

Continuao....
n

Utilize a instruo SHOW para saber quais bancos de dados existem atualmente no servidor: mysql> SHOW DATABASES; A lista de bancos de dados provavelmente ser diferente na sua mquina, mas os bancos de dados mysql e test provavelmente estaro entre eles. O banco de dados mysql necessrio porque ele descreve privilgios de acessos de usurios. O banco de dados test geralamente fornecido como um espao para que os usurios possam fazer testes. Criar um bancos de dados no o seleciona para o uso; voc deve fazer isso de forma expl cita. Para fazer o banco de dados atual, use o comando: USE mysql> USE tableDatabase changed

DESCRIBE (Descrever)DESCDescreve o layout da tabela Exemplo:DESCRIBE tabelaDESC tabela

41

42

Tipos de campos no MySQL Continuao...


n n

CREATE (criar) CREATE DATABASE nome; Cria um BD totalmente novo. CREATE TABLE nome; define a estrutura de uma tabela dentro do BD, e a forma como todas as tabelas so criadas no MySql. DROP (excluir)DROP DATABASE nome; remove todo um BD com o seus arquivos. DROP TABLES nome; apaga uma tabela e seus dados.

O MySQL oferece os mais comuns campos. Alguns deles esto aqui listados :

n n

CHAR(M) Os campos CHAR so usados para caracteres alfanum ricos, como endereos e nomes. Seu tamanho fixo e instaurado ao ser criado. Um campo do tipo CHAR pode ter de 1 a 255 caracteres. Exemplo: endereco_comercial CHAR(10); Define um campo chamado 'endereco_comercial', que pode conter at dez letras. Observe que no h acentos no nome do campo, pois muitos servidores no acentuam, e sua tabela teria difcil acesso.

43

44

Contiunuao...
n n

Continuao...
n n

CHAR(M) Os campos CHAR so usados para caracteres alfanum ricos, como endereos e nomes. Seu tamanho fixo e instaurado ao ser criado. Um campo do tipo CHAR pode ter de 1 a 255 caracteres. Exemplo: endereco_comercial CHAR(10); Define um campo chamado 'endereco_comercial', que pode conter at dez letras. Observe que no h acentos no nome do campo, pois muitos servidores no acentuam, e sua tabela teria difcil acesso.

VARCHAR(M) Sua estrutura e funcionamento idntico ao campo anterior, salvo que no tipo CHAR, o tamanho definido fixo, e mesmo que no usado, aquele espao em disco alocado. J o campo VARCHAR, aloca apenas o espao necessrio para gravao. Contudo, vale lembrar que trocamos espao por velocidade, pois este campo 50% mais lento que o anterior. Exemplo: endereco_comercial VARCHAR(10); Define um campo chamado endereco_comercial que pode conter at dez letras. Se voc preencher apenas duas, o campo no ocupara todos dez bytes, mas apenas 2.

45

46

Continuao...
n n

INT(M) [Unsigned] O campo INT, que como o pr prio n mero diz, suporta o conjunto dos n meros inteiros numa varia o de - 2147483648 a 2147483647. O parmetro Unsigned pode ser passado, excluindo os n meros negativos, proporcionando um intervalo de 0 at 4294967295. Exemplos: carros_estocados INT; Inteiro v lido: - 245 Inteiro v lido: 245 Inteiro inv lido: 3000000000 carros_estocados INT unsigned; Inteiro v lido: 245 Inteiro inv lido: - 245 Inteiro inv lido: 3000000000 47

n n

FLOAT[(M,D)] Os pontos flutuantes (FLOAT) representam pequenos n meros decimais, e so usados para representar n meros com maior preciso. Exemplo: voltagem_cadeira_eletrica FLOAT(4,2); Float v lido: 324.50 DATE Campo usado para armazenar informa es referentes a data. A forma padro 'AAAA-MM- DD', onde AAAA corresponde ao ano, MM ao ms, e DD ao dia. Ele pode variar de 0000- 00- 00 a 9999- 12 -31. O MySQL possui um conjunto poderoso de comandos de formata o e manipulao de datas. Consulte documentao adicional, se houver interesse. Exemplo: data_de_nascimento DATE; Data vlida: 1999 -1 2-0 6 Data invlida: 1999 -0 6-1 2

n n

48

Continuao...
n n

Continuao...
n n

TEXT/BLOB Os campos texto e blob so usados para guardar grandes quantidades de caracteres. Podendo conter de 0 a 65535 bytes, os blobs e texts so teis para armazenar documentos completos, como este que voc est lendo. A nica diferena entre os campos BLOB e TEXT est no fato de um campo TEXT no ser sens vel a letras mai sculas e minscula quando uma comparao realizada, e os BLOBs sim. Exemplo: relatorio BLOB; BLOB vlido: 'Minha terra tem palmeiras onde canta o...' relatorio TEXT; TEXT v lido: 'A que saudades que eu sinto...'

SET Um campo interessante, que permite que o usurio faa uma escolha dado determinado nmero de opes. Cada campo pode conter at 64 opes. Exemplo: vicio SET("cafe", "cigarro") NOT NULL; Neste exemplo este campo pode conter apenas os seguintes itens: "" "cafe" "cigarro" "cafe,cigarro"

49

50

III PARTE - PRTICA Continuao...


n n

ENUM Um campo com funcionamento semelhante ao SET, com a diferena que apenas um valor pode ser escolhido. Exemplo: virtude ENUM("programar", "amar") NOT NULL; Neste exemplo este campo pode conter os seguintes valores: "" "programar" "amar"

ESTUDO DE CASO UTILIZANDO MYSQL

51

52

Вам также может понравиться