Slide de MySQL
Slide de MySQL
O Programa MySQL um sistema de gerenciamento de banco de dados relacionais baseado em comandos SQL (Structured Query Language - Linguagem Estruturada para Pesquisas) que vem ganhando grande popularidade sendo atualmente um dos bancos de dados mais populares, com mais de 4 milhes de instalaes.
No Unix, nomes de bancos de dados so caso sensitivo (ao contrrio das palavras chave SQL). Isto quer dizer que Locadora direferente de LOCADORA ou locadora. Criar um bancos de dados no o seleciona para o uso. Faa isto utilizando a instruo use. mysql> USE Locadora Database changed
Uma forma alternativa de colocar o banco de dados em uso passando o nome do banco como parmetro durante a inicializao do mysql. shell> mysql -h servidor -u usuario -p Locadora Enter password: ******** Perceba que -h indica o "host"do servidor, ou seja, sua localizao na rede. Caso o servidor esteja na mquina local este parmetro pode ser omitido. -u indica o usurio que acessar o sistema e -p a senha. Ateno, Locadora no o parmetro relativo a senha. Locadora o banco que desejamos colocar em uso. Caso deseje passar a senha na linha de comando voc deve faz-lo sem usar espaos (por exemplo, pminhasenha e no como em -p minhasenha). Entrentanto, no recomendado colocar a senha na linha de comando, visto que a senha fica exposta a outras pessoas.
Exemplo
CREATE TABLE cliente ( id INT NOT NULL, texto CHAR(30) NOT NULL, PRIMARY KEY (id) ); No comando acima, TYPE=MyISAM, indica que a tabela criada ser do tipo MyISAM, que o valor default caso no seja informado o TYPE. Atravs deste exemplo observamos que a sintaxe do CREATE TABLE muito simples, sendo necessrio apenas informar o nome da tabela, no caso "teste", os campos da tabela e o tipo da tabela, podendo este ltimo ser ocultado.
mysql> SHOW TABLES; Empty set (0.00 sec) Continuando com o exemplo que viamos seguindo na lio anterior, com a criao do banco de dados "Locadora", o comando SHOW TABLES nos mostrar a as tabelas existentes neste banco de dados.
Utilize a sentea CREATE TABLE para especificar o layout de sua tabela: mysql> CREATE TABLE Acervo(nome VARCHAR(20), gnero VARCHAR(20), censura INT, durao TIME); Query OK, 0 rows affected (0,00 sec)
VARCHAR uma boa escolha para os campos nome e gnero porque os valores da coluna so de tamanho varivel. Os tamanhos destas colunas no precisam necessariamente de ser os mesmos e no precisam ser 20. O campo censura bem representando com o tipo inteiro, visto que as idades so dadas em nmeros inteiros. O mesmo acontece com o campo durao, onde TIME um tipo utilizado para armazenar dados no formato HH:MM:SS
Agora que voc criou uma tabela, a instruo SHOW TABLES deve produzir alguma sada: mysql> SHOW TABLES; ++ | Tables_in_Locadora | ++ | Acervo | ++ 1 row in set (0,02 sec)
Para verificar se sua tabela foi criada da forma que voc esperava, utilize a instruo DESCRIBE: mysql> DESCRIBE Acervo; ++-++++-+ | Field | Type | Null | Key | Default | Extra | ++-++++-+ | nome | varchar(20) | YES | | NULL | | | gnero | varchar(20) | YES | | NULL | | | censura | int(11) | YES | | NULL | | | durao | time | YES | | NULL | | ++-++++-+ 4 rows in set (0,00 sec) Voc pode usar DESCRIBE a qualquer hora, por exemplo, se voc esquecer os nomes das colunas na sua tabela ou de que tipos elas tm.
Tipos de Campos Para cada campo de cada uma da tabelas, necessrio determinar o tipo de dados que contem, para poder ajustar a estrutura da base de dados, e conseguir um armazenamento com a menor utilizao de espao. Os tipos de dados que pode ter um campo, podem-se agrupar em trs grandes grupos: * Tipos numricos * Tipos de Data * Tipos de Cadeia
Tipos numricos:
Existem tipos de dados numricos, que se podem dividir em dois grandes grupos, os que esto em vrgula flutuante (com decimais) e os que no. * TinyInt: um nmero inteiro com ou sem sinal. Com sinal a margem de valores vlidos desde -128 at 127. Sem sinal, a margem de valores de 0 at 255
* Bit ou Bool: um nmero inteiro que pode ser 0 ou 1. * SmallInt: nmero inteiro com ou sem sinal. Com sinal a margem de valores vlidos desde -32768 at 32767. Sem sinal, a margem de valores de 0 at 65535. * MediumInt: nmero inteiro com ou sem sinal. Com sinal a margem de valores vlidos desde -8.388.608 at 8.388.607. Sem sinal, a margem de valores de 0 at 16777215. * Integer, Int: nmero inteiro com ou sem sinal. Com sinal a margem de valores vlidos desde 2147483648 at 2147483647. Sem sinal, a margem de valores de 0 at 429.496.295
* BigInt: nmero inteiro com ou sem sinal. Com sinal a margem de valores vlidos desde 9.223.372.036.854.775.808 at 9.223.372.036.854.775.807. Sem sinal, a margem de valores de 0 at 18.446.744.073.709.551.615. * Float: nmero pequeno em vrgula flutuante de preciso simples. Os valores vlidos vo desde -3.402823466E+38 at -1.175494351E-38,0 ou desde 175494351E-38 at 3.402823466E+38. * xReal, Double: nmero em vrgula flutuante de dupla preciso. Os valores permitidos vo desde 1.7976931348623157E+308 at -2.2250738585072014E308, 0 e desde 2.2250738585072014E- 308 at 1.7976931348623157E+308 * Decimal, Dec, Numeric: Nmero em vrgula flutuante desempacotado. O nmero armazena-se como uma cadeia.
Tipos de data:
Na hora de armazenar datas, o MySQL no verifica de uma maneira restrita se uma data vlida ou no. Simplesmente comprova que o ms est compreendido entre 0 e 12 e que o dia est compreendido entre 0 e 31.
* Date: tipo data, armazena uma data. A margem de valores vai desde o 1 de Janeiro de 1001 ao 31 de dezembro de 9999. O formato de armazenamento de ano-mes-dia. * DateTime: Combinao de data e hora. A margem de valores vai desde o 1 de Janeiro de 1001 s 0 horas, 0 minutos e 0 segundos ao 31 de Dezembro de 9999 s 23 horas, 59 minutos e 59 segundos. O formato de armazenamento de ano-mes-dia horas:minutos:segundos. * TimeStamp: Combinao de data e hora. A margem vai desde o 1 de Janeiro de 1970 ao ano 2037. * Time: armazena uma hora. A margem de horas vai desde 838 horas, 59 minutos e 59 segundos. O formato de armazenamento HH:MM:SS. * Year: armazena um ano. A margem de valores permitidos vai desde o ano 1901 ao ano 2155. O campo pode ter tamanho dois ou tamanho 4 dependendo de se queremos armazenar o ano com dois ou quatro algarismos.
Tipos de Cadeia:
* Char(n): armazena uma cadeia de longitude fixa. A cadeia poder conter desde 0 at 255 caracteres. * VarChar(n): armazena uma cadeia de longitude varivel. A cadeia poder conter desde 0 at 255 caracteres. Dentro dos tipos de cadeia pode-se distinguir dois subtipos, os tipo Test e os tipo Blob (Binary Large Object) A diferena entre um tipo e outro o tratamento que recebem na hora de orden-los e compar-los. No tipo test ordena-se sem ter importncia as maisculas e as minsculas e no tipo blob ordena-se tendo em conta as maisculas e minsculas. Os tipos blob utilizam-se para armazenar dados binrios como podem ser ficheiros. * TinyText e TinyBlob: Coluna com uma longitude mxima de 255 caracteres. * Blob e Text: um texto com um mximo de 65535 caracteres.
* MediumBlob e MediumText: um texto com um mximo de 16.777.215 caracteres. * LongBlob e LongText: um texto com um mximo de caracteres 4.294.967.295. H que ter em conta que devido aos protocolos de comunicao os pacotes podem ter um mximo de 16 Mb. * Enum: campo que pode ter um nico valor de uma lista que se especifica. O tipo Enum aceita at 65535 valores diferentes. * Set: um campo que pode conter nenhum, um ou vrios valores de uma lista. A lista pode ter um mximo de 64 valores.
Esta uma das alternativas, porm, no a melhor. Imaginem se dados j tivessem sido inseridos na tabela. Teramos que refazer todo o processo de insero de dados, o que muitas vezes invivel. O Comando ALTER TABLE nos permite realizar uma infinidade de operaes com a tabela com por exemplo: * Modificar o nome da tabela; * Adicionar uma coluna; * Remover uma coluna ; * Alterar a estrutura da coluna;
Agora vamos inserir uma nova coluna, por exemplo "data_lanamento". * ALTER TABLE Acervo ADD data_lanamento date;
Para remover basta inserirmos DROP no lugar de ADD e retirarmos campo. * ALTER TABLE Acervo DROP data_lanamento;
O InnoDB implementa as restries de integridade CASCADE, RESTRICT, SET NULL e SET DEFAULT. No primeiro caso, ao se remover um registro da tabela referenciada pela chave estrangeira os registros relacionados quele removido sero eliminados em todas as tabelas relacionadas. O RESTRICT no permite a remoo de registros que possuam relacionamentos em outras tabelas. Os dois ltimos atribuem os valores DEFAULT ou NULL para as chaves estrangeiras cujos registros relacionados foram excludos.
Carregando dados em uma tabela Depois de criar sua tabela, voc precisar povo-la. A instruo INSERT til para isto.
Para adicionar registros um a um, basta utilizar a instruo INSERT. Caso voc queira adicionar mais um filme tabela "Acervo"basta utiilzar a instruo a seguir:
VALUES
Observe a utilizao de aspas duplas nos campos do tipo varchar() . Com o INSERT voc tambm pode inserir NULL diretamente para representar um valor em falta.
Tambm possvel inserir dados em colunas especficas da tabela, bastando para isso identific-la.
No MySQL quando estamos criando uma tabela podemos utilizar a palavra chave AUTO_INCREMENT para atribuir valores automaticamente s colunas. por exemplo:
CREATE TABLE Acervo2(cod_filme int AUTO_INCREMENT, nome VARCHAR(20), gnero VARCHAR(20), censura INT, durao TIME, PRIMARY KEY(cod_filme));
Na tabela anterior, criamos uma nova tabela, Acervo2, com o campo cod_filme. Perceba que no possvel utilizar a palavra chave AUTO_INCREMENT sem informar que a coluna PRIMARY KEY. Este campo recebera valores automaticamente, sendo necessrio informar apenas a palavra default quando utilizada a instruo insert: