Aula 10 MySQL - Introducao
-
Upload
johnatas-ferreira -
Category
Documents
-
view
216 -
download
1
description
Transcript of Aula 10 MySQL - Introducao
-
Introduo a MySQLProgramao Dinamica
-
2
Onde armazenar dados?
Praticamente toda aplicao web precisa lidar com grandes volumes de dados.
Dados podem ser armazenados em arquivos (texto ou binrios) Redundncia Manuteno e Escalabilidade Integridade Eficincia
-
3
Bancos de Dados
Um banco de dados um conjunto de dados armazenados de forma automaticamente organizada e gerenciada.
Um banco de dados controlado por uma aplicao: (SGBD) Todo o acesso a dados feito indiretamente,
por meio do SGBD.
-
4
Vantagens
Consistncia e Integridade Um banco de dados bem organizado evitar o
armazenamente desnecessrio de informaes redundantes, evitando a possibilidade de inconsistncia.
Eficincia SGBDs so altamente otimizados para
armazenar e buscar informao da maneira mais eficiente possvel.
-
5
Vantagens
Manuteno Um Sistema de Gerenciamento de Banco de
Dados cuida automaticamente de todos os detalhes da implementao fsica do armazenamento de dados.
Escalabilidade Sua aplicao pode crescer sem mudanas
fundamentais no design.
-
6
Banco de Dados Relacional
Composto por Entidades (ou Tabelas). Cada tabela tem campos. Os campos de uma tabela podem fazer
referncia a outras tabelas.
-
http://marx.vanderlinden.com.br/ 7
Banco de Dados Relacional
-
8
SQL
Structured Query Language Linguagem-padro para manipulao de
informaes em bancos de dados. Definies de dados Consultas Modificaes, Inseres, Excluses Controle de Acesso
-
9
Bancos de Dados em PHP
PHP tem suporte a praticamente todos os sistemas de Bancos de Dados em uso atualmente: MS SQL Server MySQL Oracle PostgreSQL SQLite etc..
-
10
Design de Banco de Dados
Descrio das entidades que compem o sistema.
Definio das propriedades de cada entidade que se deseja armazenar.
Elaborao dos relacionamentos entre as entidades.
-
11
MySQL
MySQL um dos SGBDs mais amplamente usados no mundo. Software livre/open source
Desenvolvido pela MySQL AB, de propriedade da Sun Microsystems.
'M' no LAMP / WAMP Leve, eficiente e robusto Excelente integrao com PHP
-
12
PHP
MySQL Cliente/Servidor
Cliente MySQL(Linha deComando)
ServidorMySQL Banco deDados
MduloCliente MySQL SQL
Linhas de DadosE/S Arquivo
-
13
Arquitetura Cliente/Servidor
O Servidor cuida do controle de concorrncia. No h conflito se dois clientes tentarem
modificar o mesmo dado ao mesmo tempo. O Servidor tem embutido um mecanismo de
controle de acesso. O Cliente e o Servidor podem estar distribudos
fisicamente de qualquer maneira.
-
http://marx.vanderlinden.com.br/ 14
SQL
A unidade bsica de SQL a consulta (query): Executa uma operao no Banco de Dados.
Pode modificar o BD. Retorna:
Se a instruo foi ou no um sucesso. O nmero de linhas afetadas no banco de dados.
Se aplicvel, retorna um conjunto de linhas contendo as informaes solicitadas.
-
15
SQL
Caractersticas de SQL: No faz distino entre maisculas e
minsculas. Ignora espaos. Cada instruo termina com ; Comentrios podem ser feitos com --
-
16
Cliente MySQL
O cliente-padro MySQL uma aplicao de linha de comando. Interativo Script
Uso: mysql [opes...] [nome_bd]
-
http://marx.vanderlinden.com.br/ 17
Opes da linha de comando
-u, --user=nome Nome do usurio Padro: usurio do sistema)
-p, --password[=name] Senha Padro: ''
-h, --host=nome Endereo do servidor Padro: localhost
-
18
Opes da linha de comando
-E, --vertical Exibe a sada verticalmente (equivalente a
usar \G) -H, --html
Exibe a sada como tabelas HTML
-
19
SELECT
O comando SELECT busca e retorna uma informao do servidor.
Pode ser usado com qualquer combinao de: Valores literais. Funes embutidas. Campos da tabela.
-
20
SELECT
SELECT com valor literal:
mysql> SELECT 'Hello, World!';+---------------+| Hello, World! |+---------------+| Hello, World! | +---------------+1 row in set (0.00 sec)
-
21
NOW()
A funo NOW() retorna a data e hora atuais.mysql> SELECT NOW();+---------------------+| NOW() |+---------------------+| 2008-10-05 01:43:59 | +---------------------+1 row in set (0.00 sec)
-
22
USER()
A funo USER() retorna o usurio atual.mysql> SELECT USER();+----------------+| USER() |+----------------+| root@localhost | +----------------+1 row in set (0.00 sec)
-
23
VERSION()
A funo VERSION() retorna a verso atual do MySQL.
mysql> SELECT VERSION();+--------------------+| VERSION() |+--------------------+| 5.0.51a-3ubuntu5.1 | +--------------------+1 row in set (0.00 sec)
-
24
SELECT
Mais de uma informao pode ser solicitada no mesmo comando.
mysql> SELECT USER(), VERSION();+----------------+--------------------+| USER() | VERSION() |+----------------+--------------------+| root@localhost | 5.0.51a-3ubuntu5.1 | +----------------+--------------------+
-
25
SELECT
A interface de linha de comando permite quebrar um comando em vrias linhas.
mysql> SELECT USER(), -> VERSION();+----------------+--------------------+| USER() | VERSION() |+----------------+--------------------+| root@localhost | 5.0.51a-3ubuntu5.1 | +----------------+--------------------+1 row in set (0.00 sec)
-
26
\G
Concluindo o comando com \G, ao invs de ;, exibe os resultados de uma maneira alternativa:
mysql> SELECT USER(), VERSION()\G*************** 1. row *************** USER(): root@localhostVERSION(): 5.0.51a-3ubuntu5.11 row in set (0.00 sec)
-
27
\c
possvel cancelar um comando antes de envi-lo ao servidor, usando \c
mysql> SELECT USER(), -> VERSION()\cmysql>
-
28
Criando um Banco de Dados
A primeira ao a ser tomada em uma nova instalao do MySQL criar um novo banco de dados.
Vrios bancos de dados podem estar instalados ao mesmo tempo.
Cada banco de dados identificado por um nome.
-
29
CREATE DATABASE
Para criar um novo banco de dados, utiliza-se o comando CREATE DATABASE.
Sintaxe: CREATE DATABASE nome_bd;
mysql> CREATE DATABASE teste;Query OK, 1 row affected (0.08 sec)
-
http://marx.vanderlinden.com.br/ 30
CREATE DATABASE
A sintaxe completa de CREATE DATABASE inclui a possibilidade se somente criar o BD caso ele ainda no exista, alm de outras opes.
CREATE DATABASE [IF NOT EXISTS] nome_db [CHARACTER SET charset] [COLLATE collation]; charset: Conjunto de caracteres dos campos
de texto (padro: latin1) collation: Regras para ordem alfabtica de
texto (padro: latin1_swedish_ci)
-
31
Conjunto de caracteres
O comando SHOW CHARACTER SET mostra todos os conjuntos de caracteres disponveis no MySQL.
Algumas opes: latin1 (cp1252 West European) (padro) ascii (US ASCII) utf8 (UTF-8 Unicode)
-
32
Collation
Collation se refere s regras para decidir a ordem alfabtica de strings, usada em operaes de ordenao.
Cada Collation dependente de um conjunto de caracteres.
O comando SHOW COLLATION mostra todas as collations disponveis no MySQL.
-
33
Collation
Opes de Collation disponveis para o conjunto de caracteres latin1: latin1_swedish_ci (padro) latin1_german2_ci latin1_german1_ci latin1_danish_ci latin1_general_ci latin1_general_cs latin1_spanish_ci
-
http://marx.vanderlinden.com.br/ 34
SHOW DATABASES
O comando SHOW DATABASES mostra os bancos de dados existentes no sistema:
mysql> SHOW DATABASES;+--------------------+| Database |+--------------------+| information_schema | | sistema_xy | | website | | teste | +--------------------+
-
35
USE
Depois, necessrio informar ao MySQL que comearemos a usar o banco de dados criado.
Sintaxe: USE nome_bd;
mysql> USE teste;Database changed
-
http://marx.vanderlinden.com.br/ 36
ALTER DATABASE Para alterar as configuraes de um banco de
dados, usa-se o comando ALTER DATABASE. Sintaxe: ALTER DATABASE [nome_db] [CHARACTER SET charset] [COLLATE collation]; Se omitido, nome_db se refere ao banco de
dados em uso.mysql> ALTER DATABASE COLLATE latin1_spanish_ci;Query OK, 1 row affected (0.00 sec)
-
37
DROP DATABASE
Para excluir permanentemente um banco de dados do sistema, usa-se o comando DROP DATABASE.
mysql> DROP DATABASE teste;Query OK, 0 rows affected (0.05 sec)
-
38
Mecanismos de Armazenamento
MySQL suporta diversos mecanismos fsicos (engines) para o armazenamento de tabelas.
possvel ter, no mesmo banco de dados, vrias tabelas, cada uma com um mecanismo diferente.
Para exibir todos os mecanismos instalados, pode-se usar o comando SHOW ENGINES.
-
http://marx.vanderlinden.com.br/ 39
Mecanismos de Armazenamento
Mecanimos otimizados em disco: MyISAM (padro)
MERGE (tabelas MyISAM concatenadas) InnoDB
Outros: MEMORY Armazenamento em RAM. BLACKHOLE /dev/null. ARCHIVE No permite modificaes. CSV Arquivos de texto separados por vrgula.
-
40
Mecanismos de Armazenamento
Cada banco de dados armazenado em um subdiretrio no diretrio de armazenamento de MySQL (geralmente /var/lib/mysql/).
Cada tabela corresponde a: Um arquivo .frm Outros arquivos com o mesmo nome, e extenses
de acordo com o mecanismo.
-
41
Mecanismos de Armazenamento
MyISAM .MYD (dados), .MYI (ndices) MERGE .MRG (tabelas MyISAM unidas) InnoDB .ibd (dados e ndices) ARCHIVE .ARZ (dados), .ARM
(metadados) CSV .CSV (dados), .CSM (metadados)
-
42
Mecanismos de Armazenamento
Para exibir os Mecanismos de Armazenamento disponveis, pode-se usar o comando SHOW ENGINES.
-
43
Mecanismos de Armazenamentomysql> SHOW ENGINES\G******************* 1. row ******************* Engine: MyISAMSupport: DEFAULTComment: Default engine as of MySQL 3.23 with great performance******************* 2. row ******************* Engine: MEMORYSupport: YESComment: Hash based, stored in memory, useful for temporary tables******************* 3. row ******************* Engine: InnoDBSupport: YESComment: Supports transactions, row-level locking, and foreign keys******************* 4. row ******************* Engine: BerkeleyDBSupport: NO
-
44
CREATE TABLE
Para criar uma nova tabela no banco de dados, usa-se o comando CREATE TABLE.
Sintaxe:CREATE TABLE [IF NOT EXISTS] nome_tabela ( definio ) [ENGINE = nome_engine] [CHARACTER SET charset] [COLLATE collation];
-
45
CREATE TABLE
A definio consiste de pares:nome TIPO, nome TIPO, ...
possvel especificar um mecanismo de tabela (engine) Se no for especificada, usado o padro.
possvel especificar um conjunto de caracteres e/ou uma collation.
-
46
CREATE TABLE
Exemplo:
mysql> CREATE TABLE tabela -> ( -> f FLOAT(10,4), -> c CHAR(15) NOT NULL DEFAULT 'none', -> i TINYINT UNSIGNED NULL -> );Query OK, 0 rows affected (0.04 sec)
-
47
DESCRIBE
O comando DESCRIBE exibe a estrutura de uma tabela:
DESCRIBE nome_tabela;mysql> DESCRIBE tabela;+-------+---------------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+---------------------+------+-----+---------+-------+| f | float(10,4) | YES | | NULL | | | c | char(15) | NO | | none | | | i | tinyint(3) unsigned | YES | | NULL | | +-------+---------------------+------+-----+---------+-------+
-
http://marx.vanderlinden.com.br/ 48
Aspas MySQL usa 3 tipos de aspas:
Aspas simples ou duplas: Strings "Hello World" 'Hello World'
Acento grave: nomes de bancos de dados, tabelas e campos
`meubd` `usuarios` `cpf`
Pode ser omitido caso o campo seja uma palavra simples
-
49
CREATE TABLE
Exemplo:
mysql> CREATE TABLE `tabela` -> ( -> `f` FLOAT(10,4), -> `c` CHAR(15) NOT NULL DEFAULT 'none', -> `i` TINYINT UNSIGNED NULL -> );Query OK, 0 rows affected (0.03 sec)
-
50
Tipos de Dados No MySQL, a cada coluna de cada tabela deve
ser associado um tipo de dado. Existem vrios tipos de dados, pertencentes a
vrias categorias: Numricos
Inteiros Reais
Textos Dados Binrios Data/Hora
-
51
Tipos de Dados Inteiros
TINYINT Inteiro de 1 byte SMALLINT Inteiro de 2 bytes MEDIUMINT Inteiro de 3 bytes INT Inteiro de 4 bytes (32 bits) BIGINT Inteiro de 8 bytes (64 bits)
-
52
Tipos de Dados Numricos
Todos os tipos de dados inteiros tm 3 campos opcionais: (M) Largura mxima de exibio (nmero
de caracteres) UNSIGNED No permite valores negativos
(dobra a capacidade para positivos) ZEROFILL Preenche com zeros o espao
restante, na exibio
-
53
BIT
BIT[(M)] Armazena uma seqncia de M bits. Padro: M = 1
Valores para BIT so especificados de acordo com a seguinte sintaxe: b'01001'
-
http://marx.vanderlinden.com.br/ 54
Tipos de Dados Reais
Em todos os casos: M dgitos totais, com D casas decimais.
FLOAT[(M[,D])] Nmero de ponto flutuante de preciso simples (32 bits)
DOUBLE[(M[,D])] Nmero de ponto flutuante de preciso dupla (64 bits)
DECIMAL[(M[,D])] Nmero de ponto fixo. Padro: M = 10, D = 0
-
55
Tipos de Dados para Texto
CHAR[(M)] M caracteres Padro: M = 1
VARCHAR(M) Uma string de, no mximo, M caracteres
TINYTEXT Texto de at 255 caracteres. TEXT[(M)] Texto de at 64kb. MEDIUMTEXT Texto de at 14mb. LONGTEXT Texto de at 4gb.
-
56
Conjunto de Caracteres e Collate
Para os campos TINYTEXT, TEXT, MEDIUMTEXT e LONGTEXT, possvel especificar separadamente o cojunto de caracteres e o collate.
Ex: LONGTEXT [CHARACTER SET charset] [COLLATE collation]
-
57
Tamanho dos Tipos de Texto
Um campo de texto armazenado como N+L bytes: N bytes, indicando o tamanho do texto L bytes, onde L o tamanho do texto,
indicado em N TINYTEXT N = 1 TEXT N = 2 MEDIUMTEXT N = 3 LONGTEXT N = 4
-
58
Tipos de Dados Binrios
BLOB: Binary Large Object
TINYBLOB At 255 bytes BLOB At 64k MEDIUMBLOB At 14mb LONGBLOB At 4GB
-
59
Escolhendo um Tipo de Texto
Texto ou binrio? Diferenciar maisculas e minsculas? Tamanho fixo (CHAR) ou varivel?
Espao vs. Eficincia O campo tem valores fixos?
ENUM ou SET
-
60
Tipos de Dados para Texto
ENUM('valor1','valor2',...) Uma string que pode ter apenas um dos
valores descritos na enumerao. SET('valor1','valor2',...)
Uma string que pode ter zero ou mais valores, desde que todos faam parte do conjunto.
-
http://marx.vanderlinden.com.br/ 61
ENUM e SET
A lista de dados especificada na criao define os nicos valores legais do campo.
Pode haver ou no distino entre maisculas e minsculas, dependendo do collation.
No ENUM, a ordem especificada a ordem usada em operaes de ordenamento.
Os campos de SET e ENUM so armazenados como nmeros inteiros: ENUM: 1 ou 2 bytes SET: 1,2,3,4 ou 8 bytes
-
62
SET
Mltiplos valores em SET so determinados por vrgulas. 'carro,trem,avio'
Valores invlidos acrescentados a um SET so ignorados.
Valores repetidos tambm so ignorados.
-
63
Tipos de Dados para Data e Hora
DATE Data, no formato 'CCYY-MM-DD' De '1000-01-01' a '9999-12-31'
TIME Hora, no formato 'hh:mm:ss' De '-838:59:59' a '838:59:59'
DATETIME Data e hora, no formato, 'CCYY-MM-DD hh:mm:ss' De '1000-01-01 00:00:00' a '9999-12-31
23:59:59'
-
64
Tipos de Dados para Data e Hora
TIMESTAMP Timestamp 32bits, no formato 'CCYY-MM-DD hh:mm:ss' De '1970-01-01 00:00:01' a '2038-01-09
03:14:07' YEAR Ano, no formato CCYY ou YY
De 1901 to 2155, ou 0000
-
http://marx.vanderlinden.com.br/ 65
Valores de Data e Hora MySQL tenta interpretar valores para os
campos de data e hora, de acordo com as convenes: 'YY-MM-DD hh:mm:ss' 'CCYY-MM-DD hh:mm:ss' 'CCYYMMDDhhmmss' 'YYMMDDhhmmss' CCYYMMDDhhmmss YYMMDDhhmmss 'CCYY-MM-DD'
-
66
NULL vs. NOT NULL
Para qualquer campo, possvel especificar se se quer que sejam permitidos valores nulos (vazios): NULL (padro) NOT NULL
Para a maioria dos campos, possvel especificar um valor padro: DEFAULT valor
-
67
Regras para valores Default
Caso o valor default no seja especificado: Valores numricos: 0 Datas e Horas: 0000-00-00 00:00:00 Strings: ''
-
68
PRIMARY KEY
Para especificar uma chave primria, basta acrescentar aps o nome do campo a frase PRIMARY KEY.
Chaves primrias: No podem ter valores repetidos. No podem ter valores nulos. Identificam inequivocadamente uma linha na
tabela.
-
http://marx.vanderlinden.com.br/ 69
AUTO_INCREMENT
A opo AUTO_INCREMENT pode ser adicionada a qualquer valor numrico. Novos valores para este campo so
automaticamente incrementados em 1. S pode haver um campo AUTO_INCREMENT
em uma tabela. til para ndices e chaves primrias. Automaticamente torna a coluna NOT NULL. Se no especificada, a contagem comea em
1.
-
70
AUTO_INCREMENT
O valor de uma coluna AUTO_INCREMENT igual ao da anterior mais 1 se na nova coluna: No for especificado um valor para este
campo. O novo valor for NULL ou 0.
Novos valores reiniciam a contagem.
-
71
Exemplo: Criaco da Tabela
mysql> CREATE TABLE usuario ( -> login CHAR(30) PRIMARY KEY, -> datanasc DATE, -> nome VARCHAR(255) NOT NULL, -> sexo ENUM('masc','fem') NOT NULL -> );Query OK, 0 rows affected (0.00 sec)
-
72
Exemplo: Possveis Valores
mysql> SELECT * FROM usuario;+-------+------------+-----------------------+------+| login | datanasc | nome | sexo |+-------+------------+-----------------------+------+| kate | 1980-05-18 | Katherine Anne Austen | fem | | sayid | 1970-04-24 | Sayid Hassan Jarrah | masc | | hgale | 1975-02-25 | Benjamin Linus | masc | +-------+------------+-----------------------+------+3 rows in set (0.00 sec)
-
73
Exemplo: Criao da Tabela
mysql> CREATE TABLE sgbd ( -> id INT PRIMARY KEY AUTO_INCREMENT, -> nome VARCHAR(255) NOT NULL, -> maxcols MEDIUMINT UNSIGNED -> );Query OK, 0 rows affected (0.14 sec)
-
74
Exemplo: Possveis valores
mysql> SELECT * FROM sgbd;+----+----------------+---------+| id | nome | maxcols |+----+----------------+---------+| 1 | MySQL | 3398 | | 2 | PostgreSQL | 1600 | | 3 | Oracle | 1000 | | 4 | MS SQL Server | 1024 | +----+----------------+---------+4 rows in set (0.00 sec)
-
75
Informaes sobre as tabelas
O comando SHOW TABLES exibe a lista de tabelas existentes no banco de dados. Sintaxe:
SHOW TABLES; O comando SHOW CREATE TABLE exibe o
comando usado para criar a tabela, incluindo os valores default. Sintaxe:
SHOW CREATE TABLE nometabela;
-
76
SHOW TABLES
mysql> SHOW TABLES;+-----------------+| Tables_in_teste |+-----------------+| sgbd | | usuario | +-----------------+2 rows in set (0.00 sec)
-
77
SHOW CREATE TABLEmysql> SHOW CREATE TABLE sgbd\G******************** 1. row ****************** Table: sgbdCreate Table: CREATE TABLE `sgbd` ( `id` int(11) NOT NULL auto_increment, `nome` varchar(255) collate latin1_spanish_ci NOT NULL, `maxcols` mediumint(8) unsigned default NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci1 row in set (0.00 sec)
-
http://marx.vanderlinden.com.br/ 78
Tabelas Temporrias possvel criar tabelas temporrias.
Existem apenas enquanto dura a conexo com o servidor.
A tabela temporria vista apenas pelo cliente que a criou.
Sintaxe: CREATE TEMPORARY TABLE [IF NOT EXISTS] nome_tabela ( definio ) [ENGINE = nome_engine] [CHARACTER SET charset] [COLLATE collation];
-
79
CREATE TABLE ... LIKE
Para criar uma tabela com a mesma estrutura de uma tabela existente, usa-se a sintaxe:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] nova_tabela LIKE tabela_antiga
mysql> CREATE TEMPORARY TABLE usuariotmp LIKE usuario;Query OK, 0 rows affected (0.12 sec)
-
http://marx.vanderlinden.com.br/ 81
ExemploCREATE TABLE log_2007 ( dt DATETIME NOT NULL, info VARCHAR(100) NOT NULL) ENGINE = MyISAM;CREATE TABLE log_2008 ( dt DATETIME NOT NULL, info VARCHAR(100) NOT NULL) ENGINE = MyISAM;CREATE TABLE log_2009 ( dt DATETIME NOT NULL, info VARCHAR(100) NOT NULL) ENGINE = MyISAM;
-
82
Exemplo
CREATE TABLE log_merge ( dt DATETIME NOT NULL, info VARCHAR(100) NOT NULL) ENGINE = MERGE UNION = (log_2007, log_2008, log_2009);
-
http://marx.vanderlinden.com.br/ 83
DROP TABLE
Para excluir uma tabela, basta usar o comando DROP TABLE.
Sintaxe: DROP [TEMPORARY] TABLE [IF EXISTS] tabela [, tabela2, tabela3...]
-
84
ALTER TABLE
Qualquer caracterstica de uma tabela pode ser modificada a qualquer momento, usando o comando ALTER TABLE. Nomes e tipos de campos
Adicionar Remover Modificar
Mecanismo de Armazenamento Conjunto de caracteres e Collage
-
85
Exemplo: Antes
mysql> SELECT * FROM usuario;+-------+------------+-----------------------+------+| login | datanasc | nome | sexo |+-------+------------+-----------------------+------+| kate | 1980-05-18 | Katherine Anne Austen | fem | | sayid | 1970-04-24 | Sayid Hassan Jarrah | masc | | hgale | 1975-02-25 | Benjamin Linus | masc | +-------+------------+-----------------------+------+3 rows in set (0.00 sec)
-
86
ALTER TABLE ... MODIFY
Para alterar qualquer caracterstica de uma coluna (tipo, tamanho, chave primria):
ALTER TABLE tabela MODIFY campo definio
mysql> ALTER TABLE usuario MODIFY login CHAR(60);Query OK, 3 rows affected (0.08 sec)Records: 3 Duplicates: 0 Warnings: 0
-
87
ALTER TABLE ... CHANGE
Para alterar o nome e tipo de uma coluna: ALTER TABLE tabela CHANGE campo novonome tipo;
mysql> ALTER TABLE usuario CHANGE nome primeiro_nome VARCHAR(60);Query OK, 3 rows affected (0.04 sec)Records: 3 Duplicates: 0 Warnings: 0
-
88
ALTER TABLE ... ADD
Para adicionar uma nova coluna: ALTER TABLE tabela ADD campo tipo [FIRST | AFTER campo];
mysql> ALTER TABLE usuario ADD ultimo_nome varchar(60) AFTER primeiro_nome;Query OK, 3 rows affected (0.15 sec)Records: 3 Duplicates: 0 Warnings: 0
-
89
ALTER TABLE ... DROP
Para remover uma coluna da tabela: ALTER TABLE tabela DROP campo;
mysql> ALTER TABLE usuario DROP datanasc;Query OK, 3 rows affected (0.06 sec)Records: 3 Duplicates: 0 Warnings: 0
-
90
Exemplo: Depois
mysql> SELECT * FROM usuario;+-------+-----------------------+-------------+------+| login | primeiro_nome | ultimo_nome | sexo |+-------+-----------------------+-------------+------+| kate | Katherine Anne Austen | NULL | fem | | sayid | Sayid Hassan Jarrah | NULL | masc | | hgale | Benjamin Linus | NULL | masc | +-------+-----------------------+-------------+------+3 rows in set (0.07 sec)
-
91
ALTER TABLE ... ADD PRIMARY KEY
Para transformar um campo em chave primria:
ALTER TABLE tabela ADD PRIMARY KEY (campo);
mysql> ALTER TABLE tabela ADD PRIMARY KEY (f);Query OK, 0 rows affected (0.08 sec)Records: 0 Duplicates: 0 Warnings: 0
-
92
Outras opes
ENGINE, CHARACTER SET e COLLATE tambm podem ser especificados aps ALTER TABLE.
mysql> ALTER TABLE tabela ENGINE = InnoDB CHARACTER SET = utf8 COLLATE utf8_slovenian_ci;Query OK, 0 rows affected (0.06 sec)Records: 0 Duplicates: 0 Warnings: 0
Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26Slide 27Slide 28Slide 29Slide 30Slide 31Slide 32Slide 33Slide 34Slide 35Slide 36Slide 37Slide 38Slide 39Slide 40Slide 41Slide 42Slide 43Slide 44Slide 45Slide 46Slide 47Slide 48Slide 49Slide 50Slide 51Slide 52Slide 53Slide 54Slide 55Slide 56Slide 57Slide 58Slide 59Slide 60Slide 61Slide 62Slide 63Slide 64Slide 65Slide 66Slide 67Slide 68Slide 69Slide 70Slide 71Slide 72Slide 73Slide 74Slide 75Slide 76Slide 77Slide 78Slide 79Slide 80Slide 81Slide 82Slide 83Slide 84Slide 85Slide 86Slide 87Slide 88Slide 89Slide 90Slide 91Slide 92