sql structured query language

43
SQL Structured Query Language Principais Comandos

Upload: thisbe

Post on 21-Jan-2016

64 views

Category:

Documents


1 download

DESCRIPTION

SQL Structured Query Language. Principais Comandos. Estrutura dos bancos de dados. Todo banco de dados do SQL Server é constituído de dois ou mais arquivos físicos de sistema operacional. Podem haver três tipos diferentes de arquivos físicos:. Estrutura dos bancos de dados. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: SQL   Structured Query  Language

SQL Structured Query

Language

Principais Comandos

Page 2: SQL   Structured Query  Language

Estrutura dos bancos de dados

Todo banco de dados do SQL Server é constituído de dois ou mais arquivos físicos de sistema operacional. Podem haver três tipos diferentes de arquivos físicos:

Page 3: SQL   Structured Query  Language

Estrutura dos bancos de dados

Arquivos primários: Todo banco de dados inclui ao menos um arquivo primário, que é feito para armazenar todos os objetos de banco de dados, tais como tabelas e índices.

Page 4: SQL   Structured Query  Language

Estrutura dos bancos de dados

Arquivo secundário: Um banco de dados só terá um arquivo secundário se o arquivo primário não for grande o suficiente para armazenar todos os dados. Um banco de dados pode ter um, ou muitos arquivos secundários.

.

Page 5: SQL   Structured Query  Language

Estrutura dos bancos de dados

Arquivo de log: Todo banco de dados tem um arquivo de log, que é usado para registrar todas informações antes que elas sejam escritas em um arquivo primário ou secundário.

Page 6: SQL   Structured Query  Language

Create Database Create Database = Nome do banco de dados ON -******** - definição do arquivo primário -********** (NAME = Nome_Lógico_arquivo_primário. FILENAME= ‘Caminho p/ gravar o arquivo ex: c:\Arquivos de

programas\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\RACADEMICO.mdf‘

SIZE = Tamanho inicial MAXSIZE = tamanho máximo admitido FILEGROWTH = incremento, taxa de crescimento)

Page 7: SQL   Structured Query  Language

-******** - definição arquivo secundário -********* (NAME = Nome_Lógico_arquivo_secundário. FILENAME= ‘Caminho p/ gravar o arquivo ex: c:\

Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\RACADEMICO.ndf‘

SIZE = Tamanho inicial MAXSIZE = tamanho máximo admitido FILEGROWTH = incremento, taxa de crescimento)

Page 8: SQL   Structured Query  Language

-******** - definição arquivo de log -********* LOG ON (NAME = Nome_Lógico_arquivo_LOG. FILENAME= ‘Caminho p/ gravar o arquivo ex: c:\Arquivos de

programas\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\RAACADEMICO.ldf‘

SIZE = Tamanho inicial MAXSIZE = tamanho máximo admitido FILEGROWTH = incremento,taxa de crescimento)

Page 9: SQL   Structured Query  Language

Criar banco RACADEMICO CREATE DATABASE RACADEMICO ON PRIMARY ( NAME = 'RACADEMICO', FILENAME = 'C:\Arquivos de programas\Microsoft SQL Server\

MSSQL.1\MSSQL\DATA\RACADEMICO.mdf' , SIZE = 7168KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = 'RACADEMICO_log', FILENAME = 'C:\Arquivos de programas\Microsoft SQL Server\

MSSQL.1\MSSQL\DATA\RACADEMICO_log.LDF' , SIZE = 1792KB , MAXSIZE = UNLIMITED , FILEGROWTH = 10%)

Page 10: SQL   Structured Query  Language

Alterar BancoADD FILE USE master Go ALTER DATABASE RACADEMICO ADD FILE ( NAME = 'RACADEMICOSEC', FILENAME = 'C:\Arquivos de programas\Microsoft SQL Server\

MSSQL.1\MSSQL\DATA\RACADEMICOSEC.Ndf' , SIZE = 7168KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )

Page 11: SQL   Structured Query  Language

Alterar BancoMODIFY FILE

USE master Go ALTER DATABASE RACADEMICO MODIFY FILE ( NAME = 'RACADEMICOSEC', SIZE = 25MB)

Page 12: SQL   Structured Query  Language

Alterar BancoREMOVE FILE

USE master Go ALTER DATABASE RACADEMICO REMOVE FILE RACADEMICOSEC Go

Page 13: SQL   Structured Query  Language

Remover BancoDROP DATABASE

DROP DATABASE RACADEMICO

Page 14: SQL   Structured Query  Language

CRIAR TABELASCREATE TABLE

SINTAXE CREATE TABLE nome da tabela -definição dos campos (Campo1 tipo de campo NULL ou NOT NULL Campo2 tipo de campo NULL ou NOT NULL Campo3 tipo de campo NULL ou NOT NULL)

Page 15: SQL   Structured Query  Language

exemplo CREATE TABLE aluno1( aluno_codigo numeric(18, 0) NOT NULL, aluno_nome nvarchar(50) NOT NULL, Aluno_fone numeric(18, 0) NULL, Aluno_cic numeric(18, 0) NULL, aluno_rg nvarchar(15) NULL, aluno_email varchar(30) NULL, aluno_datacadastro datetime NOT NULL DEFAULT (getdate()), aluno_pais varchar(20) DEFAULT ('Brasil'))

Page 16: SQL   Structured Query  Language

DELETAR TABELADROP TABLE Sintaxe: DROP TABLE [[banco_dados.]Owner.]nome_tabela Onde: banco_dados é o nome do banco de dados a que a

tabela pertence. Essa opção é opcional, ela será usada somente

quando se estiver posicionado num determinado banco de dados e se deseja excluir a tabela de outro banco de dados.

nome_tabela é o nome da tabela que se deseja remover.

Page 17: SQL   Structured Query  Language

DELETAR TABELADROP TABLE

Exemplo:

Drop Table aluno1 ou Drop Table racademico.dbo.aluno1

Page 18: SQL   Structured Query  Language

Alterar TabelaALTER TABLE

Colunas podem ser acrescentadas, modificadas ou excluídas.

Por exemplo, o nome da coluna, comprimento, tipo de dados, precisão, escala, e o fato de aceitar ou não valores nulos, podem todos ser mudados, embora existam algumas restrições.

Restrições PRIMARY KEY e FOREIGN KEY podem ser acrescentadas ou excluídas.

Restrições UNIQUE e CHECK e definições DEFAULT podem ser acrescentadas ou excluídas.

Page 19: SQL   Structured Query  Language

Alterar TabelaALTER TABLE Sintaxe: ALTER TABLE [banco_dados.[owner.]]nome_tabela Onde: banco_dados é o nome do banco de dados a que a

tabela pertence. Essa opção é opcional, ela será usada somente

quando se estiver posicionado num determinado banco de dados se e deseja alterar a tabela de outro banco de dados.

nome_tabela é o nome da tabela que deseja alterar. nome_coluna é a coluna que se quer alterar.

Page 20: SQL   Structured Query  Language

Adicionar coluna tabela

Sintaxe ALTER TABLE nome_da_tabela ADD nome_do_campo tipo_dado

Exemplo ALTER TABLE ALUNO1 ALTER TABLE ALUNO1 ADD aluno_mae varchar(50) NOT NULL GO

Page 21: SQL   Structured Query  Language

Excluir Campo coluna

sintaxe ALTER TABLE nome_da_tabela DROP COLUMN nome_da_coluna Exemplo ALTER TABLE ALUNO1 DROP COLUMN aluno_mae go

Page 22: SQL   Structured Query  Language

Índices

Consiste de uma estrutura de dados que contém ponteiros ordenados para os dados.

É um mecanismo que permite acesso ados dados com mais rapidez

O SQL Server usa índices [indexes ou indices] automaticamente em várias situações para acelerar a pesquisa e atualização de dados, como por exemplo onde houverem restrições [constraints] PRIMARY KEY e UNIQUE.

Page 23: SQL   Structured Query  Language

Tipos de Índices Clustered Um índice clustered [agrupado] é aquele onde a ordem física das

páginas de dados é a mesma ordem do índice. A cada inserção, numa tabela que tem um índice agrupado, a ordem física dos dados pode mudar. Só pode haver um único índice agrupado por tabela.Se você não especificar o indice Clustered a sua tabela será criada com o índice Non-clustered

Recomenda-se utilizar índice agrupado [Clustered] nos seguintes casos:

Os dados das colunas são acessados frequentemente. Em colunas usadas com ORDER BY e GROUP BY. Em colunas que são alteradas frequentemente. Em chaves primárias, contanto que não haja outras colunas melhores. Em chaves estrangeiras, porque geralmente elas não são únicas.

Page 24: SQL   Structured Query  Language

Tipos de Índices Non-clustered Um índice non-clustered [não-agrupado] possui uma ordem física

diferente da ordem dos dados. Existe um nível a mais, de ponteiros para os dados, que permite

acessá-los indiretamente. Pode haver mais de um índice não-agrupado na tabela, até o máximo

de 249 índices, incluindo qualquer índice criado com restrições PRIMARY KEY ou UNIQUE.

Quando o tipo de índice da tabela não for especificado ele será criado como um índice Nonclustered.

É recomendado utilizar índices não agrupados [Nonclustered] para: Colunas que são usadas nas claúsulas ORDER BY e GROUP BY. Colunas que são frequentemente utilizadas como condições na

clausula WHERE.

Page 25: SQL   Structured Query  Language

Características dos Índices

Único Um índice único [unique] é aquele onde os valores da chave não

podem ser repetidos, ou seja, os valores das colunas do índice, tomados em conjunto, não podem se repetir. Um índice único pode ser agrupado ou não-agrupado.

Por exemplo, na tabela aluno, poderia ser criado um índice único para a coluna aluno_codigo, significando que não pode haver valores duplicados nessa coluna. Se você tenta inserir dados em uma tabela com valores repetidos para aluno_codigo, a inserção falha.

Quando da criação de um índice único, não pode haver valores duplicados nas colunas do índice. Se houver, a criação do índice falha e você deve alterar as colunas antes de tentar criá-lo novamente.

Page 26: SQL   Structured Query  Language

Características dos Índices

Composto Um índice composto é aquele formado por

duas ou mais colunas. Esse tipo de índice é útil quando duas ou mais colunas são sempre pesquisadas em conjunto.

Page 27: SQL   Structured Query  Language

CREATE INDEX CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX nome_indice ON tabela (nome_coluna1 [, nome_coluna2, ...n]) ONDE: nome_indice é o nome do índice que deseja criar. tabela é o nome da tabela que deseja criar o índice. nome_coluna1 é o nome da coluna que irá fazer parte do índice.Se o índice

tiver mais de uma coluna acrescente a vírgula e coloque o nome das outras colunas.

UNIQUE indica se o índice será único. É opcional. Se o índice fo único você pode acrescentar a opção IGNORE_DUP_KEY [ignorar chaves duplicadas].

CLUSTERED indica se o índice será agrupado. Com o índice agrupado e a opção UNIQUE

CREATE NONCLUSTERED INDEX nomealuno ON aluno1 (aluno_nome)

Page 28: SQL   Structured Query  Language

INTEGRIDADE DOS DADOSCONSTRAINTS (restrições) A propriedade IDENTITY Uma coluna criada com a propriedade IDENTITY tem um valor

único que é gerado automaticamente pelo sistema. Somente uma coluna pode ter essa propriedade. Exemplo: create table aluno2 (aluno2_codigo int NOT NULL IDENTITY, aluno2_nome varchar(60) NOT NULL) Uma coluna IDENTITY não aceita um valor explicitamente

inserido. Ao inserir dados na tabela, a coluna deve ser omitida.

Page 29: SQL   Structured Query  Language

Definindo e usando restrições [constraints]

Uma restrição [constraint] é uma propriedade de uma coluna usada para reforçar a integridade de dados. Geralmente restrições são definidas quando a tabela é criada (com CREATE TABLE), mas podem também ser definidas ou retiradas quando a tabela já contém dados (com o comando ALTER TABLE). Se um comando de alteração (INSERT ou UPDATE) não satisfaz uma das restrições, o comando é cancelado.

Page 30: SQL   Structured Query  Language

Definindo e usando restrições [constraints]

Toda restrição tem um nome, que você pode informar nos comandos CREATE TABLE e ALTER TABLE. Se você não informar um nome, o SQL gera um automaticamente

De forma geral, a sintaxe para uma restrição é: CONSTRAINT nome_da_restrição definição Onde a definição inicia com as palavras PRIMARY

KEY, UNIQUE, CHECK, FOREIGN KEY ou DEFAULT. A palavra CONSTRAINT e o nome_da_restrição podem ser omitidos. Nesse caso, o nome será gerado automaticamente.

Page 31: SQL   Structured Query  Language

Definindo e usando restrições [constraints]

SINTAXE CONSTRAINT nome_da_restrição definição Onde a definição inicia com as palavras PRIMARY KEY UNIQUE CHECK FOREIGN KEY. A palavra CONSTRAINT e o nome_da_restrição

podem ser omitidos. Nesse caso, o nome será gerado automaticamente.

Page 32: SQL   Structured Query  Language

Definindo e usando restrições [constraints]

Chave primária [PRIMARY KEY] A chave primária [primary key] de uma tabela é uma

coluna ou seqüência de colunas que identificam unicamente uma linha dentro da tabela.

seu valor não pode ser repetido para outras linhas. Ao definir uma chave primária, automaticamente é criado um índice na tabela. Só pode haver uma chave primária na tabela.

Page 33: SQL   Structured Query  Language

Definindo e usando restrições [constraints]

Ex: Definida quando da criação da tabela create table ALUNO1 ( aluno_codigo int not null primary key, aluno_Nome varchar(50) null, )

Page 34: SQL   Structured Query  Language

Definindo e usando restrições [constraints]

Ex: Definida após a criação da tabela create table ALUNO1 ( aluno_codigo int not null, aluno_Nome varchar(50) null, ) alter table ALUNO1 add primary key (aluno_codigo)

Page 35: SQL   Structured Query  Language

Definindo e usando restrições [constraints] Unicidade [UNIQUE] Uma restrição UNIQUE em uma coluna ou grupo de colunas

determina que o seu valor deve ser único na tabela. Esse tipo de restrição é usado para chaves alternadas, ou seja,

valores que se repetem na tabela além da chave primária. Pode haver várias restrições UNIQUE na tabela e as colunas de uma restrição UNIQUE permitem valores nulos.

Esse tipo de restrição pode ser criada com exatamente a mesma sintaxe do PRIMARY KEY, por exemplo (não execute):

alter table aluno1 add unique nonclustered (aluno_codigo)

Page 36: SQL   Structured Query  Language

Definindo e usando restrições [constraints] Default Um default pode ser especificado na forma de restrição. Na definição da tabela, como já vimos, é possível fazer isso: create table aluno1 ( Aluno_datacadastro datetime default (getdate()), Aluno_país varchar(20) default 'Brasil')

acrescentado com o comando ALTER TABLE : alter table aluno1 ( add constraint alunopais default 'Brasil' for aluno_pais )

Page 37: SQL   Structured Query  Language

Definindo e usando restrições [constraints]

Verificação [CHECK] Uma restrição CHECK verifica os valores que estão sendo

inseridos. Pode fazer referência a uma ou mais colunas da tabela. Por exemplo, vamos verificar, na tabela aluno1, se aluno_nome e

aluno_email são informados

Ex; criar uma restrição que impede de inserir o valor de aluno_email, se aluno_nome não foi informado:

alter table aluno1 add constraint checaremail check (not (aluno_email is not null

and aluno_nome is null))

Page 38: SQL   Structured Query  Language

Definindo e usando restrições [constraints] Para testar, tente inserir uma linha com

aluno_email = ‘email@teste' e aluno_nome não informado (ou informado = NULL).

Note que a expressão do CHECK deve estar sempre entre parênteses.

Ums restrição CHECK especifica uma condição de pesquisa Booleana (que retorna verdadeiro ou falso) que é aplicada a todos os valores inseridos para a coluna. Todos os valores que não retornem verdadeiro [TRUE] são rejeitados. Você pode especificar várias restrições CHECK para cada coluna.

Page 39: SQL   Structured Query  Language

Definindo e usando restrições [constraints] Chave estrangeira [FOREIGN KEY]

Uma chave estrangeira [foreign key] é uma restrição de integridade referencial.

Ela consiste de uma coluna ou grupo de colunas cujo valor deve coincidir com valores de outra tabela.

Ex: Referenciar a Tabela Alunocurso com a tabela aluno e a tabela curso

alter table alunocurso add foreign key (aluno_codigo) references aluno(aluno_codigo), foreign key (curso_codigo) references curso(curso_codigo)

Page 40: SQL   Structured Query  Language

Definindo e usando restrições [constraints]

create table alunocurso1 (aluno_codigo numeric constraint FK_aluno_codigo foreign key

references aluno, curso_codigo numeric Constraint FK_curso_codigo foreign key

references curso)

alter table alunocurso add foreign key (aluno_codigo) references luno(aluno_codigo), foreign key (curso_codigo) references curso(curso_codigo)

Page 41: SQL   Structured Query  Language

Definindo e usando restrições [constraints] Excluindo constraints ALTER TABLE ALUNOS1 DROP CONSTRAINT FK_aluno_codigo, DROP CONSTRAINT

Page 42: SQL   Structured Query  Language

Instrução insert O comando INSERT insere linhas em uma tabela. Sintaxe INSERT [INTO] nome_tabela (colunas) VALUE (valores) Onde: nome_tabela é o nome da tabela que deseja incluir

os dados. colunas é o nome das colunas da tabela que deseja

acrescentar os dados. valores é o conteúdo de cada coluna.

Page 43: SQL   Structured Query  Language

Instrução insert

O comando INSERT insere linhas em uma tabela. Sintaxe insert into curso (curso_codigo, curso_nome) Values (1, ‘Sistemas de Informação’) Ou insert into curso Values (1, ‘Sistemas de Informação’)