Banco de Dados II Aula 2 Conteúdo: Introdução a Linguagem SQL Linguagem de Definição de Dados ( DDL - Data Definition Language ) Profa. Ms. Sueli A. Loddi Banco de Dados II - Aula 2 A Arquitetura dos Sistemas de Banco de Dados De acordo com Date(2003), no ano de 1972 foi criado um grupo de estudos para definir uma arquitetura padrão para um sistema de banco de dados, que atendesse as demandas teóricas. O nome desse grupo foi “ANSI/X3/SPARC Study Group on Data Base Management Systems”, e a arquitetura passou a ser conhecida como ANSI/SPARC. O autor ressalta que, segundo essa arquitetura, um sistema de banco de dados pode possui três níveis: · Nível Interno – Responsável pelo armazenamento dos dados; · Nível Conceitual – Serve de interface entre o primeiro e o terceiro níveis; · Nível Externo – Responsável pela visualização dos dados por parte do usuário. Banco de Dados II - Aula 2 Os três níveis da arquitetura de banco de dados Fonte: Adaptado de Elmasri e Navathe (2005, p.7) e Date (2003, p.29) Banco de Dados II - Aula 2 O nível interno ou esquema interno descreve a estrutura de armazenamento físico do banco de dados Esse esquema utiliza um modelo de dados físico e descreve, com detalhes completos o armazenamento de dados e caminhos de acesso ao banco de dados. O nível conceitual ou esquema conceitual descreve a estrutura de todo o banco de dados para a comunidade de usuários. O esquema conceitual oculta os detalhes das estruturas de armazenamento físico e se concentra na descrição de entidades, tipos de dados, conexões, operações e restrições dos usuário. Geralmente um modelo de dados representacional e usado para descrever o modelo conceitual quando o sistema de banco de dados for implementado. O nível externo ou visão externa constitui-se da visão que o usuário tem do banco de dados; como os dados são visualizados por ele. Dessa forma, haverá tantas dessas visões quantas forem as formas distintas que os dados podem ser visualizados (usuários diferentes, aplicações diferentes, entre outras) (ELMASRI, NAVATHE, 2005). Banco de Dados II - Aula 2 Por usuário, podemos entender tanto os desenvolvedores de aplicações, quanto um usuário final. Porem, observemos ao usuário final são interessa uma determinada parte do banco de dados e, do seu ponto de vista, essa visão e o banco de dados completo. A visão externa poderá ser acessada de diversas formas, inclusive por meio de ferramentas bastante amigáveis, muitas vezes visuais (normalmente voltadas para o usuário final). O desenvolvedor, entretanto, utilizara uma linguagem de alto nível para produzir o aplicativo desejado. As linguagens para desenvolvimento de aplicações normalmente utilizarão um subconjunto de comandos para acessar e manipular o banco de dados. Chamamos a esse subconjunto de “sublinguagem de dados” e a linguagem de alto nível que o utiliza, de linguagem “hospedeira”. Dessa forma, enquanto a linguagem hospedeira e responsável pelos recursos de programação (como variáveis, estruturas de decisão e repetição), a sublinguagem de dados responsabiliza-se pelo acesso ao banco de dados. Atualmente, a sublinguagem de dados mais utilizada e a SQL. (DATE,2003). Banco de Dados II - Aula 2 A linguagem SQL foi criada pela International Business Machines (IBM ) na decada de 1970, em seus laboratórios de pesquisa de San Jose, nos Estados Unidos. Inicialmente nomeada como Structured Query English Language, ou Sequel, esta linguagem tinha como objetivo servir como interface para um sistema de banco de dados relacional denominado Sistema R. Com o passar do tempo a linguagem evoluiu e passou a se chamar SQL, tornando-se uma linguagem-padrão para SGBD relacionais comerciais. Buscando a padronizacao da linguagem: •1986 : a Amercian National Standards Institute (ANSI) e a International Standard Organization (ISO) criam a primeira versão padronizada da linguagem SQL, conhecida como SQL-86 ou SQL1. •1992 : segunda versão foi lançada a SQL2. •1999 : a terceira versão foi lançada, inicialmente chamada de SQL3, ou SQL99. Esta e a versão atual em vigor. (ELMASRI,NAVATHE,2005; DATE, 2004; SILBERSCHATZ et. al ,1999) Banco de Dados II - Aula 2 As especificações do padrão SQL99 foi divididas em duas partes: núcleo (core) e os pacotes (packages). Os fabricantes de SGBDs devem inclui as especificações do núcleo obrigatoriamente em seus produtos. Já o pacotes sao encarados como módulos opcionais, cuja falta não compromete o funcionamento do SGBD relacional. São exemplos de módulos opcionais: Data Minig , Data Warehaouse, processamento analítico on-line (OLAP), entre outros. A linguagem SQL e abrangente, possuindo suporte para comandos de definição de dados, consultas, visões e atualizações. Desta forma ela possui a DDL e a DML, que estudaremos a seguir. (ELMASRI,NAVATHE,2005;MOREIRA, 2004) Banco de Dados II - Aula 2 Tipos de Dados de Atributos e Domínios em SQL Tipo Subtipo Numéric Inteiros os SQL INT SMALLINT Reais ou ponto Flutuante FLOAT REAL DOUBLE PRECISION Números Formatados DECIMAL(i,j) ou DEC(i,j) NUMERIC(i,j) Onde: i = precisão ( parte inteira) e j = a escala ( parte decimal) Banco de Dados II - Aula 2 Tipos de Dados de Atributos e Domínios em SQL Tipo Subtipo Cadeia De tamanho Fixo de caracteres De tamanho variável SQL CHAR(n) ou CHARACTER(n) Onde n= tamanho. Nas cadeias de tamanho fixo o tamanho será apropriado no banco, sendo ou não usado. Exemplo: um campo nome com char(10) que recebeu José no banco ocupará “José “. VARCHAR(n) ou CHAR VARYNG(n) ou CHARACTER VARYNG (n) Onde n= tamanho. Nas cadeias de tamanho variável o tamanho será apropriado no banco será otimizado, sendo que os “Brancos a direita” serão “desprezados”. Exemplo: um campo nome com char(10) que recebeu José no banco ocupará “José”. Banco de Dados II - Aula 2 Tipos de Dados de Atributos e Domínios em SQL Tipo Subtipo SQL Lógicos Booleano Obs. A nomenclatura deste tipo varia de acordo com o SGBD Possui dois valores: Verdadeiro (TRUE) e Falso(FALSE). Em SQL, dada a presença dos valores nulos ( NULL), os lógicos assumem um terceiro valor (UNKNOWN). Cadeia de bits Bit-strings BIT (n) para cadeias de tamanho fixo ou BIT VARYNG (n) para tamanho variável Banco de Dados II - Aula 2 Tipos de Dados de Atributos e Domínios em SQL Tipo Subtipo SQL Data e hora Data DATE Contém no mínimo 10 posições e deve contemplar o formato YYYY-MM-DD. Onde YYYY = ano, MM-Mês e DD = dia Hora TIME Contém no mínimo 8 posições e deve contemplar o formato HH:MM:SS. Onde HH= hora, MM-minuto e SS = segundo. TimeSta TimeStamp mp Engloba os campos Date e Time juntos fornecendo um um formato YYYY-MM-DD HH:MM-SS +MS Onde o MS = seis casa decimais para registrar os milésimos de segundo. Banco de Dados II - Aula 2 Comandos DDL Os comandos básicos são: Create Drop Alter Banco de Dados II - Aula 2 Criando Banco de Dados Banco de Dados II - Aula 2 Exemplo: Criando Banco de Dados Teste Banco de Dados II - Aula 2 Exemplo: Criando Banco de Dados Teste Banco de Dados II - Aula 2 Exemplo: Criando Banco de Dados Teste Banco de Dados II - Aula 2 Criando Tabelas Banco de Dados II - Aula 2 Exemplo de Criação de Tabelas Banco de Dados II - Aula 2 Alterando Elementos do Banco de Dados Criação de Tabelas Banco de Dados II - Aula 2 Alterando Elementos do Banco de Dados Criação de Tabelas Banco de Dados II - Aula 2 Alterando Elementos do Banco de Dados Criação de Tabelas Banco de Dados II - Aula 2 Alterando Elementos do Banco de Dados Criação de Tabelas Banco de Dados II - Aula 2 Exercício: Criar as tabelas Departamento e EmpregadoDependente Banco de Dados II - Aula 2 Exercício: CREATE TABLE [dbo].[Departamento]( [id_Departamento] [int] NOT NULL, [Nm_Departamento] [varchar](50) NOT NULL, [Id_EmpregadoGerente] [int] NULL, CONSTRAINT [PK_Departamento] PRIMARY KEY CLUSTERED ( [id_Departamento] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] Banco de Dados II - Aula 2 Exercício: CREATE TABLE [dbo].[EmpregadoDependente]( [nm_DepartamementoEmpregado] [dt_NascDependente] [flg_SexoDependente] [cod_GrauParentresco] [Id_EmpregadoDependente] [id_Empregado] [varchar](30) NULL, [datetime] NULL, [bit] NULL, [int] NULL, [int] NOT NULL, [int] NOT NULL, CONSTRAINT [PK_EmpregadoDependente_1] PRIMARY KEY CLUSTERED ( [Id_EmpregadoDependente] ASC) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] Banco de Dados II - Aula 2 Criadas as tabela devemos criar as contraints Banco de Dados II - Aula 2 Exercício: Crie as tabelas e contraints que faltam no BancoAula Banco de Dados II - Aula 2 Remoção Forma Geral: DROP <Tipo_elemento> <nome_Elemento> Onde: O tipo do elemento = tipo do elemento do banco tais como: TABLE, SCHEMA, CONSTRAINT, entre outros. O tipo do elemento especifica “o que” será excluído, como por exemplo um tabela ou um esquema. Exemplos: Exclui Banco de Dados: Drop Database BancoAula Exclui tabela: Drop table Empregado Banco de Dados II Bibliografia DATE, C. J. Introdução a sistemas de bancos de dados. 8ª Edição. Rio de Janeiro:Elsevier:2003. ELMASRI, Ramirez; NAVATHEM, Shamkant B. Sistema de Banco de Dados. 4ª Edição. São Paulo:Perarson Addison Wesley, 2005. MONTEIRO, Emiliano Soares. Projeto de sistemas de banco de dados. Rio de Janeiro: Brasport, 2004. SILBERSCHATZ, Abrahan; KORTH, Henry F.; SUDARSHAN, S. Sistema de Banco de Dados. 3ª Edição. São Paulo:Makron Books, 1999.