Beruflich Dokumente
Kultur Dokumente
SQL - Server
Carlos Ramos
ESGN
2008/2009
ndice
SQL Server - Arquitectura Cliente/Servidor ........................................................................................ 3
SQL Server - Arquitectura da Base de Dados ...................................................................................... 4
SQL Server - SQL Server Enterprise Manager. .................................................................................... 8
SQL Server - Criar uma base de dados ............................................................................................ 12
SQL Server - Criar uma base de dados (Exemplo) ............................................................................. 15
SQL Server - Criar uma base de dados (Outro Exemplo) .................................................................... 17
SQL Server - Criar uma tabela ....................................................................................................... 19
Restries de Integridade de Gatilhos ............................................................................................. 21
Restries de Chaves ................................................................................................................... 22
Restries de Integridade Referencial.............................................................................................. 19
Restries Baseadas em Atributos .................................................................................................. 24
Nomes das Restries de Integridade.............................................................................................. 25
Gatilhos em SQL3 ........................................................................................................................ 26
Gatilhos em SQL-Server................................................................................................................ 29
ndices ....................................................................................................................................... 31
Vistas ........................................................................................................................................ 32
Vistas e Segurana ..................................................................................................................... 35
SQL Linguagem de Manipulao de Dados (LMD) ........................................................................... 37
SQL Server Procedures ............................................................................................................... 41
SQL Server Anexos..................................................................................................................... 43
2
Figura 1.
3
Figura 2.
Podem existir mltiplas Bases de dados;
O SQL Server tem quatro bases de dados de sistema (master, model, tempdb, and msdb);
4
Master , regista:
- todas as contas e as configuraes do sistema.
- a existncia de todas as outras bases de dados e a localizao dos ficheiros primrios que contm a informao de
inicializao para as bases de dados dos utilizadores.
- A informao de inicializao do SQL Server .
Tempdb:
- Regista toda a informao temporria.
- recriada sempre que o SQL Server iniciado.
- Todas as tabelas temporrias so eliminadas sempre que terminada a ligao.
- A base de dados cresce de acordo com as necessidades.
Model :
- usada como um modelo para todas as bases de dados criadas no sistema.
- Quando a instruo CREATE DATABASE usada, a primeira parte da nova base de dados criada copiando o
contedo da base de dados model, o resto da base de dados preenchida com pginas em brando.
Msdb:
- usada para escalonar sinais de alerta e trabalhos.
No SQL Server 7.0, todas as bases de dados, incluindo as bases de dados de sistema, tm o seu prprio conjunto de
ficheiros, que no so partilhados com nenhuma outra base de dados. A localizao por defeito dos referidos ficheiros
C:\Mssql7\Data directory:
Ficheiro da Base de
dados
Master primary data
Master log
tempdb primary data
tempdb log
model primary data
model log
msdb primary data
msdb log
Nome fsico do
Ficheiro
Master.mdf
Mastlog.ldf
Tempdb.mdf
Templog.ldf
Model.mdf
Modellog.ldf
Msdbdata.mdf
Msdblog.ldf
Cada base de dados no SQL Server contm tabelas de sistema que regista os dados necessrios aos componentes do SQL
Server.
Os utilizadores no podem alterar directamente a informao das tabelas de sistema.
Existe um conjunto de ferramentas que permitem aos utilizadores administrar o seu sistema.
Podem ser utilizados utilitrios de administrao tais como SQL Server Enterprise Manager, para administrar directamente
o sistema.
Os Programadores construindo scripts em Transact-SQL e procedures conseguem garantir todas as funes
administrativas do seu sistema.
No so suportados triggers definidos nas tabelas de sistema; podem alterar o funcionamento do mesmo.
Figura 3.
SQL Server permite o acesso de mltiplos utilizadores a trabalhar em diferentes bases de dados ao mesmo tempo;
Quando um utilizador estabelece uma ligao, fica associado a uma base de dados especfica no servidor, chamada de
base de dados corrente;
Cada utilizador pode comutar entre diferentes bases de dados recorrendo ao Transact-SQL USE database_name ;
As aplicaes em SQL Server so construdas de acordo com uma importante hierarquia chamada SQL Distributed Management
Framework ( SQL-DMF ).
-
No primeiro nvel esto comandos em Transact-SQL. Transact-SQL uma verso Microsoft do SQL standard.
Tudo no SQL Server pode ser feito atravs de comandos em texto simples ( se souber o que est a fazer).
O segundo nvel um conjunto de objectos de gesto da base de dados que invocam comandos Transact-SQL.
O SQL Server Enterprise Manager uma ferramenta grfica que permite efectuar a gesto do universo SQL Server:
-
Configurar servidores.
Executar queries.
...
10
Figura 4.
11
No SQL Server, os dados so armazenados em bases de dados e organizados em componentes lgicos visveis para os utilizadores.
Uma base de dados implementada fisicamente em dois ou mais ficheiros em disco.
Existem dois componentes que compem um sistema cliente/servidor de bases de dados: programas que proporcionam aos utilizadores o
acesso aos dados (cliente), e a estrutura que permite gerir os dados (servidor).
Criar uma base de dados no SQL Server significa planear, criar e gerir um conjunto de componentes que se relacionam:
Base de Dados - Contm os objectos usados para representar, gerir e aceder aos dados.
CREATE DATABASE
Tabelas - Armazenam linhas de dados e definem relaes entre mltiplas tabelas.
CREATE TABLE
Diagramas- Representam graficamente os objectos da base de dados.
ndices - Optimizam a velocidade de acesso aos dados de uma tabela.
CREATE INDEX
Vistas - Proporcionam uma maneira alternativa de visualizar os dados em uma ou mais tabelas.
CREATE VIEW
Stored Procedures - Programas em Transact-SQL que definem regras de negcio, tarefas, e processos no servidor.
CREATE PROCEDURE
Triggers - So tipos especiais de Stored Procedures que s so executados quando os dados de uma tabela so
alterados.
CREATE TRIGGER
Full-Text Indexes - Facilitam a consulta em dados armazenados em colunas do tipo texto (varchar, text).
12
O Ficheiro primrio, que contm a informao de inicializao da base de dados e tambm pode ser usado para armazenar
dados; Todas as bases de dados tm obrigatoriamente um Ficheiro Primrio.
Ficheiro Secundrio, usado para armazenar os dados que no cabem no ficheiro primrio. Uma base de dados no precisa do
ficheiro secundrio se o ficheiro primrio tiver capacidade suficientemente. Por outro lado pode-se usar mltiplos ficheiros
secundrios, eventualmente, dispersos por vrias unidades de disco.
Ficheiros de LOG, que armazenam informao necessria recuperao da base de dados. Tem que existir pelo menos um
ficheiro de LOG. O tamanho mnimo para um ficheiro de LOG de 512K.
Tipo de Ficheiro
Ficheiro primrio
Ficheiro secundrio
Ficheiro de Log
Extenses
.mdf
.ndf
.ldf
13
14
15
MAXSIZE = 8,
/* Tamanho acrescentado ao ficheiro sempre que novo espao necessrio, podem ser usados os sufixos KB, MB ou %, por
defeito MB*/
FILEGROWTH = 20% )
GO
16
17
MAXSIZE = 200,
FILEGROWTH = 20)
GO
18
datetime
- para armazenar datas desde Janeiro 1, 1753, a Dezembro 31, 9999
smalldatetime para armazenar datas desde Janeiro 1, 1900, a Junho 6, 2079
Binrios:
varbinary
binary
Texto:
char
varchar
text
Numricos:
int
- 4 bytes para representar um nmero
smallint
- 2 bytes
tinyint
- 1 byte, de 0 a 256.
decimal ou numeric
float
real
Monetrios:
money
smallmoney
Especiais:
bit
- Valores booleanos 0 ou 1.
19
/* Inicio da definio das restries de integridade, PRIMARY KEY, FOREIGN KEY, CHECK, UNIQUE */
constraint pk_unidade primary key(codun)
20
Restries de Chave
Gatilhos SQL3
Expresses ou comandos que so escritos uma vez e guardados na BD e sero executados como resposta a certos
eventos;
21
Restries de Chaves
Fazem parte da instruo CREATE TABLE
So especificadas usando a primitiva PRIMARY KEY
CREATE TABLE ACTOR(NOME CHAR(30) PRIMARY KEY, ....);
CREATE TABLE FILME(TITULO CHAR(30), ANO NUMBER(4),
PRIMARY KEY(TITULO, ANO));
22
CHAR(50),
ANO
NUMBER(4),
ACTOR
SALARIO
DECIMAL(9,2),
23
24
Para se efectuar a manuteno de uma restrio de integridade esta deve ter nome
NOME CHAR(30) CONSTRAINT PK_AUTOR PRIMARY KEY
SEXO CHAR(1) CONSTRAINT CK_SEXO CHECK (SEXO IN (F, M))
CONSTRAINT FK_PARTICIPA FOREIGN KEY (FILME, ANO) REFERENCES FILME(TITULO, ANO)
Restries podem ser apagadas com a primitiva ALTER TABLE ....DROP ....
ALTER TABLE ACTOR DROP CONSTRAINT PK_ACTOR;
Restries podem ser adicionadas com a primitiva ALTER TABLE ....ADD ....
ALTER TABLE ACTOR ADD CONSTRAINT PK_ACTOR PRIMARY KEY(NOME);
25
Gatilhos em SQL3
A aco pode ser executada antes, depois ou em vez do evento que a dispara
A aco pode referir-se a valores novos ou aos antigos dos tuplos inseridos, modificados ou apagados no evento que a
dispara
Uma condio pode ser especificada por uma clusula WHEN e a execuo da aco s tem lugar se a regra disparada e a
condio verdadeira quando o evento ocorre
26
EXECUO da ACO
AFTER
BEFORE
INSTEAD OF
EVENTOS DE DISPARO
UPDATE
INSERT
DELETE
A aco do trigger pode conter vrias instrues em SQL separadas por vrgulas
A execuo da referida aco pode ser por cada tuplo (FOR EACH ROW) ou uma nica vez.
27
(50000<=(SELECT AVG(SALARIO)
FROM (( EXECUTIVO EXCEPT VELHOS) UNION NOVOS)
)
)
28
Gatilhos em SQL-Server
Para garantir a mesma funcionalidade do trigger supra definido em SQL3 utilizaria a seguinte sintaxe em SQL-Server:
use master
go
use mjs_bd1
go
drop trigger mediasaltrigger
go
CREATE TRIGGER MEDIASALTRIGGER ON EXECUTIVO for UPDATE, insert /*Este trigger responde aos eventos de update e insert*/
as
declare @media numeric
/* Declarao de uma varivel local (o nome da varivel tem que ser sempre precedida de @*/
select @media=avg(salrio) from executivo
if (select avg(salrio) from executivo)>=5000
/* Equivalente condio WHEN*/
begin
print 'vai passear'
/*Visualiza uma mensagem no ecr*/
(select * from inserted where exists
/* Estas instrues esto a mais s para fazer referncia aos tuplos que foram
inseridos ou actualizados na tebela*/
/* Para fazer referncia aos tuplos anteriores seria com deleted*/
(select * from EXECUTIVO))
rollback
end
GO
29
BEGIN TRANSACTION INICIA UMA TRANSACO QUE DEPOIS PODER SER CONCRETIZADA COM A INSTRUO
COMMIT TRANSACTION OU NO, COM RECURSO INSTRUO ROLLBACK;
IF....ELSE
WHILE...
UPDATE(CAMPO) DETERMINA SE FOI EFECTUADA UMA OPERAO DE UPDATE SOBRE O CAMPO
ESPECIFICADO.
INSERTED TABELA QUE CONTM OS NOVOS TUPLOS DEPOIS DA ALTERAO POR PARTE DO EVENTO
QUE ACTIVOU O TRIGGER;
DELETED TABELA QUE OS TUPLOS COM A INSTNCIA ANTERIOR EXECUO DO EVENTO QUE
ACTIVOU O TRIGGER
30
ndices
Um ndice visa tornar mais eficiente a pesquisa de dados cujo critrio de seleco envolva um determinado campo.
A deciso de usar ou no um ndice cabe ao projectista da base de dados, tendo em considerao:
-
melhora muito o desempenho na obteno de respostas para perguntas envolvendo os atributos especificados no
ndice;
- torna mais demoradas as inseres, eliminaes e alteraes de tuplos da relao. Pois tem que proceder
reordenao do ndice.
Criao de ndices.
CREATE INDEX INDICEANO ON FILME(ANO);
CREATE INDEX INDICECHAVE ON FILME(TITULO, ANO);
Eliminar um ndice.
DROP INDEX INDICEANO;
31
Vistas
Criao de Vistas:
CREATE VIEW <NOME> AS <DEFINIO>;
Exemplos:
CREATE VIEW FILMESPARAMOUNT AS
SELECT TITULO, ANO
FROM FILME
WHERE ESTUDIO=PARAMOUNT;
Criou uma vista com o nome FilmesParamount, que, posteriormente, pode ser usada tal como se fosse uma
tabela. Exemplo:
SELECT TITULO
FROM FILMESPARAMOUNT
WHERE ANO=1979;
32
Vistas - continuao
Vistas Modificveis.
Uma vista modificvel se:
-
os atributos especificados na clusula SELECT da vista forem suficientes por forma a permitir que os restantes
atributos possam ficar com valor NULL ou um valor por omisso na tabela base.
Nota: As operaes de insero, alterao e eliminao efectuadas sobre uma vista podem ser transpostas para a tabela
fsica, desde que os pressupostos anteriormente referidos sejam salvaguardados.
Exemplo:
Tendo em considerao a relao actor(codigo, nome, nacionalidade):
CREATE VIEW TESTE1 AS
SELECT CODIGO, NOME
FROM ACTOR;
33
Vistas - continuao
Manipulao de Vistas:
-
Remoes
DELETE FROM FILMESPARAMOUNT
WHERE TITULO LIKE %TREK%;
Nota: Os caracteres % significam que a cadeia de caracteres pode ter qualquer sequncia antes e depois da string
TREK.
-
Modificaes
UPDATE FILMESPARAMOUNT SET ANO=1979 WHERE TITULO LIKE %TREK%;
34
Vistas e Segurana
Vistas podem ser usadas para apresentar a informao necessria, escondendo detalhes das tabelas base
Comandos GRANT e REVOKE podem ser usados para controlar acessos a tabelas base e vistas.
Em conjunto com a possibilidade de definir vistas, proporciona uma mecanismo poderoso de controlo de acessos.
Exemplos:
GRANT INSERT, SELECT ON ACTOR TO CRAMOS;
CRAMOS pode inserir e consultar tuplos da tabela ACTOR.
GRANT DELETE ON ACTOR TO RAMOS WITH GRANT OPTION;
RAMOS pode apagar tuplos da tabela ACTOR e autorizar outros a fazer o mesmo.
35
36
Operadores de comparao:
=; <>; >; >=; <=; <
Operadores aritmticos:
+; -; *; /
ORDER BY <ATRIBUTOS>
Operadores lgicos:
AND; OR; NOT
37
38
39
PROFESSOR
Codigo
1
2
3
Nome
Carlos
Rui Marteleiro
Ana Rita
EXECUTIVO
Codigo
1
3
4
Nome
Carlos
Ana Rita
Ricardo Baba
40
Nome
Carlos
Rui Marteleiro
Ana Rita
Ricardo Baba
SQL-SERVER:
(SELECT * FROM PROFESSOR WHERE NOT EXISTS
(SELECT * FROM EXECUTIVO));
SQL-SERVER:
(SELECT * FROM PROFESSOR WHERE EXISTS
(SELECT * FROM EXECUTIVO));
Nome
Rui Marteleiro
41
Codigo
1
3
Nome
Carlos
Ana Rita
42
Operaes de Agregao
43
44
45
Um procedimento um conjunto de operaes que so armazenadas na base de dados identificados por um nome, e
que podem ser executados sempre que for necessrio. Para alm disso, um procedimento pode retornar um
determinado valor.
As operaes so especificadas atravs de instrues em SQL.
46
SET @i=10;
Permite atribuir um determinado valor a uma varivel.
RETURN 2;
Retorna o valor 2 da procedure.
PRINT Mensagem
Visualiza uma mensagem no ecr.
47
48
49
50
51