Introdução ao MySQL Introdução ao MySQL 5.1 5.1 Prof. Tales K. Cabral Prof. Tales K. Cabral [email protected] [email protected] Colégio da Imaculada Colégio da Imaculada Curso Técnico em Informática Curso Técnico em Informática 2º Módulo 2º Módulo
Apr 21, 2015
Introdução ao MySQL 5.1Introdução ao MySQL 5.1Introdução ao MySQL 5.1Introdução ao MySQL 5.1
Prof. Tales K. CabralProf. Tales K. [email protected]@colegiodaimaculada.com.br
Colégio da ImaculadaColégio da ImaculadaCurso Técnico em InformáticaCurso Técnico em Informática
2º Módulo2º Módulo
Slide nº 2 de 24
MySQL
Sistema Gerenciador de Banco de Dados
Licença: GNU (General Public Licence) - FREEWARE
Versão: 5.1.36 ou 5.1.47 (estáveis)Como encontrar? Internet (download)http://www.mysql.com/downloads/mirror.php?id=389420#mirrors (escolher um dos
servidores)
Site Oficial: www.mysql.com
Slide nº 3 de 24
MySQLInstalação:
1. Baixar o programa;2. Executar o arquivo baixado;
1. Normalmente, escolhe-se a configuração padrão. Porém, se o usuário dispõe de espaço em disco, é aconselhável a instalação completa.
3. Obter/criar um script (arquivo .bat):1. Definição das regras para a execução do banco
de dados (ant. ao Windows XP);2. Definição das configurações do administrador
(ant. ao Windows XP);
4. Executar o banco e configurar DDL e DML;
Slide nº 4 de 24
MySQLO MySQL é:
• Um gerenciador de banco de dados;
• Assim como o PHP, é gratuito e de código aberto;
• Utiliza a linguagem de programação SQL* (Structured Query Language);
Motivo:• Existem vários bancos de dados que suportam e seguem o padrão
SQL, porém cada um deles possui extensões proprietárias que possibilitam novas funcionalidades ao padrão.
Exemplos:• PostgreSQL: também tem código aberto e é gratuito, além de
funcionar igualmente bem com o PHP;
• Microsoft SQL Server: não é gratuito, não possui código aberto e é bastante usado em corporações.
* SQL - um padrão e a linguagem mais usada em bancos de dados
Slide nº 5 de 24
MySQL
Aplicações:• Na internet atual, praticamente todos os
servidores de hospedagem suportam MySQL, exatamente pelo fato dele ser gratuito como o PHP e os dois trabalharem muito bem em conjunto.
• Também funciona com ASP, mas requer a disponibilização do servidor para poder funcionar.
• É suportado pelo código PHP.
Slide nº 6 de 24
MySQL
Divisões:
• DDL (Data Definition Language): Linguagem de definição de dados. Consite na criação de bases de dados (bd) e das tabelas referentes a estes bds.
• DML (Data Manipulation Language): Linguagem de Manipulação de Dados. Consiste em operações que podem ser realizadas com as tabelas criadas a partir da DDL.
Slide nº 7 de 24
MySQL
Abaixo segue um breve resumo das funções que manipulam bds e tabelas em SQL.
Criando databases
Sintaxe:
CREATE DATABASE <nome_database>; ou CREATE DATABASE IF NOT EXISTS <nome_database> ;
Mostrando databases
Sintaxe:
SHOW DATABASES;
DDL:
Slide nº 8 de 24
MySQL
Acessando database
Sintaxe:
USE DATABASE <nome_database>;
Apagando databases
Sintaxe:
DROP DATABASE <nome_database>;
Visualizando as tabelas que existem dentro de alguma base de dados (primeiro deve acessar a base):
Sintaxe:
USE DATABASE <nome_database>;SHOW TABLES;
DDL:
Slide nº 9 de 24
MySQL
Abaixo segue um breve resumo das funções que manipulam tabelas em SQL.
Criando tabelas
Sintaxe:
CREATE TABLE <nome_da_tabela> ( <nome_do_campo> <tipo_do_campo>,
<outro_campo> <tipo_do_campo>, ... );
DDL:
Slide nº 10 de 24
• Exemplo de criação de uma tabela:
Create Table <nome_tabela> (
atribute1 INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
atribute2 CHAR(20) DEFAULT '' NOT NULL,
atribute3 DOUBLE(16,2) DEFAULT '0.00' NOT NULL,
PRIMARY KEY(atribute1, atribute2)
);
MySQLDDL:
cláusulas
UNSIGNED: sem sinal - não permite inserção de valores menores que zero ZEROFILL: preenche com zeros à frente do número inteiro inserido equivalendo à
qtd. de algarismosAUTO_INCREMENT: para tipo de dados numérico e inteiro, faz o incremento
automático da sequência.DEFAULT: define um valor padrão para o caso de não preenchimento deste durante
a Cláusulas inserção.UNIQUE: define valores únicos para coluna (como chave primária) portanto, não se
utiliza em chaves primárias estando subentendida esta função.NOT NULL: refere-se aos valores da coluna não poderem ficar vazios (sem valor).PRIMARY KEY: chave primáriaFOREIGN KEY / REFERENCES: chave estrangeiraCHECK: determina uma verificação para inserção de valores. Ex.: CHECK (sexo in
[“M”,”F”])
Slide nº 11 de 24
Chave Primária• A função da chave primária é identificar univocamente uma
linha da tabela.
• Cada tabela deve possuir (pelo menos) uma chave primária.
• Quando se define um atributo como chave primaria, fica implícito as cláusulas UNIQUE e NOT NULL para este atributo, não sendo necessário a especificação destas.
create table cliente ( codigo int(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’
);
MySQLDDL:
Slide nº 12 de 24
MySQLDDL: Tipos de DadosTipo Descrição
tinyint Números inteiros de -128 a 127 (signed) ou de 0 a 255 (unsigned).
integer / int Números inteiros de -2147483648 a 2147483647 (signed) ou então de 0 a 4294967295 (unsigned).
bigintNúmeros inteiros de -9223372036854775808 a 9223372036854775807 (signed) ou de 0 a
18446744073709551615 (unsigned).
bool / boolean / bit Indica falso (zero) ou verdadeiro (qualquer número diferente de zero).
float(m,d)Números reais de -3.402823466E+38 a -1.175494351E-38 e de 1.175494351E-38 a
3.402823466E+38. m representa o tamanho do número de d representa o número de decimais.
char(m)
Uma string de tamanho fixo. m representa o tamanho da coluna. Caso o dado guardado nessa coluna seja menor que m, a diferença é preenchida com espaços vazios. Caso m não seja declarado, o tamanho considerado é 1. O tamanho vai de 0 a 255.
varchar(m)Funciona da mesma maneira que o char, porém o tamanho da string não é fixo (não existe o
preenchimento com espaços).
text / blob Strings com máximo de 65,535 caracteres.
tinytext / tinyblob Strings com máximo de 255 caracteres.
mediumtext / mediumblob Strings com máximo de 16,777,215 caracteres.
longtext / longblob Strings com máximo de 4,294,967,295 caracteres ou 4GB.
enum ('valor1','valor2',...)Guarda uma string que precisa ser igual a algum item da lista valor1, valor2,.... A lista pode ter no
máximo 65,535 itens.
date Datas com valor entre '1000-01-01' e '9999-12-31'. Perceba que o formato suporta é 'AAAA-MM-DD'.
time Horas com valor entre '-838:59:59' e '838:59:59'. O formato é 'HH:MM:SS'.
datetimeCombinação entre date e time. O formato é 'AAAA-MM-DD HH:MM:SS'. Suporta valores entre '1000-
01-01 00:00:00' e '9999-12-31 23:59:59'.
year Guarda somente o ano de uma data, em quatro dígitos.
Slide nº 13 de 24
MySQLApagando tabelas:
DROP TABLE <nome_da_tabela>;
Alterando tabelas (incluindo colunas):
ALTER TABLE <nome_da_tabela> add <coluna> <tipo> after <coluna_anterior>;
Alterando tabelas (apagando colunas):
ALTER TABLE <nome_da_tabela> drop <coluna>;
Renomeando Tabela:
RENAME TABLE <bd>.<nome_antigo> TO <bd>.<novo_nome>;
Renomeando tabelas (outra forma):
ALTER TABLE <nome_tabela> RENAME TO <novo_nome>;
Renomeando campos:
ALTER TABLE <nome_tabela> CHANGE <nome_campo> <nome_campo> INT(3) NOT NULL...;ALTER TABLE <nome_tabela> CHANGE <nome_campo> <novo_nome_campo> INT(3) NOT NULL...;
DDL:
Slide nº 14 de 24
MySQL
Inserindo dados na tabela ( Primeiro Modo – usado para um registro somente)
INSERT INTO <nome_da_tabela> SET <nome_da_coluna>=<'dado_a_ser_inserido‘>, <outra_coluna>=<'outro_dado‘>, ...;
Inserindo dados na tabela ( Segundo Modo - usado para vários registros de uma vez)
INSERT INTO <nome_da_tabela> (<coluna1>, <coluna2>,...) VALUES (<valor_da_coluna1>, <valor_da_coluna_2>,...);
DDL:
Slide nº 15 de 24
MySQL
Alterando dados da tabela
UPDATE <nome_da_tabela> SET <coluna1>=<'valor_da_coluna1‘>, <coluna2>=<'valor_da_coluna2‘>, ... [WHERE <condição_para_alteração>] [ORDER BY <coluna>] [LIMIT <número_máximo>];
Apagando dados da tabela
DELETE FROM <nome_da_tabela>; (todos os dados)
DELETE FROM <nome_da_tabela> [WHERE <condição_para_apagamento>] [ORDER BY <coluna>] [LIMIT <número_máximo>];
DDL:
Slide nº 16 de 24
MySQL
Selecionando dados da tabela
SELECT <colunas_a_selecionar> FROM <nome_da_tabela>
[WHERE <condição_para_seleção>] [ORDER BY <coluna>] [LIMIT <número_máximo>];
Aqui que começa a aplicação dos operadores relacionais em forma de
comandos SQL sobre os dados inseridos nas
tabelas criadas...
DML:
Slide nº 17 de 24
Operadores Unários
• Projeção:SELECT <CAMPO1>,<CAMPO2>,...FROM <RELAÇÃO>;
• Exemplo:SELECT NOME, FUNCAOFROM EMPRESA;
Slide nº 18 de 24
Operadores Unários
• Seleção:SELECT <CAMPO1>FROM <RELAÇÃO>WHERE <CONDIÇÃO> |AND/OR/LIKE...|;
• Exemplo:SELECT NOMEFROM EMPRESAWHERE SEXO=‘M’;
Slide nº 19 de 24
Operadores Unários
• Seleção e Projeção (Juntos):SELECT <CAMPO1>,<CAMPO2>,...FROM <RELAÇÃO>WHERE <CONDIÇÃO> |AND/OR/LIKE...|;
• Exemplo:SELECT NOME, FUNCAOFROM EMPRESAWHERE SEXO=‘M’ AND IDADE > 35;
Slide nº 20 de 24
• União:SELECT <CAMPO1>,<CAMPO2>,...FROM <RELAÇÃO>WHERE <CONDIÇÃO1> |AND/OR/LIKE...|UNIONSELECT <CAMPO1>,<CAMPO2>,...FROM <RELAÇÃO>WHERE <CONDIÇÃO2> |AND/OR/LIKE...|;
• Exemplo:SELECT NOME, FUNCAO, SALFROM EMPRESAWHERE NDEP = 30 AND SAL > 22000UNIONSELECT NOME,FUNCAO, SALFROM EMPRESAWHERE SEXO = ‘M’;
Operadores Binários
Têm que ser os mesmos!!!
São os mesmos!!!
Slide nº 21 de 24
• Produto Cartesiano:SELECT <CAMPO1>, <CAMPO2>, ...FROM <RELAÇÃO1>, <RELACAO2, ...
• Exemplos:SELECT NOMEPROFESSOR, TURMA, NOMEALUNOFROM PROFESSORES, TURMAS, ALUNOS
ou
SELECT A.DTADMISSAOFROM ALUNOS A, PROFESSORES P;
Operadores Binários
Slide nº 22 de 24
• Junção Natural (inner join):SELECT <CAMPO1>, <CAMPO2>, ...FROM <RELAÇÃO1>, <RELACAO2, ...WHERE <CONDIÇÃO DE ASSOCIAÇÃO>;
• Exemplo:SELECT P.NOME, NOTA, A.NOMEFROM PROFESSORES P, DISCIPLINAS D, ALUNOS A, NOTAS NWHERE P.NOME=D.NOMEP AND A.NOME=D.NOMEA AND A.NOME=N.NOMEA;
Operadores Binários
Slide nº 23 de 24
• Junção Natural, Projeção e Seleção (juntos):
SELECT <CAMPO1>, <CAMPO2>, ...FROM <RELAÇÃO1>, <RELACAO2, ...WHERE <CONDIÇÃO DE ASSOCIAÇÃO>,
<CONDIÇÃO2>;
• Exemplo:SELECT E.NOME, FUNCAO, D.NOMEFROM EMPREGADO E, DEPARTAMENTO DWHERE E.NUMDEP=D.NUMDEP AND SAL > 22000;
Operadores Binários
Referências
• Manual de Referência Online do MySQL 4.1 (em Português). Disponível em: http://dev.mysql.com/doc/refman/4.1/pt/index.html PDF em: http://downloads.mysql.com/docs/refman-4.1-pt.pdf
• Tutorial do Professor. Disponível em: http://www.colegiodaimaculada.com.br/~tales/apostilas2M/mysql_tutorial.pdf
Slide nº 24 de 24