apostila ddl dml basico

Upload: vinicius-kmez

Post on 14-Oct-2015

146 views

Category:

Documents


2 download

TRANSCRIPT

  • 5/24/2018 Apostila DDL DML Basico

    1/34

    1

    Fatec So Bernado

    Banco de Dados II

    Linguagens de Definio e Manipulao deDados

    Profa. Ms. Sueli A. Loddi

  • 5/24/2018 Apostila DDL DML Basico

    2/34

    2

    Linguagem de Definio e Mapeamento de Dados

    1. A Arquitetura dos Sistemas de Banco de DadosDe acordo com Date(2003), no ano de 1972 foi criado um grupo de estudos para definir uma

    arquitetura padro para um sistema de banco de dados, que atendesse s demandas tericas. O nome

    desse grupo foi ANSI/X3/SPARC Study Group on Data Base Management Systems, e a arquitetura passou

    a ser conhecida comoANSI/SPARC.

    O autor ressalta que, segundo essa arquitetura, um sistema de banco de dados pode possui trs

    nveis:

    Nvel Interno Responsvel pelo armazenamento dos dados; Nvel Conceitual Serve de interface entre o primeiro e o terceiro nveis; Nvel Externo Responsvel pela visualizao dos dados por parte do usurio.

    A Figura 1, a seguir ilustra a dinmica desta arquitetura.

    Figura 1 Os trs nveis da arquitetura de banco de dados

    Fonte: Adaptado de Elmasri e Navathe (2005, p.7) e Date (2003, p.29)

  • 5/24/2018 Apostila DDL DML Basico

    3/34

    3

    O nvel interno ou esquema interno descreve a estrutura de armazenamento fsico do banco de

    dados Esse esquema utiliza um modelo de dados fsico e descreve, com detalhes completos o

    armazenamento de dados e caminhos de acesso ao banco de dados. (ELMASRI, NAVATHE, 2005).

    O nvel conceitual ou esquema conceitual descreve a estrutura de todo o banco de dados para a

    comunidade de usurios. O esquema conceitual oculta os detalhes das estruturas de armazenamento

    fsico e se concentra na descrio de entidades, tipos de dados, conexes, operaes e restries dos

    usurio. Geralmente um modelo de dados representacional usado para descrever o modelo conceitual

    quando o sistema de banco de dados for implementado. (ELMASRI, NAVATHE, 2005).

    O nvel externo ou viso externa constitui-se da viso que o usurio tem do banco de dados;

    como os dados so visualizados por ele. Dessa forma, haver tantas dessas vises quantas forem asformas distintas que os dados podem ser visualizados (usurios diferentes, aplicaes diferentes, entre

    outras) (ELMASRI, NAVATHE, 2005).

    Por usurio, podemos entender tanto os desenvolvedores de aplicaes, quanto um usurio final.

    Porm, observemos ao usurio final s interessa uma determinada parte do banco de dados e, do seu

    ponto de vista, essa viso o banco de dados completo. (DATE,2003).

    A viso externa poder ser acessada de diversas formas, inclusive por meio de ferramentas

    bastante amigveis, muitas vezes visuais (normalmente voltadas para o usurio final). Ibid. (2003)

    O desenvolvedor, entretanto, utilizar uma linguagem de alto nvel para produzir o aplicativo

    desejado. As linguagens para desenvolvimento de aplicaes normalmente utilizaro um subconjunto de

    comandos para acessar e manipular o banco de dados. Ibid. (2003)

    Chamamos a esse subconjunto de sublinguagem de dados e linguagem de alto nvel que outiliza, de linguagem hospedeira. Dessa forma, enquanto a linguagem hospedeira responsvel pelos

    recursos de programao (como variveis, estruturas de deciso e repetio), a sublinguagem de dados

    responsabiliza-se pelo acesso ao banco de dados. Atualmente, a sublinguagem de dados mais utilizada

    a SQL. Ibid. (2003)

  • 5/24/2018 Apostila DDL DML Basico

    4/34

    4

    Date (2003), de Elmasri e Navathe (2005), Silberschatz et. al (1999) e Motneiro(2004) dividem a

    sublinguagem de dados em pelo menos duas partes:

    Linguagem de Definio de Dados ( DDL - Data Definition Language ) Instrues paradefinio de estruturas, esquemas e vises no banco de dados;

    Linguagem de Manipulao de Dados(DML- Data Manipulation Language) Instrues paramanipulao dos dados no banco de dados, permitindo incluso, alterao, excluso e

    consulta a esses dados.

    A seguir estudaremos as linguagens de definio e Manipulao de Dados.

    2. Structured Query Language (SQL)A Structured Query Languageconhecida como simplesmente Linguagem SQL uma das principais

    razes do sucesso dos bancos relacionais em ambientes comerciais. Uma vez que se o usurio no esteja

    satisfeito com o Sistema Gerenciador de Banco de Dados (SGBD) escolhido para sua aplicao, ele

    pode migrar para outro SGBD, a um baixo custo de tempo e pouco dispndio de mo-de-obra, visto

    que, todos os fabricantes de SGBDs devem seguir um mesmo padro na linguagem SQL.

    (ELMASRI, NAVATHE, 2005)

    A linguagem SQL foi criada pelaInternational Business Machines(IBM ) na dcada de 1970,

    em seus laboratrios de pesquisa de San Jos, nos Estados Unidos. Inicialmente nomeada como

    Structured Query English Language, ou Sequel, esta linguagem tinha como objetivo servir como interface

    para um sistema de banco de dados relacional denominado Sistema R. (ELMASRI,NAVATHE,2005;

    DATE, 2004; SILBERSCHATZ et. al,1999)

    Com o passar do tempo a linguagem evoluiu e passou a se chamar SQL, tornando-se uma

    linguagem-padro para SGBD relacionais comerciais. Buscando a padronizao da linguagem a

    Amercian National Standards Institute(ANSI) e a International Standard Organization(ISO) no ano de 1986criou a primeira verso padronizada da linguagem SQL, conhecida como SQL-86 ou SQL1. Uma

    segunda verso foi lanada no ano de 1992 a SQL2. Sete anos mais tarde, no ano de 1999, a terceira

    verso foi lanada, inicialmente chamada de SQL3, ou SQL99. Esta a verso atual em vigor

    (ELMASRI,NAVATHE,2005; DATE, 2004; SILBERSCHATZ et. al,1999)

  • 5/24/2018 Apostila DDL DML Basico

    5/34

    5

    As especificaes do padro SQL99 foi divididas em duas partes: ncleo (core) e os pacotes

    (packages). Os fabricantes de SGBDs devem inclui as especificaes do ncleo obrigatoriamente em seus

    produtos. J o pacotes so encarados como mdulos opcionais, cuja falta no compromete o

    funcionamento do SGBD relacional. So exemplos de mdulos opcionais: data minig, datsa warehaousing,

    processamento analtico on-line(OLAP), entre outros. (ELMASRI,NAVATHE,2005)

    A linguagem SQL abrangente, possuindo suporte para comandos de definio de dados,

    consultas, vises e atualizaes. Desta forma ela possui a DDL e a DML, que estudaremos a seguir.

    (ELMASRI,NAVATHE,2005;MOREIRA, 2004)

    3. Linguagem de Definio Dados (DDL)A coleo de informaes armazenadas na base de dados,em um particular instante chamada

    de instncia da base de dados. J a concepo global da base de dados chamada de esquema da base de

    dados. As base de dadosmudam com o tempo na medida em que informaes (instncias) so inseridas

    e removidas; por outro lado, esquemas no so mudados freqentemente.(SILBERSCHATZ et. al,1999)

    Existem diversos esquemas na base de dados, divididos de acordo com os nveis de abstrao:

    esquema fsico (nvel fsico de abstrao), esquema conceitual (nvel conceitual de abstrao) e

    subesquema (nvel de abstrao de viso). (SILBERSCHATZ et. al,1999)

    Um esquema de base de dados especificado por um conjunto de definies, expressas em

    uma linguagem especial chamada linguagem de definio de dados. O resultado da compilao de

    instrues desta linguagem um conjunto de estruturas armazenadas num arquivo especial chamado

    dicionrio (ou diretrio) de dados. Este contm metadados (dados acerca dos dados) e

    consultado antes dos dados propriamente ditos serem lidos ou modificados no sistema da base de

    dados. A estrutura de armazenamento e os mtodos de acesso usados pelo sistema de base de dados

    so especificados por um conjunto de definies em um tipo especial de linguagem de definio de

    dados chamado linguagem de definio de dados e memria. (SILBERSCHATZ et. al,1999)

    Em SQL a linguagem de definio de dados permite a especificao de um conjunto de relaes

    e a especificao de informaes de cada relao, incluindo:

    O esquema de cada relao;

  • 5/24/2018 Apostila DDL DML Basico

    6/34

    6

    O domnio dos valores associados a cada atributo; As regras de integridade; O conjunto de ndices para manuteno de cada relao;

    Informaes sobre a segurana e autoridade sobre cada relao; A estrutura de armazenamento fsico de cada relao no disco.

    3.1. Definio de dados e tipos de dados SQL

    Silberschatz et. al (1999) afirmam que o SQL usa os termos tabela, linha e coluna, em vez de

    relao, tupla e atributo, do modelo relacional formal, respectivamente. O principal comando para a

    definio de dados o CREATE, que pode ser usado para criar: Esquemas,Tabelas (Relaes) e

    Domnios.

    3.2. Esquemas e Catlogos em SQL

    As primeiras verses do SQL no possuam o conceito de esquema de uma banco de dados.

    Todas as tabela(Relaes) eram consideradas parte do mesmo esquema. A partir da verso SQL2, este

    conceito foi introduzido, de modo a agrupar as tabelas e outros construtores que pertencem mesma

    aplicao de um banco de dados. (ELMASRI,NAVATHE,2005) Forma geral de criao de um esquemaencontra-se ilustrada na figura 2.

    Figura 2 Forma geral da criao de um esquema

    USE[nome_bancodados]

    CREATE SHEMA[nome_esquema]AUTHORIZATION[usurio]

    Fonte: Silberschatz et. al(1999, p. 139)

    A figura 3 ilustra um exemplo em linguagem SQL para o esquema delivery no banco de dados

    AdventureWorks, para o usurio dbo.

    Figura 3 Exemplo da criao de um esquema

    USE[AdventureWorks]

    CREATESCHEMA[delivery] AUTHORIZATION[dbo]

    Fonte: elaborado pela autora com base na bibliografia.

  • 5/24/2018 Apostila DDL DML Basico

    7/34

    7

    Outro conceito importante introduzido pelo SQL2 foi o catlogo, que consiste em uma coleo

    de esquemas em um ambiente SQL, que recebe um nome. Entende-se por ambiente SQL uma

    instalao de um SGBD relacional padro. Ou seja, o conjunto de esquema de um banco de dados

    chamado de catlogo. Cada catlogo deve incluir um esquema especial chamado INFORMATION

    SCHEMA, que fornece informaes sobre todos os esquemas do catlogo.

    (ELMASRI,NAVATHE,2005)

    A figura 4 a seguir ilustra o exemplo de um catlogo no SGBD SQL Server 2005. Nele

    observamos um catlogo ( banco de dados ) AdventureWorks. Nele encontramos trs diferente

    esquemas de dados que subdividem as tabelas do banco em: HumanResources, Person e Production.

    Observe que os esquemas so formas de organizar as tabelas dentro do banco de dados.

    Figura 4 Exemplo de um catlogo e seus esquemas

    Fonte: elaborado pela autora com base na bibliografia.

  • 5/24/2018 Apostila DDL DML Basico

    8/34

    8

    Ainda no SGBD SQL Server 2005 para visualizar os esquema, deve-se, no contexto do banco

    desejado acessar security/schemas. Com um clickdo boto direito do mouse possvel abrir a manuteno

    dos esquemas do banco. A figura 5 ilustra esta viso.

    Figura 5 Visualizao dos esquemas de um banco

    Fonte: elaborado pela autora com base na bibliografia.

  • 5/24/2018 Apostila DDL DML Basico

    9/34

    9

    Ainda no contexto do SGBD SQL Server 2005, para visualizar os Information_Schemas, deve-

    se dentro do contexto do banco desejado, navegar por views/system Views. A figura 6 a seguir traz o

    exemplo do Information Schema do banco AdventureWorks, com detalhe para o esquema de tabelas.

    Figura 6 Viso dos INFORMATION_SCHEMAS

    Fonte: elaborado pela autora com base na bibliografia.

  • 5/24/2018 Apostila DDL DML Basico

    10/34

    10

    3.3. Tipos de Dados de Atributos e Domnios em SQL

    Os tipos de dados bsicos para atributos so numricos, cadeia de caracteres, cadeia de bits,

    Lgicos, data e horrio. (ELMASRI,NAVATHE,2005; DATE, 2004; SILBERSCHATZ et. al,1999). O

    quandro 1, a seguir, ilustra cada tipo.

    Quadro1 Tipo de Dados da linguagem SQL

    Tipo Subtipo SQL

    Inteiros INT

    SMALLINT

    Reais ou ponto

    flutuante

    FLOAT

    REALDOUBLE PRECISION

    Numricos

    Nmeros formatados DECIMAL(i,j) ou DEC(i,j)

    NUMERIC(i,j)

    Onde: i = preciso ( parte inteira) e j = a escala ( parte decimal)

    Cadeia de

    caracteres

    De tamanho Fixo CHAR(n) ou CHARACTER(n)

    Onde n= tamanho.

    Nas cadeias de tamanho fixo o tamanho ser apropriado no

    banco, sendo ou no usado. Exemplo: um campo nome com

    char(10) que recebeu Jos no banco ocupar Jos .

    De tamanho varivel VARCHAR(n) ou CHAR VARYNG(n) ou

    CHARACTER VARYNG (n)

    Onde n= tamanho.

    Nas cadeias de tamanho varivel o tamanho ser apropriado no

    banco ser otimizado, sendo que os Brancos a direita sero

    desprezados. Exemplo: um campo nome com char(10) querecebeu Jos no banco ocupar Jos.

    Lgicos Booleano

    Obs. A nomenclatura

    deste tipo varia de

    acordo com o SGBD

    Possui dois valores: Verdadeiro (TRUE) e Falso(FALSE). Em

    SQL, dada a presena dos valores nulos ( NULL), os lgicos

    assumem um terceiro valor (UNKNOWN).

  • 5/24/2018 Apostila DDL DML Basico

    11/34

    11

    Cadeia de

    bits

    Bit-strings BIT (n) para cadeias de tamanho fixo ou BIT VARYNG (n)

    para tamanho varivel

    Data DATE

    Contm no mnimo 10 posies e deve contemplar o formato

    YYYY-MM-DD. Onde YYYY = ano, MM-Ms e DD = dia

    Data e

    hora

    Hora TIME

    Contm no mnimo 8 posies e deve contemplar o formato

    HH:MM:SS. Onde HH= hora, MM-minuto e SS = segundo.

    TimeStamp TimeStamp Engloba os campos Date e Time juntos fornecendo um um

    formato YYYY-MM-DD HH:MM-SS +MS

    Onde o MS = seis casa decimais para registrar os milsimos de

    segundo.Fonte: Adaptado de Elmasri e Navathe (2005, p.7)

    3.4. Comando CREATE TABLEO comando CREATE usado para criar uma nova relao, designando-lhe um nome e

    especificando seus atributos e especificaes iniciais (SILBERSCHATZ et. al,1999). A forma geral est

    expressa na figura 7 a seguir.

    Figura 7 Exemplo forma geral da instruo CREATE TABLE

    CREATE TABLEr (A1 D1, A2 D2, A3 D3, ... , An Dn,

    ....

    )

    Onde:

    r = nome da relaoA = o nome do atributo no esquema da relao

    D = o tipo de dado do atributo

    = so as regras de restries de chave para integridade referencial

    Estudadas a seguir.

    Fonte: Silberschatz et. al(1999, p. 139)

  • 5/24/2018 Apostila DDL DML Basico

    12/34

    12

    A seguir a figura 8 ilustra a criao de duas relao a empregado e a departamento.

    Figura 8 Exemplo instruo CREATE TABLE

    CREATE TABLEempregado

    (EmpPrimeiroNome VARCHAR(20) NOT NULL,

    EmpUltimoNome VARCHAR(15) NOT NULL,

    EmpDataNascimento DATE NOT NULL,

    EmpSexo CHAR(1) NOT NULL,

    EmpID INT NOT NULL,

    EmpSupervisorID INT,

    DepID INT NOT NULL,

    Salario DEC(10,2),

    PRIMARY KEY(EmpID),

    FOREIGN KEY(DepartamentoEmpregado) REFERENCES departamento (DepID),

    FOREIGN KEY(EmpregadoEmpregado) REFERENCES empregado (EmpID));

    CREATE TABLEdepartamento

    (DepNome VARCHAR(15) NOT NULL,

    DepID INT NOT NULL,DepGerenteID INT NOT NULL,

    PRIMARY KEY(DepID),

    UNIQUE (DepNome),

    FOREIGN KEY (EmpregadoDepartamentoSup) REFERENCES empregado (EmpID));

    Fonte: elaborado pela autora com base na bibliografia.

    As regras de integridade so responsveis pela manuteno da integridade referencial, no

    exemplo acima temos a especificao da PRIMARY KEY e da FOREIGN KEY, que devem ser

    especificadas dentro do comando CREATE TABLE. (SILBERSCHATZ et. al,1999)

    A clusula PRIMARY KEY especifica um ou mais atributos que definem a chave primria da

    relao. Se a chave primria tiver um atributo nico, a clusula pode seguir o atributo diretamente ao

  • 5/24/2018 Apostila DDL DML Basico

    13/34

    13

    invs da representao do exemplo anterior. (SILBERSCHATZ et. al ,1999) A Figura 9 a seguir

    exemplifica esta notao na relao departamento.

    Figura 9 Exemplo instruo PRIMARY KEY

    CREATE TABLEdepartamento

    (DepNome VARCHAR(15) NOT NULL,

    DepID INT NOT NULL PRIMARY KEY,

    DepGerenteID INT NOT NULL,

    (DepID),

    UNIQUE (DepNome),

    FOREIGN KEY(DepGerente) REFERENCES EMPREGADO (EmpID));

    Fonte: elaborado pela autora com base na bibliografia.

    A clusula UNIQUE define as chaves alternativas (ou secundrias), conforme ilustrado nas

    figuras 8 e 9 com o campo DepNome.

    A integridade referencial expressa pela clusula FOREIGN KEY (chave estrangeira),

    conforme pode ser observado nas figuras 8 e 9. Uma restrio de integridade referencial pode ser

    violada quando as tuplas so inseridas, alteradas ou excludas, ou ainda quando os valores daschaves primrias e/ou estrangeiras passarem pelo mesmo processo. Neste caso a ao padro do

    SQL rejeita-las. As clusulas PRIMARY KEY E FOREIGN KEY fazem a marcao para o SGBD

    tomar estas aes. (SILBERSCHATZ et. al,1999)

    Outro recurso til para a documentao e melhor compreenso das relaes criadas, utilizar a

    nomes para as restries, com a palavra CONSTRAINT. Cada nome de relao deve ser nico e

    identifica-la de forma a auxiliar na localizao e manuteno do modelo gerado. (SILBERSCHATZ et.

    al,1999). A figura 10 ilustra o exemplo da figura 8 reescrito com este recurso.

  • 5/24/2018 Apostila DDL DML Basico

    14/34

    14

    Figura 10 Exemplo instruo CREATE TABLE em SQL99

    CREATE TABLEempregado

    (EmpPrimeiroNome VARCHAR(20) NOT NULL,

    EmpUltimoNome VARCHAR(15) NOT NULL,

    EmpDataNascimento DATE NOT NULL,

    EmpSexo CHAR(1) NOT NULL,

    EmpID INT NOT NULL,

    EmpSupervisorID INT,

    DepID INT NOT NULL,

    Salario DEC(10,2) NOT NULL,

    CONSTRAINT (empregadoPK)

    PRIMARY KEY(EmpID),

    CONSTRAINT (EmpregadoDepartamento_FK)

    FOREIGN KEY (EmpregadoDepartamento) REFERENCES departamento (DepID),

    CONSTRAINT (EmpregadoEmpregado_FK)

    FOREIGN KEY(EmpregadoEmpregado) REFERENCES empregado (EmpID));

    CREATE TABLEdepartamento

    (DepNome VARCHAR(15) NOT NULL,DepID INT NOT NULL,

    DepGerenteID INT NOT NULL,

    CONSTRAINT (DepartamentoPK)

    PRIMARY KEY(DepID),

    UNIQUE (DepNome),

    CONSTRAINT (EmpregadoDepartamentoSup_FK)

    FOREIGN KEY (EmpregadoDepartamentoSup) REFERENCES empregado (EmpID));

    Fonte: elaborado pela autora com base na bibliografia.

    Cada fabricante de SGBD tem sua verso de Linguagem SQL, e cada um faz sua adaptao do

    padro SQL99. A figura 11 ilustra a criao da tabela empregado no SGBD da MicroSoft SQL Server

    2005. Note algumas diferenas, primeiramente no tipo de dados date, no SQL Server 2005 ele

    datetime.

  • 5/24/2018 Apostila DDL DML Basico

    15/34

    15

    Figura 11 Exemplo instruo CREATE TABLE em SQL Server 2005

    USE[Empresa]

    GO

    CREATETABLE[dbo].[empregado](

    [empID] [int] NOTNULL,

    [empPriNome] [varchar](20) NOTNULL,

    [empUltNome] [varchar](20) NOTNULL,

    [empSexo] [bit] NOT NULL

    [empDtNasc] [datetime] NOTNULL,

    [empDepID] [int] NOTNULL,

    [empSupervisorID] [int] NOTNULL,

    [empDtInicio] [datetime] NOTNULL,

    [empSalario] [decimal](10,2) NOTNULL,

    CONSTRAINT[empregado_PK] PRIMARYKEYCLUSTERED

    ( [empID] ASC))

    GO

    ALTERTABLE[dbo].[empregado] ADDCONSTRAINT[FK_empregado_Departamento]

    FOREIGNKEY([empDepID])

    REFERENCES[dbo].[Departamento] ([depID])GO

    ALTERTABLE[dbo].[empregado] ADD CONSTRAINT[FK_empregado_empregado] FOREIGN

    KEY([empSupervisorID])

    REFERENCES[dbo].[empregado] ([empID])

    Fonte: Elaborado pela autora com base na bibliografia

    Outra diferena est na opo CLUSTERED na declarao do ndice primrio empregado_PK.

    Esta instruo indica que a organizao lgica das tuplas da relao sero este ndice. A instruo ASC

    ao lado do campo empID no ndice primrio indica a organizao ascendente. Outra opo seria DESC

    de descendente.

    Cada GO declarado na script de criao indica o termino de instruo e inicio de outra. Note

    que logo a criao da tabela e seu ndice primrio, esto declaradas duas instrues de alterao da

    mesma tabela, desta vez adicionando as chaves estrangeiras de departamento e o auto relacionamento de

    empregado para a superviso.

    Outra restrio que pode ser especificada no comando CREATE TABLE a clusula

    CHECK, tambm conhecida como procedimento de restrio com base em tupla, visto que aplica acada tupla individualmente, sendo verificado sempre que uma tupla for inserida Por exemplo,

    suponhamos que sempre que a tupla de empregado for inserida, desejemos checar que o salrio no

    dever ser inferior a 400,00, teramos que ao final do comando inserir a linha: CHECK (salrio >= 400)

    (ELMASRI,NAVATHE,2005). A figura 12 ilustra a incluso deste comando criao desta relao.

  • 5/24/2018 Apostila DDL DML Basico

    16/34

    16

    Figura 12 Exemplo instruo CREATE TABLE

    CREATE TABLEempregado

    (EmpPrimeiroNome VARCHAR(20) NOT NULL,

    EmpUltimoNome VARCHAR(15) NOT NULL,

    EmpDataNascimento DATE NOT NULL,

    EmpSexo CHAR(1) NOT NULL,

    EmpID INT NOT NULL,

    EmpSupervisorID INT,

    DepID INT NOT NULL,

    Salario DEC(10,2) NOT NULL,

    CONSTRAINT (empregadoPK)

    PRIMARY KEY(EmpID),

    CONSTRAINT (EmpregadoDepartamento_FK)

    FOREIGN KEY (EmpregadoDepartamento) REFERENCES departamento (DepID),

    CONSTRAINT (EmpregadoEmpregado_FK)

    FOREIGN KEY(EmpregadoEmpregado) REFERENCES empregado (EmpID)

    CHECK(salrio>=400));

    Fonte: elaborado pela autora com base na bibliografia.

    Existem ainda forma mais sofisticadas de CHECK utilizando consultas em outras relaes (

    SELECT), que estudaremos a seguir.

    3.5. Comando DROP

    O comando DROP pode ser usado para eliminar os elementos de esquemas nomeados, comotabelas, domnios ou restries, como tambm esquemas (ELMASRI,NAVATHE,2005). Sua forma

    geral encontra-se expressa na figura 13, a seguir.

  • 5/24/2018 Apostila DDL DML Basico

    17/34

    17

    Figura 13 Forma Geral da instruo DROP TABLE

    DROP

    Onde:

    O tipo do elemento = tipo do elemento do banco tais como: TABLE, SCHEMA, CONSTRAINT,

    entre outros.

    Fonte: elaborado pela autora com base na bibliografia

    O tipo do elemento especifica o que ser excludo, como por exemplo um tabela ou um esquema.

    Exemplos: DROP TABLE empregado;

    DROP SCHEMA empresa;

    Silberschatz et. al (1999) ressaltam que, a instruo DROP drstica e excluir totalmente arelao do banco de dados. Caso se deseja simplesmente excluir apenas suas tuplas e manter a relao

    deve-se utilizar o comando DELETE FROMnome_relao.

    3.6. Comando ALTER

    O comando ALTER permite a manuteno de uma relao ou de quaisquer elementos do

    esquema que possurem denominao. Para as relaes(tabela) as operaes permitidas so: adicionar

    ou eliminar colunas(atributos), alterar a definio de uma coluna e adicionar ou eliminar restries de

    uma coluna. (ELMASRI,NAVATHE,2005). A figura 14 a seguir, ilustra a forma geral da instruo

    ALTER.

    Figura 14 Forma Geral da instruo ALTER

    ALTER

    Onde:

    O tipo do elemento = tipo do elemento do banco, tais como: TABLE, SCHEMA, CONSTRAINT,entre outros.

    ao = so trs possveis: ADD para adicionar; DROP para excluir e ALTER para modificar.

    Objeto da ao = cada ao deve especificar a coluna que ir ser o objeto da ao e o que se deseja

    altera/adicionar nela.

    Fonte: elaborado pela autora com base na bibliografia

  • 5/24/2018 Apostila DDL DML Basico

    18/34

    18

    Exemplos:

    Incluindo o campo funo em empregado sendo um cadeia de caracteres varivel de 15posies:

    o ALTER TABLE empregado ADD EmpFuncao VARCHAR (15);

    Modificando o campo funo em empregado sendo um cadeia de caracteres fixo de 12posies:

    o ALTER TABLE empregado ALTER EmpFuncao CHAR (12);

    Excluindo o campo funo em empregado:o ALTER TABLE empregado DROP EmpFuncao;

    Excluindo um CONSTRAINT de empregadoo ALTER TABLE empregado DROP CONSTRAINT EmpregadoEmpregado_FK;

    4. Linguagens de Manipulao de Dados (DML)Nveis de abstrao aplicam-se no somente definio ou estrutura de dados, mas tambm

    manipulao de dados (recuperao, insero ou remoo de informaes da base de dados). Em

    nveis mais altos de abstrao, a nfase est na facilidade do uso. Para permitir aos usurios acessar

    ou manipular dados organizados por um modelo de dados apropriado, emprega-se uma linguagem de

    manipulao de dados. (SILBERSCHATZ et. al,1999)

    H dois tipos bsicos de linguagens de manipulao de dados: no-procedimental (requer do

    usurio especificao de quais dadosso desejados e como chegar at eles) e procedimental (requer do

    usurio especificao de quais dados so desejados, sem especificar como chegar at eles). Estas so

    geralmente mais fceis de aprender e usar do que aquelas, mas podem gerar um cdigo que no seja toeficiente quanto aquele produzido pelas linguagens procedimentais (o que sanado pelo uso de tcnicas

    de otimizao). (SILBERSCHATZ et. al,1999)

  • 5/24/2018 Apostila DDL DML Basico

    19/34

    19

    4.1. Consultas (QUERY)

    As consultas em SQL so efetuadas pelo comando SELECT. Um outro nome para uma

    consulta em SQL Query. (MONTEIRO, 2004). A figura 15 ilustra a forma geral da instruo

    SELECT.

    Figura 15 Forma Geral da instruo SELECT

    SELECT

    FROM

    WHERE ;

    Onde: lista de atributos: a lista dos atributos que sero recuperados pela consulta;

    lista de tabelas: a lista de relaes necessrias para o processamento da consulta;

    condio: uma restrio condicional(booleana) que identifica as tuplas que sero recuperadas na

    consulta.

    Fonte: Adaptado de Elmasri e Navathe (2005, P. 157)

    O quadro 2 a seguir elenca os operadores lgicos suportados pelo SQL nas condies.

    Quadro 2 Operadores Lgicos bsicos do SQL

    Operador Significado

    = Igual a

    < Menor que

    > Maior que

    = Maior ou igual a

    Diferente (no igual)

    Fonte: Adaptado de Elmasri e Navathe (2005, P. 157)

  • 5/24/2018 Apostila DDL DML Basico

    20/34

    20

    4.1.1. Consultas Simples sem condies

    O resultado de uma consulta um relao. A forma mais simples de executar uma consulta

    solicitar todas as suas colunas ( uma, alguma ou ainda todas) sem nenhuma condio de filtro.

    Considerando nossa relao empregado de teste, a figura 16, ilustra este conceito.

    Figura 16 Exemplo de Consulta simples

    Fonte: elaborado pela autora com base na bibliografia

    Caso se deseje obter todos as colunas, no necessrio relacion-las, basta usar um asterisco (*).

    A figura 17 ilustra este exemplo.

    Figura 17 Exemplo de Consulta simples usando asterisco

    Fonte: elaborado pela autora com base na bibliografia

  • 5/24/2018 Apostila DDL DML Basico

    21/34

    21

    4.1.2. As opes distinct e all

    A opo distinctem um consulta, indica ao SGBD que ele deve eliminar as duplicidades docampo que ele precede. Por outro lado, o SQL permite que o programador deixe explicito que

    deseja que as duplicidades sejam exibidas na consulta. O padro do SQL apresentar as

    duplicidades (SILBERSCHATZ et. al ,1999). A Figura 18, a seguir, ilustra a mesma consulta em

    trs formas diferentes:a primeira sem as opes; a segunda com a opo all, note que o resultado

    igual primeira consulta; finalmente temos a terceira com um distinct, onde as duplicidades so

    eliminadas.

    Figura 18 Exemplos da aplicao das opes all e distinctSem as opes Com opo all Com opo distinct

    Fonte: elaborado pela autora com base na bibliografia

    4.1.3. Comandos Aritmticos nas consultasA Clusula SELECT tambm suporta expresses aritmticas envolvendo os operadores de

    soma(=), subtrao(-), diviso(/) e multiplicao (*). Ele tambm aceita expresses constantes ou

    atributos das tuplas. (SILBERSCHATZ et. al,1999). A figura 19, a seguir, exemplifica esta aplicao.

    Outro conceito, exemplificado na figura 19, o alias ( apelido ou nome amigvel) aplicado a

    cada coluna. Ele especificado incluindo logo aps a coluna um as e entre aspas simples o alias

    desejado. No exemplo, a coluna empSalario/2 recebe o alias de Salrio em US$.

  • 5/24/2018 Apostila DDL DML Basico

    22/34

    22

    Figura 19 Exemplo do uso de comando aritmticos em uma consulta.

    Fonte: elaborado pela autora com base na bibliografia

    4.1.4. Consultas com condies a clusula WHEREA clusula where, especifica uma condio para filtrar a relao que ser apresentada por uma

    consulta. (SILBERSCHATZ et. al ,1999). A figura 20, a seguir , lustra uma aplicao de where: nela

    temos uma consulta que retorna todos os funcionrio que recebem um salrio abaixo de R$ 1500.

    Figura 20 - Exemplo da aplicao da clusula where

    Fonte: elaborado pela autora com base na bibliografia

  • 5/24/2018 Apostila DDL DML Basico

    23/34

    23

    A linguagem SQL suporta os conectores lgicos AND, OR E NOT, que podem ser usado em

    conjunto com os operadores lgicos de comparao (vide quadro 2) (SILBERSCHATZ et. al ,1999)..

    No exemplo expresso na figura 21, tempos um consulta com duas relaes.

    Figura 21: Exemplo aplicao da clusula where com duas tabelas.

    Fonte: elaborado pela autora com base na bibliografia

    Inicialmente so apresentadas duas consultas gerais das relaes departamento e empregado,

    para demonstrar a restrio que a clusula where surtir. Note que temos 5 departamentos e o ID 1

    corresponde ao departamento de compras. Em empregados, temos 11 empregados onde apenas 2

  • 5/24/2018 Apostila DDL DML Basico

    24/34

    24

    peretencem ao departamento com ID = 1 ( compras ). Para localizar os empregados do departamento

    de compras a seleo utilizou duas relaes empregados e departamentos ( as duas relaes encontram-

    se declaradas na instruo FROM) . Por convenso a leitura da clusula WHERE deve ser interpretada

    do final para o inicio, logo temos que, a seleo comeou em departamento com depNome =

    Compras. Ao localizar esta tupla, o SGBD tem todas as suas colunas. Logo ele usa o depID para

    buscar em empregados os campos empDepID correspondentes, localizando assim, todas as tuplas de

    empregados desejadas.

    Para demonstrar que a tupla de departamento est diponvel, inclumos em um novo exemplo, o

    nome do departamento, conforme ilustra a figura 22.

    Figura 22: Exemplo 2 de aplicao da clusula where com duas tabelas.

    Fonte: elaborado pela autora com base na bibliografia

    4.1.5. Variveis de Tuplas

    A clusula asalm de servir para dar alias para campos em uma consulta, pode criar alias para astuplas envolvidas em uma consulta. Retornando ao exemplo anterior temos duas tuplas envolvidas,

    para melhor organizar o cdigo podemos designar alias para cada uma, e usar seus correspondentes para

    identificar suas coluna (SILBERSCHATZ et. al,1999). A figura 23 ilustra este conceito.Note como o

    cdigo da consulta fica mais claro e organizado.

  • 5/24/2018 Apostila DDL DML Basico

    25/34

    25

    Figura 23 Exemplo da aplicao de variveis de tuplas

    Fonte: elaborado pela autora com base na bibliografia

    4.1.6. Operador de comparao between

    O operador de comparaobetween tem por funo simplificar a clusula where onde se faz

    necessrio o uso de uma comparao em intervalos, onde o inicio deve ser igual o inferior a um valor dereferencia e menor ou igual a mesmo valor (SILBERSCHATZ et. al,1999).

    A figura 24 ilustra um exemplo da aplicao deste operador. Voltado ao exemplo anterior, agora

    desejamos selecionar todas as tuplas onde o salrio esteja entre R$ 500,00 e R$ 2000,00 e pertenam ao

    departamento de logstica. Para mostrar que o operador funciona da mesma forma que os operadores

    lgicos igual ou maior e menor ou igual, o exemplo com o between foi implementado juntamente com

    eles. Note que o resultado das duas consultas o mesmo.

  • 5/24/2018 Apostila DDL DML Basico

    26/34

    26

    Figura 24 Exemplo do operador clusula between

    Fonte: elaborado pela autora com base na bibliografia

    4.1.7. Operaes com String

    As operaes com stringsmais comuns so as verificaes de coincidncias de pares. Para tanto

    usamos o operador like. Para auxiliar o processo de comparao, a linguagem SQL oferece dois

    caracteres especiais: Porcentagem (%) que compara qualquer substring (conjunto de caracteres) e o

    Sublinhado (_) que compara qualquer caractere (SILBERSCHATZ et. al,1999).

  • 5/24/2018 Apostila DDL DML Basico

    27/34

    27

    Comparaes de stringsso casesensitive, ou seja, sensveis a letras maisculas e letras minsculas.

    Sendo assim a e A so letras diferentes (SILBERSCHATZ et. al ,1999). Veja os exemplos de

    aplicao:

    Laura% iguala Laura Laranjeira; laura% diferentede Laura Laranjeira; Joo Silva _____ ( e sublinhados) iguala Joo Silva Lopes; Joo Silva% iguala Joo Silva Lopes; %Silva Lopes_ iguala Joo Silva Lopes.

    A figura 25 exemplifica trs aplicaes deste operados.

    Figura 25 Exemplo da clusula like

    Fonte: Elaborado pela autora com base na bibliografia

  • 5/24/2018 Apostila DDL DML Basico

    28/34

    28

    4.1.8. Ordenao e Apresentao de Tuplas

    A Linguagem SQL disponibiliza ao usurio algum controle sobre a ordenao em que as tuplas

    de uma pesquisa sero apresentadas. A clusula order by, faz com que as tuplas selecionadas emconsulta sejam apresentadas em ordem crescente ou decrescente. Ressaltasse que o padro da clusula

    a ordem crescente. (SILBERSCHATZ et. al ,1999). A figura 26, a seguir, ilustra trs exemplos de

    aplicao desta clusula.

    Figura 26 Exemplo de aplicao da clusula ORDER BY

    Fonte: Elaborado pela autora com base na bibliografia

  • 5/24/2018 Apostila DDL DML Basico

    29/34

    29

    No primeiro consulta do exemplo a ordenao das tuplas est como crescente por

    empUltNome; na segunda temos a mesma consulta porm ordenada de forma descendente; e na

    terceira temos duas colunas uma desentende e outra ascendente.

    4.2. Incluses

    A instruo para inserir tuplas nas relaes o INSERT. (SILBERSCHATZ et. al,1999). Sua

    forma geral encontra-se expressa na figura 27, a seguir.

    Figura 27 Forma geral do comando INSERT

    INSERT INTO

    VALUES

    Fonte: elaborado pela autora com base na bibliografia

    A seguir, a figura 28 ilustra a incluso de registros na relao empregado. Note que todos os

    colunas da tupla esto listadas na primeira lista. Na segundo temos a lista de contedos.

    Figura 28 Exemplo do comando INSERT EM SQL Server 2005

    INSERTINTO[empregado]

    ([empID]

    ,[empPriNome]

    ,[empUltNome]

    ,[empSexo]

    ,[empDtNasc]

    ,[empDepID]

    ,[empSupervisorID]

    ,[empDtInicio]

    ,[empSalario])

    VALUES

    (3

    ,'Carlos Onofre'

    ,'Souza'

    ,0

    ,'1970-01-01'

    ,4

    ,1

    ,'2000-05-10'

    ,3000)

    Fonte: elaborado pela autora com base na bibliografia

  • 5/24/2018 Apostila DDL DML Basico

    30/34

    30

    Uma opo oferecida, mas no recomendada, no declarar a lista de colunas da tuplas, porm

    o programador deve tomar o cuidado de declarar todos as colunas, na ordem que estiverem dispostas na

    tupla. Este exemplo encontra-se ilustrado na figura 29.

    Figura 29 Exemplo do comando INSERT EM SQL Server 2005INSERTINTO[empregado] VALUES

    (3

    ,'Carlos Onofre'

    ,'Souza'

    ,0

    ,'1970-01-01'

    ,4

    ,1

    ,'2000-05-10'

    ,3000)

    Fonte: elaborado pela autora com base na bibliografia

    Em casos de coluna que admitam a incluso de campos nulos, estes podem ser omitidos das

    listas. Neste caso, eles sero inseridos com valor nulo.

    Um opo para inserir tuplas em um tabela utilizar a clusula SELECT para selecionar tuplas

    desejadas de outras relaes. Para tanto a lista de campo do INSERT deve ter uma lista correspondente

    de colunas na lista de colunas que o SELECT retornar. Ressaltasse que as colunas devem ter tipos de

    dados correspondentes (SILBERSCHATZ et. al,1999). A figura 30 ilustra um exemplo.

    Figura 30 Exemplo do comando INSERT EM SQL Server 2005 com SELECT

    Fonte: elaborado pela autora com base na bibliografia

  • 5/24/2018 Apostila DDL DML Basico

    31/34

    31

    4.3. AlteraesPara efetuar manutenes nos dados das relaes, a linguagem SQL disponibiliza a clusula

    UPDATE. Com ela possvel atualizar algumas colunas das tuplas de forma pontual. Para especificar

    as tuplas que deve ser alteradas deve-se utilizar a clusula WHERE para limitar uma condio, da

    mesma forma que ela utilizada no SELECT. Caso uma condio no seja utilizada, a alterao se d

    em todas as tuplas que o UPDATE tiver acesso (SILBERSCHATZ et. al ,1999). A figura 31 ilustra a

    forma geral da clusula.

    Figura 31 Forma Geral clusula UPDATE

    UPDATE

    SET =

    WHERE Fonte: SILBERSCHATZ et. al (1999).

    A figura 32 ilustra a aplicao desta clusula. Nela temos duas atualizaes: na primeira os

    salrios dos empregados entre R$ 2.500,00 e R$ 20.000,00 recebem um reajuste de salrio de 10%; na

    segunda os e R$ 500 e 2.499,99 recebem um reajuste de 20%.

    Figura 32 Exemplo de aplicao da clusula UPDATE

    Fonte: elaborado pela autora com base na bibliografia

  • 5/24/2018 Apostila DDL DML Basico

    32/34

    32

    4.4. Remoes

    Um pedido de remoo ou excluso de tuplas, obtido com a clusula DELETE. Ela tambm

    utiliza a clusula WHEREpara selecionar as tuplas das relaes que ir excluir. Da mesma forma que na

    clusula UPDADE, o WHERE opcional (SILBERSCHATZ et. al ,1999). A figura 33 ilustra a

    forma geral desta clusula.

    Figura 33 Forma Geral clusula DELETE

    DELETE FROM

    WHERE

    Fonte: SILBERSCHATZ et. al (1999).

    A Figura 34 ilustra um exemplo de aplicao da clusula.Figura 34 Exemplo de aplicao clusula DELETE

    Fonte: elaborado pela autora com base na bibliografia

  • 5/24/2018 Apostila DDL DML Basico

    33/34

    33

    No exemplo da figura 34 temos um SELECT geral antes e depois da execuo do DELETE.

    Antes pode-se observar que o empID = 8 se encontra na seleo de tuplas, porm aps o DELETE, ele

    no aparece mais.

    5. Resumo

    A Arquitetura dos Sistemas de Banco de Dados ANSI/SPARC. possui trs nveis:

    Nvel Interno ou Fsico Responsvel pelo armazenamento dos dados. Nvel Conceitual ou Lgico Comunitrio Serve de interface entre o primeiro e o terceiro

    nveis.

    Nvel Externo ou Lgico do Usurio Responsvel pela visualizao dos dados por parte dousurio.

    O foco do estudo desta aula encontra-se no nvel externo, no subconjunto de sublinguagem de

    dados e linguagem de alto nvel que o utilizam, de linguagem hospedeira. Dessa forma, enquanto a

    linguagem hospedeira responsvel pelos recursos de programao (como variveis, estruturas de

    deciso e repetio), a sublinguagem de dados responsabiliza-se pelo acesso ao banco de dados.

    Atualmente a sublinguagem de dados mais utilizada a SQL. A sublinguagem de dados pode ser

    dividida em pelo menos duas partes:

    Linguagem de Definio de Dados ( DDL - Data Definition Language ) Instrues paradefinio de estruturas, esquemas e vises no banco de dados. Principais clusulas da

    linguagem de definio de dados:CREATE, DROP, ALTER.

    Linguagem de Manipulao de Dados(DML- Data Manipulation Language) Instrues paramanipulao dos dados no banco de dados, permitindo incluso, alterao, excluso e

    consulta a esses dados. Principais clusulas da linguagem de Manipulao de dados:

    SELECT, INSERT, UPDATE e DELETE.

  • 5/24/2018 Apostila DDL DML Basico

    34/34

    34

    6. BibliografiaDATE, C. J.Introduo a sistemas de bancos de dados. 8 Edio. Rio de Janeiro:Elsevier:2003.

    ELMASRI, Ramirez; NAVATHEM, Shamkant B. Sistema de Banco de Dados. 4 Edio. So

    Paulo:Perarson Addison Wesley, 2005.

    MONTEIRO, Emiliano Soares. Projeto de sistemas de banco de dados. Rio de Janeiro: Brasport,2004.

    SILBERSCHATZ, Abrahan; KORTH, Henry F.; SUDARSHAN,S. Sistema de Banco de Dados.3 Edio. So Paulo:Makron Books, 1999.