SQL
Structured Query Language.
-
SQL - Structured Query Language
- SQL é adotado como linguagem padrão para os bancos de dados relacionais atuais.
- Exemplo de SGBD: MySQL, PostgreSQL, Microsoft SQL Server, ORACLE.
- Responsável por: definir, manipular, controlar, transacionar e recuperar dados junto ao SGBD (mySQL, etc.).
- DDL: Data Definition Language - Linguagem de Definição de Dados.
Criação, alteração e remoção de estruturas de dados (tabelas constituidas de colunas onde as linhas são constituidas de registros). - DML: Data Manipulation Language - Manipulação de Dados.
Permite a inclusão, atualização e remoção dos registros dentro dessas estruturas de dados. - DCL: Data Control Language - Controle de Dados.
Permite aplicar ou remover acessos aos usuários que se conectam ao SGBD. - DTL: Data Transaction Language - Transição de Dados.
Efetivar ou cancelar transações junto ao SGBD.
Cada instrução executada em um banco de dados inicia e finaliza uma transação, essa transação pode ser manipulada.
Podemos desfazer uma sequência de intruções contidas em uma transação em função de uma validação.
Por exemplo: instruções estavam sendo executadas porém a validação foi negada, então as instruções daquela transição serão desfeitas. (Realizei uma compra, deu baixa no estoque da empresa, cartão de crédito negado, transação revertida, objeto entrou no estoque novamente). - DQL: Data Query Language - Consulta de Dados.
Nos permite recuperar dados através do estabelecimento de cláusulas, operações lógicas, operações relacionais e ou funções de agregação. - Aplicação web escrita em PHP que serve para acessar e administrar o banco de dados MySQL.
- Acessado através do navegador, onde digita-se as queries para adição, manipulação, remoção de tabelas, etc.
- Tabelas são como planilhas de armazenamento de dados.
- Tipo de variável utilizada por uma coluna de tabela.
1) ID vai utilizar o tipo INT.
2) NAME vai utilizar o tipo CHAR curto de 50 caracteres. - Tipos de dados:
- Campos de Texto:
1) Text: tamanho variável que armazena grande quantidade de texto.
2) Varchar: tamanho variável (você pode falar que o nome pode ter até 100 caracteres, e o espaço em memória separado vai ser somente o tanto que o nome ocupar) que armazena de 0 a 255 caracteres.
3) Char: tamanho fixo (se definir que terá 10 caracteres, será separado 10 espaços de memória para esse tipo, mesmo que não usar todos) que armazena de 0 a 255 caracteres.
Char: otimizado para pesquisa, varchar ocupa menos espaço. - Campos de Números:
1) Int: armazena valores numéricos inteiros: 1, 2, 3.
2) Float: armazena valores numéricos com fração: 1,25 ou 1,333. - Campo de Data e Hora:
1) Date: armazena uma data.
2) Time: armazena uma hora.
3) Datetime: armazena a combinação de data e hora.
- Campos de Texto:
- Predefinido: none (não pode ficar nulo, precisa ter informação), NULL é que pode ficar sem informação (como o resumo do curso).
- Predefinido: o que está "As defined: S" significa que ao criar um novo curso, será setado o ativo como S, de "Sim".
- not null: não pode ser nulo, precisa ter informação.
- null: pode ser nulo.
- ativo_sn char(1) default 'S', significa que irá começar com o status 'S'.
- ALTER TABLE:
1) ADD: inclusão de novo campo em uma tabela.
a) Sintaxe: ALTER TABLE nomeTabela ADD COLUMN nomeColuna VARCHAR(4) NULL;
b) NOT NULL: obrigatório preencher.
c) NULL: não é obrigatório o preencher.
2) CHANGE: alteração do nome do campo e de suas propriedades, como por exemplo o tipo (int, se vai ter valor default, se pode ser NULL ou não).
a) Sintaxe: ALTER TABLE nomeTabela CHANGE nomeAtualColuna nomeDesejadoColuna+tipos INT NULL; (obrigatório colocar os campos)
b) Exemplo: ALTER TABLE tb_funcionarios CHANGE cidadde cidade varchar(50)
3) DROP: remover um campo de uma tabela. - INSERT INTO:
1) Sintaxe: INSERT INTO nomeTabela (colunas) VALUES (valor a ser inserido na coluna, na mesma ordem das colunas).
Exemplo: INSERT INTO tb_cursos(ativo_sn, carga_horaria, data_inicio, id_curso, investimento, nome_curso, resumo)VALUES('S', 1, '20161003', 2, 40, 'Curso Completo do Dev. WEB', 'Aprenda tudo sobre Desenvolvimento WEB.');
2) INSERT INTO com diversos values separados por vírgula:
INSERT INTO tb_pessoas (id,nome,idade,email,estado) VALUES (1,"Reed Knox",37,"augue.Sed@cursus.co.uk","MA"),(2,"Sierra Gilliam",20,"augue@cubiliaCurae.com","SP"),(3,"Tatyana Logan",89,"mail@duiFuscealiquam.com","MA") - Recuperar Dados:
SELECT nomeColuna FROM nomeTabela
Retornar todos as colunas contidas na tabela: SELECT * FROM nomeTabela. - Renomear tabela:
RENAME TABLE nomeAtual TO nomeDesejado - Filtro WHERE
1) Sintaxe: SELECT * FROM nomeTabela WHERE ...
2) Operadores de Comparação (<, >, =):
   a) Selecionar todos os cursos com valor abaixo de 50:
        SELECT * FROM tb_cursos WHERE investimento < 50
   b) Selecionar todos os cursos com valor abaixo de 50 e ID > 1:
        SELECT * FROM tb_cursos WHERE investimento < 50 and id_curso > 1
3) Operadores Lógicos (and, or):
SELECT * FROM tb_cursos WHERE investimento < 50 or id_curso > 1 - UPDATE
1) Sintaxe: UPDATE nomeTabela SET campo = valor WHERE condições
2) Exemplo: UPDATE tb_pessoas SET nome = 'Gustavo Nogueira' WHERE id = 3
3) UPDATES em uma linha: UPDATE tb_pessoas SET nome = 'Gustavo Nogueira', idade = 22, interesse = 'Jogos' WHERE id = 14 - DELETE:
1) Sintaxe: DELETE FROM nomeTabela WHERE condições
2) Exemplo: DELETE FROM tb_pessoas WHERE name = 'Gustavo Nogueira' - Tipos de relacionamentos:
1) 1 para 1.
a) Tabela pricipal: tb_funcionarios, as outras tabelas possuem mais informações sobre esse funcionário, contendo a id_funcionario como Foreign Key, linkando essa tabela a tb_funcionarios e também contendo sua própria ID dentro da tabela.
b) Exemplo:
2) 1 para Vários.
a) Nesse caso, podemos ter várias tabelas de pedido com uma Foreign Key referenciando a Primary Key id_cliente da tabela tb_cliente. Portanto, temos uma tabela principal cliente e várias outras porem ser criadas com diferentes pedidos, utilizando a PK id_cliente para linkar a tb_cliente, utilizando id_cliente como FK nas tabelas de pedido.
3) Vários para Vários.
a) Visto um aluno poder ter vários cursos, e um curso vários alunos, utilizados uma tabela de ligação/auxiliar. Com isso, conseguimos a partir do curso, encontrar seus alunos e a partir do aluno, encontrar seus cursos. - Primary Key:
- Constituida por um ou mais campos que identificam de forma única um registro de uma tabela, como um ID ou identificador.
- Essa é uma informação única que irá diferenciar o registro, importante para formar relacionamentos consistentes entre tabelas.
1) Candidate Key: armazena uma informação única.
2) Composite Key: composta de mais de uma Candidate Key, para criar uma especificação maior.
Exemplo: em um database de um banco, temos para uma conta criada, algumas informações. Cada informação dessa é uma Candidate Key, e quando se faz uma composição delas para buscar uma conta específica, temos uma maior uniqueness. Essa seria a Composite Key, formada por mais de uma Candidate Key. - Foreign Key:
- Referência em uma tabela de uma chave primária de uma outra tabela.
- A partir de uma chave estrangeira, por exemplo, a id_curso na tabela disciplinas, podemos identificar o curso ao qual a disciplina faz referência. - Permitem conectar registros de tabelas diferentes, formando um resultado de pesquisa composto. Ou seja, a nossa consulta retorna registros compostos por diversos atributos em diversas tabelas diferentes, desde que conectadas por um ou alguns atributos em comum.
- Geralmente utilizamos como referências para nossos JOINS os índices das tabelas (PK, FK).
- Left Join: junção entre tabelas cujo ponto de ligação será referência a esquerda.
- a) Exemplo: Visto a tabela da esquerda ser a tb_funcionarios, utilizamos o left join.
Código SQL:
a) tb_funcionarios as f signifca que essa tabela recebe apelido de f.
b) on (f.id_funcionario = fc.id_funcionario) demonstra qual foreign key utilizar de cada tabela.
c) Conexão das tabelas: on (campos que se referenciam, amarram as tabelas, no caso na tabela f e fc será id_funcionario).
d) O resultado final será a exibição de uma pesquisa contendo os dados de todas as tabelas, alinhando por id_funcionario, visto ela estar presente em todas como FK.
e) Para adicionar mais uma tabela no Left Join:
f) Também é possível selecionar somente algumas colunas das tabelas a serem pesquisadas:
- Right Join: junção entre tabelas cujo ponto de ligação será referência a direita.
- Inner Join: junção entre tabelas cujo ponto de ligação será um ponto em comum.
Sub-categorias de Instruções:
Tipos de dados
Exemplo (visual form):
Exemplo SQL:
Relacionamento entre tabelas