Tabelas MySql

Definição de Tabelas em Mysql

Um artigo sobre como criar tabelas em MySQL, Porque os filmes e o cinema por si só não põem comidinha na mesa. É preciso trabalhar em algumas outras áreas para manter a família que por acaso até acabou de crescer... 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 DEFAULT CHARSET=UTF8;

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.

 

Marcações: tutoriais, MySql

Comentários

Construído com HTML5, CSS3 e todas essas cenas - Copyright © 2018 Sérgio Martins

Download Freewww.bigtheme.net/joomla Joomla Templates Responsive