Baixe o app para aproveitar ainda mais
Prévia do material em texto
Structured Query Language (SQL) 2 Linguagens de SGBD Durante o desenvolvimento do sistema R, pesquisadores da IBM desenvolveram a linguagem SEQUEL, primeira linguagem de acesso para Sistemas Gerenciadores de Banco de Dados Relacionais. ISO e ANSI lançou em 1986 a primeira versão do padrão da linguagem SQL, o SQL-86. A linguagem passou por aperfeiçoamentos em 1989 e, em 1992, foi lançada a SQL-92 ou SQL2. Um novo padrão, chamado de SQL-99 ou SQL3 foi lançado no ano de 2000. Foi o primeiro padrão a estender a linguagem para permitir a utilização de tipos de dados complexos e a incorporar características da orientação a objetos. Após uma grande revisão do padrão SQL3 foi lançada a SQL:2003. Nesta verão foi adicionada uma nova parte ligada ao tratamento de XML. 3 Linguagens de SGBD Linguagem de Definição de Dados (DDL): usada para especificar o esquema conceitual. Linguagem de Manipulação de Dados (DML): usada para manipular os dados em um banco de dados. As manipulações típicas são a recuperação, inserção, remoção e modificação dos dados. 4 Tipos de Dados (4 GB) (4 GB) 5 Modelo Utilizado Pessoa(CPF, Nome, Sexo) Piloto (CPF, Cart_Trab) CPF Referencia Pessoa Passageiro(CPF, Dieta) CPF Referencia Pessoa Voo(Numero, Data, P_CPF) CPF Referencia Piloto Reserva(V_Numero, P_CPF) V_Numero Referencia Voo P_CPF Referencia Passageiro Telefone(Numero, P_CPF) CPF Referencia Pessoa 6 Linguagem de Definição de Dados (DDL) Criação de SCHEMA: CREATE SCHEMA EMPRESA AUTHORIZATION ‘Jsilva’; Objetivo: Agrupar tabela e outras construções que pertencem à mesma aplicação de banco de dados. Authorization Usuário ou conta proprietária do schema. 7 Linguagem de Definição de Dados (DDL) Criação de Tabelas: CREATE TABLE NOME_TABELA( COL1 TIPO_COLUNA [NOT NULL], COL1 TIPO_COLUNA [NOT NULL], COL1 TIPO_COLUNA [NOT NULL] ) 8 Linguagem de Definição de Dados (DDL) Em geral, o esquema SQL são declarados e especificados implicitamente no ambiente nas instruções CREATE TABLE. Como alternativa podemos declarar explicitamente o nome do esquema sendo: <nome do esquema>.<nome da relação> CREATE TABLE EMPRESA.FUNCIONARIO... Em vez de CRETE TABLE FUNCIONARIO ... 9 Linguagem de Definição de Dados (DDL) Na criação de tabelas, é possível especificar vários tipos de restrições: Chave Primária: PRIMARY KEY ; Chave Estrangeira: FOREIGN KEY; Chave Alternativa (ou alternada): UNIQUE; Restrição de Domínio: CHECK. Pode-se atribuir nomes às restrições de integridade: CONSTRAINT NOME_RESTRIÇÃO TIPO RESTRIÇÃO. FOREIGN KEY (CPF) REFERENCES Pessoa (CPF) 10 Linguagem de Definição de Dados (DDL) CREATE TABLE Pessoa(CPF VARCHAR(11) NOT NULL, Nome VARCHAR(30) NOT NULL UNIQUE, Sexo VARCHAR(1) NOT NULL, PRIMARY KEY (CPF)); CREATE TABLE Piloto(CPF VARCHAR(11) NOT NULL, Cart_Trab VARCHAR(13) NOT NULL UNIQUE, PRIMARY KEY (CPF), FOREIGN KEY (CPF) REFERENCES Pessoa (CPF)); 11 Linguagem de Definição de Dados (DDL) CREATE TABLE Passageiro(CPF VARCHAR(11) NOT NULL CONSTRAINT PK_PASSAGEIRO PRIMARY KEY CONSTRAINT FK_PESSOA REFERENCES Pessoa (CPF), Dieta VARCHAR(1) CHECK (Dieta IN(‘S’, ‘N’))); CREATE TABLE Voo(Numero Numeric NOT NULL CONSTRAINT PK_VOO PRIMARY KEY, Data Date NOT NULL, TIPO VARCHAR2(15) DEFAULT ‘NACIONAL’, P_CPF VARCHAR(11) NOT NULL CONSTRAINT FK_PILOTO REFERENCES Piloto (CPF)); 12 Linguagem de Definição de Dados (DDL) Deleção de item referenciado: ... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF) REFERENCES Piloto (CPF) ON DELETE RESTRICT); -- impede a exclusão (default) ... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF) REFERENCES Piloto (CPF) ON DELETE SET NULL); -- transforma o valor em nulo ... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF) REFERENCES Piloto (CPF) ON DELETE CASCADE); -- exclui a linha da tabela 13 Alteração de Tabelas: Incluir novas colunas em uma tabela; Excluir colunas existentes em uma tabela; Adicionar a definição de uma restrição em uma tabela; Excluir a definição de uma restrição existente em uma tabela; Modificar uma coluna. Linguagem de Definição de Dados (DDL) 14 Linguagem de Definição de Dados (DDL) CREATE TABLE Reserva(V_Numero Numeric NOT NULL, P_CPF VARCHAR(11) NOT NULL); CREATE TABLE Telefone(Numero VARCHAR(15) NOT NULL, P_CPF VARCHAR(11) NOT NULL, PRIMARY KEY (Numero, P_CPF), FOREIGN KEY (P_CPF) REFERENCES Pessoa(CPF)); 15 ALTER TABLE Telefone ADD COLUMN TIPO VARCHAR2(5) DEFAULT ‘FIXO’ NOT NULL; ALTER TABLE Telefone DROP COLUMN Tipo; ALTER TABLE TELEFONE ADD CONSTRAINT TIPO_TELEFONE CHECK (TIPO IN(‘Fixo’, ‘Movel’)); ALTER TABLE TELEFONE DROP CONSTRAINT TIPO_TELEFONE; Linguagem de Definição de Dados (DDL) 16 ALTER TABLE Reserva ADD CONSTRAINT PK_RESERVA PRIMARY KEY (V_Numero, P_CPF); ALTER TABLE Reserva ADD CONSTRAINT FK_RESERVA_VOO FOREIGN KEY (V_Numero) REFERENCES Voo (Numero); ALTER TABLE Reserva ADD CONSTRAINT FK_RESERVA_PASSAGEIRO FOREIGN KEY (P_CPF) REFERENCES Passageiro (CPF); ALTER TABLE Reserva ENABLE CONSTRAINT FK_RESERVA_PASSAGEIRO; ALTER TABLE Reserva DISABLE CONSTRAINT FK_RESERVA_PASSAGEIRO; Linguagem de Definição de Dados (DDL) 17 Linguagem de Definição de Dados (DDL) Deletar Tabela (estrutura): DROP TABLE Pessoa; FIM
Compartilhar