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;