Bases de Dados Parte V A Linguagem SQL
[Pages:39]Bases de Dados 2010/2011
Parte V: A Linguagem SQL
Bases de Dados
Parte V A Linguagem SQL
Ricardo Rocha DCC-FCUP
1
Bases de Dados 2010/2011
Parte V: A Linguagem SQL
SQL ? Structured Query Language
O SQL ? uma poderosa linguagem declarativa que permite definir, questionar e manipular bases de dados. Para al?m das funcionalidades b?sicas, o SQL incorpora uma s?rie de facilidades adicionais que permitem:
Definir restri??es de integridade. Definir vis?es sobre os dados. Especificar transac??es. Especificar permiss?es de seguran?a e de acesso. Criar ?ndices de forma a optimizar o acesso. Ligar-se a outras linguagens de programa??o. ... O SQL ? simultaneamente uma DDL (Data Definition Language) e uma DML (Data Manipulation Language).
Ricardo Rocha DCC-FCUP
2
1
Bases de Dados 2010/2011
Parte V: A Linguagem SQL
SQL ? Structured Query Language
Originalmente, o SQL foi desenhado e desenvolvido pela IBM Research e era chamado de SEQUEL (Structured English QUEry Language). Actualmente, o SQL ? a linguagem standard para todos os sistemas comerciais de gest?o de bases de dados relacionais. A 1? vers?o standard do SQL foi definida em 1986, o SQL1 ou SQL-86. A 2? vers?o standard foi definida em 1992, o SQL2 ou SQL-92. A vers?o mais recente ? o SQL3 ou SQL-99.
Ricardo Rocha DCC-FCUP
3
Bases de Dados 2010/2011
Parte V: A Linguagem SQL
CREATE TABLE
Permite criar uma nova rela??o (tabela) indicando o seu nome, atributos (nome, dom?nio, restri??es e valores por defeito) e restri??es de integridade (integridade da chave e integridade referencial).
CREATE TABLE ( [], ..., [], [, ..., ] );
Uma diferen?a importante entre o SQL e a ?lgebra e o c?lculo relacional ? que o SQL permite que uma tabela possua tuplos repetidos.
Ricardo Rocha DCC-FCUP
4
2
Bases de Dados 2010/2011
Parte V: A Linguagem SQL
Dom?nio dos Atributos
Valores num?ricos TINYINT: 1 byte SMALLINT: 2 bytes INT: 4 bytes BIGINT: 8 bytes FLOAT: 4 bytes DOUBLE: 8 bytes DECIMAL(N, D): N d?gitos com D d?gitos depois do ponto decimal
Valores temporais DATE: formato `YYYY-MM-DD' (`2004-01-30') TIME: formato `HH:MM:SS' (`09:12:47') DATETIME: formato `YYYY-MM-DD HH:MM:SS' (`2004-01-30 09:12:47') TIMESTAMP: formato YYYYMMDDHHMMSS (20040130091247)
Ricardo Rocha DCC-FCUP
5
Bases de Dados 2010/2011
Parte V: A Linguagem SQL
Dom?nio dos Atributos
Valores l?gicos BOOLEAN: TRUE e FALSE
Sequ?ncias de texto (strings) CHAR(N): string de comprimento fixo de N caracteres, 0 N 255 VARCHAR(N): string de comprimento vari?vel at? N caracteres, 0 N 255 TEXT: string de comprimento vari?vel at? 65 Kbytes LONGTEXT: string de comprimento vari?vel at? 4.3 Gbytes
Criar a tabela para a rela??o DEPARTAMENTO.
CREATE TABLE DEPARTAMENTO (
Nome
VARCHAR(50),
Num
INT,
GerenteBI CHAR(9),
GerenteData DATE );
Ricardo Rocha DCC-FCUP
6
3
Bases de Dados 2010/2011
Parte V: A Linguagem SQL
Valores por Defeito e Restri??es sobre os Atributos
Definir o valor por defeito para um atributo. DEFAULT
N?o permitir que um atributo possua valores NULL. NOT NULL
Restringir os valores que um atributo pode tomar. CHECK ()
Criar a tabela para a rela??o DEPARTAMENTO.
CREATE TABLE DEPARTAMENTO (
Nome
VARCHAR(50) NOT NULL,
Num
INT
NOT NULL CHECK (Num > 0),
GerenteBI CHAR(9)
DEFAULT `000000000',
GerenteData DATE );
Ricardo Rocha DCC-FCUP
7
Bases de Dados 2010/2011
Parte V: A Linguagem SQL
Restri??es de Integridade da Chave
Definir a chave prim?ria da tabela. PRIMARY KEY (, ..., )
Definir chaves secund?rias da tabela. UNIQUE (, ..., )
Criar a tabela para a rela??o DEPARTAMENTO.
CREATE TABLE DEPARTAMENTO (
Nome
VARCHAR(50) NOT NULL,
Num
INT
NOT NULL CHECK (Num > 0),
GerenteBI CHAR(9)
DEFAULT `000000000',
GerenteData DATE,
PRIMARY KEY (Num),
UNIQUE (Nome) );
Ricardo Rocha DCC-FCUP
8
4
Bases de Dados 2010/2011
Parte V: A Linguagem SQL
Restri??es de Integridade Referencial
Definir uma chave externa da tabela. FOREIGN KEY (, ..., ) REFERENCES (, ..., )
Criar a tabela para a rela??o DEPARTAMENTO.
CREATE TABLE DEPARTAMENTO (
Nome
VARCHAR(50) NOT NULL,
Num
INT
NOT NULL CHECK (Num > 0),
GerenteBI CHAR(9)
DEFAULT `000000000',
GerenteData DATE,
PRIMARY KEY (Num),
UNIQUE (Nome),
FOREIGN KEY (GerenteBI) REFERENCES EMPREGADO(NumBI));
Ricardo Rocha DCC-FCUP
9
Bases de Dados 2010/2011
Parte V: A Linguagem SQL
Manuten??o da Integridade Referencial
As restri??es de integridade referencial podem ser violadas quando inserimos ou removemos tuplos ou quando alteramos o valor de uma chave prim?ria ou chave externa. Quando isso acontece, o SQL por defeito rejeita essas opera??es.
No entanto, ? poss?vel modificar esse comportamento para as opera??es de remo??o (ON DELETE) e altera??o (ON UPDATE) que violem a integridade referencial sobre tuplos que s?o referenciados pela chave externa de outras tabelas:
ON DELETE SET NULL / ON UPDATE SET NULL: coloca o valor NULL na chave externa dos tuplos que referenciam o tuplo removido/alterado. ON DELETE SET DEFAULT / ON UPDATE SET DEFAULT: coloca o valor por defeito na chave externa dos tuplos que referenciam o tuplo removido/alterado. ON DELETE CASCADE: remove todos os tuplos que referenciam o tuplo removido. ON UPDATE CASCADE: actualiza com o novo valor a chave externa dos tuplos que referenciam o tuplo alterado.
Ricardo Rocha DCC-FCUP
10
5
Bases de Dados 2010/2011
Parte V: A Linguagem SQL
Manuten??o da Integridade Referencial
Criar a tabela para a rela??o DEPARTAMENTO.
CREATE TABLE DEPARTAMENTO (
...
GerenteBI CHAR(9)
DEFAULT `000000000',
...
FOREIGN KEY (GerenteBI) REFERENCES EMPREGADO(NumBI)
ON DELETE SET DEFAULT ON UPDATE CASCADE );
Criar a tabela para a rela??o LOCALIZA??ES_DEP.
CREATE TABLE LOCALIZA??ES_DEP (
NumDep INT
NOT NULL,
Localiza??o VARCHAR(50) NOT NULL,
PRIMARY KEY (NumDep, Localiza??o),
FOREIGN KEY (NumDep) REFERENCES DEPARTAMENTO(Num)
ON DELETE CASCADE ON UPDATE CASCADE );
Ricardo Rocha DCC-FCUP
11
Bases de Dados 2010/2011
Parte V: A Linguagem SQL
Simplifica??es de Nota??o
Se a chave prim?ria for definida por um s? atributo. PRIMARY KEY
Se uma chave externa for definida por um s? atributo. REFERENCES ()
Criar a tabela para a rela??o DEPARTAMENTO.
CREATE TABLE DEPARTAMENTO (
Nome
VARCHAR(50),
Num
INT
PRIMARY KEY,
GerenteBI CHAR(9) REFERENCES EMPREGADO(NumBI),
GerenteData DATE );
Ricardo Rocha DCC-FCUP
12
6
Bases de Dados 2010/2011
Parte V: A Linguagem SQL
CREATE DOMAIN
Permite declarar um novo dom?nio para ser usado na defini??o de atributos. CREATE DOMAIN AS [CHECK ()];
Criar a tabela para a rela??o DEPARTAMENTO.
CREATE DOMAIN CHARNOME AS VARCHAR(50);
CREATE DOMAIN INTPOS AS INT CHECK (INTPOS > 0);
CREATE TABLE DEPARTAMENTO (
Nome
CHARNOME NOT NULL,
Num
INTPOS
NOT NULL,
GerenteBI CHAR(9)
DEFAULT `000000000',
GerenteData DATE );
Ricardo Rocha DCC-FCUP
13
Bases de Dados 2010/2011
Parte V: A Linguagem SQL
DROP TABLE
Permite remover uma tabela (defini??o + dados). DROP TABLE [CASCADE | RESTRICT];
Op??o CASCADE Remove tamb?m todas as restri??es (chaves externas em outras tabelas) e vis?es que referenciam a tabela a remover.
Op??o RESTRICT S? remove a tabela se esta n?o for referenciada por nenhuma restri??o ou vis?o.
Remover a tabela para a rela??o LOCALIZA??ES_DEP. DROP TABLE LOCALIZA??ES_DEP CASCADE;
Ricardo Rocha DCC-FCUP
14
7
Bases de Dados 2010/2011
Parte V: A Linguagem SQL
ALTER TABLE
Permite alterar os atributos ou restri??es de uma tabela. ALTER TABLE [ADD | DROP | ALTER] ;
Op??o ADD Permite adicionar um novo atributo ? tabela. O novo atributo ter? valores NULL em todos os tuplos. A restri??o NOT NULL n?o ? permitida com esta op??o.
Op??o DROP [CASCADE | RESTRICT] Permite remover um atributo da tabela. As op??es CASCADE e RESTRICT t?m o mesmo significado que em DROP TABLE.
Op??o ALTER [SET | DROP] Permite alterar as restri??es de um atributo da tabela.
Ricardo Rocha DCC-FCUP
15
Bases de Dados 2010/2011
Parte V: A Linguagem SQL
ALTER TABLE
Adicionar um novo atributo ? tabela DEPARTAMENTO. ALTER TABLE DEPARTAMENTO ADD DataCria??o DATE;
Remover um atributo da tabela DEPARTAMENTO. ALTER TABLE DEPARTAMENTO DROP DataCria??o CASCADE;
Remover uma restri??o de um atributo da tabela DEPARTAMENTO. ALTER TABLE DEPARTAMENTO ALTER GerenteBI DROP DEFAULT;
Adicionar uma nova restri??o a um atributo da tabela DEPARTAMENTO. ALTER TABLE DEPARTAMENTO ALTER GerenteBI SET DEFAULT `000000000';
Ricardo Rocha DCC-FCUP
16
8
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.