Introdução O modelo relacional encontra-se padronizado
pela indústria de informática. Ele é chamado de padrão SQL (Structured Query Language). O padrão SQL define precisamente uma interface SQL para a definição de tabelas, para as operações sobre as mesmas (seleção, projeção, junção, e outras) e para a definição de regras de integridade de bancos de dados.
Introdução Um SGBD possui duas linguagens: DDL: Linguagem de Definição de Dados. Usada para
definir os esquemas, atributos, visões, regras de integridade, índices, etc. DML: Linguagem de Manipulação de Dados. Usada para se ter acesso aos dados armazenados no BD.
Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de SEQUEL É a linguagem de consulta padrão para os SGBDR's Já existem padrões propostos: ANSI-SQL(SQL-89), SQL-92 e padrões mais recentes: SQL:1999 e
SQL:2003.
Introdução A linguagem SQL tem diversas partes: Linguagem de Definição de Dados (DDL): fornece
comandos para definições de esquemas de relação, criação/remoção de tabelas, criação de índices e modificação de esquemas. Linguagem de Manipulação de Dados (DML): inclui uma linguagem de consulta baseada na álgebra relacional e cálculo relacional de tupla. Compreende comandos para inserir, consultar, remover e modificar tuplas num BD.
Introdução ▫ Linguagem de Manipulação de Dados Embutida:
designada para acessar o BD dentro de linguagens de programação de uso geral como Java, Cobol, C, Pascal, C#, Delphi, Fortran, SQL-J entre outros. ▫ Definição de Visões: a SQL DDL inclui comandos para
definição de visões. ▫ Autorização: a SQL DDL inclui comandos para
especificação de direitos de acesso às relações/visões.
Introdução ▫ Integridade: SQL possui comandos para verificação de
restrições de integridade complexas. O padrão ANSI(86) limitou estas restrições. Porém, novos padrões tipo SQL-99 incorporam várias formas de expressar restrições de integridade (Assertivas e Triggers). ▫ Controle de Transação: algumas implementações de
SQL permitem fazer tratamento de controle de concorrência e tolerância à falhas (locks explícitos, commit, rollback).
Tipos de Dados em SQL Tipos de Domínios em SQL-92 Tipo Char(n) ou character Varchar(n) ou Character varying int ou integer Smallint Numeric(p,d)
real, double precision Float(n) Date Time
Descrição String de tamanho fixo n String de tamanho variável com tamanho máximo n Número inteiro Inteiro pequeno Número ponto fixo xom precisão definida pelo usuário. Com p indicando o número de dígitos e d indicando dos p dígitos os que estão à direita do ponto decimal Ponto flutuante e ponto flutuante de precisão dupla Ponto flutuante com precisão definida pelo usuário Data: aaaa/mm/dd Hora: hh:mm:ss
Tipos de Dados em SQL Tipos em SQL:1999 Numéricos exatos: INTEGER (INT) e SMALLINT para representar inteiros NUMERIC(p,s): tem uma precisão e uma escala(número de dígitos na parte fracionária). A escala não pode ser maior que a precisão. Muito usado para representar dinheiro DECIMAL: também tem precisão e escala. A precisão é fornecida pela implementação (SGBD).
Numéricos aproximados: REAL: ponto flutuante de precisão simples DOUBLE: ponto flutuante com precisão dupla FLOAT(p): permite especificar a precisão que se quer. Usado para tranportar (portability) aplicações
Tipos de Dados em SQL Tipos em SQL:1999 Character CHARACTER(x) (CHAR): representa um string de tamanho x. Se x for omitido então é equivalente a CHAR(1). Se um string a ser armazenado é menor do que x, então o restante é preenchido com brancos. CHARACTER VARYING(x) (VARCHAR): representa um string de tamanho x. Armazena exatamente o tamanho do string (tam <= x) sem preencher o resto com brancos. Neste caso x é obrigatório. CHARACTER LARGE OBJECT (CLOB): armazena strings longos. Usado para armazenar documentos. OBS.: Existem os National character data types: NCHAR, NVARCHAR, NCLOB que permitem implementar internacionalização
Tipos de Dados em SQL Tipos em SQL:1999 Bit string e Binary Strings (BLOB)
BIT(X): permite armazenar uma quantidade x de bits BIT VARING(X) (VARBIT): permite armazenar uma quantidade variável de bits até o tamanho X BINARY LARGE OBJECT (BLOB): para armazenar grande quantidades de bytes como fotos, vídeo, áudio, gráficos, mapas, etc.
Tipos de Dados em SQL Tipos em SQL:1999 DATETIMES DATE: armazena ano (4 digitos), mês (2 digitos) e dia(2 digitos). TIME: armazena hora(2digitos), minuto(2 digitos) e segundo(2digitos, podendo ter frações 0 a 61.9999) TIMESTAMP: DATE + TIME TIME WITH TIME ZONE: igual a time + UTC offset TIMESTAMP WITH TIME ZONE: igual a TIMESTAMP + UTC offset
Tipos de Dados em SQL Tipo Boolean:
lógica de três valores (TRUE, FALSE e UNKNOWN)
Tipos de Dados em SQL Tipos em SQL:1999 Collection (Array)
User-defined types References ...
MySQL Server Servidor de banco de dados open source Atualmente mantido pela Oracle
Site do produto: http://www.mysql.com/ Página de downloads:
http://www.mysql.com/downloads/mysql/
MySQL Server Usando os recursos da DML Abrir o terminal do seu S.O. Conexão com o servidor: mysql –u -p -h OU Usar o MySQL Workbench
MySQL Server Criando uma base de dados
Exibindo as bases do servidor
MySQL Server Removendo uma base de dados
Criando a 1ª tabela na base livraria
MySQL Server Selecionando uma tabela para edição/consulta
Excluindo uma tabela
MySQL Server Alterando a estrutura de uma tabela
Adicionando uma coluna na tabela
Removendo uma coluna
MySQL Server Incluindo a primeira linha na tabela Livro
Consultando o conteúdo da tabela
MySQL Server Removendo uma linha na tabela Livro
MySQL Server Criando algumas restrições na tabela Os campos não podem ser nulos
O valor da coluna título deve ser único para todas as
linhas
Exercício de Fixação Se conecte ao servidor e apague a base de dados
livraria DROP DATABASE livraria ;
Crie uma nova base da dados chamada livraria CREATE DATABASE livraria ;
Informe ao SGBD que você deseja usar a base
livraria USE livraria ;
Exercício de Fixação Crie uma tabela chamada Editora CREATE TABLE Editora ( id BIGINT NOT NULL AUTO_INCREMENT , nome VARCHAR (255) NOT NULL , email VARCHAR (255) NOT NULL , ) ENGINE = InnoDB ;
Exercício de Fixação Crie uma tabela chamada Livro CREATE TABLE Livro ( id BIGINT NOT NULL AUTO_INCREMENT , titulo VARCHAR (255) NOT NULL , preco DOUBLE NOT NULL , ) ENGINE = InnoDB ;
Exercício de Fixação Adicione linhas na tabela Editora INSERT INTO Editora (nome , email ) VALUES
(’Oreilly ’, ’ oreilly@email . com ’); INSERT INTO Editora (nome , email ) VALUES (’Wrox ’, ’wrox@email . com ’); INSERT INTO Editora (nome , email ) VALUES (’Apress ’, ’ apress@email . com ’);
Exercício de Fixação Adicione linhas na tabela Livro INSERT INTO Livro ( titulo , preco ) VALUES
(’Aprendendo C#’, 89.90) ; INSERT INTO Livro ( titulo , preco ) VALUES (’Introdução ao JSF 2’, 122.90) ; INSERT INTO Livro ( titulo , preco ) VALUES (’JSF 2 Avançado ’, 149.90) ;
Exercício de Fixação Consulte as linhas da tabela Editora SELECT * FROM Editora ;
Consulte as linhas da tabela Livro SELECT * FROM Livro ;
Exercício de Fixação Alterando um registro na tabela Livro UPDATE Livro SET preco =92.9 WHERE id =1;
Alterando um registro na tabela Editora UPDATE Editora SET nome =’ OReilly ’ WHERE id =1;
Consulte as tabelas para visualizar os valores
alterados
Exercício de Fixação Removendo um registro na tabela Livro DELETE FROM Livro WHERE id =2;
Consulte a tabela acima para visualizar as linhas