Avançar para o conteúdo

Definição de Tabelas em MySQL

Etiquetas:

Um artigo sobre como criar tabelas em MySQL, É preciso trabalhar em algumas outras áreas além do vídeo para garantir a subsistência. Assim, aqui ficam algumas notas de MySQL para os que aogra se estão a iniciar na linguagem e andem por aí à procura de dicas.

COMANDOS DE DEFINIÇÃO DE DADOS

Passo a apresentar os comandos mais comuns para a definição de bases de dados e tabelas, bem como os comandos de definição de outro tipo de estruturas (triggers, funções, procedimentos e eventos temporais).

SINTAXE DE CRIAÇÃO DE UMA BASE DE DADOS:


    CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] nome_bd
	[opções] …
	

Opções:

[DEFAULT] CHARACTER SET [=] nome_charset
	[DEFAULT] COLLATE [=] nome_collation

    

Os termos DATABASE e SCHEMA são sinónimos. As opções CHARACTER SET e COLLATE permitem definir o código de carateres a utilizar por omissão nos campos de texto das tabelas da base de dados.Exemplo:

CREATE DATABASE IF NOT EXISTS jogo
	CHARACTER SET UTF8
	COLLATE utf8_unicode_ci;

A base de dados definida com este código utiliza, por defeito, o código de carateres UTF8 que permite que os campos de texto contenham carateres internacionais de qualquer origem.

Se se pretenderem desenvolver aplicaç\oes que tenham utilizadores registados originários de qualquer país – o que é usual em aplicaç\oes que funcionem na Internet – é conveniente que os campos de texto usem o código de carateres UTF8.

A SINTAXE DE CRIAÇÃO DE UMA TABELA É APRESENTADA ABAIXO.


CREATE [TEMPORARY] TABLE [IF NOT EXISTS] nome_tbl
	(definição_de_campos, …)
	[opções_de_tabela]

A definição de campos de uma tabela tem a sintaxe indicada abaixo. As opções de tabela mais relevantes são apresentadas sob a forma de exemplos mais à frente.

SINTAXE DE DEFINIÇÃO DE CAMPOS DE UMA TABELA MYSQL:

definição_de_campos
	nome_coluna definição_coluna
	[CONSTRAINT [símbolo]] PRIMARY KEY [tipo_index]
		(nome_col_index, …) [opção_index] …
	{index|key} [nome_index] [tipo_index]
		(nome_col_index, …) [opção_index] …
	[CONSTRAINT [símbolo]] UNIQUE [INDEX | KEY]
		[nome_index] [tipo_index] (nome_col_index,...)
		[opção_index] …
	{FULLTEXT | SPATIAL} [INDEX | KEY] [nme_index]
		(nome_col_index, …) [opção_index] …
	[CONSTRAINT [símbolo]] FOREIGN KEY
		[nome_index] (nome_col_index, …)
		definição_de_referência
	CHECK (expr)

A definição de campos de uma tabela necessita ainda da sintaxe de definição de colunas e de defnição de referências que são apresentadas abaixo.

SINTAXE DE DEFINIÇÃO DE COLUNAS NUMA TABELA MYSQL:

	definição_coluna:
		tipo_de_dados [NOT NULL | NULL]
			[DEFAULT valor_defeito]
			[AUTO_INCREMENT]
			[UNIQUE [KEY] | [PRIMARY] KEY]
			[COMMENT 'texto']
			[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
			[STORAGE {DISK|MEMORY|DEFAULT}]
			[definição_de_referência]

EXEMPLO DA CRIAÇÃO DE DUAS TABELAS LIGADAS ENTRE SI ATRAVÉS DE UMA CHAVE ESTRANGEIRA:


CREATE TABLE pais (
	pais_id INT UNSIGNED PRIMARY  KEY AUTO_INCREMENT,
	pais_nome VARCHAR(255) COMMENT 'nome do pais'
) ENGINE=INNODB DEFAULT CHARSET=UTF8;

CREATE TABLE utilizador (
	utl_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
	utl_nome VARCHAR(255) COMMENT 'nome do utilizador',
	utl_passe VARCHAR(255) COMMENT 'pswd do utilizador',
	utl_data INT UNSIGNED COMMENT 'data inscr',
	utl_paisid INT UNSIGNED COMMENT 'id do país',
	FOREIGN KEY fk1(utl_paisid) REFERENCES pais(pais_id)
) ENGINE=INNODB DE

A tabela país tem dois campos: pais_id e pais_nome. O primeiro é a chave primária e tem o atributo AUTO_INCREMENT que lhe atribui um valor inteiro sequencial sempre que, numa inserção, o valor deste campo não for especificado. O segundo é um campo de texto de tamanho variável.

A tabela utilizador tem cinco campos: utl_id, utl_nome, utl_passe, utl_data, e utl_paisid. O primeiro campo é a chave primária e tem o atributo de AUTO_INCREMENT. O segundo e o terceiro são campos de texto variável, com um máximo de 255 carateres. O quarto e do tipo inteiro e vai ser usado para armazenar a data de inscrição no formato UNIX_TIMESTAMP, ou seja, vai guardar a data contada em segundos desde 1 de janeiro de 1970. Em datas posteriores a este formato pos possibilitam um processamento informático mais rápido. O último campo, o utl_paisid, tem que ter exactamente o mesmo tipo de dados do campo pais_id da tabela país (INT UNSIGNED) pois é utilizado como chave estrangeira (FOREIGN KEY) e referencia o campo pais_id da tabela país.

Comentários Facebook