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.

Google Online Preview   Download

To fulfill the demand for quickly locating and searching documents.

It is intelligent file search solution for home and business.

Literature Lottery

Related searches