SQL Structured Query Language
Objectivos Após estas aulas deverá ser capaz de: Definir os seguintes termos: esquema, catálogo, DDL, DML, DCL, integridade referencial; diferentes tipos de join e trigger. Interpretar a história e regras do SQL no desenvolvimento das Bases de Dados; Definir uma Base de Dados utilizando DDL; Escrever comandos SQL simples e múltiplos; Estabelecer integridade referencial, utilizando SQL; Entender o uso comum de triggers e store procedures;
Introdução Há quem pronuncie “S-Q-L” ou “sequel”; É a linguagem standard de facto para criar e interrogar Bases de Dados relacionais; Foi aceite como um standard americano pelo ANSI (American National Standards Institute) e é um Federal Information Processing Standard (FIPS); é também reconhecida pelo International Organization for Standardization (ISO); Foi publicada inicialmente em 1986 e actualizada em 1989 e 1992 (SQL-92);
Introdução (cont.) Pode ser utilizado em ambiente mainframe, UNIX e PC; O 1º DBMS comercial que a utilizou foi o Oracle, se bem que actualmente seja utilizada por qualquer DBMS comercial (INGRES; MS-SQL; SYBASE; DB2; Microsoft Access, etc); Muitos construtores introduziram melhorias específicas para ambientes específicos, pelo que deverá existir alguma cuidado na utilização destas extensões (compatibilidade)
História Os comandos SQL podem ser utilizados interactivamente ou serem embebidos em programas. No entanto o SQL não é uma linguagem de programação, mas sim uma sublinguagem ou uma linguagem de data access que é embebida noutras linguagens; Tal como os conceitos base dos SGDD, também foi na IBM que se desenvolveram os 1ºs esforços para concepção desta linguagem entre 1974 e 1979, cujas bases foram utilizadas por outras empresas com o mesmo objectivo, até à normalização.
História (cont.) Hoje com as Bases de Dados Relacionais e os geradores de aplicações, a importância do SQL é muitas vezes transparente para os utilizadores. Muitos utilizadores, sem qualquer conhecimento de SQL, acedem Bases de Dados, sem o saberem. Pesquisas na web, estão suportadas por SGBD o que não impede qualquer pessoa, mesmo com poucos conhecimentos informáticos de a utilizar e obter as respostas às perguntas que formalizam.
Função do SQL O propósito original do standard SQL foi: Especificar a sintaxe e a semântica para a definição e manipulação de dados; Definir as estruturas de dados e as operações básicas para desenhar, aceder, manter, controlar e proteger as Bases de Dados; Permitir a portatibilidade da definição da Base de Dados e de módulos aplicacionais entre diferentes SGBD; Especificar standards mínimos (nível 1) e completos (nível 2), que permitam diferentes adaptações de produtos; Permitir um standard inicial, se bem que incompleto, que possa ser melhorado posteriormente para incluir especificações que permitam o tratamento da integridade referencial, gestão de transacções, operações de join, a utilização de charater sets, etc.
Definições Catálogo – conjunto de esquemas, que quando postos em conjunto, constituem a descrição de uma Base de Dados. Esta informação é mantida pelo SGBD, como o resultado dos comandos de SQL gerados pelo utilizador, mas não requer qualquer acção consciente para a sua manutenção; Esquema – a estrutura que contém a descrição dos objectos criados pelo utilizador, tal como, tabelas, views, atributos, privilégios, constrangimentos e domínios, bem como outras informações relevantes para a Base de Dados
Definições (cont.) Os comandos de SQL podem ser classificados em 3 grupos: Data Definition Language (DDL) – usados para criar, alterar e apagar tabelas. Está restringida, normalmente, aos Administradores de Bases de Dados, como forma de protecção; Data Manipulation Language (DML) – usados para inserir, actualizar, modificar e questionar, os dados. Podem ser usados interactivamente, permitindo uma resposta imediata, após a execução do comando; Data Control Language (DCL) – usados pelo DBA para controlo da Base de Dados, incluí os comandos necessários para dar e retirar os previlégios de acesso à Base de Dados
Definir uma Base de Dados em SQL O SQL-92 não incluí o comando CREATE DATABASE, no entanto a maioria dos fornecedores disponibiliza-o. Este comando é usado para a definição e alocação de espaço inicial para a criação de tabelas, views, indices, constrangimentos e outros objectos da Base de Dados. Este comando é utilizado pelo BDA.
Definições usando SQL Comandos DDL CREATE TABLE – define uma nova tabela e as suas colunas; DROP TABLE – destrói uma tabela (definição, conteúdo, views e índices); DROP TABLE Alunos ALTER TABLE – adiciona uma ou mais colunas a uma tabela. Alguns SGBD’s também permitem apagar e redefinir o tipo de dados das colunas; ALTER TABLE Alunos ADD COLUMN nacionalidade CHAR(15)
Definições usando SQL Comandos DDL CREATE TABLE <nome_da_tabela> ( Atributo1 tipo [(tamanho)] [Null| Not Null] [Índice] ..., Atributo2 tipo [(tamanho)] [Nill| Not Null] [Índice] ..., CONSTRAINT Nome <restrições> ) Os elementos em parêntesis rectos são opcionais. O elemento Atributo1 representa o nome do atributo da tabela. O elemento tipo representa o domínio de cada atributo (INTEGER, SMALLINT, DECIMAL, DOUBLE PRECISION, FLOAT, CHAR, VARCHAR, BIT, DATE, TIME, etc.).
Exemplo: CREATE TABLE Alunos ( Cod_Aluno SMALLINT PRIMARY KEY, Nome CHAR(20) NOT NULL, Idade SMALLINT, Cod_Curso SMALLINT, FOREIGN KEY (Cod_Curso) REFERENCES Cursos (Cod_Curso) ON UPDATE CASCADE ON DELETE SET NULL, CHECK (Idade BETWEEN 17 AND 70))
Definições usando SQL Comandos DDL (cont.) CREATE INDEX – define um índice a partir de uma coluna, ou conjunto de colunas, por forma a permitir um mais rápido acesso aos dados; CREATE [UNIQUE] INDEX<nome> ON <nome_da_tabela> ( nome_atributo1 [ASC|DES], ..) CREATE INDEX Chave_prim ON Clientes (Cod_cliente); DROP INDEX – destrói um índice; DROP INDEX <nome> ON <nome_da_tabela>
Definições usando SQL Comandos DDL (cont.) CREATE VIEW – define uma tabela lógica a partir de uma ou mais tabelas ou views. As views não podem ter índices; CREATE VIEW <nome> [(<atributos>)] AS <query> Exemplo: CREATE VIEW topo_de_gama (Cod_prod, designação) AS (SELECT Cod_prod, designação, preço FROM Produtos WHERE preço > 10.000)
Definições usando SQL Comandos DDL (cont.) DROP VIEW – destrói uma view; DROP VIEW <nome> CREATE SCHEMA – usado para definir a parte da Base de dados que é utilizado por um particular utilizador;