SQL (Structured query language)

  • geralmente usado em bancos relacionais;
  • feito pela IBM para implementar o modelo relacional;
  • SQL é padronizado pela ANSI e ISO, sendo que a versão padrão é chamada de SQL ANSI.

DDL

  • linguagem que define a estrutura do banco;
  • comandos: create, alter, drop, comment;
  • os comandos são usados para manipular objetos como: tables, procedures, views, functions, triggers, etc.

DML

  • manipulação dos dados;
  • comandos: insert, update, delete, etc.

DQL

  • consulta dos dados;
  • comando: select.

DCL (data control language)

  • controla acessos;
  • comandos: grant, revoke;
  • isso pode ser usado para deixar um usuário acessar, apenas um table, apenas algumas colunas, etc.

DTL (data transaction language)

  • define um escopo de transformações do banco que só seria aplicado quando todas as transações forem feitas com sucesso;
  • comandos: Begin transaction, commit, rollback.
  • Isso garante que todas as transações sejam feitas de forma integra, mesmo que aconteçam problemas, como falta de energia.
#cria um banco

CREATE DATABASE test;
#ou
CREATE SCHEMA test; #(a partir da V8 do mysql)


# muda para o banco criado
USE test;


# criando tabelas
CREATE TABLE test1 (
  id INT UNSIGNED NOT NULL,
  name VARCHAR(80) NOT NULL,
  age INT UNSIGNED NULL,
  sex CHAR(1) NULL 'M',
  
  
  #chaves
  CONSTRAINT pk_test1_id PRIMARY KEY(id),
  CONSTRAINT chk_test1_age CHECK(age > 18), #garante que todos sejam 18+
  CONSTRAINT fk_test1_test2 FOREIGN KEY(id) #chave estrangeira
    REFERENCES test2(id)
);


CREATE TABLE test2 (
  id INT UNSIGNED NOT NULL,
  card_number CHAR(16) NOT NULL
);


#Mostra os tipos das colunas e suas configurações
DESCRIBE test1;
DESCRIBE test2;
#ou
DESC test1;
DESC test2;

UNIQUE

  • constraint semelhante à PK;
  • não aceita valores duplicados;
  • aceita NULL.

CHECK

  • constraint;
  • defini uma relação entre uma coluna e um valor (que pode ser o de outra coluna também).

Alguns tipos de dados

  • TINYINT → 1 byte;
  • SMALLINT → 2 bytes;
  • MEDIUMINT → 3 bytes;
  • INT → 4 bytes;
  • BIGINT → 8 bytes;
  • DECIMAL → DECIMAL(N, M), N é total de números com default em 10, M é o total de números depois da vírgula com default em 0;
  • FLOAT → possui mesmo formato do DECIMAL;
  • DOUBLE;
  • DATE → formato YYYY-MM-DD;
  • DATETIME → data e hora no formato YYYY-MM-DD HH:MI:SS
  • CHAR → string com tamanho fixo( CHAR(N) );
  • VARCHAR → string com tamanho variável ( VARCHAR(N) ), apenas os espaços ocupados serão usados;
  • TEXT;
  • BLOB → binários;
  • BIGBLOB;
  • BIGTEXT;