A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Bancos de Dados Fundação Educacional de Oliveira - FEOL

Apresentações semelhantes


Apresentação em tema: "Bancos de Dados Fundação Educacional de Oliveira - FEOL"— Transcrição da apresentação:

1 Bancos de Dados Fundação Educacional de Oliveira - FEOL
5º Período – Sistemas de Informação Profa. Andrea Alves 1

2 Relacionamentos Relacionamento entre tabelas 1 : 1
Aluno e Matrícula (um aluno só pode ter um número de matricula e um número de matrícula só pode pertencer a um aluno.) 2

3 Relacionamentos Relacionamento do Tipo Um para Vários: (1:N) Este é, com certeza, o tipo de relacionamento mais comum entre duas tabelas. Uma das tabelas (o lado um do relacionamento) possui um campo que é a Chave Primária e a outra tabela (o lado vários) se relaciona através de um campo cujos valores relacionados podem se repetir várias vezes. Considere o exemplo entre a tabela Clientes e Pedidos. Cada Cliente somente é cadastrado uma única vez na tabela de Clientes (por isso o campo Código do Cliente, na tabela Clientes, é uma chave primária, indicando que não podem ser cadastrados dois clientes com o mesmo código), portanto a tabela Clientes será o lado um do relacionamento. Ao mesmo tempo cada cliente pode fazer diversos pedidos, por isso que o mesmo Código de Cliente poderá aparecer várias vezes na tabela Pedidos: tantas vezes quantos forem os pedidos que o Cliente tiver feito. Por isso que temos um relacionamento do tipo Um para Vários entre a tabela Clientes e Pedidos, através do campo Código do Cliente, indicando que um mesmo Cliente pode realizar diversos (vários) pedidos. 3

4 Criando Tabelas CREATE TABLE Cursos ( Codcurso int not null,
Nomecurso char(30) not null, PRIMARY KEY (codcurso) ) Ou Codcurso int primary key,

5 Criando Tabelas Nomeando a Constraint CREATE TABLE curso (
Codcurso int CONSTRAINT PK_aluno PRIMARY KEY, Desccurso nvarchar(17) )

6 Criando Tabelas com chaves estrangeiras
CREATE TABLE Aluno ( Codaluno int primary key identity, {auto-incremento} Nomealuno char(30) not null, {não permite valores nulos} codcurso int references cursos, {criando chave estrangeira} endaluno char (50) )

7 Criando Tabelas com chaves estrangeiras
CREATE TABLE fornecedor ( CODIGO INTEGER NOT NULL, NOME VARCHAR(40) NOT NULL, TIPO INTEGER NOT NULL, PRIMARY KEY (CODIGO) ); CREATE TABLE CLIENTE2 ( CODIGOCLIENTE INTEGER NOT NULL, codigofornec integer not null, ENDERECO VARCHAR(70), CIDADE VARCHAR(40), UF CHAR(2) DEFAULT 'BA', DATANASCIMENTO DATEtime, DATACADASTRO DATEtime, constraint pk_cliente2 PRIMARY KEY (CODIGOCLIENTE), constraint fk_cli_fornec FOREIGN KEY (codigofornec) REFERENCES fornecedor (CODIGO)

8 Definindo campos Valores duplicados
Podem existir situações onde o valor armazenado em um atributo de um registro deve ser único em relação a todos os registros da tabela. Isto é, não pode haver dois registros com o mesmo valor para um determinado atributo. Para implementar esta restrição de integridade deve-se utilizar a cláusula UNIQUE após a especificação de uma coluna.

9 Definindo campos create table Funcionario
(codfunc int primary key identity, CPFfunc int UNIQUE, {só aceita valores únicos) endfunc char(40), )

10 Definindo campos Valores default
Pode-se definir um valor padrão para uma coluna acrescentando à sua definição a cláusula DEFAULT. Esta cláusula permite substituir automaticamente os valores nulos por um valor inicial desejado.

11 Definindo campos create table cliente1
(codcli int primary key identity nomecli char(30) NOT NULL, sexocli char(1), CPFcli int UNIQUE, endcli char(40), cidadecli char(20) DEFAULT ‘Maceio’ {se deixar nulo, o valor padrão é maceió} )

12 Definindo campos Valores inválidos
Para que o valor de um atributo fique restrito a um conjunto de valores, utiliza-se a cláusula CHECK. A finalidade da cláusula CHECK é especificar uma condição, isto é, uma limitação de integridade.

13 Definindo campos create table cliente2
( codcli int primary key identity, nomecli char(30) NOT NULL, sexocli char(1) CHECK(sexo IN (‘M’, ‘F’)), CPFcli int UNIQUE, endcli char(40), cidadecli char(20) DEFAULT ‘Maceio’ )

14 Inserindo registros na tabela
insert into cursos values ('Sistemas' ) Ou Insert into cursos (cod_curso, nome_curso) Values (1 , ‘Sistemas’)

15 Bancos de Dados - Revisão
15

16 Bancos de Dados - Revisão
Relacionamento do Tipo Vários para Vários: (M:N) Este tipo de relacionamento "aconteceria" em uma situação onde em ambos os lados do relacionamento os valores poderiam se repetir. Vamos considerar o caso entre Produtos e Pedidos. Posso ter Vários Pedidos nos quais aparece um determinado produto, além disso vários Produtos podem aparecer no mesmo Pedido. Esta é uma situação em que temos um Relacionamento do Tipo Vários para Vários. 16

17 Alterando tabelas Incluindo um campo
ALTER TABLE CLIENTE2 ADD VARCHAR(30); /* Excluindo um campo */ ALTER TABLE CLIENTE2 DROP column cidade

18 Mudando características das colunas
ALTER TABLE tb_mae alter column REGION vARCHAR(26)not null Mudando o tipo do campo ALTER TABLE CLIENTE2 alter column endereco nVARCHAR(80) not null;

19 Comando UpDate O comando UPDATE permite alterar os valores existentes existentes nos campos de uma (única) tabela. Update table_name Set column_name1 = data_value1 [Where search_condition] • table_name pode ser o nome de uma tabela de base ou de uma view actualizável. • A cláusula SET especifica uma ou mais colunas a serem atualizadas. • A cláusula WHERE é opcional: - Se omitida, as colunas indicadas são atualizadas para todas as linhas da tabela. - Se especificada, somente as linhas que satisfazem a search_condition são atualizadas. • Os data_value(s) devem ser compatíveis com os tipos de dados das colunas correspondentes. Update Departamento Set Local = ‘Fundão’ Where DepNum = 13

20 Comando Delete O comando DELETE permite apagar linhas de uma (única) tabela. Delete From table_name [Where search_condition] • table_name pode ser o nome de uma tabela de base ou de uma view atualizável. • A cláusula WHERE é opcional: - Se omitida, todas as linhas da tabela são apagadas da tabela (a tabela não é apagada). - Se especificada, somente as linhas que satisfazem a search_condition são apagadas. Delete Departamento Where DepNum = 13

21 Tipos de dados TINYINT: Valores numéricos inteiros variando de 0 até 256 SMALLINT: Valores numéricos inteiros variando de – até INT: Valores numéricos inteiros variando de até * BIGINT: Valores numéricos inteiros variando de – até BIT: Somente pode assumir os valores 0 ou 1. Utilizado para armazenar valores lógicos. DECIMAL(I,D) e NUMERIC(I,D): Armazenam valores numéricos inteiros com casas decimais utilizando precisão. I deve ser substituído pela quantidade de dígitos total do número e D deve ser substituído pela quantidade de dígitos da parte decimal (após a vírgula). DECIMAL e NUMERIC possuem a mesma funcionalidade, porém DECIMAL faz parte do padrão ANSI e NUMERIC é mantido por compatibilidade. Por exemplo, DECIMAL(8,2) armazena valores numéricos decimais variando de – ,99 até ,99 Lembrando sempre que o SQL Server internamente armazena o separador decimal como ponto (.) e o separador de milhar como vírgula (,). Essas configurações INDEPENDEM de como o Windows está configurado no painel de controle e para DECIMAL E NUMERIC, somente o separador decimal (.) é armazenado

22 Tipos de dados SMALLMONEY: Valores numéricos decimais variando de ,3648 até ,3647 MONEY: Valores numéricos decimais variando de ,5808 até ,5807 REAL: Valores numéricos aproximados com precisão de ponto flutuante, indo de -3.40E + 38 até 3.40E + 38 FLOAT: Valores numéricos aproximados com precisão de ponto flutuante, indo de -1.79E até 1.79E ( é maior) SMALLDATETIME: Armazena hora e data variando de 1 de janeiro de 1900 até 6 de junho de A precisão de hora é armazenada até os segundos. DATETIME: Armazena hora e data variando de 1 de janeiro de 1753 até 31 de Dezembro de A precisão de hora é armazenada até os centésimos de segundos.

23 Tipos de dados VARCHAR(N): Armazena N caracteres (até 8.000) no formato não Unicode. Se a quantidade de caracteres armazenada no campo for menor que o tamanho total especificado em N, o resto do campo é preenchido. TEXT: Armazena caracteres (até ) no formato não Unicode. Se a quantidade de caracteres armazenada no campo for menor que , o resto do campo não é preenchido. Procure não utilizar este tipo de dado diretamente, pois existem funções específicas para trabalhar com este tipo de dado. NVARCHAR(N): Armazena N caracteres (até 4.000) no formato Unicode. Se a quantidade de caracteres armazenada no campo for menor que o tamanho total especificado em N, o resto do campo não é preenchido.

24 Tipos de dados NTEXT: Armazena caracteres (até ) no formato Unicode. Se a quantidade de caracteres armazenada no campo for menor que , o resto do campo não é preenchido. Procure não utilizar este tipo de dado diretamente, pois existem funções específicas para trabalhar com este tipo de dado. BINARY(N): Armazena N (até bytes) dados no formato binário. Se a quantidade de dados binários armazenados no campo for menor que o tamanho total especificado em N, o resto do campo é preenchido com espaços em branco. Procure não utilizar este tipo de dado diretamente, pois existem funções específicas para trabalhar com este tipo de dado. VARBINARY(N): Armazena N (até bytes) dados no formato binário. Se a quantidade de dados binários armazenados no campo for menor que o tamanho total especificado em N, o resto do campo não é preenchido. Procure não utilizar este tipo de dado diretamente, pois existem funções específicas para trabalhar com este tipo de dado.

25 Tipos de dados * SQL_VARIANT: Permite o armazenamento de todos os tipos de dados em uma mesmo campo de uma tabela com exceção dos tipos TEXT, NTEXT, TIMESTAMP e SQL_VARIANT TIMESTAMP: Este tipo de dado permite a geração automática de uma valor binário para um campo de uma tabela do SQL Server. Cada tabela pode possuir somente um campo com o tipo de dadoTIMESTAMP. Para o tipo de dado TIMESTAMP, devemos ou criar um DEFAULT para seu valor padrão ou passar NULL para este campo em uma instrução INSERT, pois o banco de dados automaticamente gerará um valor binário para esta coluna. UNIQUEIDENTIFIER: Este tipo de dado deve ser utilizado para a criação de um identificar global para uma coluna de uma tabela. Também podemos possuir somente um campo como tipo UNIQUEIDENTIFIER por tabela. Este identificador deve ser utilizado quando temos certeza absoluta que nenhum valor para o campo deve ser repetido. Para alimentar o conteúdo deste campo, devemos preferencialmente utilizar a função NEWID() que retornar um identificador no formato desde tipo.

26 SGBD II Banco de Dados: Empresa Tabelas: Funcionário Departamento
Dependentes

27 SGBD II Funcionário 1 João Mendes Rua joao 25 1 2006-01-10 1500
Cod _func Nome_func Endereço_func cod_ depto data_ adm salaintt (nvarchar (50)) (nvarchar(50)) (int FK) (smalldatetime) (money) 1 João Mendes Rua joao 2 Patricia Avelar Rua C. Branco 3 Silvia Pacheco Rua Bias Fortes 4 Eduardo Silva Rua J. Caruso 5 Tirso Brother Rua Parametro 6 Marly Alves Rua Centenario 7 Paulo Miou Rua Bernardes 8 Simone Alves Rua Pisa 9 Elaine Vivar Rua P. Cardoso 10 Fabio Silva Rua Luiz 11 Cristina Maia Rua Pavaroti 12 José Ferreira Rua das Almas

28 SGBD II Departamento Cod_depto int (PK) nome_depto (Nvarchar (20))
1 Perfumaria Informática 3 Livraria 4 Alimentação

29 SGBD II 1 1 Sandra filha 2 1 Eduarda filha 3 2 Tatiane Filha
Dependentes Cod_dependente int (pk) cod_funcionario int (FK) nome_dependente (nvarchar(50)) grau_parentesco (nvarchar (15)) Sandra filha Eduarda filha Tatiane Filha Pedro filho Patricia filha Marcia filha Maria filha Pietra filha Alenara filha Guilherme filho Gustavo filho Silvana filha Joanita filha Fernanda filha Henrique filho Aparecida filha Fabricio filho

30 SGBD II create database Prova create table Departamento (
Cod_Depto int Primary Key, Nome_Depto nvarchar(20) ) create table Funcionario( Cod_Func int Primary Key, Nome_Func nvarchar (50), Endereco_Func nvarchar(50), Cod_Depto int references Departamento, Data_Adm smalldatetime, Salario money create table Dependentes( Cod_Dependente int Primary Key, Cod_Funcionario int references Funcionario, Nome_Dependente nvarchar(50), Grau_Parentesco nvarchar (15)

31 SGBD II insert into Departamento values (1,'Perfumaria')
insert into Departamento values (2,'Informática') insert into Departamento values (3,'Livraria') insert into Departamento values (4,'Alimentação') insert into Funcionario values (1,'João Mendes','Rua joao 25',1,' ',1500) insert into Funcionario values (2,'Patricia Avelar','Rua C. Branco',1,' ',2750) insert into Funcionario values (3,'Silvia Pacheco','Rua Bias Fortes',2,' ',1674) insert into Funcionario values (4,'Eduardo Silva','Rua J. Caruso',2,' ',2782) insert into Funcionario values (5,'Tirso Brother','Rua Parametro',3,' ',4562) insert into Funcionario values (6,'Marly Alves','Rua Centenario',3,' ',6520) insert into Funcionario values (7,'Paulo Miou','Rua Bernardes',4,' ',2952) insert into Funcionario values (8,'Simone Alves','Rua Pisa',4,' ',1475) insert into Funcionario values (9,'Elaine Vivar','Rua P. Cardoso',2,' ',2462) insert into Funcionario values (10,'Fabio Silva','Rua Luiz 16',1,' ',1469) insert into Funcionario values (11,'Cristina Maia','Rua Pavaroti',3,' ',3600) insert into Funcionario values (12,'José Ferreira','Rua das Almas',4,' ',4250)

32 SGBD II insert into Dependentes values (1,1,'Sandra','filha')
insert into Dependentes values (2,1,'Eduarda','filha') insert into Dependentes values (3,2,'Tatiane','filha') insert into Dependentes values (4,2,'Pedro','filho') insert into Dependentes values (5,3,'Patricia','filha') insert into Dependentes values (6,4,'Márcia','filha') insert into Dependentes values (7,5,'Maria','filha') insert into Dependentes values (8,5,'Pietra','filha') insert into Dependentes values (9,6,'Alenara','filha') insert into Dependentes values (10,7,'Guilherme','filho') insert into Dependentes values (11,7,'Gustavo','filho') insert into Dependentes values (12,9,'Silvana','filha') insert into Dependentes values (13,10,'Joanita','filha') insert into Dependentes values (14,10,'Fernanda','filha') insert into Dependentes values (15,10,'Henrique','filho') insert into Dependentes values (16,11,'Aparecida','filha') insert into Dependentes values (17,12,'Fabrício','filho')

33 Exercícios Crie e popule as tabelas anteriores.
Exclua o campo data_adm da tabela de funcionário alter table funcionario drop column data_adm Altere o tipo de dado do campo nome da tabela departamento para varchar (40) not null alter table departamento alter column descr varchar(40) not null

34 Exercícios Inclua um campo chamado RG na tabela de funcionários.
Alter table funcionarios add rg varchar (20) Altere o endereço do funcionário João Mendes. Update funcionarios Set endereco = ‘ Rua das margaridas, sem numero’ Where nome_func = ‘João Mendes’ Exclua os dependentes do funcionário de código 2. Delete from dependentes Where cod_func = 2


Carregar ppt "Bancos de Dados Fundação Educacional de Oliveira - FEOL"

Apresentações semelhantes


Anúncios Google