Linguagem SQL
Linguagem SQL
Índice
SQL .........................................................................................................................................................2
Comandos sql: ...................................................................................................................................2
DDL - Data Definition Language:......................................................................................................2
DML - Data Manipulation Language: ...............................................................................................2
DCL - Data Control Language: ..........................................................................................................2
DQL - Data Query Language:............................................................................................................2
Desenvolver Base de dados ...................................................................................................................3
Sintaxe ...............................................................................................................................................3
Tipos de dados ...................................................................................................................................4
Criar Base de dados ...........................................................................................................................7
Eliminar Base de dados ......................................................................................................................7
Criar tabelas .......................................................................................................................................7
Restrições (Constraints) SQL..............................................................................................................8
Foreign Key - Propagação de Update e Delete de registos .............................................................10
Excluir registos na tabela mãe .....................................................................................................10
Atualizar registos na tabela mãe ................................................................................................11
Criar tabela usando outra tabela .....................................................................................................11
Eliminar Tabela ................................................................................................................................11
Adicionar colunas a uma tabela ......................................................................................................12
Remover uma coluna de uma tabela ..............................................................................................12
Alterar uma coluna de uma tabela ..................................................................................................12
Inserir dados na tabela ....................................................................................................................13
Inserir dados a partir de outra tabela .........................................................................................13
Atualizar dados da tabela ................................................................................................................13
Apagar dados de uma tabela ...........................................................................................................14
Índices ..............................................................................................................................................19
Transações ...........................................................................................................................................20
O comando ROLLBACK.................................................................................................................21
Privilégios e controlo de acessos .........................................................................................................22
Revoke .............................................................................................................................................22
Criar logins .......................................................................................................................................23
Criar utilizadores ..............................................................................................................................25
Resumo Sintaxe: ..............................................................................................................................26
SQL
SQL significa Structured Query Language, e é uma linguagem que permite armazenar,
manipular e retirar dados guardados em base de dados relacionais.
No entanto, cada um utiliza um dialeto diferente : o MS SQL Server usa o T-SQL, o Oracle
usa PL/SQL, o MS Access é chamado de JET SQL (native format) etc.
Comandos sql:
Comando Descrição
CREATE Cria uma nova tabela, uma vista de uma tabela ou outro objeto na base de dados
DROP Elimina uma tabela inteira, uma vista de uma tabela ou outro objeto na base de
dados
Comando Descrição
Comando Descrição
Comando Descrição
SELECT Retorna determinados registos de uma ou mais tabelas
Campo
Cada tabelas é dividida em entidades ou campos. Cada coluna de uma tabela representa
um campo.
Registo
Cada linha de uma tabela composta de dados é chamada de registo.
NULL Value
Um valor NULL numa tabela é um valor num campo que parece estar em branco, o que
significa que um campo com um valor NULL é um campo sem valor.
É muito importante entender que um valor NULL é diferente de um valor zero ou um
campo que contém espaços.
Um campo com um valor NULL é um campo que foi deixado em branco quando se gravou
a base de dados
Sintaxe
O SQL é regido de um conjunto exclusivo de regras e diretrizes denominadas Sintaxe.
Todas as instruções SQL começam com qualquer uma das palavras-chave como
SELECT, INSERT, UPDATE, DELETE, ALTER, DROP, CREATE, USE, SHOW e todas as
instruções terminam com um ponto-e-vírgula (;).
Criar tabelas
Para trabalharmos com BD, precisamos das tabelas que armazenam os dados. Para isso,
precisamos criá-las, de acordo com a estrutura abaixo:
Exemplo:
create table Cliente(
nome varchar(30) Not Null,
morada varchar(50)
);
Exemplo MYSQL:
Exemplo de NULL
CREATE TABLE FUNCIONARIOS(
ID INT NOT NULL,
NOME VARCHAR (20) NOT NULL,
IDADE INT NOT NULL,
MORADA CHAR (25) ,
SALARIO DECIMAL (18, 2),
);
Exemplo de DEFAULT:
create table produtos (
produto_no integer,
descricao text,
preco numeric default 9.99
);
Exemplo de Check:
CREATE TABLE produtos3 (
produto_no integer,
descricao text, preco
numeric CONSTRAINT preco_positivo CHECK (preco > 0)
);
exemplo de check 2:
CREATE TABLE pessoa(
codigo int PRIMARY KEY,
modelo varchar(255) NOT NULL,
check (modelo IN (‘A1’, ‘A2’, ‘A3’))
);
Exemplo de UNIQUE
SQL SERVER
CREATE TABLE produtos6 (
cod_prod integer UNIQUE,
nome text,
preco numeric
);
MYSQL
CREATE TABLE produtos7(
cod_prod integer,
nome text,
preco numeric,
UNIQUE (cod_prod)
);
MYSQL
CREATE TABLE FUNCIONARIOS(
ID INT NOT NULL,
NOME VARCHAR (20) NOT NULL,
IDADE INT NOT NULL,
MORADA CHAR (25) ,
SALARIO DECIMAL (18, 2),
PRIMARY KEY (ID)
);
Chaves compostas:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT PK_Person PRIMARY KEY (ID,LastName)
)
Exemplo de foreignkey:
SQL SERVER
MYSQL:
CREATE TABLE pedidos (
cod_pedido integer PRIMARY KEY,
cod_prod integer, quantidade integer,
PRIMARY KEY (cod_pedido),
FOREIGN KEY (cod_prod) REFERENCES Produtos(cod_prod)
É possível realizar uma cópia de uma tabela. A nova tabela tem a mesma definição de
colunas. Todas as colunas ou determinadas colunas podem ser selecionadas. Quando se
cria uma nova tabela com base noutra, a nova tabela fica com os dados da antiga tabela.
Syntax:
Exemplo:
select * into copia_produtos from produtos;
Eliminar Tabela
O comando drop permite eliminar a tabelas, as definições, os índices e todos os dados
existentes na tabela.
sintaxe:
DROP TABLE table_name;
MYSQL:
ALTER TABLE table_name MODIFY COLUMN column_name datatype;
Se formos inserir valores em todas as colunas não precisamos especificar as colunas, mas
devemos colocar os valores pela ordem dos campos da tabela.
Sintaxe:
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
Exemplo:
INSERT INTO FUNCIONARIOS (ID,NOME,IDADE,MORADA,SALARIO) VALUES (6,
'Ana', 22, 'MP', 1500.00 );
Exemplo:
UPDATE FUNCIONARIOS SET IDADE = 25 WHERE ID = 6;
Se não utilizar a cláusula where para identificar a linha, todos os dados serão removidos.
Exemplo:
DELETE FROM FUNCIONARIO WHERE ID = 6;
Function Description
STUFF Deletes a part of a string and then inserts another part into
the string, starting at a specified position
TRANSLATE Returns the string from the first argument after the
characters specified in the second argument are translated
into the characters specified in the third argument.
UNICODE Returns the Unicode value for the first character of the input
expression
Function Description
Function Description
DATEFROMP Returns a date from the specified parts (year, month, and
ARTS day values)
GETUTCDATE Returns the current database system UTC date and time
MONTH Returns the month part for a specified date (a number from
1 to 12)
Function Description
Índices
O índice ou INDEX é usado para criar tabelas específicas para que os database search
engines retirem a informação de forma muito mais rápida, criando um apontador para os
dados da tabela.
O índice pode ser criado de forma única ou através de um grupo de colunas de uma
tabela. Quando o índice é criado, é atribuído um ROWID para cada linha antes de
manipular os dados.
São especialmente utilizados para manipular base de dados de grandes dimensões.
Por exemplo, se deseja fazer referência a todas as páginas de um livro que falam de um
determinado assunto, cria um índice que lista todos os tópicos por ordem alfabética e
posteriormente é encaminhado para um ou mais números de página específicos.
Sintaxe básica:
CREATE INDEX index_name
ON table_name ( column1, column2.....);
Exemplo:
Imaginando que temos a seguinte tabela:
CREATE TABLE CUSTOMERS(
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25) ,
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);
E queremos criar um índice das idades para otimizar uma pesquisa sobre uma
determinada idade faríamos:
CREATE INDEX idx_age
ON CUSTOMERS ( AGE );
Transações
Uma transação é uma única unidade de trabalho. Se uma transação tiver êxito,
todas as modificações de dados feitas durante a transação estarão confirmadas e
se tornarão parte permanente do banco de dados. Se uma transação encontrar
erros e precisar ser cancelada ou revertida, todas as modificações de dados serão
apagadas ou seja ou faz tudo ou não faz nada.
É importante controlar as transações para garantir a integridade dos dados e lidar com
erros da base de dados.
O Comando COMMIT é o comando usado para salvar as alterações invocadas por uma
transação para a base de dados.
Estes comandos são usados apenas com os comandos DML INSERT, UPDATE e
DELETE.
Não podem ser usados ao criar ou eliminar tabelas porque essas operações são
automaticamente realizadas na base de dados.
O comando ROLLBACK
O comando ROLLBACK é o comando transacional usado para desfazer transações que
ainda não foram guardadas na base de dados.
O comando ROLLBACK só pode ser usado para desfazer transações desde o último
COMMIT ou ROLLBACK
Exemplo @@ERROR:
BEGIN TRANSACTION
As vezes as mensagens de erro não são muito claras para os utilizadores e pensando
nisso, procurando ajudar os desenvolvedores e administradores de sistema foi introduzido
no SQL a função ‘RAISERROR’, que permite personalizar as mensagens de erro
facilitando algum suporte.
Exemplo RAISERROR
BEGIN TRANSACTION
UPDATE FROM TbContas
SET NuSaldo= 10.000
WHERE NuSaldo < 50
IF @@ERROR = 0
COMMIT
ELSE
ROLLBACK
RAISERROR(5001,16,1,’ERRO NA ALTERACAO DO SALDO DA TABELA TBCONTA’) END
Privilégios e controlo de acessos
Os comandos T-sql GRANT e REVOKE são utilizados para atribuir e retirar permissões,
respectivamente, na utilização de recursos de tabelas.
GRANT = utilizado para atribuir permissão ao utilizador, para realizar uma operação;
REVOKE = remove a permissão GRANT.
Sintaxe:
GRANT privilege_name
ON object_name
TO {user_name |PUBLIC |role_name}
[WITH GRANT OPTION];
ou
Exemplos:
USE base_dados_xpto;
GRANT SELECT ON sql_logins TO Ana1;
GRANT VIEW SERVER STATE to Ana1;
Revoke
Remove uma permissão concedida ou negada anteriormente.
Sintaxe
REVOKE privilege_name
ON object_name
FROM {user_name |PUBLIC |role_name}
Exemplos:
REVOKE DELETE ON empregados FROM anderson;
A instrução CREATE LOGIN cria uma identidade usada para se conectar a uma
instância do SQL Server. O Login é então mapeado para um utilizador da base de
dados (antes de criar um utilizador no SQL Server, deve primeiro criar um Login).
Sintaxe
Exemplos:
CREATE LOGIN joana
WITH PASSWORD = 'pwd123';
Disable Login
ALTER LOGIN joana DISABLE;
Enable Login
ALTER LOGIN joana ENABLE;
Unlock Login
ALTER LOGIN joana
WITH PASSWORD = 'tictac'
UNLOCK;
Rename Login
ALTER LOGIN joana
WITH NAME = checkyourmath;
Delete Login
DROP LOGIN login_name;
Criar utilizadores
A instrução CREATE USER cria um utilizador da base de dados para fazer login no
SQL Server. Um utilizador é mapeado para um Login, que é uma identidade usada
para se conectar a uma instância do SQL Server.
Sintaxe
Exemplo:
CREATE USER joana FOR LOGIN joana;
Change Password
ALTER LOGIN joana
WITH PASSWORD = 'tictac';
Delete User
DROP USER user_name;
Resumo Sintaxe:
SQL IN Clause:
SELECT column1, column2....columnN
FROM table_name
WHERE column_name IN (val-1, val-2,...val-N);