Sei sulla pagina 1di 38

SQL E MYSQL (PARTE I)

CURSO DE BANCO DE DADOS BSICO


Breno Santana Santos
brenosantos@itatechjr.com.br
AGENDA
MySQL e MySQL Workbench
Sistema de Segurana do MySQL
Linguagem SQL
Gerenciamento de Banco de Dados e Tabelas
Linguagem DDL
MYSQL E MYSQL WORKBENCH
SGBD Open Source SQL desenvolvido, distribudo e mantido pela
Oracle Corporation.
Principais caractersticas:
Software com dupla licena (GNU e Comercial);
Rpido;
Multitarefa;
Multiusurio;
SGBD SQL Robusto;
BD Relacional;
MYSQL E MYSQL WORKBENCH
Escalvel;
Fcil Usabilidade;
Trabalha em Cliente / Servidor;
Escrito em C e C++;
Testado com grande nmero de diferentes compiladores;
Suportado por vrios SO, ou seja, multiplataforma;
Suportado por vrias linguagens de programao: C#, Java,
PHP, etc;
MYSQL E MYSQL WORKBENCH
Sistema de privilgios e senha muito flexvel e seguro, e que
habilita verificao baseada em hosts, ou seja, utiliza o sistema
de segurana e autenticao UNIX;
Suporta grandes BDs, que contm 50 milhes de registros.
Segundo o fabricante, existem clientes que possuem em seu
servidor 200.000 tabelas e cerca de 5.000.000.000 de
registros;
Permite conexo TCP / IP.
MYSQL E MYSQL WORKBENCH
O MySQL Workbench uma ferramenta grfica que permite
trabalhar com Servidores e Banco de Dados MySQL.
MySQL Workbench possui cinco principais funcionalidades:
Desenvolvimento SQL: Criao e gerenciamento de conexes
para os servidores de banco de dados. Permite executar
comandos SQL por meio de um editor SQL. Substituto do
Query Browser;
Modelagem de Dados: Criao de modelos grficos de seu
esquema do banco de dados (Projeto Lgico), bem como a
engenharia reversa, a partir do Projeto Fsico gerar o modelo
grfico do Projeto Lgico. Substituto do DB Designer 4;
MYSQL E MYSQL WORKBENCH
Administrao de Servidores: Permite criar e administrar
instncias do servidor. Substituto do Server Administrator;
Migrao de Dados: Permite voc migrar o seu banco de
dados para o SQL Server, PostgreSQL e outros SGBDs;
Suporte ao MySQL Enterprise: Suporta os produtos do
Enterprise como o MySQL Enterprise Backup e MySQL Audit.
SISTEMA DE SEGURANA DO MYSQL
Possui um avanado sistema de segurana.
A cada conexo, solicitada uma senha.
As senhas dos usurios so criptografadas por um algoritmo
semelhante ao processo de autenticao de login do UNIX.
A principal forma de gerenciamento de segurana a concesso
/ revogao de permisses aos usurios que podem acessar o
banco de dados.
Caso necessite alterar as senhas dos usurios, veja o tutorial de
segurana (TUTORIAL SEGURANA MYSQL.pdf).
LINGUAGEM SQL
Os SGBDs precisam fornecer linguagens para definir e manter
um BD.
Assim, foi desenvolvida a linguagem SQL, tambm conhecida
como Linguagem de Consulta Estruturada (Structured Query
Language).
Desenvolvida pela IBM para ser a linguagem declarativa para
manipular BD.
LINGUAGEM SQL
Tornou-se um padro ANSI como linguagem padro de
manipulao de dados de um BD Relacional (BDR), apesar que
algumas empresas criam dialetos especficos do SQL apenas
disponveis nos seus produtos (SGBDs).
Permite manipular o BDR e seus objetos.
Dividida em trs categorias:
DDL: Linguagem de Definio de Dados;
DML: Linguagem de Manipulao de Dados;
DCL: Linguagem de Controle de Dados.
LINGUAGEM SQL
A linguagem DDL um conjunto de comandos SQL que permite
definir (criar), alterar ou remover objetos do BD, assim como o
prprio BD. Em sntese, afeta a estrutura dos objetos do BD.
Os principais comandos so:
Create;
Alter;
Drop;
Rename;
Truncate.
LINGUAGEM SQL
A linguagem DML um conjunto de comandos SQL que permite
o acesso e manipulao dos dados de uma tabela em um BD.
A linguagem DML pode ser dividida em:
Alto Nvel, Declarativa ou No Procedural: Informa-se o que
quer. Composta pelos comandos Insert, Update, Delete, Select,
etc;
Baixo Nvel ou Procedural: Informa-se como quer. Composta
por laos de repeties, condicionais, cursores, etc.
LINGUAGEM SQL
A linguagem DCL um conjunto de comandos SQL que permite o
gerenciamento de usurios e permisses em um BD.
Os principais comandos so:
Grant (concesso de permisses);
Revoke (revogao de permisses).
Esse tipo de linguagem no ser abordada no curso, somente as
linguagens DDL e DML.
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Consiste na criao, manipulao e remoo de objetos e dados
do BD, bem como essas operaes relacionadas ao prprio BD.
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Criao de um Banco de Dados:
Diversos BDs separam as informaes de domnios diferentes
em um servidor de banco de dados.
Sintaxe:
CREATE DATABASE DB_NOME;
CREATE SCHEMA DB_NOME;
Exemplo:
CREATE DATABASE ESCOLA;
CREATE DATABASE LIVRARIA;
CREATE SCHEMA EMPRESA;
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Utilizar um BD como BD corrente ou default para uso:
Sintaxe:
USE DB_NOME;
Exemplo:
USE ESCOLA;
USE LIVRARIA;
USE EMPRESA;
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Visualizao / Listagem dos As bases de dados
BDs contidos no MySQL: information_schema,
Sintaxe: mysql e test so BDs criados
automaticamente pelo
SHOW DATABASES; MySQL para teste ou
SHOW SCHEMAS; armazenamento de
configuraes.
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Remoo de um Banco de Dados:
Sintaxe:
DROP DATABASE DB_NOME;
DROP SCHEMA DB_NOME;
Exemplo:
DROP DATABASE ESCOLA;
DROP DATABASE LIVRARIA;
DROP SCHEMA EMPRESA;
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Criao de Tabelas:
As tabelas dividem os dados de um BD a fim de agrup-los
segundo as suas correlaes.
Toda coluna ou atributo possui um tipo de dado associado.
No MySQL temos vrios tipos de dados definidos pelo sistema
(pr-definidos).
Tipos de dados pr-definidos so:
Inteiro: TINYINT, SMALLINT, MEDIUMINT, INT, INTEGER,
BIGINT;
Nmero Exato: DECIMAL, NUMERIC;
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Ponto Flutuante: DOUBLE, FLOAT, REAL;
Data e Hora: DATE, DATETIME, TIME;
Caracter: CHAR, VARCHAR;
Tipos Enumerados: ENUM.
Para os tipos de dados Inteiro, Nmero Exato e Ponto
Flutuante, podemos informar a quantidade de dgitos
(preciso, tamanho), bem como se a coluna ser UNSIGNED
(admite valor absoluto, ignora o zero) ou ZEROFILL (preenche
os espaos vazios com zero). Ainda para os tipos Nmero
Exato e Ponto Flutuante, podemos informar a quantidade de
casas decimais (escala).
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Para o tipo de dado Caracter, VALOR DECIMAL(10,2)
podemos informar a UNSIGNED ZEROFILL
quantidade de caracteres NOME VARCHAR(200)
(preciso, tamanho).
DATA_NASCIMENTO
Exemplos: DATE
CODIGO INT HORARIO DATETIME
COD_CIDADE INT(10) HORAS TIME
ZEROFILL
SEXO ENUM(M, F)
VALOR DOUBLE
SEXO ENUM(M, F)
VALOR NUMERIC
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Para criar tabelas, utiliza-se o comando CREATE TABLE.
necessrio definir os nomes das colunas e seus tipos de
dados.
Definir as restries para as colunas (NOT NULL, NULL), se
necessrio.
Definir os valores padres para as colunas, se necessrio.
Definir o ENGINE, ou seja, o tipo da tabela, se necessrio. O
MySQL possui vrios tipos de tabelas, sendo que o padro
MyISAM.
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
O MyISAM permite maior desempenho, porm, no permite
relacionamento entre tabelas por meio de chaves
estrangeiras.
Para utilizar relacionamentos entre tabelas por meio de
chaves estrangeiras, recomendado o uso do tipo InnoDB,
mas esse tipo mais lento que o MyISAM.
Os tamanhos mximos para a preciso e escala de um tipo de
dado so, respectivamente, 255 e 30.
Deve-se analisar cuidadosamente o uso do tipo de dado
VARCHAR, pois esse tipo permite degradao de
desempenho.
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Sintaxe:

CREATE TABLE TB_NOME (


NOME_ATRIBUTO TIPO_DADO [RESTRIES],
...
NOME_ATRIBUTO TIPO_DADO [RESTRIES]
)ENGINE = TIPO_ENGINE;
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Exemplo:

CREATE TABLE TB_ALUNO (


MATRICULA INT NOT NULL,
NOME VARCHAR(50) NOT NULL,
ENDERECO VARCHAR(50) NOT NULL,
TELEFONE VARCHAR(15) NULL,
IDADE SMALLINT(3) NOT NULL ZEROFILL,
ALTURA DECIMAL(10,2) NOT NULL UNSIGNED,
DATA_MATRICULA DATETIME DEFAULT (NOW())
) ENGINE = MyISAM;
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
As colunas de uma tabela podem ter a propriedade de
autoincremento, ou seja, o MySQL atribui o valor
automaticamente, permitindo que uma coluna seja
incrementada a cada insero de novos registros,
identificando-os unicamente.
Uso da clusula AUTO_INCREMENT.
Somente para os tipos de dados Inteiro e Ponto Flutuante.
Somente uma coluna por tabela.
A coluna deve ser uma chave (PRIMARY KEY, UNIQUE KEY
ou KEY) ou um campo indexado (INDEX).
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Exemplo:

CREATE TABLE TB_ALUNO (


MATRICULA INT NOT NULL AUTO_INCREMENT,
NOME VARCHAR(50) NOT NULL,
ENDERECO VARCHAR(50) NOT NULL,
TELEFONE VARCHAR(15) NULL,
IDADE SMALLINT(3) NOT NULL ZEROFILL,
ALTURA DECIMAL(10,2) NOT NULL UNSIGNED,
DATA_MATRICULA DATETIME DEFAULT (NOW()),
INDEX(MATRICULA)
) ENGINE = MyISAM;
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Alterao de Tabelas:
Alterao da estrutura de uma tabela.
Permite:
Incluso, modificao, substituio e remoo de colunas;
Incluso e remoo de restries;
Alterao do identificador (nome) da tabela.
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Sintaxe:
ALTER TABLE TB_NOME ESPECIFICAES;
Especificaes:
Incluso de Coluna: ADD COLUMN NOME_ATRIBUTO
TIPO_DADO [RESTRIES];
Substituio de Coluna: CHANGE COLUMN
ANTIGO_NOME_ATRIBUTO NOVO_NOME_ATRIBUTO
TIPO_DADO [RESTRIES];
Alterao de Coluna: MODIFY COLUMN
NOME_ATRIBUTO TIPO_DADO [RESTRIES];
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Remoo de Coluna: DROP COLUMN NOME_ATRIBUTO;
Renomeao de Tabela:
RENAME TO NOVO_TB_NOME;
RENAME AS NOVO_TB_NOME.
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Exemplo:
ALTER TABLE TB_ALUNO ADD COLUMN
NM_RESPONSAVEL VARCHAR(50) NOT NULL;

ALTER TABLE TB_ALUNO ADD COLUMN VALOR_MENSAL


DECIMAL(10,2) NOT NULL, SITUACAO TINYINT(1);

ALTER TABLE TB_ALUNO CHANGE COLUMN TELEFONE


FONE_RESPONSAVEL VARCHAR(15) NOT NULL;
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Exemplo:
ALTER TABLE TB_ALUNO MODIFY COLUMN MATRICULA
BIGINT NOT NULL;

ALTER TABLE TB_ALUNO DROP COLUMN ALTURA;

ALTER TABLE TB_ALUNO RENAME TO ALUNO_COLEGIO;


GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Remoo de Tabelas:
Remove a tabela do BD corrente.
Sintaxe:
DROP TABLE TB_NOME;
Exemplo;
DROP TABLE TB_ALUNO;
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Renomeao de Tabelas:
Renomeia uma tabela do BD corrente.
Sintaxe:
RENAME TABLE TB_NOME TO NOVO_TB_NOME;
Exemplo;
RENAME TABLE TB_ALUNO TO ALUNO_COLEGIO;
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Eliminao dos Registros de Tabelas:
Esvazia uma tabela do BD corrente, ou seja, remove todos os
registros.
Sintaxe:
TRUNCATE TABLE TB_NOME;
Exemplo;
TRUNCATE TABLE TB_ALUNO;
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Listagem de Tabelas de um
BD:
Sintaxe:
SHOW TABLES FROM
DB_NOME;
SHOW TABLES IN
DB_NOME;
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Visualizao da Estrutura de Tabelas:
Permite visualizar a estrutura de uma tabela: colunas, tipos de
dados e restries.
Sintaxe:
DESCRIBE TB_NOME;
DESC TB_NOME;
SHOW COLUMNS FROM TB_NOME;
SHOW COLUMNS IN TB_NOME;
GERENCIAMENTO DE BANCO DE DADOS E
TABELAS
Visualizao da Estrutura de Tabelas:
Exemplo:

Potrebbero piacerti anche