Universidade de Passo Fundo Tecnologia em Sistemas de Informação TSI109- Fundamentos de Banco de Dados Prof. Alexandre Tagliari Lazzaretti [email protected] vitoria.upf.tche.br/~lazzaretti SQL SQL “structured query language” – linguagem padrão comercial e completa de definição e manipulação de banco de dados relaconais • SQL1: aprovado pelo grupo ANSI, em 1986 • SQL2: aprovado em 1992 • SQL3: aprovado em 1999 • SQL4: em andamento • Linguagens – DDL (Data Definition Language) – DML (Data Manipulation Language) 2 DDL 3 SQL - DDL Criação do banco de dados CREATE DATABASE <CAMINHO E ARQUIVO> [USER ‘usuario’ PASSWORD ‘senha’] Exemplo: create database ‘c:\dados\teste.gdb’ user ‘SYSDBA’ PASSWORD ‘masterkey’ Observação: para alterar o usuário de senha padrão, primeiramente deve-se cadastrá-los no SGBD 4 SQL - DDL Criação de tabelas O comando CREATE TABLE: cria a tabela solicitada CREATE TABLE <nome da tabela> ( <descrição_das_colunas> ) ( <descrição_das_restrições> ) • <tabela>: nome da nova tabela a ser criada • <descrição_das_colunas> : lista de colunas (campos) e seus respectivos tipos de dados ( char, integer, decimal, date, ...) • <descrição_das_restrições>: restrições de chaves, integridade, domínio 5 SQL Exemplo: criação da tabela de diagnósticos CREATE TABLE DIAGNOSTICOS( CODIGODIAGNOSTICO INTEGER NOT NULL, DESCRICAO VARCHAR(150) NOT NULL, CONSTRAINT "PKDIAGNOSTICOS" PRIMARY KEY (CODIGODIAGNOSTICO) ); 6 SQL Definição de chaves Chave primária: [constraint Pkdiagnostico] PRIMARY KEY (codigodiagnostico) Chave estrangeira: FOREIGN KEY (campo tabela atual) references <tabela referenciada> (chave primaria na tabela referenciada) [cláusula] Cláusulas: - Delete: on delete restrict (default), on delete cascade, on delete set null - Update: on update restrict, on update cascade 7 SQL Modelo Lógico Cidades # codigo – integer, not null Nome – varchar(50), not null UF – varchar(2), not null Pessoas # codigo – integer, not null nome – varchar(50), not null @cidade – integer Modelo Físico (SQL) Create table cidades( Codigo integer not null, Nome varchar(50) not null, Uf varchar(2) not null, Primary key (codigo)); Create table pessoas( Codigo integer not null, Nome varchar(50) not null, Cidade integer, Primary key (codigo), Foreign key (cidade) references cidades (codigo)); 8 SQL Exclusão de tabelas DROP table <nome_tabela> Alteração de tabelas: alter table <tabela> <cláusula de coluna> Cláusulas de colunas: – – – – ADD – adiciona um novo atributo ALTER – altera um atributo DROP [COLUMN] – apaga um atributo DROP CONSTRAINT – apaga uma constraint 9 SQL Cláusulas de exclusões de chave – DROP PRIMARY KEY <nome da chave primária> – DROP FOREIGN KEY <nome da chave estrangeira> Exemplos: ADD ALTER TABLE PACIENTE ADD ENDERECO VARCHAR(50); – adiciona nova coluna com valor vazio para todas as linhas – não pode ter especificação NOT NULL ALTER ALTER TABLE PACIENTE ALTER ENDERECO TYPE VARCHAR(70) DROP ALTER TABLE PACIENTE DROP ENDERECO; ALTER TABLE PACIENTE DROP constraint fkpaciente 10 SQL Cláusula check A cláusula CHECK especifica restrições de integridade, ou testes, que as linhas novas ou atualizadas devem atender para uma operação de inserção ou de atualização completar. Cada restrição deve ser uma expressão que produza um resultado booleano. Uma condição declarada na definição da coluna deve fazer referência apenas ao valor desta coluna, enquanto uma condição declarada como restrição da tabela pode fazer referência a várias colunas. Atualmente, as expresões de CHECK não podem conter subconsultas, nem fazer referência a variáveis que não sejam colunas da linha atual. – check (expressão) 11 SQL Cláusula check Exemplos: 01. CREATE table cidades (cod_cid integer not null, nome_cid varchar(50) not null, uf varchar(2) not null, check(uf='RS' or uf='SC')); 02. ALTER table cidades add check(uf='RS' or uf='SC' or uf='PR') 12 SQL Cláusula domain Compreende uma enumeração dos valores para o domínio em questão. – CREATE domain (expressão) Exemplos: CREATE domain dnome varchar(30) CREATE table funcionarios(cod_fun integer not null, nome_fun dnome not null) 13 SQL Índices Criar índice CREATE [unique] INDEX <nomeindice> on <nometabela> (<coluna(s)>) Exemplo: Create unique index nomepac on pacientes (nome_pac) Remover índice DROP index <nomeindice> Exemplo: DROP index nomepac 14 Alguns exemplos == INSERÇÃO DE UM NOVO ATRIBUTO === ALTER TABLE PESSOAS ADD PESCID INTEGER NOT NULL; == CRIAÇÃO DE CHAVE ESTRANGEIRA == ALTER TABLE PESSOAS ADD CONSTRAINT "FKPESSOA" FOREIGN KEY (PESCID) REFERENCES CIDADES (CODCID); == CRIAÇÃO DE CHAVE PRIMÁRIA === ALTER TABLE PESSOAS ADD CONSTRAINT "PKPESSOA" PRIMARY KEY (CODPES); 15