Você está na página 1de 8

Banco de Dados II

SQL e SGBDs

ChessmanKennedy Faria Corra


ckennedyfc@gmail.com

https://sites.google.com/site/ckennedyfc/faetec
StructuredQueryLanguage(SQL)
y y y y Linguagem declarativa para bancos de dados relacionais. Criada pela IBM no incio de 1970 (mais de 40 anos!). SQL92 Define um padro mnimo. Alm do padro, os fabricantes de SGBD normalmente criam seus prprios recursos para o gerenciamento e manipulao de bancos de dados relacionais.

Linguagens do SQL
y y y y y DDL (Data DefinitionLanguage): Linguagem usada para a definio da estrutura do banco de dados (CREATE, ALTER E DROP). DML (Data ManipulationLanguage): Linguagem usada para a manipulao de dados (INSERT, UPDATE e DELETE). DCL (Data ControlLanguage): Linguagem usada para controle de acesso a manipulao dos dados (GRANT, REVOKE, PASSWORD, USER, VIEW). DTL (Data TransactionLanguage): Usada para o controle de transaes (START TRANSACTION, COMMIT, ROLLBACK). DQL (Data QueryLanguage): Linguagem usada para a consulta de dados (SELECT, FROM, WHERE, ORDER BY, GROUP BY, HAVING, DISTINCT).

Operadores Relacionais do SQL


y y y y y y y y < > >= <= = != (diferente) BETWEEN (intervalo de valores) LIKE (permite seleo de stringsque possuem uma substringespecfica).

Operadores Lgicos do SQL


y y y AND OR NOT

Funes de Agregao
y y y y y AVG:Utilizada para calcular a mdia dos valores de um campo determinado. COUNT:Utilizada para devolver o nmero de registros da seleo. 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.

Tipos de Dados do SQL


y y y y y y y y Inteiro (int) Smallint Date Time DateTime Numeric(tamanho, precisao) Decimal (tamanho, precisao) Float

y y

Char(quantidade_caracteres) VarChar(quantidade_caracteres)

SGDBsque utilizam SQL


y y y y y y y y y y y y y y y Apache Derby DB2 (IBM pago) Firebird (open source) HSQLDB (implementadoemJava) Informix InterBase Microsoft SQL Server MySQL(versofreeware) Oracle (pago) PointBase Micro (implementadoemJava) PostgreSQL (open source) SQLite (open source) LiteBaseMobile (paraplataformasmveis, comoPalm OS, Pocket PC, WinCE) Sybase Adaptive Server Enterprise Teradata(primeiroRDBMS com arquiteturaparalelado mercado)

Comparao entre SGDBs


y http://translate.google.com.br/translate?hl=pt-BR&langpair=en|pt&u= http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems

MySQL
y y y SGDB relacional. Usa SQL como linguagem. Muito usado em sistemas Web.

DDL Data DefinitionLanguage


y y y y y Linguagem usada para a definio da estrutura do banco de dados. Comandos bsicos: CREATE ALTER DROP

DDL Data DefinitionLanguage


y y y y Criao e excluso de banco de dados Criao, alterao e excluso de tabelas Criao e excluso de restries de integridade (chaves primrias, campos obrigatrios, chaves estrangeiras) Criao de ndices.

Banco de Dados
Criao de um banco de dados: y CREATE DATABASENOME_DO_BANCO

Exemplo: y CREATE DATABASE BD_ESCOLA;

Excluso de um banco de dados: y DROP DATABASENOME_DO_BANCO

Exemplo: y y DROP DATABASE BD_ESCOLA; OBS: Para usar o banco de dados no MySQL, usar o comando USE NOME_DO_BANCO.

Criao de Tabela: CREATE TABLE NOME_DA_TABELA ( NOME_CAMPO1 TIPO_CAMPO, NOME_CAMPO2 TIPO CAMPO, NOME_CAMPO_N TIPO CAMPO ) Criao de Tabela Exemplo: CREATE TABLE CLIENTE (ID_CLIENTE INT, NOME VARCHAR(50) ) Alterao de uma Tabela: y Uma tabela alterada a partir do comando ALTER TABLE.

Incluso de um novo campo: y y ALTER TABLE NOME_TABELA ADD COLUMN NOME_CAMPO TIPO_CAMPO

Exemplo: y ALTER TABLECLIENTE ADD COLUMNEMAIL VARCHAR(30) NOT NULL

Excluso de um campo(usar o comando drop): y ALTER TABLE CLIENTE DROP COLUMN NOME_CAMPO

Exemplo: ALTER TABLECLIENTE DROP COLUMN EMAIL; Alterao do tipo de um campo: ALTER TABLE CLIENTE DROP COLUMN NOME_CAMPO Exemplo: ALTER TABLECLIENTE DROP COLUMN EMAIL;

Excluso de uma Tabela


y Usar o comando:

DROP TABLE NOME_TABELA Exemplo:

DROP TABLECLIENTE

Comandos do MySQL
y y Usar o comando SHOW TABLES para ver as tabelas do banco. Usar o comando DESC para ver a estrutura de uma tabela.

Exemplo: DESC NOME_TABELA

Restries de Integridade
y y y Campos obrigatrios (no nulos) Chaves primrias Chaves estrangeiras

Campos com Valores Nulos


y y y Um campo com valor nulo ainda no recebeu um valor. Quando necessrio, os campos podem ser definidos como obrigatrios (no nulos) durante a criao da tabela. Para especificar um campo como no nulo, usar as palavras reservadas NOT NULL aps o tipo do campo.

Campos no Nulos -Exemplo


y No exemplo a seguir, ID_CLIENTE e NOME so campos obrigatrios (no nulos) enquanto TELEFONE opcional (pode ter valor nulo).

CREATE TABLE CLIENTE (ID_CLIENTE INT NOT NULL, NOME VARCHAR(50) NOT NULL, TELEFONE VARCHAR(20) )

Alterao de um Campo
y Usar o seguinte comando (MySQL):

ALTER TABLENOME_TABELA MODIFYCAMPO TIPO (NOT NULL). Exemplo 1: ALTER TABLEFORNECEDORMODIFYNOME VARCHAR(30) NOT NULL Exemplo 2: ALTER TABLECLIENTEMODIFY EMAILVARCHAR(100);

Criao de Chave Primria -1


y Quando a chave primria constituda de apenas um campopode ser usada a seguinte sintaxe (note que o campo no pode ser nulo):

CREATE TABLE NOME_DA_TABELA ( NOME_CAMPO1 TIPO_CAMPO NOT NULLPRIMARY KEY, NOME_CAMPO2 TIPO CAMPO, NOME_CAMPO_N TIPO CAMPO )

Chave Primria-Exemplo 1

CREATE TABLE CLIENTE (ID_CLIENTE INT NOT NULL PRIMARY KEY, NOME VARCHAR(50) NOT NULL, TELEFONE VARCHAR(20) )

Criao de Chave Primria -2


y A chave primria pode ser definida aps a especificao dos campos da tabela (esta sintaxe permite a definio de chaves primrias compostas):

CREATE TABLE NOME_DA_TABELA ( NOME_CAMPO1 TIPO_CAMPO NOT NULL, NOME_CAMPO2 TIPO CAMPO, NOME_CAMPO_N TIPO CAMPO, PRIMARY KEY(NOME_CAMPO_1,...,CAMPO_N) )

Chave Primria Exemplo 2


CREATE TABLE CLIENTE (ID_CLIENTE INT NOT NULL, NOME VARCHAR(50) NOT NULL, TELEFONE VARCAR(20), PRIMARY KEY (ID_CLIENTE) )

Chave Primria Exemplo 3


CREATE TABLE TELEFONE_CLIENTE (ID_CLIENTE INT NOT NULL, NUM_TEL VARCHAR(20) NOT NULL, PRIMARY KEY (ID_CLIENTE, NUM_TEL) )

Criao de Chave Primria 3


y y Uma chave primria pode ser definida aps a criao da tabela. A vantagem a possibilidade de definir um nome para a chave primria.

ALTER TABLENOME_TABELA ADD CONSTRAINT PRIMARY KEY NOME_DA_CHAVE (CAMPO1,...,CAMPO_N)

Chave Primria Exemplo 4


CREATE TABLE CLIENTE (ID_CLIENTE INT NOT NULL, NOME VARCHAR(50) NOT NULL, TELEFONE VARCAR(20)) ALTER TABLECLIENTE ADD CONSTRAINT PRIMARY KEY PK_CLIENTE (ID_CLIENTE)

Chave Primria Exemplo 5


CREATE TABLE TELEFONE_CLIENTE (ID_CLIENTE INT NOT NULL, NUM_TEL VARCHAR(20) NOT NULL) ALTER TABLETELEFONE_CLIENTE ADD CONSTRAINT PRIMARY KEY PK_TELEFONE_CLIENTE (ID_CLIENTE, NUM_TEL)

Excluso de Chave Primria


y Para excluir a chave primria, necessrio alterar a tabela:

ALTER TABLENOME_TABELADROPPRIMARY KEY; Exemplo:

ALTER TABLE VENDA DROP PRIMARY KEY;

Importante
Os campos que constituem a chave primria no podem ter valor nulo. Portanto, usar NOT NULL para todos os campos da chave primria.

Chaves Estrangeiras - 1
y A primeira forma para criar uma chave estrangeira durante a criao da tabela.

CREATE TABLE NOME_TABELA ( CAMPO NOME_CAMPO TIPO, FOREIGN KEY (CAMPO1,...,CAMPO_N) REFERENCES TABELA (CAMPO1,..., CAMPO_N)

Chaves Estrangeiras Exemplo 1


CREATE TABLE VEICULO ( ID_VEICULO INTEGER NOT NULL, PLACA VARCHAR(9) NOT NULL, ID_CLIENTE INTEGER NOT NULL, PRIMARY KEY (ID_VEICULO), FOREIGN KEY (ID_CLIENTE) REFERENCES CLIENTE (ID_CLIENTE) )

Chaves Estrangeiras Exemplo 2


CREATE TABLE PAGAMENTO_CONTA ( ID_CONTA INTEGER NOT NULL,ID_MOVIMENTO INTEGER NOT NULL,ID_PAGAMENTO INTEGER NOT NULL,VALOR NUMERIC(12,2) NOT NULL, PRIMARY KEY (ID_CONTA,ID_MOVIMENTO,ID_PAGAMENTO), FOREIGN KEY (ID_CONTA, ID_MOVIMENTO) REFERENCES MOVIMENTO_CONTA (ID_CONTA, ID_MOVIMENTO), FOREIGN KEY (ID_PAGAMENTO) REFERENCES PAGAMENTO (ID_PAGAMENTO), )

Chaves Estrangeiras - 2
y y A segunda forma para criar uma chave estrangeira alterando a tabela. Vantagem: possibilidade de dar um nome para a chave estrangeira.

ALTER TABLE NOME_TABELA ADD CONSTRAINT NOME_CHAVE FOREIGN KEY (CAMPO1,...,CAMPO_N) REFERENCES TABELA (CAMPO1,..., CAMPO_N)

Chaves Estrangeiras Exemplo 3


ALTER TABLE VEICULO ADD CONSTRAINT FK_CLIENTE FOREIGN KEY(ID_CLIENTE) REFERENCES CLIENTE (ID_CLIENTE);

Chaves Estrangeiras Exemplo 4


ALTER TABLE PAGAMENTO_CONTA ADD CONSTRAINT FK_MOVIMENTO_CONTA FOREIGN KEY (ID_CONTA, ID_MOVIMENTO) REFERENCES MOVIMENTO_CONTA (ID_CONTA, ID_MOVIMENTO); ADD CONSTRAINT FK_PAGAMENTO

FOREIGN KEY (ID_PAGAMENTO) REFERENCES PAGAMENTO (ID_PAGAMENTO);

Excluso de Chave Estrangeira


y Para excluir uma chave estrangeira, usar o comando a seguir:

ALTER TABLE NOME_TABELA DROP CONSTRAINT NOME Exemplo: ALTER TABLE VEICULO DROP CONSTRAINT FK_CLIENTE

Você também pode gostar