Início » SQL Server

Arquivo da categoria: SQL Server

Semana de Webcast – Comunidade Técnica Microsoft de Santa Catarina

Em fevereiro de 2012, especificamente entre os dias 06/02 até 10/02, acontecerá a Semana de Webcast da Comunidade Microsoft de Santa Catarina.

Agenda:

Segunda feira

Palestrante: Shannon Lowder (@shannonlowder)
Palestra: SQL Design Patterns
Descrição: There are certain problems you’ll face again and again as a SQL Developer: removing duplicate data from tables, updating and inserting data from web forms into tables, and working with cursors. During this session I’ll walk you through some of the methods I’ve found to deal with these three situations. The idea is for you to develop your own set of design patterns, so you have somewhere to start when you have to handle these issues in the future!
Horário: 20:00 a 21:00

Palestrante: Erickson F. D. Ricci (@ericksonricci)
Palestra: Análise de um banco de dados corrompido na prática
Descrição: Nessa sessao será realizada a análise, de ponta a ponta, de como identificar e atuar para busca da resolução de um problema de corrupção em um banco de dados.Para isto iremos entender o que é e como funciona uma página de dados, páginas de alocação e os comandos DBCC PAGE e DBCC CHECKDB
Horário: 21:00 a 22:00

Terça–feira

Palestrante: Luciano Moreira (Luti) (@luticm)
Palestra: Confiabilidade dos pacotes(SSIS)
Descrição: Apenas criar um pacote com um alguns controles e data flows é suficiente para uma solução robusta? Provavelmente não! Nesta sessão serão apresentados recursos que podem ser empregados para aumentar a confiabilidade do pacote, como utilização de transações, checkpoints, database snapshots, tratamento de erros no data flow e eventos. No fim da apresentação você será capaz de entender cada um deles e analisando os pontos fortes e fracos de cada um, saber qual melhor se encaixa na sua solução.
Horário: 20:00 a 21:00

Palestrante: Marcos Freccia (@SqlFreccia)
Palestra: 5 lições sobre SQL Server para desenvolvedores
Descrição: Essa seção irá mostrar 5 passos que levarão o desenvolvedor a utilizar as melhores praticas do SQL Server no ambiente de desenvolvimento. Se você acha que seu código é bom, espere até assistir essa seção e você verá que os mínimos detalhes fazem a diferença e acabe com a famosa frase “Mas no meu ambiente é rápido”.
Horário: 21:00 a 22:00

Quarta–feira

Palestrante: Felipe Ferreira (@SqlBoy)
Palestra: SQL Server 2012 – Novidades em Business Intelligence
Descrição: Nessa sessão vamos conferir algumas das novas funcionalidades na área de Business Intelligence no SQL Server 2012. Venha conferir o que é ColumnStore Index, Projeto Power View, BISM e muitas outras novidades..
Horário: 20:00 a 21:00

Palestrante: Thiago Zavaschi (@zavaschi)
Palestra: Introdução a programação DAX
Descrição: Com o lançamento do SQL Server 2008 R2 foi lançada a ferramenta para self-service BI conhecida como PowerPivot, um addin capaz de manipular milhões de linhas de dados no Excel. Essa manipulação é feita através de DAX (Data Analysis Expressions). Agora com o SQL 2012 e o novo modelo tabular em memória do SSAS, a linguagem a ser utilizada também será DAX, o que aumenta muito a nossa necessidade de conhece-la. Nesta sessão vamos entender seus conceitos e funcionamento.
Horário: 21:00 a 22:00

Quinta–feira

Palestrante: Rodrigo Dornel (@rdornel)
Palestra: Mineração de dados (Data Mining)
Descrição: Nessa sessão será realizada uma introdução a Mineração de Dados com SQL Server 2008 R2, tais como uma abordagem aos conceitos de Mineração de Dados, tarefas de Mineração de Dados existentes no SQL Server, algoritmos e customização de algoritmos, modos de Visualização dos resultados e no final demonstração.
Horário: 20:00 a 21:00

Palestrante: Viviane Ribeiro (@viviane_sql)
Palestra: As Novidades do Analysis Services e o BI Semantic Model
Descrição: Microsoft SQL Server 2012 traz a simplicidade e o poder das tecnologias de PowerPivot para o BI corporativo e, ao mesmo tempo impulsiona o PowerPivot self-service que foi introduzido no SQL Server 2008 R2. Neste Webcast nós faremos um tour construindo um corporativo BI semantic Model dentro de uma nova experiência para os profissionais de Business Intelligence no BI Development Studio (BIDS). Nós mostraremos algumas das grandes novidades que estão vindo para ambos, PowerPivot e BIDS para KPIs, hierarquias, DAX, diagrama, entre outros.
Horário: 21:00 a 22:00

Sexta-feira

Palestrante: Ricardo Leka (@BigLeka)
Palestra: Wait Stats e Extended Events, me digam onde dói.
Descrição: Como usar Extended Events para ajudar a identificar o que está acontecendo no SQL Server.Todos sabemos que sempre está acontecendo alguma coisa, mas o que realmente é importante? e o que está atrapalhando no bom funcionamento do banco? E a principal pergunta: o que é o bom funcionamento?
Horário: 20:00 a 21:00

Palestrante: Jorge Segarra (@SqlChicken)
Palestra: Policy-Based Management in a Nutshell
Descrição: We will be learning an overview of this powerful new feature in SQL Server 2008 and how you can leverage it to help manage your existing SQL environment. This will include plenty of demos, best practices and Q&A so by the end you should be able to walk away ready to take control of your SQL Server environment using this awesome new feature!
Horário: 21:00 a 22:00

Acompanhe @mcitpsc para novidades!

Andrielle Azevedo de Paula

Semana de webcasts sobre SQL Server

Do dia 01 ao dia 06 de agosto, o grupo Virtual Pass BR irá realizar uma semana com webcasts diários sobre vários temas que abrangem o SQL Server.

Veja a lista completa de webcasts:

01/08

  • 21h: Era uma vez um reino de trevas… Denali + Windows Functions… e viveram felizes para sempre! com Fabiano Neves Amorim
  • 22h: Projeto Crescent – A Próxima Geração de Relatórios com Felipe Ferreira

02/08

  • 21h: 10 coisas que todo desenvolvedor deveria saber sobre SQL Server com Marcos Freccia
  • 22h: BI Semantic Model e PowerPivot for Excel vNext com Thiago Zavaschi

03/08

  • 21h: Data Collector: arquitetura, funcionamento e utilizações com Luan Moreno
  • 22h: Primeiro contato com as ferramentas de BI do SQL Server – SSIS + SSAS + SSRS com Diego Nogare

04/08

  • 21h: Extraindo, Transformando e Carregando Dados com o SQL Integration Services – Parte 1 com Socorro Vieira
  • 22h: Extraindo, Transformando e Carregando Dados com o SQL Integration Services – Parte 2 com Andressa Martins

05/08

06/08

  • 21h: Disponibilidade de Banco de Dados com Replicação e Database Mirroring com Junior Galvão
  • 22h: SQL Server x SQL Azure, o que preciso saber?! com Marcondes Alexandre

Eu já fiz minha inscrição. E você?

Andrielle Azevedo de Paula
MTAC – Microsoft Technical Audience Contributor

Usando comando ORDER BY

Neste post veremos como utilizar o comando ORDER BY. Ele determina a ordem de apresentação do resultado de uma pesquisa de forma ascendente ou descendente.

Sintaxe:

	SELECT <campo> FROM <tabela> [WHERE <condição>]
		ORDER BY <campo_ordenacao> [ASC/DESC]

Sendo assim, vamos criar duas tabelas e inserir alguns registros para depois recuperá-los usando o SELECT e o comando ORDER BY.

create table funcionarios (
codigo int not null primary key,
primeiroNome varchar (15),
segundoNome varchar (15),
ultimoNome varchar (15),
cpf varchar (15),
rg varchar (10),
endereco varchar (80),
cep varchar (11),
cidade varchar (10),
funcao varchar (15),
salario decimal (10,2)
)

create table departamentos (
codigo int not null primary key,
nome varchar (30),
localizacao varchar (10)
)

insert into departamentos
values (1, 'Financeiro', 'Bloco A'), (2, 'Recursos Humanos', 'Bloco B'), (3, 'Administração', 'Bloco A')

insert into funcionarios
values (1, 'Andrielle', 'Azevedo', 'Paula', '02570119199', '6574912', 'Travessa Amelio Marques', '75510290', 'Itumbiara', 'Treinamento', 1500.00), (2, 'Luiza', 'Silva', 'Faria', '03461929199', '6574912', 'Rua Pedro Heleodorio', '75510190', 'Itumbiara', 'Contador', 1000.00), (3, 'Henrique', 'Paiva', 'Mendes', '43152718177', '3142827', 'Avenida Beira Rio', '12416190', 'Itumbiara', 'Gerente', 5000.00)

a) Listar nome e sobrenome ordenados por sobrenome.

select primeiroNome, ultimoNome
from funcionarios
order by ultimoNome

b) Listar os funcionários que têm salário superior a 1000,00 em ordem ascendente.

select * from funcionarios
where salario > 1000
order by primeiroNome asc

c) Listar o primeiro nome dos funcionários em ordem descendente.

select primeiroNome from funcionarios
order by primeiroNome desc

Um comando básico, mas que ajudará você a utilizar melhor o SELECT.

Bons estudos!

Andrielle Azevedo de Paula
MTAC – Microsoft Technical Audience Contributor

Usando comandos ALTER TABLE, UPDATE e DELETE

Neste artigo, vamos entender como funcionam os comandos ALTER TABLE, DROP, DELETE e UPDATE. Consideremos as seguintes tabelas com seus campos e registros:

create table vendedor (
codigo_vendedor int not null primary key,
nome varchar (50),
idade char (3),
sexo char (1),
salario decimal (10,2)
)

create table cliente (
codigo_cliente int not null primary key,
nome varchar (50),
cidade varchar (10),
tipo_industria char (1)
)

create table pedido (
numero_pedido int not null primary key,
codigo_cliente int,
codigo_vendedor int,
valor_pedido decimal (10,2)
)

alter table pedido
add constraint fk_pedido_cliente foreign key (codigo_cliente) references cliente (codigo_cliente) on update cascade on delete cascade

alter table pedido
add constraint fk_pedido_vendedor foreign key (codigo_vendedor) references vendedor (codigo_vendedor) on update cascade on delete cascade

Os comandos ON UPDATE CASCADE e ON DELETE CASCADE servem para que, no momento que eu for utilizar meus comandos UPDATE ou DELETE para modificar os campos ou registros da minha tabela, todos as PK e FK sejam modificadas, também.

– Cliente

– Pedido

– Vendedor

Observe a tabela VENDEDOR. Suponhamos que preciso inserir mais quatro campos: e-mail, endereço, cidade e CEP. Eu não preciso excluir minha tabela VENDEDOR e criá-la novamente. O SQL oferece um comando onde posso alterar essa tabela: alter table.

Entro com o comando ALTER TABLE e o nome da tabela que será alterada, a cláusula ADD (adicionar) e o nome do novo campo e o tipo do dado.

Depois de inseridos meus novos campos, veja como ficou a tabela:

alter table vendedor
add email varchar (20);

alter table vendedor
add endereco varchar (40); 

alter table vendedor
add cidade varchar (15);

alter table vendedor
add cep varchar (9);

Observação: os novos campos adicionados são nulos porque não foi adicionado nenhum registro.

Observe, agora, a tabela CLIENTE. Para excluir registros de alguma tabela especificada, podemos utilizar o comando DELETE junto com a cláusula WHERE. Se a cláusula WHERE estiver ausente, todos os registros da tabela especificada serão excluídos. Resultado: tabela válida, mas vazia.

Suponhamos que eu queira remover o cliente chamado Estrutura Construtora da minha tabela CLIENTE, que é a tabela onde são inseridos os meus clientes. Então, entramos com o comando DELETE e a tabela especificada, juntamente com a cláusula WHERE e o campo da tabela que será declarado o registro que será excluído.

Lembrem-se: a cláusula WHERE é uma condição. Se não utilizá-la para especificar o registro que será excluído, todos os campos da tabela CLIENTE serão apagados.

delete from cliente where codigo_cliente = 4;

Observação: se no momento em que foram criados os relacionamentos de foreign keys da minha base de dados eu não tiver usado o ON UPDATE CASCADE, teríamos o seguinte erro:

Este erro que diz que o comando DELETE conflitou com a constraint fk_pedido_cliente criada para referenciar uma chave estrangeira entre a tabela PEDIDO e CLIENTE e, ainda especifica o nome da base de dados onde ocorre o erro, o nome da tabela e seu campo.

Esse erro aconteceu porque a tabela PEDIDO (CODIGO_CLIENTE) referencia CLIENTE (CODIGO_CLIENTE), ou seja, uma foreign key. Conclusão: utilize ON UPDATE CASCADE nos seus relacionamentos.

Ainda na tabela CLIENTE, vamos alterar o campo tipo_industria. Todos as linhas que tem tipo_industria como B deverão ser trocados para C. Como fazer isso? Temos um comando chamado UPDATE que muda os valores dos campos especificados em todas as linhas que satisfazem a condição. Podemos utilizá-lo com a cláusula SET, onde são especificadas as colunas que serão modificadas. As demais permanecem com seus valores atuais.

update cliente set tipo_industria=’C’ where tipo_industria=’B’;

Dando um novo select na tabela CLIENTE, veja como ela ficou depois de excluirmos um cliente e fazendo os updates do tipo_industria:

Agora observe a tabela VENDEDOR. Vamos mudar o nome do vendedor Abel para Abel Medeiros. Para isso, utilizamos o comando UPDATE.

update vendedor set nome=’Abel Medeiros’ where nome=’Abel’;

update vendedor set codigo_vendedor=777 where codigo_vendedor=111;

Veja como ficou nossa tabela VENDEDOR depois que fizemos os updates para o nome Abel Medeiros e trocamos seu codigo_vendedor de 111 para 777.

Note também que, na tabela CLIENTE onde tenho um relacionamento com a tabela VENDEDOR (codigo_vendedor), tem-se os dados atualizados.

Para finalizar, recomendo a leitura do artigo Restrições de integridade referencial em cascata

Bons estudos!

Andrielle Azevedo de Paula
MTAC – Microsoft Technical Audience Contributor

Usando o comando SELECT no SQL Server

Através do comando SELECT podemos recuperar os dados existentes no BD, de acordo com os critérios desejados. Para exemplificar, vamos criar uma pequena tabela e inserir alguns dados na mesma.

create table aluno (
codigo_aluno int not null primary key,
nome varchar (50),
nota int,
sexo char (1)
);

insert into aluno values (1, 'Ana Paula', 7, 'F'), (2, 'Henrique', 5, 'M'), (3, 'Joana', 4, 'F'), (4, 'Marcos', 8, 'M'), (5, 'Cláudio', 9, 'M'), (6, 'Maria', 9, 'F'), (7, 'Andrielle', 3, 'F'), (8, 'Virgílio', 6, 'M'), (9, 'Danilo', 6, 'M'), (10, 'Maciel', 5, 'M');

1 – Mostre todos os registros da tabela aluno.

Podemos recuperar todas as colunas de uma tabela utilizando o asterisco *. Neste exemplo, quero recuperar todos os registros existentes na tabela aluno. Então, coloco o comando SELECT para selecionar esses registros, o asterisco informando que são todos os registros e FROM ALUNO que é a tabela selecionada.

select * from aluno;

2 – Mostre os nomes de todos os alunos.

Nesse exemplo, quero recuperar todos os nomes de alunos existentes na tabela. Então, coloco o comando SELECT, o nome do campo que quero selecionar da tabela, que no caso é NOME e FROM ALUNO que é o nome da tabela.

select nome from aluno;

3 – Mostre os nomes de todos os alunos do sexo feminino / masculino.

Nesse exemplo, quero recuperar nome de alunos do sexo feminino. Por isso, temos uma condição a verificar: alunos do sexo feminino. Utilizo, então, a cláusula WHERE, que é um operador de restrição. Posso complementar seu uso com operadores lógicos como = (igual), (maior que), = (maior que ou igual a). Então, coloco o comando SELECT, o nome do campo que quero selecionar da tabela, que no caso é NOME e FROM ALUNO que é o nome da tabela aplicando a condição WHERE SEXO=’F’, que significa ONDE SEXO=’F’.

select nome from aluno where sexo='F';

E para recuperar os nomes de todos os alunos do sexo masculino, basta substituir sexo=’F’ por sexo=’M’.

select nome from aluno where sexo='M';

Observação: a cláusula AS utilizada em todos os exemplos serve para nomear os dados que serão recuperados.

4 – Mostre o total de alunos matriculados.

Nesse exemplo, quero recuperar a quantidade de alunos matriculados na tabela. Então, entro com o comando SELECT, comando COUNT para trazer o total, e como quero verificar todos os registros da tabela, uso o asterisco e FROM ALUNO que é a tabela selecionada. Resultado: 10 alunos matriculados.

select count (*) as total_alunos_matriculados from aluno;

5 – Mostre o total de alunos do sexo feminino / masculino.

Nesse exemplo, quero recuperar o total de alunos que sejam do sexo feminino. Então, entro com o comando SELECT, comando COUNT para trazer o total e como quero verificar todos os registros da tabela, uso o asterisco, FROM ALUNO que é a tabela selecionada, adicionando a condição/restrição WHERE SEXO=’F’. Resultado: 4 alunos matriculados que são do sexo feminino.

select count (*) as meninas from aluno where sexo='F';

E para mostrar o total de alunos que sejam do sexo masculino, troco WHERE SEXO=’F’ por WHERE SEXO=’M’. Resultado: 6 alunos matriculados que são do sexo masculino.

select count (*) as meninos from aluno where sexo='M';

6 – Mostre a soma global das notas dos alunos.

Nesse exemplo, quero recuperar a soma geral das notas dos alunos. Então, entro com o comando SELECT, comando SUM que significa soma e entre parênteses coloco o nome do campo que quero recuperar a soma, que no caso é NOTA e FROM ALUNO que é a tabela selecionada. Resultado: a soma das notas de todos os alunos é 62.

select sum (nota) as soma_notas from aluno;

7 – Mostre a soma global das notas das meninas / meninos.

Nesse exemplo, quero recuperar a soma das notas dos alunos que sejam do sexo feminino. Então, entro com o comando SELECT, comando SUM da soma e entre parênteses coloco o nome do campo que quero recuperar a soma, que no caso é NOTA, FROM ALUNO que é a tabela selecionada e, adiciono ainda, a restrição/condição dessa soma, que são alunos do sexo feminino: WHERE SEXO=’F’. Resultado: a soma das notas dos alunos do sexo feminino é 23.

select sum (nota) as soma_notas_meninas from aluno where sexo='F';

E para recuperar a soma das notas dos alunos do sexo masculino troco WHERE SEXO=’F’ por WHERE SEXO=’M’. Resultado: a soma das notas dos alunos do sexo masculino é 39.

select sum (nota) as soma_notas_meninos from aluno where sexo='M';

8 – Mostre a média da turma.

Nesse exemplo quero recuperar a média de notas de todos os alunos. Para recuperar a média geral, uso o comando AVG, entre parênteses o campo da tabela onde serão selecionados os dados, que no caso é NOTA e FROM ALUNO que é a tabela selecionada. Resultado: a média geral das notas dos alunos matriculados é 6.

select avg (nota) as media from aluno;

9 – Mostre a média do sexo feminino / masculino.

Nesse exemplo, quero recuperar a média de notas dos alunos do sexo feminino. Para recuperar essa média, uso o comando AVG, entre parênteses o campo da tabela onde serão selecionados os dados, que no caso é NOTA e FROM ALUNO que é a tabela selecionada. Porém, como as notas selecionadas são apenas de alunos do sexo feminino, tenho que especificar essa condição usando a cláusula WHERE SEXO=’F’. Resultado: a média de notas dos alunos do sexo feminino é 5.

select avg (nota) as media_meninas from aluno where sexo='F';

E para recuperar a media de notas dos alunos do sexo masculino, troco WHERE SEXO=’F’ por WHERE SEXO=’M’. Resultado: a média de notas dos alunos do sexo masculino é 6.

select avg (nota) as media_meninos from aluno where sexo='M';

10 – Mostre a nota máxima / mínima.

Nesse exemplo, quero recuperar a nota máxima de todos os alunos matriculados. Para recuperar essa nota máxima, utilize o comando MAX.

select max (nota) as nota_maxima from aluno;

E para recuperar a nota mínima de todos os alunos matriculados, utilize o comando MIN.

select min (nota) as nota_minima from aluno;

11 – Mostre a soma das notas, a nota máxima, a nota mínima e a média.

select sum (nota) as SomaGeral, 
max (nota) as NotaMaxima,
min (nota) as NotaMinima,
avg (nota) as Media from aluno;

Bons estudos!

Andrielle Azevedo de Paula
MTAC – Microsoft Technical Audience Contributor

Inserindo registros em tabelas no SQL Server

Criando tabelas e fazendo seus relacionamentos

Neste post, vamos aprender como inserir registros em tabelas no SQL Server. Primeiramente, vamos criar as tabelas e fazer seus relacionamentos, conforme atributos listados no esquema abaixo.

  • vendedor (codigo_vendedor [PK], nome, idade, sexo, salario)
  • cliente (codigo_cliente [PK], nome, cidade, tipo_industria)
  • pedido (numero_pedido [PK], codigo_cliente [FK], codigo_vendedor [FK], valor_pedido)
create table vendedor (
codigo_vendedor int not null primary key,
nome varchar (50),
idade char (3),
sexo char (1),
salario decimal (10,2)
)
create table cliente (
codigo_cliente int not null primary key,
nome varchar (50),
cidade varchar (10),
tipo_industria char (1)
)
create table pedido (
numero_pedido int not null primary key,
codigo_cliente int,
codigo_vendedor int,
valor_pedido decimal (10,2)
)
alter table pedido
add constraint fk_pedido_cliente foreign key (codigo_cliente) 
references cliente (codigo_cliente)
alter table pedido
add constraint fk_pedido_vendedor foreign key (codigo_vendedor) 
references vendedor (codigo_vendedor)

Inserindo registros nas tabelas

Para inserir registros nas tabelas usamos o comando INSERT INTO. Podemos inserir registros em todos os campos da tabela ou em apenas alguns.

Quando queremos inserir registros em todos os campos da tabela, não é necessário especificá-los. Por exemplo:

insert into vendedor values (111, 'Abel', 63, 'M', 120000.00)
insert into vendedor values (222, 'Bartolomeu', 38, 'M', 420000.00)
insert into vendedor values (333, 'João', 26, 'M', 36000.00)
insert into vendedor values (444, 'Maria das Graças', 42, 'F', 50000.00)
insert into vendedor values (555, 'Zélia', 59, 'F', 118000.00)
insert into vendedor values (666, 'Carlos', 27, 'M', 34000.00)

Note que acima, usamos o comando INSERT INTO para inserir os registros, especificamos o nome da tabela em que os mesmos serão inseridos e lançamos seus valores.

Quando queremos inserir registros em apenas alguns campos, devemos especificá-los porque aí, teremos campos que serão dados como nulos. Por exemplo:

insert into cliente (codigo_cliente, nome, tipo_industria)
values (1, 'Arco Íris Construção', 'B')
insert into cliente
values (2, 'Meireles da Silva', 'Mossoró', 'F')
insert into cliente
values (3, 'Casas de Construção', 'Natal', 'B')
insert into cliente
values (4, 'Estrutura Construtora', 'Natal', 'B')

Note que acima, no primeiro insert, especificamos os campos (codigo_cliente, nome, tipo_industria) porque inserimos registros somente nos mesmos, ou seja, o campo cidade está nulo para o primeiro insert. Nos demais, inserimos registros em todos os campos.

É importante que os registros sejam inseridos na mesma ordem em que foram criados os campos das tabelas.

Para concluir:

insert into pedido
values (200, 1, 333, '1800.00')
insert into pedido
values (300, 2, 111, '480.00')
insert into pedido
values (400, 3, 111, '2500.00')
insert into pedido
values (500, 1, 444, '6000.00')
insert into pedido
values (600, 4, 111, '700.00')
insert into pedido
values (700, 2, 333, '1500.00')

Bons estudos!

Andrielle Azevedo de Paula
MTAC – Microsoft Technical Audience Contributor

Criando tabelas no SQL Server

Tem-se os seguintes esquemas:

  • Funcionarios (Codigo, PrimeiroNome, SegundoNome, UltimoNome, DataNascimento, CPF, RG, Endereco, CEP, Cidade, Fone, CodigoDepartamento, Funcao, Salario)
  • Departamentos (Codigo, Nome, Localizacao, CodigoFuncionario)

Para criar as tabelas acima utilizamos o comando CREATE TABLE, unindo a ele o nome que será atribuído ao objeto e suas características.

Comandos CREATE TABLE, PRIMARY KEY e IDENTITY

create table funcionarios (
codigo int not null primary key identity (1,1),
primeiroNome varchar (50) not null,
segundoNome varchar (50),
ultimoNome varchar (50) not null,
dataNascimento date,
cpf varchar (14),
rg varchar (8),
endereco varchar (100),
cep varchar (9),
cidade varchar (30),
fone varchar (13),
codigoDepartamento int not null,
funcao varchar (20),
salario decimal (10,2)
)
create table departamentos (
codigo int not null primary key identity (1,1),
nome varchar (50),
localizacao varchar (50),
codigoFuncionario int not null
)

O comando identity é usado para auto-incremento no SQL Server. Sintaxe:

  • IDENTITY [(seed, increment)]
  • seed: valor usado para a primeira linha carregada na tabela.
  • increment: é o valor de incremento adicionado ao valor de identidade da linha anterior que foi carregada.

Alterando as tabelas para atribuir foreign key

Podemos adicionar as foreign keys através do comando ALTER TABLE. Abaixo, entramos com o comando alter table para as tabelas funcionarios e departamentos para definir as FK’s.

alter table funcionarios
add constraint fk_funcionarios_departamentos foreign key (codigoDepartamento) 
references departamentos (codigo)

Inserimos a cláusula constraint e entramos com o relacionamento fk_funcionarios_departamentos que significa que haverá um relacionamento entre a tabela funcionarios para a tabela departamentos. Na tabela funcionarios, o atributo codigoDepartamento é o que será relacionado a tabela departamentos, ao atributo codigo.

alter table departamentos
add constraint fk_departamentos_funcionarios foreign key (codigoFuncionario) 
references funcionarios (codigo)

Inserimos a cláusula constraint e entramos com o relacionamento fk_departamentos_funcionarios que significa que haverá um relacionamento entre a tabela departamentos para a tabela funcionarios. Na tabela departamentos, o atributo codigoFuncionario é o que será relacionado a tabela funcionarios, ao atributo codigo.

Bons estudos!

Andrielle Azevedo de Paula
MTAC – Microsoft Technical Audience Contributor