Introdução
Principais estruturas duma Base de Dados: Uma BD relacional é constituída por diversas estruturas (ou objectos ) de informação. Podemos destacar: Database: designa a própria BD; Table/Tabela: onde são armazenados os dados; Data Type: identificador do tipo de dados que podem ser armazenados numa colunas; Index: providencia rapidez no acesso às linhas da tabela baseado nos valores de uma ou mais colunas;
Principais estruturas duma Base de Dados: Uma BD relacional é constituída por diversas estruturas (ou objectos ) de informação. Podemos destacar: View: tabela lógica que fornece uma visão alternativa dos dados. Stored Procedure: comando SQL pré-compilado; Constraint: restrição dos valores possíveis de colunas.
Operadores: São símbolos que executam operações sobre um ou mais valores operandos. Os operadores podem ser combinados em expressões. Associação = Aritméticos *, /, +, -, % Unários +, -, ~ Comparação <, =, >, <>,? Concatenação + Lógicos AND, OR, NOT
APLICAÇÕES SQL INTERFACES As aplicações e interfaces acedem aos dados através de instruções SQL que comunicam ao SGBD aquilo que se pretende. SGBD BD O SGBD encarrega-se da execução do código necessário para a conclusão da tarefa requisitada.
Os dados para existirem têm que ser armazenados em tabelas. Essas tabelas terão de ser criadas, bem como outras possíveis estruturas de apoio e suporte. A linguagem SQL disponibiliza um conjunto de comandos para:
criação CREATE TABLE alteração ALTER TABLE apagar DROP TABLE Este conjunto de comandos faz parte da sublinguagem denominada por DDL Data Definition Language (Linguagem de Definição de Dados)
CREATE TABLE
CREATE TABLE A sintaxe básica do comando é a seguinte: CREATE TABLE nome_da_tabela ( Coluna1 Tipo, Coluna2 Tipo, )
CREATE* TABLE Exemplo: CREATE TABLE Empregado ( ID INTEGER, Nome CHAR (50), Data_Nasc DATE, Salario FLOAT) Tipos de Dados
Criação de Tabelas [Exemplo] CREATE TABLE professores ( n_contrib CHAR (12), nome CHAR (30), idade SMALLINT, posto CHAR (20), especialidade VARCHAR (255) ); Tipos de Dados
Tipos de dados: Na linguagem SQL, os dados podem ser agrupados em 3 grandes grupos: Strings; Dados numéricos; Dados relacionados com tempo e/ou datas
CREATE TABLE Exemplo: Escrever um comando que permita criar a tabela Cod_Postal, capaz de armazenar um inteiro com 4 dígitos e uma string com 45 caracteres: CREATE TABLE Cod_Postal ( Microsoft Access Codigo INTEGER, Local CHAR (45)); CREATE TABLE Cod_Postal ( SQL Server Oracle SyBase Codigo NUMERIC (4), Local CHAR (45));
Características das Colunas: Para a execução do comando CREATE TABLE é necessário: Indicar qual o nome da Tabela; Indicar, para cada uma das colunas: O nome da coluna; Tipo de dados
Características das Colunas: No entanto, podem ser indicadas as características de cada uma das colunas, que valores admitir e, caso não seja introduzido um valor, qual o valor por defeito, etc.
Colunas Valores por defeito (Quando uma tabela é criada com o conjunto mínimo de código) INSERT INTO Cod_Postal VALUES ( 1000, Lisboa ); INSERT INTO Cod_Postal (Codigo) VALUES (1000);
Colunas Valores por defeito (Quando uma tabela é criada com o conjunto mínimo de código) Se pretendermos que uma coluna não admita valores nulos, deve-se juntar imediatamente ao tipo de dados da coluna a cláusula NOT NULL CREATE TABLE Cod_Postal ( SQL Server Oracle SyBase Codigo NUMERIC (4) NOT NULL, Local CHAR (45));
Colunas Valores por defeito (Quando uma tabela é criada com o conjunto mínimo de código) Se, por defeito, quisermos que a localidade a criar se chame LISBOA, então teremos que fazer: CREATE TABLE Cod_Postal ( SQL Server Oracle SyBase Codigo NUMERIC (4) NOT NULL, Local CHAR (45) DEFAULT Lisboa );
Colunas Valores por defeito (Quando uma tabela é criada com o conjunto mínimo de código) A cláusula DEFAULT pode estar associada a três tipos de valores: Literais ex: DEFAULT Lisboa Null SQL Server Oracle SyBase ex: DEFAULT NULL Valor de Sistema ex: DEFAULT Sysdate (Oracle)
Restrições (Constraints) Todas as linhas que se pretendem inserir numa tabela terão que obedecer ao conjunto de restrições existentes para as colunas dessas tabelas.* Existem alguns tipos distintos de restrições que se podem aplicar a colunas:
Restrições (Constraints) NOT NULL; CHECK (); UNIQUE; PRIMARY KEY; REFERENCES; FOREIGN KEY.
Restrições (Constraints) NOT NULL impede a introdução de valores nulos na coluna; CREATE TABLE teste (Id INTEGER NOT NULL, Nome CHAR (60) Microsoft Access NOT NULL);
Restrições (Constraints) CHECK() permite realizar a validação dos dados introduzidos na coluna, através da especificação de uma condição. São admitidos apenas os dados cujo resultado da avaliação seja verdadeiro; CREATE TABLE teste ( SQL Server Oracle SyBase Id INTEGER NOT NULL, Nome CHAR (60) NOT NULL CHECK (Nome NOT Like %João% ), Idade INTEGER NOT NULL CHECK (Idade BETWEEN* 0 AND 150), Sexo CHAR NOT NULL CHECK (Sexo IN* ( M, F ));
Restrições (Constraints) CHECK() É possível a especificação da restrição CHECK relativa a duas ou mais colunas. CREATE TABLE teste ( Id INTEGER NOT NULL, Nome CHAR (60) NOT NULL CHECK (Nome NOT Like %Reginaldo% ), Sexo CHAR NOT NULL Oracle SyBase CHECK (Sexo IN ( M, F ) Data_Nasc DATE, Data_Admissao DATE, CHECK (Data_Admissão>Data_Nasc));
Restrições (Constraints) CHECK() É possível a especificação da restrição CHECK relativa a duas ou mais colunas. CREATE TABLE teste ( Id INTEGER NOT NULL, Nome CHAR (60) NOT NULL CHECK (Nome NOT Like %Reginaldo% ), Sexo CHAR NOT NULL CHECK (Sexo IN ( M, F )), Data_Nasc DATETIME, Data_Admissao DATETIME, CHECK (Data_Admissão>Data_Nasc)); SQL Server
Restrições (Constraints) UNIQUE Permite indicar que os valores dessa coluna não se podem repetir. Para garantir que não existem dados repetidos nessa coluna, os SGBD criam, sobre cada uma das colunas UNIQUE, um índice único. CREATE TABLE teste ( Id INTEGER PRIMARY KEY, SQL Server Oracle SyBase Nome CHAR (60) UNIQUE, Telefone CHAR (15), BI INTEGER UNIQUE);
Restrições (Constraints) UNIQUE O comando anterior poderia ser escrito da seguinte forma: CREATE TABLE teste ( Id INTEGER PRIMARY KEY, SQL Server Oracle SyBase Nome CHAR (60), Telefone CHAR (15), BI INTEGER, UNIQUE (Nome), UNIQUE (BI))
Restrições (Constraints) PRIMARY KEY É equivalente às cláusulas NOT NULL + UNIQUE juntas. Numa tabela apenas pode existir uma PRIMARY KEY e é normalmente utilizada para indicar qual a chave primária da tabela: CREATE TABLE teste ( Id INTEGER PRIMARY KEY, Nome CHAR (60), SQL Server Oracle SyBase Telefone CHAR (15), BI INTEGER, UNIQUE (Nome), UNIQUE (BI))
Restrições (Constraints) REFERENCES Permite fazer a validação das chaves estrangeiras. CREATE TABLE Pessoa ( SQL Server Oracle SyBase Id NUMERIC PRIMARY KEY, Nome CHAR (30) NOT NULL, Telefone CHAR (12) NULL, Cod_Postal NUMERIC (4), REFERENCES Postal (Codigo));
Restrições (Constraints) REFERENCES Se houver necessidade de referenciar uma chave estrangeira formada por dois ou mais campos, terá que se utilizar a cláusula FOREIGN KEY. CREATE TABLE Pessoa ( Id NUMERIC PRIMARY KEY, SQLl Server Oracle SyBase Nome CHAR (30) NOT NULL, Telefone CHAR (12) NULL, Salario NUMERIC (10, 2) NOT NULL CHECK (Salario>0), Cod_Postal NUMERIC (4), REFERENCES Postal (Codigo), FOREIGN KEY (Id, Salario) REFERENCES Pessoal (N_Emp, Valor));
ALTER TABLE
ALTER TABLE Permite alterar a estrutura de uma tabela. Com a seguinte sintaxe é possível adicionar uma nova coluna a uma determinada tabela, alterar as características de uma coluna já existente ou eliminar uma coluna.
ALTER TABLE A sintaxe básica do comando: ALTER TABLE nome_da_tabela ADD Coluna1 Tipo ALTER TABLE nome_da_tabela MODIFY Coluna1 Tipo ALTER TABLE nome_da_tabela DROP Coluna1 Tipo
ALTER TABLE Adicione à tabela Pessoa uma coluna denominada Fax com 15 caracteres: ALTER TABLE Pessoa Microsoft Access SQL Server Oracle SyBase ADD Fax CHAR (15)
ALTER TABLE Altere o tipo de dados da coluna adicionada para 25 caracteres: ALTER TABLE Pessoa MODIFY Fax CHAR (25) Oracle SyBase
ALTER TABLE Altere as características da coluna Salario na tabela Pessoa, de tal forma que esta possa passar a admitir nulos ALTER TABLE Pessoa MODIFY Salario NULL Oracle SyBase
ALTER TABLE Para eliminar a coluna Fax anteriormente introduzida: ALTER TABLE Pessoa DROP Fax Microsoft Access SQL Server SyBase