1 11/2/2007 Sistema de Banco de Dados (2007 / S1) – Prof.: Marcelo
Aula 04
Structured Query Language
(SQL)
• SQL - Breve Histórico
•
Data Definition Language
(DDL):
#
CREATE, ALTER e DROP;
#
BEGIN TRANSACTION, ROLLBACK e COMMIT;
#
GRANT, REVOKE e DENY;
Structured Query Language
(SQL)
• Desenvolvida pelo departamento de pesquisa da
IBM na década de 1970 (System R);
• Embora o SQL tenha sido originalmente criado
pela IBM, rapidamente surgiram vários "dialetos"
desenvolvidos por outros fabricantes;
• Essa expansão levou à necessidade de ser criado
e adaptado um padrão para a linguagem;
3 11/2/2007 Sistema de Banco de Dados (2007 / S1) – Prof.: Marcelo
Aula 04
Structured Query Language
(SQL)
• Em 1986 o
American National Standard Institute
(ANSI) publicou o SQL e estabeleceu como
linguagem padrão de Banco de Dados Relacional;
• Esta tarefa também pelo
International Standards
Organization
(ISO) em 1987;
• O SQL foi revisto em 1992 e a esta versão foi
dado o nome de SQL-92;
Structured Query Language
(SQL)
• Foi revisto novamente em 1999 e 2003 para se
tornar SQL:1999 (SQL3) e SQL:2003,
respectivamente;
• Exemplo de modificação no SQL:1999 :
#
Gatilhos (
triggers
).
• Exemplo de modificação no SQL:2003 :
5 11/2/2007 Sistema de Banco de Dados (2007 / S1) – Prof.: Marcelo
Aula 04
Structured Query Language
(SQL)
• Embora padronizado pela ANSI e ISO, possui
muitas variações e extensões produzidos pelos
diferentes fabricantes de sistemas gerenciadores
de bases de dados;
• Tipicamente a linguagem pode ser migrada de
plataforma para plataforma sem mudanças
estruturais principais.
Structured Query Language
(SQL)
• Tipicamente, pode ser dividida em duas
“sub-linguagens”:
#
DDL –
Data Definition Language
Modificações “estruturais”;
#
DML –
Data Manipulation Language
7 11/2/2007 Sistema de Banco de Dados (2007 / S1) – Prof.: Marcelo
Aula 04
Data Definition Language
(DDL)
• Comandos básicos usados para estruturar o
banco de dados:
#
CREATE – Criação de “elementos”;
#
ALTER – Alteração de “elementos”;
#
DROP – Exclusão de “elementos”.
Data Definition Language
(DDL)
• Os comandos abaixo serão estudados
posteriormente:
#
Controle de transações:
BEGIN TRANSACTION, ROLLBACK e COMMIT;
#
Estabelecimento de direitos de acesso:
9 11/2/2007 Sistema de Banco de Dados (2007 / S1) – Prof.: Marcelo
Aula 04
Data Definition Language
(DDL)
• CREATE DATABASE
#
Criação de um banco de dados.
#
Exemplo:
CREATE DATABASE BancoExemplo;
Retorno do SGDB (MSSQL 2000):
– The CREATE DATABASE process is allocating 0.75
MB on disk 'BancoExemplo'.
– The CREATE DATABASE process is allocating 0.49
MB on disk 'BancoExemplo_log'.
Data Definition Language
(DDL)
• CREATE DATABASE
#
A criação de um banco de dados corresponde à fase de
implementação (modelo físico);
#
Para que seja possível criar tabelas deve ser criado o
banco de dados primeiro;
11 11/2/2007 Sistema de Banco de Dados (2007 / S1) – Prof.: Marcelo
Aula 04
Data Definition Language
(DDL)
• CREATE DATABASE
#
Como especificar localização, tamanho, etc.?
#No exemplo anterior, foram criados dois arquivos:
BancoExemplo (0.75 MB)
BancoExemplo_log (0.49 MB).
Data Definition Language
(DDL)
13 11/2/2007 Sistema de Banco de Dados (2007 / S1) – Prof.: Marcelo
Aula 04
Data Definition Language
(DDL)
• CREATE DATABASE
#
Cada SGBD gerencia os dados de maneira própria;
#
Extensões para os comandos SQL padrão incluem
parâmetros que permitem a especificação de
características dos bancos de dados;
#
Conceitos de “arquivos de log” varia de gerenciador
para gerenciador, por exemplo.
Data Definition Language
(DDL)
• CREATE DATABASE – MS SQL Server 2000:
CREATE DATABASE database_name[ ON [ < filespec > [ ,...n ] ] [ , < filegroup > [ ,...n ] ] ] [ LOG ON { < filespec > [ ,...n ] } ] [ COLLATE collation_name ]
[ FOR LOAD | FOR ATTACH ] < filespec > ::=
[ PRIMARY ]
( [ NAME = logical_file_name , ] FILENAME = 'os_file_name' [ , SIZE = size ]
[ , MAXSIZE = { max_size | UNLIMITED } ]
[ , FILEGROWTH = growth_increment ] ) [ ,...n ]
15 11/2/2007 Sistema de Banco de Dados (2007 / S1) – Prof.: Marcelo
Aula 04
Data Definition Language
(DDL)
• ALTER DATABASE
#
Permite alterar configurações de um banco de dados
previamente criado;
#
De forma semelhante ao comando de criação, os
parâmetros disponíveis para alteração variam de acordo
com o fabricante do SGBD;
#
Por exemplo, um banco pode ter um atributo de “leitura
e escrita” alterado somente para “leitura”.
Data Definition Language
(DDL)
• ALTER DATABASE – MS SQL Server 2000:
ALTER DATABASE
database
{ ADD FILE < filespec > [ ,...
n
] [ TO FILEGROUP
filegroup_name
]
| ADD LOG FILE < filespec > [ ,...
n
]
| REMOVE FILE
logical_file_name
| ADD FILEGROUP
filegroup_name
| REMOVE FILEGROUP
filegroup_name
| MODIFY FILE < filespec >
| MODIFY NAME =
new_dbname
| MODIFY FILEGROUP
filegroup_name
{
filegroup_property
| NAME =
new_filegroup_name
}
|
SET < optionspec > [ ,...
n
] [ WITH < termination > ]
| COLLATE <
collation_name
>
17 11/2/2007 Sistema de Banco de Dados (2007 / S1) – Prof.: Marcelo
Aula 04
Data Definition Language
(DDL)
• DROP DATABASE
#
Eliminação de um banco de dados.
#
Exemplo:
DROP DATABASE BancoExemplo;
#
Dependendo da versão do SGBD, os arquivos de dados
não são destruídos automaticamente;
#
O SGBD não deve permitir a eliminação do banco se
houver usuários conectados, por exemplo.
Data Definition Language
(DDL)
• DROP DATABASE – MS SQL Server 2000:
DROP DATABASE
database_name
[ ,...
n
]
#
Exemplo:
19 11/2/2007 Sistema de Banco de Dados (2007 / S1) – Prof.: Marcelo
Aula 04
Data Definition Language
(DDL)
• CREATE TABLE
#
Criação de uma tabela no banco de dados ao qual o
usuário está conectado;
#
Exemplo de sintaxe:
CREATE TABLE IdentificadorTab
(
Atrib01 TipoDado [NOT NULL],
Atrib02 TipoDado [NOT NULL],
PRIMARY KEY (ChavePrimaria)
);
Data Definition Language
(DDL)
• CREATE TABLE
#
Na sintaxe anterior:
IdentificadorTab:
– Identificador da tabela (nome);
Atrib01, Atrib02:
– Atributos (campos ou colunas da tabela);
[NOT NULL]:
– “Nulabilidade” do campo. O fato de aparecer entre
colchetes indica que sua especificação é opcional;
PRIMARY KEY:
21 11/2/2007 Sistema de Banco de Dados (2007 / S1) – Prof.: Marcelo
Aula 04
Data Definition Language
(DDL)
• CREATE TABLE
#
Exemplos:
CREATE TABLE Cliente
(
idCli INTEGER NOT NULL,
Nome CHAR(50) NOT NULL,
cpf
CHAR(11) NOT NULL,
PRIMARY KEY (idCli)
);
CREATE TABLE AgenciaCliente
(
idAg
INTEGER NOT NULL,
NomeAg CHAR(50) NOT NULL,
PRIMARY KEY (idAg)
);
Data Definition Language
(DDL)
• CREATE TABLE – MS SQL Server 2000 (01/04)
CREATE TABLE[ database_name.[ owner ] . | owner. ] table_name
( { < column_definition >
| column_name AS computed_column_expression
| < table_constraint > ::= [ CONSTRAINT constraint_name ]} | [ { PRIMARY KEY | UNIQUE } [ ,...n ]
)
[ ON { filegroup | DEFAULT } ]
[ TEXTIMAGE_ON { filegroup | DEFAULT } ]
23 11/2/2007 Sistema de Banco de Dados (2007 / S1) – Prof.: Marcelo
Aula 04
Data Definition Language
(DDL)
• CREATE TABLE – MS SQL Server 2000 (02/04)
< column_definition > ::= { column_name data_type }[ COLLATE < collation_name > ] [ [ DEFAULT constant_expression ]
| [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ] ]
[ ROWGUIDCOL]
[ < column_constraint > ] [ ...n ]
continua…
Data Definition Language
(DDL)
• CREATE TABLE – MS SQL Server 2000 (03/04)
< column_constraint > ::= [ CONSTRAINT constraint_name ]{ [ NULL | NOT NULL ]
| [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] [ WITH FILLFACTOR = fillfactor ] [ON {filegroup | DEFAULT} ] ] ]
| [ [ FOREIGN KEY ]
REFERENCES ref_table [ ( ref_column ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ]
]
| CHECK [ NOT FOR REPLICATION ] ( logical_expression )
25 11/2/2007 Sistema de Banco de Dados (2007 / S1) – Prof.: Marcelo
Aula 04
Data Definition Language
(DDL)
• CREATE TABLE – MS SQL Server 2000 (04/04)
< table_constraint > ::= [ CONSTRAINT constraint_name ]{ [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ]
{ ( column [ ASC | DESC ] [ ,...n ] ) } [ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ] ]
| FOREIGN KEY
[ ( column [ ,...n ] ) ]
REFERENCES ref_table [ ( ref_column [ ,...n ] ) ] [ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ]
| CHECK [ NOT FOR REPLICATION ] ( search_conditions )
}
Data Definition Language
(DDL)
• ALTER TABLE
#
Modifica a definição de uma tabela:
Alteração, inclusão e remoção de colunas;
Alteração, inclusão e remoção de restrições
(
constraints
);
27 11/2/2007 Sistema de Banco de Dados (2007 / S1) – Prof.: Marcelo
Aula 04
Data Definition Language
(DDL)
• ALTER TABLE
#
Exemplo de sintaxe:
ALTER TABLE AgenciaCliente
ADD idCri INTEGER NOT NULL
CONSTRAINT FKAgenciaCliente
FOREIGN KEY (idCri) REFERENCES Cliente(idCli)
DEFAULT(-1);
#
Note que os nomes das colunas envolvidas na
referência podem ser diferentes;
#
A coluna que vai ser adicionada deve permitir nulos ou
possuir a propriedade DEFAULT definida.
Data Definition Language
(DDL)
• ALTER TABLE – MS SQL Server 2000 (01/04)
ALTER TABLE table
{ [ ALTER COLUMN column_name
{ new_data_type [ ( precision [ , scale ] ) ] [ COLLATE < collation_name > ]
[ NULL | NOT NULL ]
| {ADD | DROP } ROWGUIDCOL } ]
| ADD
{ [ < column_definition > ]
| column_name AS computed_column_expression
} [ ,...n ]
| [ WITH CHECK | WITH NOCHECK ] ADD { < table_constraint > } [ ,...n ] | DROP
{ [ CONSTRAINT ] constraint_name
| COLUMN column } [ ,...n ] | { CHECK | NOCHECK } CONSTRAINT
{ ALL | constraint_name [ ,...n ] } | { ENABLE | DISABLE } TRIGGER
{ ALL | trigger_name [ ,...n ] } }
29 11/2/2007 Sistema de Banco de Dados (2007 / S1) – Prof.: Marcelo
Aula 04
Data Definition Language
(DDL)
• ALTER TABLE – MS SQL Server 2000 (02/04)
< column_definition > ::={ column_name data_type }
[ [ DEFAULT constant_expression ] [ WITH VALUES ]
| [ IDENTITY [ (seed , increment ) [ NOT FOR REPLICATION ] ] ] ]
[ ROWGUIDCOL ]
[ COLLATE < collation_name > ] [ < column_constraint > ] [ ...n ]
continua...
Data Definition Language
(DDL)
• ALTER TABLE – MS SQL Server 2000 (03/04)
< column_constraint > ::=[ CONSTRAINT constraint_name ] { [ NULL | NOT NULL ]
| [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] [ WITH FILLFACTOR = fillfactor ] [ ON { filegroup | DEFAULT } ] ]
| [ [ FOREIGN KEY ]
REFERENCES ref_table [ ( ref_column ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ]
]
| CHECK [ NOT FOR REPLICATION ] ( logical_expression ) }
31 11/2/2007 Sistema de Banco de Dados (2007 / S1) – Prof.: Marcelo
Aula 04
Data Definition Language
(DDL)
• ALTER TABLE – MS SQL Server 2000 (04/04)
< table_constraint > ::=
[ CONSTRAINT constraint_name ] { [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ] { ( column [ ,...n ] ) }
[ WITH FILLFACTOR = fillfactor ] [ ON {filegroup | DEFAULT } ] ]
| FOREIGN KEY
[ ( column [ ,...n ] ) ]
REFERENCES ref_table [ ( ref_column [ ,...n ] ) ] [ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ]
| DEFAULT constant_expression
[ FOR column ] [ WITH VALUES ] | CHECK [ NOT FOR REPLICATION ]
( search_conditions ) }
Structured Query Language
(SQL)
• Referências Bibliográficas
#
SILBERCHATZ A., KORTH H. F., SUDARSHAN S.; Sistema de Banco
de Dados, São Paulo, Pearson Makron Books, 2006.
#