mysql_introducao

Transcrição

mysql_introducao
Introdução ao MySQL
Wikipédia - http://pt.wikipedia.org/wiki/MySQL
O MySQL é um sistema de gerenciamento de banco de dados (SGBD), que utiliza a
linguagem SQL (Linguagem de Consulta Estruturada, do inglês Structured Query
Language) como interface. É atualmente um dos bancos de dados mais populares, com
mais de 10 milhões de instalações pelo mundo.
Entre os usuários do banco de dados MySQL estão: NASA, Friendster, Banco Bradesco,
Dataprev, HP, Nokia, Sony, Lufthansa, U.S Army, US. Federal Reserve Bank, Associated
Press, Alcatel, Slashdot, Cisco Systems, CanaVialis S.A. e outros.
História
O MySQL foi criado na Suécia por dois suecos e um finlandês: David Axmark, Allan
Larsson e Michael "Monty" Widenius, que têm trabalhado juntos desde a década de 1980.
Hoje seu desenvolvimento e manutenção empregam aproximadamente 400 profissionais
no mundo inteiro, e mais de mil contribuem testando o software, integrando-o a outros
produtos, e escrevendo a respeito dele.
No dia 16 de Janeiro de 2008, a MySQL AB, desenvolvedora do MySQL foi adquirida pela
Sun Microsystems, por US$ 1 bilhão, um preço jamais visto no setor de licenças livres. No
dia 20 de Abril de 2009 a Oracle compra a Sun Microsystems e todos o seu produtos,
incluindo o MySQL.
O sucesso do MySQL deve-se em grande medida à fácil integração com o PHP incluído,
quase que obrigatoriamente, nos pacotes de hospedagem de sites da Internet oferecidos
atualmente. Empresas como Yahoo! Finance, MP3.com, Motorola, NASA, Silicon
Graphics e Texas Instruments usam o MySQL em aplicações de missão crítica[3]. A
Wikipédia é um exemplo de utilização do MySQL em sites de grande audiência.
O MySQL hoje suporta Unicode, Full Text Indexes, replicação, Hot Backup, GIS, OLAP e
muitos outros recursos.
Ribamar FS – http://ribafs.org
Aprendendo a instalar e configurar o phpMyAdmin
Introdução
O que é o phpMyAdmin?
phpMyAdmin é pretendido para administração do MySQL sobre aWeb.Com o
phpMyAdmin instalado em seu servidor você podera críar banco de dados, copiar tabelas,
criar, apagar e editar. Facil configuração e administração.
O que é necessario para instalar o phpMyAdmin?
mySQL: www.mysql.com
Apache: www.apache.org
PHP: www.php.net
Instalando
Entre na url www.phpwizard.net e entre na seção phpMyAdmin, você podera optar por
duas opções do phpMyAdmin:
1-) Extensão *.php3
2-) Extensão *.php
Aconselho a pega o phpMyAdmin de extensão *.php, porque a maioria dos servidores
reconhece essa extensão.
Configurando
Após fazer o download descompacte o mesmo e copie todos os arquivos para uma pasta
no seu servidor ex: mysql e edite o arquivo config.inc
$cfgServers[1]['host'] = 'localhost'; // MySQL hostname
mantenha localhost
$cfgServers[1]['port'] = ''; // MySQL port - leave blank for default port
mantenha
$cfgServers[1]['adv_auth'] = true; // Use advanced authentication?
aconselho a deixar true pois assim ao acessar a url no browser ele aparecera uma caixa
de login e senha do usuário, para sua melhor segurança. caso deixe false ele não
aparecera nada e entrara direto.
Ribamar FS – http://ribafs.org
$cfgServers[1]['stduser'] = 'usuário'; // MySQL standard user (only needed with advanced
auth)
nome do usuário
$cfgServers[1]['stdpass'] = 'senha'; // MySQL standard password (only needed with
advanced auth)
senha
$cfgServers[1]['user'] = 'usuário'; // MySQL user (only needed with basic auth)
nome do usuário
$cfgServers[1]['password'] = 'senha'; // MySQL password (only needed with basic auth)
senha
Pronto a configuração basica do phpMyAdmin já esta pronta.
Agora é só acessar via browser seu phpMyAdmin ex: www.seusite.com.br/mysql/
Qualquer duvida ou comentário, poste uma mensagem no forum.
Tutorial feito por:
Eduardo Luis de Medeiros
[email protected]
Ribamar FS – http://ribafs.org
Introdução ao MySQL
Teste de SQL Online
http://www.w3schools.com/sql/default.asp
http://www.w3schools.com/sql/sql_tryit.asp
Instalação
Sugestão: Instale com o pacote Xampp (http://xampp.sf.net)
Executando
Uma boa opção de administração do MySQL é o phpmyadmin, que também acompanha o
Xampp.
Administrando pela linha de comando
mysql -h host -u root -p
(o super usuário default é root)
mysql -u root (sintaxe para acessar o MySQL local e quando estiver sem senha)
Trocando a senha do Usuário root
mysql -u root teste (Usuário root acessar banco teste)
use mysql;
UPDATE user SET Password=PASSWORD("novasenha") WHERE user="root";
FLUSH PRIVILEGES;
Ou
mysql -u root clientes
SET PASSWORD FOR root=PASSWORD('senhadoroot');
Criando Usuários
mysql --user=root mysql
GRANT ALL PRIVILEGES ON *.* TO super@localhost
IDENTIFIED BY 'senha' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO super@"%"
IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
super - é um total super usuário que pode se conectar no localhost e
de qualquer lugar ("%"), mas precisa usar senha
GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
admin - usuário que pode se conectar no localhost sem senha.
Pode executar os comandos mysqladmin reload, mysqladmin refresh, and mysqladmin
Ribamar FS – http://ribafs.org
flush-*
e mysqladmin processlist . Não tem nenhum privilégio relacionado aos bancos.
GRANT USAGE ON *.* TO fraco@localhost;
fraco - pode conectar somente via localhost sem senha mas sem privilégios, somente
para uso.
Exemplo:
GRANT ALL PRIVILEGES ON *.* TO ribafs@localhost IDENTIFIED BY 'ribafs' WITH
GRANT OPTION;
mysql -u ribafs
// Dá erro de senha
mysql -u ribafs -p //Funciona após entrar a senha ribafs
Removendo Usuários
DROP USER nomeusuario;
Privilégios
REVOKE GRANT ALL ON nomebancooutabelaou*ou*.* FROM nomeusuario
* - todas as tabelas
*.* todos os bancos e todas as tabelas
banco.* - todas as tabelas do banco
GRANT SELECT,INSERT,UPDATE ON nomebanco.* TO nomeuser;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON nomebanco.* TO
usuario@localhost
IDENTIFIED BY 'senha';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON nomebanco.* TO
[email protected]
IDENTIFIED BY 'senha';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON nomebanco.* TO
usuario@'%'
IDENTIFIED BY 'senha';
Remover o serviço:
bin\mysqld --remove mysql
Ribamar FS – http://ribafs.org
Criar Tabelas Relacionadas
create table produto(
codigo int not null primary key,
nome varchar(50) not null unique,
descricao varchar(200),
valor real(6, 2)
) ENGINE=INNODB;
create table cliente(
codigo int not null primary key,
nome varchar(50) not null,
email varchar(100) not null unique,
cpf varchar(11) not null
) ENGINE=INNODB;
create table pedido(
numero int not null primary key auto_increment,
codigocliente int not null references cliente(codigo),
valortotal real(7,2) DEFAULT '0.00' NOT NULL
) ENGINE=INNODB;
create table item(
numeropedido int not null references pedido(numero),
codigoproduto int not null references produto(codigo),
quantidade int not null,
primary key(numeropedido, codigoproduto)
) ENGINE=INNODB;
CREATE TABLE product (
category INT NOT NULL,
id INT NOT NULL,
price DECIMAL,
PRIMARY KEY(category, id)
) ENGINE=INNODB;
CREATE TABLE product_order (
no INT NOT NULL AUTO_INCREMENT,
product_category INT NOT NULL,
product_id INT NOT NULL,
customer_id INT NOT NULL,
PRIMARY KEY(no),
INDEX (product_category, product_id),
FOREIGN KEY (product_category, product_id)
REFERENCES product(category, id) ON UPDATE CASCADE ON DELETE
RESTRICT,
INDEX (customer_id),
FOREIGN KEY (customer_id)
REFERENCES customer(id)
Ribamar FS – http://ribafs.org
) ENGINE=INNODB;
O tipo InnoDb dá suporte à constraint Foreign Key (references).
Resumo de Uso
1) mysql -u root -p ou mysql -u root
mysql -h host -u user -p banco
Obs: Caso receba a mensagem: Can't connect to MySQL server on 'localhost'
Falta startar o MySQL
2) create database nomebanco;
3) use nomebanco;
4) create table nometabela(campos tipos...);
5) select * from nometabela;
6) show databases;
7) show tables;
8) describe nometabela;
Importar e Exportar
Exportando:
bin\mysqldump -u user -p passwd banco > banco.sql
Importando:
bin\mysql -u user -p password banco < banco.sql
Mudar Conjunto de Caracters para LATIN1
musql -u root
\C latin1
Populando Tabelas após a Criação
O comando LOAD DATA pode ser utilizado para popular tabelas, trazendo de arquivos:
Ribamar FS – http://ribafs.org
LOAD DATA LOCAL INFILE '/path/arquivo.txt' INTO TABLE nometabela;
SELECT DATABASE();
SHOW CHARACTER SET;
CREATE DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
ALTER DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
CREATE TABLE tbl_name (column_list)
[[DEFAULT] CHARACTER SET charset_name] [COLLATE collation_name]]
ALTER TABLE tbl_name
[[DEFAULT] CHARACTER SET charset_name] [COLLATE collation_name]
Example:
CREATE TABLE t1 ( ... ) CHARACTER SET latin1 COLLATE latin1_danish_ci;
col_name {CHAR | VARCHAR | TEXT} (col_length)
[CHARACTER SET charset_name] [COLLATE collation_name]
Example:
CREATE TABLE Table1
(
column1 VARCHAR(5) CHARACTER SET latin1 COLLATE latin1_german1_ci
);
Funções com Datas
DATE_SUB
SELECT something FROM tbl_name WHERE DATE_SUB(CURDATE(),INTERVAL 30
DAY) <= date_col;
SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
DATE_ADD
SELECT DATE_ADD('2006-05-00',INTERVAL 1 DAY);
SELECT CURDATE();
SELECT CURTIME();
DATE_FORMAT
SELECT date_format( '2006-04-30', '%d/%m/%Y' ); -- 30/04/2006
SELECT DATE_FORMAT('2003-10-03',GET_FORMAT(DATE,'EUR')); -- 03.10.2003
SELECT DATE_FORMAT('2006-06-00', '%d/%m/%Y');
Ribamar FS – http://ribafs.org
SELECT NOW();
SELECT TO_DAYS('1997-10-07'); -- RETORNA DIAS
SELECT YEAR('2000-01-01');
dbDESIGNER
Gerenciamento e modelagem do SGBD MySQL.
Site oficial - http://fabforce.net/dbdesigner4/
Download - http://fabforce.net/downloads.php
O programa e a documentação.
Tutorial usando com o PostgreSQL:
http://www.flaviobrito.com.br/cursos/bd/apostilas/GuiaDBDesign4PosgreSQL.pdf
Triggers no MySQL
Criando uma tabela de logs
Que guardará informações dos registros excluídos e atualizados
Exemplo de tabela, cujas operações (delete e update) queremos monitorar
create table clientes
(
cliente int primary key,
cpf char(11),
nome char(45) not null,
credito_liberado char(1) not null,
data_nasc date,
email varchar(50)
)engine innodb;
Exemplo de tabela onde queremos guardar as informações (logs) sobre as alterações, a
data e hora e quem efetuou
create table logs
(
code int auto_increment primary key,
tablel char(20) not null,
operation char(6) not null,
login char(12) not null,
date_time datetime not null
)engine innodb;
Exemplo de trigger que fará o serviço automaticamente a cada operação de delete
Ribamar FS – http://ribafs.org
delimiter |
DROP TRIGGER IF EXISTS tg_delete
CREATE TRIGGER tg_delete BEFORE DELETE ON clientes
FOR EACH ROW
BEGIN
INSERT INTO logs SET tablel = 'clientes', operation = 'delete',login = CURRENT_USER,
date_time = NOW();
END;
| delimiter;
Exemplo de trigger que fará o serviço automaticamente a cada operação de update
delimiter |
CREATE TRIGGER tg_update BEFORE UPDATE ON clientes
FOR EACH ROW BEGIN
INSERT INTO logs SET cliente = OLD.cliente, nome=OLD.nome;
END;
|
delimiter ;
Ribamar FS – http://ribafs.org

Documentos relacionados

Base de Dados

Base de Dados de dados ou você não pode selecioná-lo. • Selecionando um banco de dados não significa que ele deve ser o padrão para a duração da ligação. • Enquanto um banco de dados é o padrão, você pode consul...

Leia mais

MySQL e a comunidade de software livre

MySQL e a comunidade de software livre MySQL - Wikipedia, the free encyclopedia. Disponível em: http://en.wikipedia.org/wiki/MySQL MySQL :: MySQL 5.1 Reference Manual :: 1.3.2 History of MySQL. Disponível em: http://dev.mysql.com/doc/re...

Leia mais

BancoDados - WordPress.com

BancoDados - WordPress.com • Relacionamento entre as tabelas e organização dos dados • Padronização da linguagem (SQL) • Armazenamento de dados com segurança • Criptografia de dados e controle de acesso • Backup e Recuperaçã...

Leia mais

gestão de qualidade na resolução de requisição e incidentes em

gestão de qualidade na resolução de requisição e incidentes em empresa se mantenham em pé. Isso se dá pelo fato de que com a globalização, o acesso as informações se dão por igual à qualquer entidade do mundo, o que as obriga a buscarem o diferencial nos detal...

Leia mais