DDL: Linguagem de Definição de Dados

-Criação de entidades -Constraints -Chaves primárias e estrangeiras -Exclusão e alteração -Tipos de dados

1

CREATE
‡ CREATE DATABASE: cria uma BD vazio
± Sintaxe
‡ CREATE DATABASE database_name

± Exemplo
‡ CREATE DATABASE tads_3m

‡ CREATE TABLE: adiciona tabelas ao BD
± Sintaxe
‡ CREATE TABLE table_name (column_name1 data_type, ..., column_nameN data_type)

± Exemplo

‡ CREATE TABLE Persons ( P_Id int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) )

2

Tipos de dados
‡ Strings
± char(n), varchar(n), text

‡ Binário
± bit, binary(n), varbinary(n), image

‡ Números
± tinyint, smallint, int, bigint, decimal(p,s), money, smallmoney, float(n), real

‡ Data
± datetime, smalldatetime, date, time, timestamp
3

Constraints
‡ Define restrições aos dados que serão armazenados em uma tabela
± NOT NULL ± UNIQUE ± PRIMARY KEY ± FOREIGN KEY ± CHECK ± DEFAULT
4

NOT NULL
‡ Define que os campos de uma coluna não podem receber valores nulos em seu registro
± Se for omitida, o padrão é permitir campos nulos

‡ Exemplo

CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )

5

UNIQUE
‡ Define que a coluna deve conter campos únicos para uma tabela
± A chaves primárias possuem uma restrição unique ± Várias colunas podem ser definidas como unique

‡ Exemplo
CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName) )
6

AUTO INCREMENT
‡ Incrementa o valor de um campo de um novo registro quando este é inserido em uma tabela ‡ Sintaxe
± CREATE TABLE Persons ( P_Id int PRIMARY KEY IDENTITY {(start,inc)}, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )

‡ Exemplo
± INSERT INTO Persons (FirstName,LastName) VALUES ('Lars','Monsen')
7

PRIMARY KEY
‡ Identifica cada linha de forma única numa tabela
± Contém uma restrição unique implícita ± Não pode conter valores nulos (not null)
CREATE TABLE Persons ( P_Id int NOT NULL PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
8

FOREIGN KEY
‡ Uma chave estrangeira em uma tabela aponta para uma chave primária de outra tabela
± Os valores presentes nos campos foreign keys devem estar presentes na coluna primary key da tabela referenciada
CREATE TABLE Orders ( O_Id int NOT NULL PRIMARY KEY, OrderNo int NOT NULL, P_Id int FOREIGN KEY REFERENCES Persons(P_Id) )

9

CHECK
‡ Define o intervalo de dados que pode ser utilizado nos campos de uma coluna
CREATE TABLE Persons ( P_Id int NOT NULL CHECK (P_Id>0), LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )

10

DEFAULT
‡ Define um valor padrão para ser inserido em um campo quando o mesmo não for informado CREATE TABLE Persons
( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) DEFAULT 'Sandnes' )

‡ Funções do sistema podem ser combinadas como valores padrão
CREATE TABLE Orders ( O_Id int NOT NULL, OrderNo int NOT NULL, P_Id int, OrderDate date DEFAULT GETDATE() )

11

CREATE INDEX
‡ Possibilita a criação de índices para a tabela
± Acesso rápido sem ler a tabela inteira para achar um registro específico ± Não estão visíveis, são utilizados na execução de queries ± Devem ser criados em tabelas/colunas que receberão muitos acessos

‡ Sintaxe
± CREATE INDEX index_name ON table_name (column_name)

‡ Exemplo
± CREATE INDEX PIndex ON Persons (LastName , FirstName)
12

DROP
‡ DROP DATABASE database_name ‡ DROP TABLE table_name
± TRUNCATE TABLE table_name ± ALTER TABLE Persons DROP CONSTRAINT chk_Person ± ALTER TABLE Persons ALTER COLUMN City DROP DEFAULT

‡ DROP INDEX table_name.index_name ‡ DROP CONSTRAINTS
± ALTER TABLE Persons DROP CONSTRAINT uc_PersonID ± ALTER TABLE Persons DROP CONSTRAINT pk_PersonID ± ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders
13

ALTER TABLE
‡ Utilizado para adicionar1, excluir2 ou modificar3 colunas em uma tabela existente
± 1ALTER TABLE table_name ADD column_name datatype ± 2ALTER TABLE table_name DROP COLUMN column_name ± 3ALTER TABLE table_name ALTER COLUMN column_name datatype

‡ É possível também alterar o tipo de dados
± ALTER TABLE Persons ALTER COLUMN DateOfBirth year
14