Banco de dados Linguagens de Banco de Dados II 1
Linguagem de Definição de Dados - DDL Comandos utilizados para criação do esquema de dados; Um DDL permite ao utilizador definir tabelas novas e elementos associados. A maioria dos bancos de dados de SQL comerciais tem extensões proprietárias no DDL. Os comandos básicos da DDL são poucos: CREATE cria um objeto (uma Tabela, por exemplo) dentro da base de dados. DROP apaga um objeto do banco de dados. Alguns sistemas de banco de dados usam o comando ALTER, que permite ao usuário alterar um objeto, por exemplo, adicionando uma coluna a uma tabela existente. Outros comandos DDL: ALTER TABLE CREATE INDEX ALTER INDEX DROP INDEX CREATE VIEW DROP VIEW 2
CREATE DATABASE Este comando permite criar objetos no banco de dados. Estes objetos podem ser banco de dados, tabelas, índices, etc. Criando um banco de dados (comando padrão): CREATE DATABASE Nome_do_meu_banco_de_Dados; Consulte a documentação do SGBD para saber mais detalhes sobre o comando Create Database que tem suas especificidades em cada SGBD. 3
CREATE TABLE Criando uma tabela em um determinado banco de dados: CREATE TABLE nome_da_tabela ( nome_coluna1 tipo_de_dado [NOT NULL] [[PRIMARY KEY], nome_coluna2 tipo_de_dado, nome_coluna3 tipo_de_dado,... [FOREING KEY (nome_coluna2) REFERENCES nome_outra_tabela(campo_outra_tabela)] [ON DELETE CASCADE] [ON UPDATE CASCADE] ) Os tipos de dados são específicos para cada SGBD. Exemplo, no Oracle, temos o tipo VARCHAR2 e no SQL Server o tipo VARCHAR. Devemos consultar a especificação de cada SGBD para conhecermos os tipos desejados conforme especificado no dicionário de dados. 4
Tipos de dados para o SQL Server Bigint Bit Decimal Int Money Date Datetime2 Datetime Char Text Ntext Binary Numeric Smallint Smallmoney Tinyint Float Datetimeoffset Smalldatetime Time Varchar Nchar Nvarchar varbinary Image Timestamp Uniqueindentifier Xml Cursor Hierarchyid Sql_variant Table Fonte: http://msdn.microsoft.com/enus/library/ms187752.aspx 5
CREATE TABLE Exemplo: CREATE TABLE Aluno ( Codigo INTEGER, Nome varchar(50), Sexo varchar (1), Email varchar (100), Idade SMALLINT, ) 6 O comando acima cria a tabela Aluno com os campos Codigo, Nome, Sexo, Email e Idade. Os campos contém os seguintes tipos de dados: Codigo: inteiro longo; Nome: Texto de tamanho máximo 50 caracteres; Sexo: Texto de tamanho máximo de 1 caractere; Email: Texto de tamanho máximo de 100 caracteres; Idade inteiro.
CREATE TABLE Observe a seguinte relação (Lembra dele?!!): Apesar de não ser uma boa prática, o comando PRIMARY KEY permite criar chave composta. Exemplo: PRIMARY KEY(campo1, campo2, ) Para criar o relacionamento acima, deve-se utilizar os comandos: CREATE TABLE Alunos ( Codigo integer CONSTRAINT PrimaryKey PRIMARY KEY, Nome varchar(100), Sexo varchar (1), Email varchar (1), Idade SmallInt ) 7 CREATE TABLE Matricula ( Código integer NOT NULL PRIMARY KEY, CodAluno INTEGER NOT NULL, Ano SMALLINT NOT NULL, Status char, Situacao varchar(20), FOREIGN KEY (CodAluno) REFERENCES Alunos(Codigo) ON UPDATE CASCADE ON DELETE CASCADE )
CREATE INDEX Usado para criar índices. Índices são úteis para auxiliar o SGBD a encontrar as informações desejadas. Em geral, você deve criar índices para colunas que serão utilizadas para: Fazer relacionamentos do lado N (ou seja, chave estrangeira) quando não se usa Constraint Efetuar ordenação em consultas SELECT Efetuar filtros em consultas SELECT 8
CREATE INDEX Sintaxe: CREATE INDEX nome_do_indice ON nome_da_tabela(campo1, campo2, ) Se você tem que pesquisar dados e filtrá-los utilizando dois campos da tabela, o seu índice deve contemplar os dois campos que serão empregados no filtro: Exemplo: Alunos do sexo masculino com idade acima de 20: Select * From Alunos WHERE Sexo = M AND idade > 20 Create Index aluno_ind1 ON Aluno(Sexo,idade) 9
CREATE UNIQUE INDEX Sintaxe: CREATE UNIQUE INDEX nome_do_indice ON nome_da_tabela(campo1, campo2, ) Este índice é utilizado para garantir que não haverá mais de uma tupla com os valores dos campos indexados iguais. 10
DROP Utilizado para apagar objetos do banco de dados Sintaxe: DROP [tipo de objeto a ser apagado] [nome] DROP TABLE Aluno - Apaga a tabela Aluno e todos os seus registros; DROP DATABASE meu_banco apaga o banco de dados com o nome meu_banco; 11
DROP DROP INDEX Aluno_ind1 - apaga o índice com o nome Aluno_ind1. Este comando tem sintaxe diferente conforme o SGBD empregado: MS Access: DROP INDEX nome_do_indice ON nome_da_tabela MS SQL Server: DROP INDEX nome_tabela.nome_indice DB2/Oracle: DROP INDEX nome_indice MySQL: ALTER TABLE nome_tabela DROP INDEX nome_indice 12
ALTER TABLE O comando ALTER TABLE é usado para adicionar, remover ou modificar colunas em uma tabela existente. Sintaxe: Para adicionar uma coluna na tabela, use a seguinte sintaxe: ALTER TABLE nome_tabela ADD nome_coluna Tipo_dados [NOT NULL/NULL] Para apagar uma coluna da tabela, use (importante: alguns SGBD s não permitem que colunas sejam excluídas): ALTER TABLE nome_tabela DROP COLUMN nome_coluna Para modificar o tipo de dados de uma coluna, use: ALTER TABLE nome_tabela ALTER COLUMN nome_coluna tipo_dados 13
Exercício Utilizando o MS-SQL Server, vamos criar as tabelas e relacionamentos definidas no exercício da aula anterior (Empregado, Projeto, Atividade e Empresa) 14
Mais detalhes Para saber mais detalhes a respeito dos comandos estudados, consulte o link: http://www.w3schools.com/sql/default.asp 15