Unidade G - Linguagem de consulta estruturada - SQL

Linguagem de consulta estruturada - SQL I

Linguagem de Definição de Dados (DDL).

Desenvolvida pelo departamento de pesquisa da IBM na década de 1970 (System R) - Sequel.

Linguagem padrão de Bancos de Dados Relacionais, apresenta váriOs padrões evolutivos, que foram evoluindo com o tempo: SQL86, SQL89(SQL1), SQL92 (SQL2), SQL99(SQL3).

A última versão definida pela ANSI/ISO traz características novas como: store procedures, triggers, suporte à programação OO, XML, entre outras (SQL2003).

Diferentes fornecedores de SGBDS apresentam versões de SQL com algumas particularidades próprias.

Caracetrísticas

- Estilo declarativo, não procedimental.

- Permissão de otimizações.

- Utilização por várias classes de usuários.

- Sintaxe simples e bem definida.

- Presença em todos os SGBDs Relacionais.

- Incorporação comumente a uma outra linguagem.

- Não constituição de uma linguagem de programação Delphi, C ou Java.

- Portabilidade entre sistemas operacionais.

Linguagem

- Disponibiliza uma série de comandos DDL para definição de dados.

- Disponibiliza um conjunto de comandos DML para manipulação de dados.

- Proporciona um conjunto de instruções para definição de visões (tabelas virtuais).

- Permite controle de autorização de acesso.

- Permite controle de transações e concorrência.

- Disponibiliza instruções para especificação de restrições de integridade.

SQL- DDL

Principais comandos da DDL:

CREATE- Cria uma definição;

ALTER - Alterar alguma definição;

DROP - Exclui uma definição.

Outros comandos da DDL:

TABLE - Define uma tabela, seus campos e as restrições de campo;

INDEX - Define um índice associado a um campo de uma tabela;

DOMAIN - Define um tipo de dado;

GRANT - Define usuários e autorizações para cada um;

EXCEPTION - Define uma mensagem de erro;

TRIGGER - Define um conjunto de instruções que são automaticamente executadas antes ou depois de um comando INSERT, UPDADE ou DELETE;

PROCEDURE - Define um conjunto de instruções. Podem receber ou retornar valores. Podem ser executadas através de uma solicitação do usuário ou por um TRIGGER.

CREATE DATABASE - Cria um novo banco de dados ou esquema.

CREATE {DATABASE | SCHEMA} <nome do banco>

CREATE TABLE - Cria uma nova tabela com seus campos e define as restrições de campo.

CREATE TABLE <nome da tabela> (
<coluna> <tipo-do-dado> [not null] [not null with default],
<coluna> <tipo-do-dado> [not null] [not null with default], ...
primary key (<coluna-pk>)
foreign key (<coluna-fk>) references <tabela-pai> (<coluna-pk- pai>)
)

DDL – CREATE TABLE

Onde:

<tabela> : Define o nome da tabela.

<coluna>: Define o nome da coluna. A definição das colunas de uma tabela é feita relacionando-as uma após a outra, separadas por vírgula.

<tipo-do-dado> : Define o tipo e o tamanho da coluna definida.

<not null> : Define uma coluna de preenchimento obrigatório.

<not null with default> : Define uma coluna de preenchimento obrigatório e que, no momento da inclusão de uma linha na tabela, tenha um valor pré-definido.

primary key (<coluna-pk>) : Define a coluna que será a chave primária da tabela. No caso de mais de uma coluna ser chave primária, separá-las por vírgula.

foreign key (<coluna-fk>) references <tabela-pai> (<coluna-pk-pai>): Define a <coluna-fk>, de <tabela>, como chave estrangeira. A <tabela-pai> define a tabela-pai relacionada a fk e <colunapk-pai>. Define a coluna pk, de <tabela-pai>.

Exemplo:

create table curso
(
cod_curso INTEGER not null,
nome_curso VARCHAR(40) not null,
primary key (cod_curso)
);
create table turma
(
cod_turma INTEGER not null,
nome_turma VARCHAR(40) not null,
cod_curso INTEGER not null,
primary key (cod_turma),
foreign key (cod_curso) references curso (cod_curso)
);

CONSTRAINTS: Constraints são regras agregadas a colunas ou tabelas. Assim, pode-se definir como obrigatório o preenchimento de uma coluna que tenha um valor-padrão quando uma linha for incluída na tabela ou quando aceitar apenas alguns valores pré-definidos. No caso de regras aplicadas a tabelas, tem-se a definição de chaves primárias e estrangeiras.

Exemplos:

create table aluno
(
matricula INTEGER not null,
nome_aluno VARCHAR(40) not null,
sexo CHAR(1) check (upper(sexo) = ‘M’ or upper(sexo) = ‘F’),
cpf NUMERIC(11) unique,
cod_curso INTEGER not null,
primary key (matricula),
foreign key (cod_curso) references curso (cod_curso)
);

ALTER TABLE - Altera definições na estrutura de uma tabela do BD, acrescentando, alterando e removendo nomes,formatos das colunas e regras de integridade referencial.

Exemplo:

ALTER TABLE <nome da tabela> (
[ drop <coluna> ] |
[ add <coluna> <tipo-do-dado> [not null] [not null with default]] |
[ rename <coluna> <novo-nome-coluna>] |
[ rename table <novo-nome-tabela>] |
[ add primary key ( <coluna-pk> ) ] |
[ drop primary key ( <coluna-pk> ) ] |
[ add foreign key (<coluna-fk>) references <tabela-pai> (<coluna-pk-pai>)
[ drop foreign key (<coluna-fk>) references <tabela-pai> ]
)

Onde:

<tabela> : Define o nome da tabela.

drop <coluna> : Remove a coluna da estrutura da tabela.

add <coluna> <tipo-do-dado> [not null] [not null with default] : Acrescenta uma nova coluna. No caso da existência de linhas nesta tabela, o valor da nova coluna será de acordo com as definições das cláusulas not null e not null with default.

rename <coluna> <novo-nome-coluna>: Troca o nome da coluna.

rename table <tabela>: Troca o nome da tabela.

Onde:

add primary key (<coluna-pk>): Define uma chave primária à uma nova coluna acrescentada na tabela.

add foreign key (<coluna-fk>) references <tabela-pai> (<coluna-pk-pai>): Acrescenta uma nova chave estrangeira.

drop foreign key (<coluna-fk>) references <tabela-pai> : Remove a definição de chave estrangeira.

drop primary key (<coluna-pk>): Remove a definição de chave primária da coluna.

Exemplo:

create table aluno
(
matricula INTEGER not null,
nome_aluno VARCHAR(40) not null,
cod_curso INTEGER not null,
primary key (matricula)
);
alter table aluno
add foreign key (cod_curso) references curso (cod_curso);
);

CREATE INDEX- Cria uma estrutura de índice de acesso para uma determinada coluna de uma tabela. Um índice permite um acesso mais rápido aos dados e pode ser criado a partir de uma ou mais colunas da tabela. Toda chave primária possui um índice definido.

Exemplo:

CREATE [UNIQUE] INDEX <nome do indice> on <tabela>
( <coluna> [ASC] [DESC], <coluna> [ASC] [DESC]
)

Onde:
<índice>: Define o nome do índice. A cláusula unique define que não existirão duas linhas com o mesmo conteúdo de <coluna>. A definição do índice de uma chave primária contém unique.
<tabela>: Define o nome da tabela que contém a coluna que terá o índice
<coluna>: Define a coluna da tabela. As opções ASC/DESC representam, respectivamente, uma ordenação ascendente e descendente.

DROP - Remove um objeto do banco de dados.

DROP <OBJETO> <nome do objeto>;

Exemplo:

REMOVE TABELA :

drop table curso;

REMOVE VIEW :

drop view v_curso;

REMOVE ÍNDICE :

drop index curso_pk;