Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update) SQL - Structured Query Language • Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas à sua manipulação. • O Departamento de Pesquisas da IBM, desenvolveu a SQL como forma de interface para o sistema de BD relacional denominado SYSTEM R, início dos anos 70. • SQL apresenta uma série de comandos que permitem a definição dos dados, chamada de DDL (Data Definition Language) SQL - Structured Query Language • Exemplo de comandos da classe DDL: –Create, Alter e Drop. • Os comandos da série DML (Data Manipulation Language), destinados a consultas, inserções, exclusões e alterações em um ou mais registros de uma tabela de maneira simultânea. • Exemplos de comandos da classe DML: –Select, Insert, Update e Delete. SQL - Structured Query Language • Uma característica muito importante disponível em SQL é sua capacidade de construção de visões; • Visões - visualização dos dados na forma de listagens independente das tabelas e organização lógica dos dados. SQL - Structured Query Language • Outra característica interessante na linguagem SQL é a capacidade que dispomos de cancelar uma série de atualizações e gravações, depois de termos iniciado uma seqüência. • Os comandos Commit e Rollback são responsáveis por estas facilidades. SQL - Structured Query Language • Devemos notar que a linguagem SQL consegue implementar estas soluções, somente pelo fato de estar baseada em Banco de Dados, que garantem por si mesmo a integridade das relações existentes entre as tabelas e seus índices. Comandos de Modificação e Criação • Comando create database: Este comando permite a criação do banco de dados. • Sintaxe: CREATE DATABASE <Nome_banco_de_dados> • Exemplo: CREATE DATABASE FGFSQL Comandos de Modificação e Criação • Comando Create table: Este comando permite a criação de tabelas no banco de dados. • Sintaxe: CREATE TABLE < nome_tabela > ( nome_atributo1 < tipo > [ NOT NULL ], nome_atributo2 < tipo > [ NOT NULL ], ...... nome_atributoN < tipo > [ NOT NULL ] ) Create table sintaxe (Cont) •onde: – nome_tabela: indica o nome da tabela a ser criada. – nome_atributo: indica o nome do campo a ser criado na tabela. – tipo: indica a definição do tipo do atributo (int, smallint, tinyint , char ou varchar (n), float, real, money, smallmoney, datetime). Create (Exemplo) CREATE TABLE Cliente( CodCliente int NOT NULL, Nome varchar(50), CPF varchar(11) NULL, DataCadastro datetime NOT NULL DEFAULT (getdate()), Pais varchar(20) DEFAULT ('Brasil')) Obs.: O comando DEFAULT define o valor padrão do campo. Create (Exemplo) • create table Produto ( CodProduto int NOT NULL IDENTITY, Nome varchar(60), Preco money) • Propriedade IDENTITY – coluna com valor único que é gerado automaticamente pelo sistema; • Somente uma coluna pode ter essa propriedade. Create (Exemplo) • create table Fornecedor ( CodFornecedor int not null primary key, Nome varchar(50) null, Endereco varchar(50) null, Telefone varchar(20) null ) • primary key – define o campo como chave primária da tabela. Create (Exemplo) • create table ProdutoFornecedor (CodProduto int, CodFornecedor int, primary key (CodProduto, CodFornecedor) ) • Define os dois campos (CodProduto, CodFornecedor) como chave primária da tabela. Create (Exemplo) • create table ProdutoFornecedor (CodProduto int foreign key references Produto, CodFornecedor int foreign key references Fornecedor, primary key (CodProduto, CodFornecedor)) • foreign key references – Cria uma referencia de um campo com a chave primaria de outra tabela. Create (Exemplo) • CREATE TABLE Departamento( CodDepartamento int NOT NULL primary key, Nome varchar(50), Orcamento money ) Create (Exemplo) • CREATE TABLE Funcionario ( CodFuncionario int primary key, Nome varchar(50), CodDepartamento int foreign key references Departamento, Gerente int foreign key references Funcionario, CodCargo int, Ramal int Null, Salario money, DataAdmissao datetime, DataCadastro datetime NOT NULL DEFAULT (getdate()), Sexo char(1) ) Comandos de Modificação e Criação • Comando Drop: Este comando elimina a definição da tabela, seus dados e referências. • Sintaxe: DROP TABLE <nome_tabela>; • Ex: DROP TABLE EMP; Comandos de Modificação e Criação • Comando Alter: Este comando permite inserir/eliminar atributos nas tabelas já existentes. • Sintaxe: • ALTER TABLE <nome_tabela> ALTER COLUMN nome_coluna <novo_tipo_de_dados> | ADD <nome_coluna> <dados_coluna> ALTER TABLE (Exemplo) 1. alter table Cliente add ender varchar(50) 2. alter table Cliente alter column ender varchar (25) • Obs.: Para renomear uma coluna, usa-se o procedimento sp_rename: • sp_rename 'Cliente.ender', Endereco Insert • Insere uma linha ou conjunto de linhas em uma tabela • Sintaxe: INSERT INTO <nome_tabela> [(colunas)] VALUE (valores) • Exemplo: insert into Funcionario (CodFuncionario, Nome, Sexo, Salario, DataAdmissao) values (2, 'Segundo Funcionário', 'F', 4360.00, '01/01/1996') Insert (Exemplo) • insert into Funcionario values (1, 'Primeiro Funcionário', 1, 2, 1, 23, 234.23, '01/01/1998', '01/01/1998', 'M') • insert into Funcionario (CodFuncionario, Nome, CodDepartamento, Sexo, Salario, DataAdmissao, Ramal) values (3, 'Terceiro Funcionário', 1, 'F', 1500.00, '12/30/1995', 122) • insert into CopiaFuncionario select * from Funcionario Delete • Exclui permanentemente uma ou mais linhas de uma tabela, baseado em alguma condição. • Sintaxe DELETE FROM <nome_tabela> WHERE <condição> • Exemplo: delete from Funcionario where CodFuncionario = 1 Remover todas as linhas da tabela • Usar um comando DELETE sem a condição WHERE. • Exemplo: delete from Cliente • Outra opção é o comando TRUNCATE TABLE, que quase sempre é mais rápido que o DELETE, especialmente em tabelas grandes. • Exemplo: truncate table Cliente Update • Atualiza os dados de uma tabela. • update funcionario set codcargo = 1 where codfuncionario = 1 • update funcionario set sexo = ‘F’ where sexo = ‘I’ • update Cliente set CPF = ‘994455’, Nome = ‘Fernanda’ where CPF = ‘3456’ or CPF is null. •Bibliografia HEUSER Carlos A., Projeto de Banco de Dados, Ed. Sagra&Luzzatto, 4ª Edição.