Janai Maciel SQL Structured Query Language (Banco de Dados) Conceitos de Linguagens de Programação – 2013.2 Structured Query Language ( Linguagem de Consulta Estruturada ) Conceito: É a linguagem de pesquisa declarativa padrão para banco de dados relacional. Muitas das características originais do SQL foram inspiradas na álgebra relacional. Características: Originalmente criado pela IBM, em 1974. Padronização pela ANSI e ISO em 1986 e 1987. Última versão: 2008 Fortemente Tipada Embora padronizado pela ANSI e ISO, como citado, SQL possui muitas variações e extensões produzidos pelos diferentes fabricantes de sistemas gerenciadores de bases de dados. Tipicamente a linguagem pode ser migrada de plataforma para plataforma sem mudanças estruturais principais. “Palavras-chave” em SQL: Cláusulas (FROM, WHERE, GROUP BY, HAVING, ORDER BY, DISTINCT) Operadores Lógicos ( AND, OR, NOT) Operadores Relacionais ( <, >, <=, >=, =, <>, BETWEEN, LIKE, IN) Funções de Agregação ( AVG, COUNT, SUM, MAX, MIN) Cláusulas FROM - Utilizada para especificar a tabela que se vai selecionar os registros. WHERE – Utilizada para especificar as condições que devem reunir os registros que serão selecionados. GROUP BY – Utilizada para separar os registros selecionados em grupos específicos. HAVING – Utilizada para expressar a condição que deve satisfazer cada grupo. ORDER BY – Utilizada para ordenar os registros selecionados com uma ordem especifica. DISTINCT – Utilizada para selecionar dados sem repetição. Operadores Lógicos AND – Avalia as condições e devolve um valor verdadeiro caso ambos sejam corretos. OR – Avalia as condições e devolve um valor verdadeiro se algum for correto. NOT – Devolve o valor contrário da expressão. Operadores relacionais BETWEEN – Utilizado para especificar um intervalo de valores. LIKE – Utilizado na comparação de um modelo e para especificar registros de um banco de dados. "Like" + extensão % significa buscar todos resultados com o mesmo início da extensão. IN - Utilizado para verificar se o valor procurado está dentro de uma lista. Ex.: valor IN (1,2,3,4). Comparadores: “maior que”, “menor que”, “maior ou igual que”, “menor ou igual que”, igual, diferente. Funções de agregação AVG – Utilizada para calcular a média dos valores de um campo determinado. COUNT – Utilizada para devolver o número de registros da seleção. SUM – Utilizada para devolver a soma de todos os valores de um campo determinado. MAX – Utilizada para devolver o valor mais alto de um campo especificado. MIN – Utilizada para devolver o valor mais baixo de um campo especificado. Subconjuntos do SQL: DML - Linguagem de Manipulação de Dados DDL - Linguagem de Definição de Dados DCL - Linguagem de Controle de Dados DTL - Linguagem de Transação de Dados DQL - Linguagem de consulta de dados DML É um subconjunto da linguagem SQL que é utilizado para realizar inclusões, consultas, alterações e exclusões de dados presentes em registros. Função Comando SQL Descrição Exemplo Usada para inserir Insert into Pessoa (id, Inclusões INSERT um registro a uma nome, sexo) value; tabela existente. Principal comando usado em SQL para Select * From Consultas SELECT realizar consultas a Pessoa; dados pertencentes a uma tabela. Função Alterações Exclusões Comando SQL Descrição do comando Exemplo Para mudar os valores UPDATE Pessoa SET de dados em uma ou data_nascimento = mais linhas da tabela '11/09/1985' WHERE existente. id_pessoa = 7 Permite remover linhas DELETE FROM pessoa UPDATE DELETE existentes de uma tabela. WHERE id_pessoa = 7 DDL Uma DDL permite ao utilizador definir tabelas novas e elementos associados. A maioria dos bancos de dados de SQL comerciais tem extensões proprietárias no DDL. CREATE: Cria um objeto dentro da base de dados. DROP: Apaga um objeto do banco de dados. Alguns sistemas de banco de dados usam o comando ALTER, que permite ao usuário alterar um objeto, por exemplo, adicionando uma coluna a uma tabela existente. Outros comandos DDL: CREATE TABLE CREATE INDEX CREATE VIEW ALTER TABLE ALTER INDEX DROP INDEX DROP VIEW DCL Lida com os aspectos de autorização de dados e licenças de usuários para controlar quem tem acesso para ver ou manipular dados dentro do banco de dados. Duas palavras-chaves da DCL: GRANT - autoriza ao usuário executar ou setar operações. REVOKE - remove ou restringe a capacidade de um usuário de executar operações. DTL BEGIN WORK - Pode ser usado para marcar o começo de uma transação de banco de dados que pode ser completada ou não. COMMIT - finaliza uma transação dentro de um sistema de gerenciamento de banco de dados. ROLLBACK - faz com que as mudanças nos dados existentes desde o último COMMIT ou ROLLBACK sejam descartadas. COMMIT e ROLLBACK interagem com áreas de controle como transação e locação. Ambos terminam qualquer transação aberta e liberam qualquer cadeado ligado a dados. Na ausência de um BEGIN WORK ou uma declaração semelhante, a semântica de SQL é dependente da implementação. DQL Embora tenha apenas um comando, a DQL é a parte da SQL mais utilizada. O comando SELECT permite ao usuário especificar uma consulta ("query") como uma descrição do resultado desejado. Esse comando é composto de várias cláusulas e opções, possibilitando elaborar consultas das mais simples às mais elaboradas. Sistemas de Banco de Dados que usam SQL • Apache Derby • Caché • DB2 • Firebird • HSQLDB(banco de dados implementado em Java) • IDMS(banco de dados hierárquico) • IMS(banco de dados hierárquico) • Informix • Ingres • InterBase • Microsoft Access • Microsoft SQL Server • MySQL • Oracle • PointBase Micro (banco de dados relacional implementado em Java) • PostgreSQL • SQLite • LiteBase Mobile(dedicado à plataformas móveis como: Palm OS, P Pocket PC, WinCE, Symbian) • Sybase Adaptive Server Enterprise • Teradata(primeiro RDBMS com arquitetura paralela do mercado) Podemos criar uma tabela qualquer dentro de um banco de dados. A sintaxe básica para criarmos é: CREATE TABLE nome_tabela ( nome_campo_1 tipo_1, nome_campo_2 tipo_2, ... nome_campo_n tipo_n, PRIMARY KEY ( campo_x,...)); *PRIMARY KEY define a chave primária da tabela, isto é, o campo que serve como chave da tabela e que não pode ser repetido. Como exemplo do uso do comando CREATE TABLE, imaginemos a necessidade de uma tabela que deva possuir os dados dos clientes de uma loja. CREATE TABLE Cliente ( Codigo INT NOT NULL AUTO_INCREMENT, Nome VARCHAR (60) NOT NULL, Data_Nascimento DATE, Telefone CHAR (8), PRIMARY KEY (Codigo) );# Criamos uma tabela chamada Cliente. Esta tabela contém quatro. Primeiro campo será utilizado como chave primária de forma que não poderá se repetir nunca. Desta forma o campo deve ser sempre preenchido (NOT NULL), é numérico do tipo inteiro (INT) e deve auto-incrementar de acordo com o número de clientes que for incluído. Podemos visualizar a estrutura e campos de uma tabela criada utilizando o comando DESCRIBE ou DESC: DESCRIBE Nome_Tabela;# Ou: DESC Nome_Tabela;# Regras de Integridade: Ao criarmos uma tabela dentro de um banco de dados devemos ter em mente as Regras de Integridade, que garantam a consistência, integridade e não redundância dos dados. Entre estas regras podemos englobar as chaves primárias, checagem e chave estrangeira. Chave primária: A chave primária funciona como os campos que diferenciam os dados uns dos outros, e que não podem ser repetidos de nenhuma forma. Por exemplo, em nossa tabela Cliente, o código do Cliente funciona como a chaveprimária, ou seja, os clientes podem até ter o mesmo nome, endereço ou telefone, mas terão códigos diferentes uns dos outros. Se dois códigos iguais forem inseridos, retornará erro. Checagem: CHECK Nome _Campo IN (valor1 , valor2, valor n); Esta cláusula força a um campo a aceitar apenas os valores especificados entre os parênteses. Isto pode ser útil para definir, por exemplo, campos como sexo. Desta forma forçamos as opções através de: CHECK Sexo IN ('M','F'); Chave estrangeira: A chave estrangeira é uma cláusula que deve ser incluída quando possuímos mais de duas tabelas em um banco de dados. Através da chave estrangeira estabelecemos as relações entre duas ou mais tabelas. A chave estrangeira desta forma referencia o campo que é chave primária de outra tabela. Tabela. FOREIGN KEY (Campo1, Campo2, Campo3 ..) REFERENCES Nome_Tabela2 (Nome_Chave); << Duvidas?? Obrigado!