Aula 10 MySQL - Introducao

91
Introdução a MySQL Programação Dinamica

description

Aula 10 MySQL - Introducao

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