Eng. de SoftwareProjeto e otimização de banco de dado | Linguagem SQL – Parte 1


Introdução à linguagem SQL e suas divisões sintáticas

SQL é um acrônimo para Structured Query Language ou Linguagem de Consulta Estruturada. Consiste em uma linguagem de pesquisa declarativa padrão para acesso a banco de dados relacionais. A base da linguagem está relacionada à álgebra relacional.

Historicamente, a SQL foi desenvolvida pela IBM, nos anos 70, dentro do Projeto R, como parte da pesquisa do Dr. E. F. Codd, que visava demonstrar a viabilidade da implementação do modelo relacional. Originalmente, a linguagem se chamava SEQUEL, acrônimo para “Structured English Query Language” (Linguagem de Consulta Estruturada), e foi desenvolvida para acesso ao System R, sistema de banco de dados construído pela IBM no seu Centro de Pesquisas de Almaden, em San Jose, Califórnia.

Logo, a linguagem se tornaria um padrão para acesso a banco de dados relacionais.
Em 1986, o ANSI ( American National Standarts Institute ) publicou um padrão SQL, denominado SQL-86. Seguiram-se outras publicações posteriores: SQL-89 (padrão estendido), SQL-92 (SQL2), SQL:1999 (SQL3), SQL:2003, SQL:2006, SQL:2008 e SQL:2011.

Principais características da SQL

Manipulação e controle de bancos de dados relacionais

O acesso ao banco de dados pode ser feito das seguintes formas:

Recursos:

Grupos de comandos SQL

A SQL pode ser dividida em subconjuntos de comandos conforme as operações que se deseja efetuar em um banco de dados.

DDL – Data Definition Language – Linguagem de Definição de Dados

Comandos para definir, alterar e remover tabelas, visões e índices.

Exemplos: CREATE TABLE, CREATE INDEX, CREATE VIEW, ALTER TABLE, ALTER INDEX, DROP INDEX, DROP VIEW.

DML – Data Manipulation Language – Linguagem de Manipulação de Dados

Comandos para inserir, remover, atualizar e consultar os dados armazenados nas tabelas.

Exemplos: INSERT, DELETE e UPDATE.

DCL – Data Control Language – Linguagem de Controle de Dados

Comandos para trabalhos em ambiente multiusuário, que permitem estabelecer níveis de segurança e manipular transações.

Exemplos: GRANT e REVOKE.

DTL – Data Transaction Language – Linguagem de Transação de Dados

Comandos para interagir com áreas de controle de transação.

Exemplos: COMMIT e ROLLBACK.

DQL – Data Query Language – Linguagem de Consulta de Dados

Comando para especificar uma consulta (“ query ”) como uma descrição do resultado desejado.

Exemplo: SELECT.

 

Tipos de domínios básicos

CHAR ( n ) ou CHARACTER ( n )

Cadeia de caracteres de tamanho fixo, com o tamanho n definido pelo usuário.

VARCHAR ( n )

Cadeia de caracteres de tamanho variável, com o tamanho máximo n definido pelo usuário.

INT ou INTEGER

Número inteiro, geralmente de 32768 a 32767.

SMALLINT

Número inteiro pequeno, geralmente de 0 a 65535.

NUMERIC ( t , d )

Número de ponto decimal fixo, que consiste de t dígitos totais e d dígitos à direita do ponto decimal, com t e d definidos pelo usuário.

REAL

Número de ponto flutuante.

DOUBLE PRECISION

Número de ponto flutuante de dupla precisão.

FLOAT ( n )

Número de ponto flutuante com a precisão n definida pelo usuário.

DATE

Formato de data, contendo dia, mês e ano.

TIME

Formato de horário, contendo horas, minutos e segundos.

 

Linguagem de Definição de Dados (DDL) – criação de uma tabela

Sintaxe:

CREATE TABLE  nome_tabela
( nome_coluna tipo [NOT NULL] [SET DEFAULT valor],
….,
PRIMARY KEY ( nome_colunas ),
[UNIQUE ( nome_coluna )],
[FOREIGN KEY ( nome_coluna )
REFERENCES nome_tabela ( nome_coluna )]
[CHECK condição])

Exemplo 1: Criação da tabela disciplina

CREATE TABLE DISCIPLINA
(CodD      CHAR(5),
NomeD     VARCHAR(20) NOT NULL,
CargaD     INTEGER NOT NULL,
AreaD        VARCHAR(20),
PreReqD    CHAR(5),
UNIQUE (NomeD),
PRIMARY KEY (CodD)
CHECK CargaD > 0 AND CargaD <= 6 )

 

Exemplo 2: Criação da tabela grade

CREATE TABLE GRADE
(CodC CHAR(5),
CodD CHAR(5),
CodP CHAR(5),
Sala  INTEGER,
PRIMARY KEY (CodC, CodD, CodP),
FOREIGN KEY (CodC) REFERENCES CURSO (CodC) ,
FOREIGN KEY (CodD) REFERENCES DISCIPLINA (CodD),
FOREIGN KEY (CodP) REFERENCES PROFESSOR (CodP)

 

Linguagem de Definição de Dados (DDL) – SQL Constraints

NOT NULL

Indica que uma coluna não pode armazenar valores nulos.

UNIQUE

Garante que uma linha de uma coluna contém valores únicos.

PRIMARY KEY

Garante que uma coluna (ou combinação de duas ou mais colunas) tem uma identidade única, que permite encontrar uma determinada linha da tabela.

FOREIGN KEY

Garante a integridade referencial dos dados em uma tabela para coincidir com os valores da tabela referenciada.

CHECK

Garante que o valor em uma coluna atende a uma condição específica.

DEFAULT

Especifica um valor padrão quando não há valor para a coluna.

 

 

Linguagem de Definição de Dados (DDL) – alteração de uma tabela

Sintaxe

ALTER TABLE nome_tabela
[ADD nome_coluna tipo [NOT NULL]]
[DROP COLUMN nome_coluna [CASCADE/RESTRICT]]
[MODIFY nome_coluna]

 

Exemplo 1: Adição da coluna MensC à tabela curso

ALTER TABLE CURSO
ADD MensC NUMERIC(6,2);

 

Exemplo 2: Modificação do tamanho da coluna NomeD da tabela disciplina para varchar(50)

ALTER TABLE DISCIPLINA
MODIFY NomeD VARCHAR(50);

 

Linguagem de Definição de Dados (DDL) – remoção de uma tabela

Remove a tabela e seus dados.

Sintaxe

DROP TABLE nome_tabela CASCADE/RESTRICT;

Exemplo: Remoção da tabela grade

DROP TABLE GRADE;

 

Linguagem de Definição de Dados (DDL) – truncando uma tabela

Remove os dados, mas mantém a estrutura da tabela.

Sintaxe

TRUNCATE TABLE nome_tabela;

Exemplo: Truncando a tabela grade

TRUNCATE TABLE GRADE;

 

Linguagem de Definição de Dados (DDL) – criação e remoção de índices

Os índices são estruturas de dados que contêm os valores de uma ou mais colunas e são utilizadas para obter mais rapidamente os dados das tabelas. O tema será objeto de uma aula a seguir.

Sintaxe para criação:

CREATE INDEX nome_índice
ON nome_tabela ( nome_coluna [ASC|DESC],…);

 

Exemplo: Criação de índice sobre a coluna CidadeP da tabela professor

CREATE INDEX Xcidadeprof
ON PROFESSOR (CidadeP ASC);

 

OBS.: A cláusula ASC é padrão e não precisa ser especificada. Significa que os valores no índice estarão em ordem ascendente. A cláusula DESC indica que os valores no índice estarão em ordem descendente.

 

 

 

Atividade proposta

Escreva os comandos em SQL para responder às seguintes proposições:
a) Criar as tabelas Func (cod_func number(2), nome varchar(50), dta_nasc date, salário number(9,2), nro_depto number(1)) e Depto (nro_depto number(1), nome varchar(50)) ;
b) Acrescentar a coluna DTA_ADM à tabela FUNC;
c) Criar um índice em ordem descendente para o atributo DTA_NASC da tabela Func.

 

 

RESP.:

A) CREATE TABLE DEPTO
(NRO_DEPTO NUMBER(1),
NOME VARCHAR2(50),
PRIMARY KEY (NRO_DEPTO));

CREATE TABLE FUNC
(COD_FUNC NUMBER(2),
NOME VARCHAR2(50),
DTA_NASC DATE,
SALARIO NUMBER(9,2),
NRO_DEPTO NUMBER(1),
PRIMARY KEY (COD_FUNC),
FOREIGN KEY (NRO_DEPTO) REFERENCES DEPTO (NRO_DEPTO));

B) ALTER TABLE FUNC ADD DTA_ADM DATE;

C) CREATE INDEX IDX_DTA_NASC ON FUNC(DTA_NASC DESC);

 

Lista de Exercícios

 

Referências

ELMASRI, R.; NAVATHE, S. Sistemas de Banco de Dados. 4a ed. Pearson Education do Brasil, 2005.
SILBERSCHATZ, Abraham; KORTH, Henry F; SUDARSHAN, S. A. Sistema de banco de dados. 5a ed. Rio de Janeiro: Campus, 2006.


Eng. de SoftwareProjeto e otimização de banco de dado | Linguagem SQL – Parte 1


 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.