Вы находитесь на странице: 1из 8

Nota de Aula: Linguagem SQL DDL para MySQL

Prof. Leandro Guarino de Vasconcelos


FATEC Guaratinguet
A linguagem SQL (Structured Query Language Linguagem de Consulta Estruturada) uma
linguagem declarativa utilizada por Sistemas Gerenciadores de Bancos de Dados
Relacionais como: Oracle, SQL Server, MySQL, PostgreSQL, Firebird, e outros.
Devido sua ampla utilizao por diversos SGBDs, surgiram vrios dialetos para os
comandos, que geraram a necessidade de criao de um padro para a linguagem. Essa
tarefa foi realizada pela American National Standards Institute (ANSI) em 1986 e ISO em
1987. Em 1992, foi realizao uma reviso da linguagem que recebeu o nome de SQL-92.
Em 1999 e 2003, ocorreram novas revises. Na reviso de 1999, foram adicionados padres
para expresses regulares, consultas recursivas, triggers e algumas caractersticas de
orientao a objeto. Na reviso de 2003, foram introduzidas caractersticas relacionadas a
XML, seqncias padronizadas e colunas com valores de auto-numerao.
Uma dificuldade encontrada na utilizao da linguagem SQL por parte dos desenvolvedores
ou administradores de bancos de dados a diferena entre os comandos nos diversos
SGBDs, mesmo aps a definio dos padres. Porm, as diferenas no so grandes.
Os comandos da linguagem SQL so subdivididos em algumas categorias de comandos
como: DDL, DML e DCL.
DDL (Data Definition Language Linguagem de Definio de Dados)
Os comandos DDL so usados para definir a estrutura do banco de dados, organizando em
tabelas que so compostas por campos (colunas). Comandos que compem a DDL:
CREATE, ALTER, DROP.
DML (Data Manipulation Language Linguagem de Manipulao de Dados)
Os comandos DML permitem realizar operaes de insero, alterao, excluso e seleo
sobre os registros (linhas) das tabelas. Comandos que compem a DML: INSERT, UPDATE,
DELETE e SELECT. Alguns autores definem que o comando SELECT faz parte de uma
subdiviso chamada DQL (Data Query Language Linguagem de Consulta de Dados).
DCL (Data Control Language Linguagem de Controle de Dados)
Os comandos DCL so usados para gerenciar usurios e permisses de acesso ao Sistema
Gerenciador de Banco de Dados. Comandos que compem a DCL: GRANT e REVOKE.
Alguns autores ainda definem uma subdiviso da linguagem SQL chamada DTL (Data
Transaction Languagem Linguagem de Transao de Dados). Uma transao pode ser
compreendida como um conjunto de comandos que executado de forma atmica, ou seja,
ou todos os comandos so executados com sucesso ou nenhum dos resultados obtidos por
eles ser mantido no banco de dados.

Linguagem SQL no SGBD MySQL


Tipos de Dados
Nas linguagens de programao, h quatro tipos primitivos de dados que so: inteiro, real,
literal (texto) e lgico. Em cada SGBD, existem tipos de dados derivados desses tipos
primitivos. No SGBD MySQL, possvel destacar os seguintes:
Tipo de Dado
INTEGER
VARCHAR
CHAR

Descrio
Representa um nmero inteiro
Texto de tamanho varivel. Mximo de 255 caracteres.
Texto de tamanho fixo (preenche com espaos em branco os caracteres
no preenchidos). Mximo de 255 caracteres.
Data
Data/Hora
Texto de tamanho varivel. Mximo de 65535 caracteres.
Nmero real, sendo que p define a preciso e d define o nmero de
dgitos aps o ponto decimal.

DATE
DATETIME
TEXT
DECIMAL(p, d)

No MySQL, os campos ainda possuem atributos que definem a validao dos valores, tais
como:
Atributo
UNSIGNED
BINARY

Descrio
Sem sinal. Define que sero aceitos
apenas nmeros positivos.
Usado para diferenciar maisculas de
minsculas.

Aplica-se a
Nmeros inteiros
Texto

CREATE DATABASE
Este comando utilizado para criar um banco de dados.
Exemplo:
CREATE DATABASE loja; #cria um banco de dados chamado loja.
Comando USE
Sempre que for necessrio manipular as tabelas de um banco de dados no SGBD MySQL,
ser necessrio selecionar o banco de dados que se deseja manipular. Para isso, deve ser
utilizado o comando USE.
Exemplo:
USE loja; #acessa o banco de dados chamado loja
CREATE TABLE
Sintaxe:
CREATE TABLE nome_da_tabela (

...
definio dos campos
...
);
Exemplo:
CREATE TABLE clientes(
cpf integer unsigned not null,
nome varchar(100) not null,
data_nascimento date not null,
sexo char(1) default M,
salario decimal(10,2) default 0,
profissao varchar(30),
primary key(cpf)
);
Clusula DEFAULT
A clusula DEFAULT permite definir um valor padro para um campo, que ser utilizado
caso no seja informado nenhum valor para esse campo na insero de um registro na
tabela.

Sintaxe:
...
sexo char(1) default M,
...
No exemplo acima, caso o campo sexo da tabela no seja preenchido com um valor
durante a insero de um registro, ser assumido o valor M para o campo.
Para campos do tipo NUMRICO, o valor DEFAULT escrito sem aspas.
Exemplo:
...
salario decimal(10,2) default 0,
...
CONSTRAINTS
a) NOT NULL: define que um campo da tabela obrigatrio (deve receber um valor na
insero de um registro);
b) PRIMARY KEY: define que um campo ou conjunto de campos para garantir a
identidade de cada registro. Quando um campo definido como chave primria, seu
valor no pode se repetir em registros diferentes. Cada tabela s pode ter uma nica
chave primria.
CHAVE PRIMRIA SIMPLES: composta por um nico campo. Exemplo: se for
definido que em um sistema de hotis no podem existir dois clientes com o mesmo
CPF, portanto este campo dever ser definido como CHAVE PRIMRIA.

CHAVE PRIMRIA COMPOSTA: formada por dois ou mais campos. Exemplo: se for
definido em um sistema de Agncias bancrias que no podem existir duas contas
com o mesmo nmero da mesma agncia, ento esses dois campos formaro uma
CHAVE PRIMRIA COMPOSTA, pois a combinao deles no pode se repetir.
Nmero da
Nmero da
Conta
Agncia
1234
123
1234
567
3432
123
Observe que o nmero da conta pode se repetir individualmente, e o mesmo vale para
o nmero da agncia, porm a combinao desses dois campos no pode se repetir,
garantindo que no existiro duas contas com o mesmo nmero na mesma agncia.
Sintaxe:
Criao de uma chave primria simples
CREATE TABLE contas(
numero integer not null primary key,
saldo integer default 0,
agencia_numero integer not null
)
Ou
CREATE TABLE contas(
numero integer not null,
saldo integer default 0,
agencia_numero integer not null,
primary key(numero)
)
Ou
CREATE TABLE contas(
numero integer not null,
saldo integer default 0,
agencia_numero integer not null,
constraint pk_conta primary key(numero)
)

Criao de uma chave primria composta


CREATE TABLE contas(
numero integer not null,
saldo integer default 0,
agencia_numero integer not null,
primary key(numero,agencia_numero)
)

Ou
CREATE TABLE contas(
numero integer not null,
saldo integer default 0,
agencia_numero integer not null,
constraint pk_conta primary key(numero,agencia_numero)
)
c) FOREIGN KEY
Uma chave estrangeira definida quando se deseja relacionar tabelas do banco de
dados.
Sintaxe:
CREATE TABLE contas(
numero integer not null,
saldo integer default 0,
agencia_numero integer not null,
primary key(numero,agencia_numero),
foreign key(agencia_numero) references agencias(numero)
)
Ou
CREATE TABLE contas(
numero integer not null,
saldo integer default 0,
agencia_numero integer not null,
primary key(numero,agencia_numero),
constraint fk_contaagencia foreign key(agencia_numero) references
agencias(numero)
)
Na criao da chave estrangeira do exemplo anterior, pode-se ler da seguinte forma:
O campo agencia_numero da tabela contas faz referncia ao campo numero da
tabela agencias.
d) UNIQUE
Uma constraint UNIQUE definie que o valor de um campo ou de uma sequncia de
campos no pode se repetir em registros da mesma tabela. Essa constraint criada
de forma implcita quando definida uma chave primria para uma tabela. Como s
possvel ter uma chave primria por tabela, a utilizao de constraints UNIQUE uma
soluo quando se deseja restringir valores repetidos em outros campos.
Exemplo:
CREATE TABLE clientes(
cpf integer not null,

nome varchar(100) not null,


data_nascimento date not null,
sexo char(1) default M,
salario decimal(10,2) default 0,
profissao varchar(30),
rg integer not null,
estado char(2) not null,
primary key(cpf),
constraint un_rgestado unique(rg,estado)
);
A criao da constraint acima garante que um nmero de RG no se repetir em um
mesmo estado.
DROP TABLE
O comando DROP TABLE usado para apagar uma tabela do Banco de dados.
Sintaxe:
DROP TABLE nome_da_tabela;
ALTER TABLE
Para no se apagar uma tabela e recri-la, possvel fazer alteraes em sua estrutura por
meio do comando ALTER TABLE. Isso importante pois a execuo do comando DROP
TABLE apaga (obviamente) todos os registros da tabela, j a execuo do comando ALTER
TABLE no exclui nenhum registro.
Adicionar um campo
Sintaxe:
ALTER TABLE nome_da_tabela ADD nome_do_campo tipo_de_dado atributos
Exemplo:
ALTER TABLE clientes ADD endereco varchar(90) not null;
Alterar o tipo de dado de um campo
Sintaxe:
ALTER TABLE nome_da_tabela MODIFY nome_do_campo tipo_de_dado
Exemplo:
ALTER TABLE clientes MODIFY endereco varchar(200);
Renomear um campo e modificar o tipo
Sintaxe:
ALTER TABLE nome_da_tabela CHANGE COLUMN nome_do_campo novo_nome tipo
atributos;
Exemplo para mudar apenas o nome (o tipo do campo mantido):
ALTER TABLE clientes CHANGE COLUMN data_nascimento datanasc date;
Exemplo para mudar o nome e o tipo do campo:

ALTER TABLE clientes CHANGE COLUMN data_nascimento datahoranasc datetime;


Renomear uma tabela
Sintaxe:
ALTER TABLE nome_da_tabela RENAME TO novo_nome_da_tabela
Exemplo:
ALTER TABLE clientes RENAME TO pessoas_fisicas
Apagar um campo
Sintaxe:
ALTER TABLE nome_da_tabela DROP COLUMN nome_do_campo
Exemplo:
ALTER TABLE clientes DROP COLUMN endereco;
Adicionar uma PRIMARY KEY
Sintaxe:
ALTER TABLE nome_da_tabela ADD CONSTRAINT nome_da_constraint PRIMARY
KEY(campo1[,campo2,campo3,...,campoN])
Exemplo:
ALTER TABLE clientes ADD CONSTRAINT pk_cpf PRIMARY KEY(cpf)
Apagar uma PRIMARY KEY
Sintaxe:
ALTER TABLE nome_da_tabela DROP PRIMARY KEY
Ou
ALTER TABLE nome_da_tabela DROP CONSTRAINT nome_da_constraint_da_primary_key
Exemplo:
ALTER TABLE clientes DROP PRIMARY KEY;
Ou
ALTER TABLE clientes DROP CONSTRAINT pk_cpf;
Adicionar uma FOREIGN KEY
Sintaxe:
ALTER TABLE nome_da_tabela ADD CONSTRAINT nome_da_constraint FOREIGN
KEY(campo1[,campo2,campo3,...,campoN]) REFERENCES
nome_da_tabela(campo1[,campo2,campo3,...,campoN]);
Exemplo:
ALTER TABLE contas ADD CONSTRAINT fk_contaagencia FOREIGN
KEY(agencia_numero) REFERENCES agencias(numero);

Adicionar uma constraint UNIQUE


Sintaxe:
ALTER TABLE nome_da_tabela ADD CONSTRAINT nome_da_constraint
UNIQUE(campo1[,campo2,campo3,...,campoN])
Exemplo:
ALTER TABLE clientes ADD CONSTRAINT un_rgestado UNIQUE(rg,estado)
Apagar uma CONSTRAINT qualquer
Sintaxe:
ALTER TABLE nome_da_tabela DROP CONSTRAINT nome_da_constraint
Exemplo:
ALTER TABLE contas DROP CONSTRAINT fk_contaagencia
Comando SHOW TABLES
Para visualizar todas as tabelas em um banco de dados, utilize o comando SHOW TABLES.
Exemplo:
SHOW TABLES;
Comando DESC
Para visualizar a estrutura de uma tabela, utilize o comando DESC (ou DESCRIBE).
Exemplo:
DESC clientes;

Вам также может понравиться