Criando, eliminando e modificando tabelas

Tamanho: px
Começar a partir da página:

Download "Criando, eliminando e modificando tabelas"

Transcrição

1 Capítulo 11 Criando, eliminando e modificando tabelas Bancos de dados relacionais baseiam-se em tabelas. Cada tabela tem suas características próprias, como as colunas que a compõem, os identificadores e as restrições de integridade que devem ser respeitadas. Tabelas têm elos lógicos entre si que possibilitam a criação de complexos modelos, sobre os quais os mais variados tipos de aplicações podem ser construídas. Tudo isso é parte do arcabouço descritivo de um banco de dados. Através da estrutura de tabelas e das restrições impostas, determina-se o quê esse banco de dados pode aceitar. Pode-se pensar nisso como uma definição lógica, onde ficam estabelecidas as regras do jogo. Tabelas têm instâncias, constituídas pelos registros nelas armazenados. Usuários alimentam suas bases de dados manipulando esses registros, seja incluindo-os, removendo-os ou alterando seus valores. Essas operações ocorrem, sempre, dentro das regras definidas. Eventualmente essas regras podem mudar, visto que um banco de dados pode ter sua definição lógica revista. Este capítulo trata da definição das tabelas e das regras de uma base de dados. Os comandos aqui apresentados servem para criar, alterar e eliminar tabelas, além de definir os relacionamentos entre elas. A manipulação das instâncias das tabelas, via operações sobre registros, é vista no capítulo 12. As definições de um banco de dados usualmente fazem parte das tarefas do administrador DataBase Administrator e não estão acessíveis ao universo de usuários por vários motivos, segurança entre eles. Esse trabalho, normalmente, é efetuado através de interfaces especializadas, do tipo point & click, ficando bastante facilitado em comparação com a codificação textual. Mesmo assim, conhecer os comandos SQL é importante para administradores e usuários avançados CRIANDO TABELAS Para criar uma tabela num banco de dados relacional, é preciso definir e descrever seus diversos elementos componentes. Os principais aspectos que caracterizam uma tabela relacional são listados a seguir. Nome da tabela cada tabela tem um nome que a identifica; Atributos das tabelas, sendo que cada atributo pode ter Tipo e tamanho, que regem os valores que o mesmo pode assumir; Valor default, que é o valor padrão do atributo quando um novo registro é criado; Permissão para valores nulos, sobre a aceitação de valores nulos ou não; Autonumeração, que possibilita a geração automática de valores; Chave primária uma tabela pode ter, opcionalmente, um conjunto de um ou mais atributos que constituem um identificador único; Restrições de valores

2 210 Capítulo 11: Criando, eliminando e modificando tabelas uma tabela pode ter, opcionalmente, uma ou mais regras de aceitação de registros. Essas regras são estabelecidas sobre os valores dos seus atributos e são verificadas sempre que um registro é incluído ou alterado. Chaves candidatas um conjunto de um ou mais atributos pode constituir um identificador único para a tabela. Uma tabela pode ter zero ou mais chaves candidatas; Chaves estrangeiras um conjunto de um ou mais atributos pode constituir uma chave estrangeira. Uma tabela pode ter zero ou mais chaves estrangeiras. Na sua forma mais simples, uma tabela tem um nome e uma lista de atributos, cada um com seu tipo. Assim, um comando que crie uma tabela deve conter, no mínimo, esses elementos, como nos trechos abaixo. create table curso codcurso char 3, curso varchar 40 create table aluno create table aluno matricula int, matricula int, nome varchar 40, nome varchar 40, sexo char 1, sexo char 1, codcurso char 3, codcurso char 3, nascimento datetime nascimento date create table professor codprofessor int, professor varchar 40 create table disciplina coddisciplina int, disciplina varchar 40, codprofessor int, chst float, chsp float create table inscricao matricula int, coddisciplina int, nota float Os comandos create table, acima, criam versões simplificadas das tabelas do nosso banco e- xemplo 1. A tabela CURSO tem dois atributos, dos tipos char e varchar, o primeiro de 3 caracteres e o segundo com tamanho máximo de 40 caracteres. A segunda tabela, ALUNO, possui cinco atributos, sendo o último do tipo datetime. É claro que, normalmente, as tabelas em bancos de dados são um pouco mais complicadas do que isso; ainda não há chaves primárias, chaves estrangeiras, restrições de integridade e outras características pertinentes ao nosso modelo. 1 Nossa escolha limitou-se aos tipos de dados presentes nas quatro implementações SQL aqui utilizadas, com exceção para o tipo datetime que não está disponível no Oracle. Sem esta restrição, é possível fazer melhores escolhas para cada implementação específica.

3 Declarando as características de uma tabela DECLARANDO AS CARACTERÍSTICAS DE UMA TABELA Os gerenciadores de bancos de dados requerem o estabelecimento de diversas características para as tabelas. Algumas delas são de ordem lógica, tal como o número de colunas e seus tipos, a chave primária ou restrições de valores. Outras características, entretanto, são de ordem operacional e, portanto, peculiares de cada implementação. Por exemplo, pode-se designar o espaço de armazenagem em disco para a tabela, ou estabelecer outros parâmetros específicos que extrapolam os aspectos clássicos do modelo relacional. Esta seção aborda as características de ordem geral de uma tabela relacional. Aspectos específicos serão abordados separadamente, nas seções dedicadas às implementações SQL. ESCOLHA DOS TIPOS A escolha de tipos adequados para os atributos, de acordo com os possíveis valores que os mesmos venham a assumir, é uma etapa extremamente importante no projeto de bancos de dados. Escolhas precipitadas e não plenamente fundamentadas podem resultar em custosos e demorados processos de reconfiguração mais adiante, que devem ser evitados. Os principais fatores que influenciam a escolha do tipo de um atributo são: os possíveis valores que esse atributo pode assumir; as prováveis operações a serem efetuadas com esse atributo; o espaço de armazenagem que cada tipo demanda. O capítulo 7 apresenta uma detalhada exposição dos tipos disponíveis nos diversos gerenciadores de bases de dados analisadas neste livro e descreve os aspectos técnicos envolvidos numa boa escolha. CONSTRAINTS O termo constraint refere-se, genericamente, às restrições impostas sobre os valores que os atributos de uma tabela podem assumir. Chaves primárias e secundárias, chaves estrangeiras e restrições de valores podem ser imaginadas como restrições que a instância de um banco de dados deve observar. Normalmente, cada constraint é identificada por um nome único, pois assim é possível, numa eventual violação das restrições lógicas do banco, identificar a regra de integridade que está sendo desrespeitada. Por exemplo, exigir que uma nota esteja entre 0 e 10 é uma restrição de valor. Outro exemplo, é determinar que o código do curso de um aluno esteja entre os códigos de curso que aparecem na tabela CURSO restrição de integridade referencial. As seções seguintes apresentam constraints que manifestam-se de várias formas por ocasião da definição de tabelas relacionais. VALORES NULOS Um atributo pode aceitar valores nulos ou não. Este aspecto está relacionado à qualidade de preenchimento em bancos de dados. No exemplo, há alguns atributos que não permitem nulos, tais como o nome de um curso: é incorreto cadastrar um curso sem que seu nome esteja preenchido. Por outro lado, a ausência de informações sobre a data de nascimento de um aluno não é impeditivo de sua inclusão, podendo-se aceitar um registro onde tal coluna ainda não esteja preenchida. create table curso codcurso char 3 not null, curso varchar 40 not null

4 212 Capítulo 11: Criando, eliminando e modificando tabelas create table aluno create table aluno matricula int not null, matricula int not null, nome varchar 40 not null, nome varchar 40 not null, sexo char 1, sexo char 1, codcurso char 3 not null, codcurso char 3 not null, nascimento datetime nascimento date create table professor codprofessor int not null, professor varchar 40 not null create table disciplina coddisciplina int not null, disciplina varchar 40 not null codprofessor int, chst float not null, chsp float not null create table inscricao matricula int not null, coddisciplina int not null, nota float null Note que todos os atributos declarados como not null devem ser obrigatoriamente preenchidos com valores válidos nos domínios de seus tipos. A título de exemplo, o atributo nota, que aceita nulos, foi declarado explicitamente com a palavra-chave null. Normalmente, se nada for dito em contrário, um atributo aceita nulos. CHAVES PRIMÁRIAS PRIMARY KEYS A chave primária de uma tabela é composta por um ou mais atributos que, conjuntamente, identificam univocamente um registro; não há dois registros, na instância de uma tabela, com os mesmos valores para os atributos que formam a chave primária. A chave primária é o identificador principal, e seus atributos componentes não podem conter valores nulos. Sendo um tipo de constraint, chaves primárias podem receber um nome. create table curso codcurso char 3 not null, curso varchar 40 not null, constraint pk_curso primary key codcurso create table aluno create table aluno matricula int not null, matricula int not null, nome varchar 40 not null, nome varchar 40 not null, sexo char 1, sexo char 1, codcurso char 3 not null, codcurso char 3 not null, nascimento datetime nascimento date constraint pk_aluno primary key matricula constraint pk_aluno primary key matricula create table professor codprofessor int not null, professor varchar 40 not null, constraint pk_professor primary key codprofessor create table disciplina coddisciplina int not null,

5 Declarando as características de uma tabela 213 disciplina varchar 40 not null, codprofessor int, chst float not null, chsp float not null, constraint pk_disciplina primary key coddisciplina create table inscricao matricula int not null, coddisciplina int not null, nota float null, constraint pk_inscricao primary key matricula, coddisciplina A chave primária da tabela INSCRIÇÃO é composta por dois atributos, matrícula e coddisciplina. Isto significa que pode haver mais de uma inscrição para uma mesma matrícula e mais de uma inscrição para a mesma disciplina, mas não pode haver mais de uma inscrição para a mesma combinação dos atributos matrícula e coddisciplina. Em algumas implementações, quando a chave primária compreende apenas um atributo, é possível especificar esta propriedade na própria declaração do atributo, conforme é apresentado nas seções específicas, mais adiante neste capítulo. Neste caso, a definição da tabela CURSO, por exemplo, poderia ter sido escrita como create table curso codcurso char 3 not null primary key, curso varchar 40 not null Note que não é obrigatório que uma tabela tenha uma chave primária. Em certos casos, é possível construir tabelas sem identificadores, ou mesmo tabelas que possuam identificadores e, ainda assim, não tenham uma chave primária definida. INTEGRIDADE REFERENCIAL CHAVES ESTRANGEIRAS O mecanismo de integridade referencial é um importante elemento dos bancos de dados relacionais, pois garante que referências intertabelas permaneçam íntegras ao longo da existência do banco dados. Essas referências são chamadas de chaves estrangeiras foreign keys e podem ser definidas sobre atributos singelos ou conjuntos de atributos. No nosso exemplo, há uma chave estrangeira definida na tabela ALUNO referenciando a tabela CURSO, além de outras três, entre as tabelas DISCIPLINA e PROFESSOR, INSCRIÇÃO E DISCIPLINA e INSCRIÇÃO e ALUNO, como mostra o esquema a seguir veja mais detalhes sobre este esquema relacional no capítulo 1. Professor CodProfessor Nome 1 0:1 Disciplina CodDisciplina Disciplina CodProfessor CHST CHSP 1 0:n Inscricao Matricula CodDisciplina Nota 0:n 1 Aluno Matricula Nome Sexo CodCurso Nascimento 0:n 1 Curso CodCurso Curso Chaves estrangeiras, sendo um tipo de constraint, podem ser nomeadas. A descrição do esquema fica sendo como abaixo. create table aluno matricula int not null, nome varchar 40 not null, sexo char 1, codcurso char 3 not null, nascimento datetime, constraint pk_aluno primary key matricula, constraint fk_aluno_curso foreign key codcurso references curso

6 214 Capítulo 11: Criando, eliminando e modificando tabelas create table aluno matricula int not null, nome varchar 40 not null, sexo char 1, codcurso char 3 not null, nascimento date, constraint pk_aluno primary key matricula, constraint fk_aluno_curso foreign key codcurso references curso create table disciplina coddisciplina int not null, disciplina varchar 40 not null, codprofessor int, chst float not null, chsp float not null, constraint pk_disciplina primary key coddisciplina, constraint fk_disciplina_professor foreign key codprofessor references professor create table inscricao matricula int not null, coddisciplina int not null, nota float null, constraint pk_inscricao primary key matricula, coddisciplina, constraint fk_inscricao_aluno foreign key matricula references aluno matricula, constraint fk_inscricao_disciplina foreign key coddisciplina references disciplina coddisciplina Observe, no primeiro comando, que quando a chave estrangeira referencia a chave primária de outra tabela não é preciso listar os atributos que a compõem. Nem sempre a chave primária é obrigatoriamente referenciada numa chave estrangeira. Qualquer conjunto de atributos que configurem uma chave candidata vide seção a respeito mais adiante pode ser referenciado numa chave estrangeira. Um caso interessante surge no exemplo na definição da tabela DISCIPLINA. Note que o atributo codprofessor é uma chave estrangeira em relação à tabela PROFESSOR. Contudo, esse atributo admite o valor nulo, o que significa que pode haver uma disciplina com o professor ainda indefinido, isto é, com o atributo codprofessor não preenchido. Porém, se o atributo estiver prenchido deverá necessariamente fazer referência a algum professor que exista. Algumas implementações SQL permitem que, por ocasião da definição das chaves estrangeiras, se possa definir a reação do sistema gerenciador quando operações que ocasionam violações da integridade referencial são executadas sobre as tabelas. Para ilustrar este ponto, repetimos abaixo as instâncias das tabelas DISCIPLINA e INSCRIÇÃO. INSCRIÇÃO Matricula Nota CodDisciplina 1001 NULL , , , , NULL , , ,0 316 DISCIPLINA CodDisciplina Disciplina CodProfessor CHST CHSP 112 Dir. Constitucional Direito Civil Estatística Compiladores Bancos de Dados Sociologia Português

7 Declarando as características de uma tabela 215 Na definição da tabela INSCRIÇÃO, fica estabelecido que o atributo coddisciplina constitui uma chave estrangeira com relação à tabela DISCIPLINA. As setas, acima, indicam as referências que de fato existem entre os registros das duas tabelas. Um dos tipos de violação da integridade referencial ocorre quando um registro referenciado é removido da base de dados. Por exemplo, suponha que o registro da disciplina Português seja removido. Há dois caminhos a seguir: um é recusar a operação; outro é remover também os registros que o referenciam, ou seja, remover todas as inscrições nesta disciplina. Este efeito é chamado remoção em cascata. O segundo tipo de violação ocorre quando há uma alteração no código de alguma disciplina referenciada. Por exemplo, se o código da disciplina Português fosse alterado para 417, as referências existentes tornar-se-iam inválidas. Novamente, há dois cursos de ação: recusar a operação, mantendo a integridade, ou promover a mesma alteração em todos os registros das inscrições, de modo a manter íntegras as referências. Este segundo efeito é chamado de propagação de atualização. Alguns SGBD oferecem uma terceira alternativa nos dois casos acima, qual seja a de preencher com nulos as referências que tornam-se inválidas. Embora isto não preserve a integridade referencial, pelo menos é possível completar a operação e, mais adiante, tratar os registros atingidos. Quanto à qualidade da referência, pode-se classificar o nível de integridade como match partial e match full. Para chaves estrangeiras compostas por mais de um atributo, match full significa que todos os atributos devem estar preenchidos, sendo a referência completa. Com match partial, presume-se ser aceitável haver alguns desses atributos componentes preenchidos com nulos. Esses aspectos são analisados em maiores detalhes nas seções que tratam dos aspectos específicos de cada implementação SQL. CHAVES CANDIDATAS Ocasionalmente, é preciso que, além da chave primária, outros atributos ou conjuntos de atributos tenham a propriedade de serem únicos numa tabela. A cláusula unique pode ser utilizada com este fim. No banco de exemplos, as tabelas DISCIPLINA e PROFESSOR têm, entre si, um relacionamento 1 para 1. Isto significa que um mesmo professor não pode estar ligado a mais de uma disciplina. Tal restrição pode ser resolvida através de uma chave candidata: basta fazer com que o atributo codprofessor, na tabela DISCIPLINA, seja um identificador. Supondo, ainda, que os atributos curso, na tabela CURSO, e disciplina, na tabela DISCIPLINA, não possam ser repetidos em diferentes registros, as declarações dessas tabelas poderiam ser construídas como create table curso codcurso int not null, curso varchar 40 not null, constraint pk_curso primary key codcurso, constraint uq_curso unique curso create table disciplina coddisciplina int not null, disciplina varchar 40 not null, codprofessor int, chst float not null, chsp float not null, constraint pk_disciplina primary key coddisciplina, constraint fk_disciplina_professor foreign key codprofessor references professor, constraint uq_disciplina unique disciplina, constraint up_codprofessor unique codprofessor Assim como a chave primária, a propriedade unique poderia aplicar-se a um conjunto de atributos. Uma mesma tabela pode ter várias chaves candidatas efeito equivalente pode ser obtido a

8 216 Capítulo 11: Criando, eliminando e modificando tabelas partir de índices sem duplicações, vistos no capítulo 14. Chaves candidatas são também um tipo de constraint e, portanto, podem receber nomes. VALORES DEFAULT Muitas vezes é preciso incluir registros ainda que nem todos os atributos estejam preenchidos. Quando isso ocorre, a possibilidade de se definir valores padronizados para cada coluna é importante, pois mantém o registro íntegro e evita a ocorrência de valores nulos e suas inconveniências vide capítulo 4. A palavra-chave default introduz a expressão que deve preencher o atributo no caso de ausência de valor para o mesmo na ocasião da inclusão do registro. create table disciplina coddisciplina int not null, disciplina varchar 40 not null, codprofessor int, chst float default 0 not null, chsp float default 0 not null, constraint pk_disciplina primary key coddisciplina constraint fk_disciplina_professor foreign key codprofessor references professor, constraint uq_disciplina unique disciplina, constraint up_codprofessor unique codprofessor create table disciplina coddisciplina int not null, disciplina varchar 40 not null, codprofessor int, chst float not null default 0, chsp float not null default 0, constraint pk_disciplina primary key coddisciplina constraint fk_disciplina_professor foreign key codprofessor references professor, constraint uq_disciplina unique disciplina, constraint up_codprofessor unique codprofessor As expressões que podem ser usadas para definir os valores default dos atributos dependem da implementação; em geral, são permitidas expressões aritméticas que incluem funções intrínsecas. No nosso exemplo, as cargas horárias teórica e prática, se omitidas, assumem o valor zero. No Access, a cláusula default não é aceita no SQL. Oracle e SQL Server supõem as cláusulas not null e default em ordens diferentes, o que requer duas versões para o comando acima. RESTRIÇÕES DE VALORES CLÁUSULA CHECK Os valores que um atributo pode assumir são determinados pelo domínio de seu tipo de dados correspondente. O tipo int, por exemplo, permite que o atributo armazene valores inteiros num certo intervalo. Entretanto, muitas vezes é preciso restringir ainda mais esses valores. Por e- xemplo, a nota de um aluno deve ser um valor real entre 0 e 10. Como não há um tipo de números reais neste intervalo particular, é preciso empregar um tipo numérico mais abrangente e criar uma restrição suplementar. Outro tipo comum de restrição é o controle da correlação entre diferentes atributos numa tabela. Supondo-se que a carga horária teórica das disciplinas deva ser, sempre, pelo menos igual à metade da carga horária prática, poder-se-ia refinar a declaração da tabela DISCIPLINA, com auxílio da cláusula check, como mostrado a seguir. create table disciplina coddisciplina int not null, disciplina varchar 40 not null, codprofessor int, chst float not null default 0 check chst >= 0, chsp float not null default 0 check chsp >= 0, constraint pk_disciplina primary key coddisciplina,

9 Declarando as características de uma tabela 217 constraint fk_disciplina_professor foreign key codprofessor references professor, constraint uq_disciplina unique disciplina, constraint up_codprofessor unique codprofessor, constraint carga_horaria check chst >= 0.5 * chsp create table disciplina coddisciplina int not null, disciplina varchar 40 not null, codprofessor int, chst float default 0 not null check chst >= 0, chsp float default 0 not null check chsp >= 0, constraint pk_disciplina primary key coddisciplina, constraint fk_disciplina_professor foreign key codprofessor references professor, constraint uq_disciplina unique disciplina, constraint up_codprofessor unique codprofessor, constraint carga_horaria check chst >= 0.5 * chsp Para a tabela ALUNO poderíamos imaginar duas restrições adicionais: que o sexo seja M ou F e que a data de nascimento esteja num intervalo plausível. 2 Uma cláusula check é formada por uma expressão lógica cujo valor final deve ser verdadeiro ou desconhecido. Note que é possível empregar os operadores in e between nas expressões que constituem uma cláusula check, assim como quaisquer outros construtores de expressões vistos no capítulo 4. create table aluno matricula int not null, nome varchar 40 not null, sexo char 1, codcurso char 3 not null, nascimento datetime, constraint pk_aluno primary key matricula, constraint fk_aluno_curso foreign key codcurso references curso, constraint aluno_sexo check sexo in 'M', 'F', constraint data_nascimento_válida check nascimento between '01/01/1950' and '31/12/2000' create table aluno matricula int not null, nome varchar 40 not null, sexo char 1, codcurso char 3 not null, nascimento datetime, constraint pk_aluno primary key matricula, constraint fk_aluno_curso foreign key codcurso references curso, constraint aluno_sexo check sexo in 'M', 'F', constraint data_nascimento_válida check nascimento between ' ' and ' ' create table aluno matricula int not null, nome varchar 40 not null, sexo char 1, codcurso char 3 not null, nascimento date, constraint pk_aluno primary key matricula, constraint fk_aluno_curso foreign key codcurso references curso, constraint aluno_sexo check sexo in 'M', 'F', constraint data_nascimento_válida check nascimento between to_date '01/01/1950', 'dd/mm/yyyy' and to_date '31/12/2000', 'dd/mm/yyyy' 2 O MySQL aceita sintaticamente a cláusula check mas não a implementa. O Access não aceita a cláusula check.

10 218 Capítulo 11: Criando, eliminando e modificando tabelas No último comando é preciso especificar as datas através da função to_date vista no capítulo 8. ATRIBUTOS AUTONUMERADOS Em muitos casos, a utilização de atributos cujos valores são gerados automaticamente, sem repetições, são de grande interesse em bancos de dados. No nosso banco exemplo, poderíamos imaginar que as matrículas dos alunos fossem geradas progressivamente, cada vez que um registro fosse adicionado à tabela ALUNO. Com isso, não haveria o risco de existir matrículas repetidas e nem seria preciso cuidados com o controle da numeração. Esta facilidade é provida pelas implementações SQL, porém de formas bastante distintas umas das outras. Por esse motivo, optamos por apresentar cada uma separadamente, nas seções que tratam de detalhes das implementações SQL ELIMINANDO TABELAS Eliminar uma tabela é extremamente fácil. O comando drop table segue a sintaxe drop table <tabela> que é auto-explicativa. Para eliminar a tabela PROFESSOR, por exemplo, bastaria o comando drop table professor Eliminar uma tabela que está sendo referenciada por alguma chave estrangeira é uma potencial violação da integridade referencial, que provoca erro na operação. Em algumas implementações, entretanto, é possível remover também as restrições de integridade ligadas à tabela sendo removida. Remover uma tabela significa: remover todos os registros da tabela; remover todos os índices criados para a tabela ALTERANDO AS CARACTERÍSTICAS DE UMA TABELA O comando alter table permite vários tipos de alterações numa tabela, tais como incluir, alterar e remover colunas e incluir e remover restrições de integridade. No Access não é possível alterar as propriedades de uma coluna através do SQL. Isso somente é possível através da interface de administração. ALTERANDO OS TIPOS DAS COLUNAS Para alterar o tipo de uma coluna, basta montar o comando com a opção alter column ou modify, seguida do nome da coluna sendo alterada e do novo tipo da coluna. alter table disciplina alter column disciplina varchar 50 not null alter table disciplina modify disciplina varchar 50 not null O comando acima altera o tipo do atributo disciplina para varchar50 e especifica que nulos não são aceitos neste campo.

11 Alterando as características de uma tabela 219 INCLUINDO NOVAS COLUNAS É possível alterar uma tabela pela introdução de novas colunas em sua estrutura, como no e- xemplo a seguir. alter table disciplina add creditos float not null default 0 alter table disciplina add creditos float default 0 not null alter table disciplina add creditos float not null Uma nova coluna, denominada créditos, é adicionada à tabela DISCIPLINA, com as características descritas. Note que, neste caso, as versões com a cláusula de valor default não são aceitas no Access. Em tabelas não vazias, novas colunas devem permitir nulos ou possuir algum valor default; caso contrário, inserir essas colunas sem uso de nulos seria uma potencial violação dos requisitos. Veja, mais adiante neste capítulo, como cada implementação procede nesta situação. REMOVENDO COLUNAS Colunas podem ser removidas através da cláusula drop column, como no exemplo a seguir. alter table disciplina drop column creditos A sintaxe é bastante simples. Eventuais constraints definidas sobre a coluna sendo eliminada devem ter sido removidas antes dessa operação. INCLUINDO CONSTRAINTS : CHAVES PRIMÁRIAS, CHAVES ESTRANGEIRAS E RESTRIÇÕES DE VALORES Qualquer um dos vários tipos de restrições de valores pode ser acrescentado a uma tabela através da cláusula add constraint. No exemplo abaixo, inclui-se a restrição de que o valor de uma hipotética coluna créditos deve ser igual ou superior à soma da carga horária teórica com a metade da carga horária prática da disciplina. alter table disciplina add constraint creditos_positivos check creditos >= chst * chsp As restrições são identificadas por seus respectivos nomes e não pode haver duplicação. Eventuais restrições homônimas da que está sendo inserida devem ter sido previamente removidas. Os comandos a seguir mostram exemplos com outros tipos de restrições de integridade. 3 alter table professor add constraint pk_professor primary key codprofessor ; alter table inscricao add constraint pk_inscricao primary key matricula, coddisciplina ; alter table disciplina add constraint uq_disciplina unique disciplina ; alter table disciplina add constraint fk_disciplina_professor foreign key codprofessor references professor ; No quarto comando, observe que quando uma chave estrangeira referencia a chave primária de outra tabela não é preciso listar os atributos que a compõem. Ainda que, na nossa base de e- 3 Algumas dessas restrições já foram incluídas nas tabelas por ocasião da sua definição, e são aqui repetidas apenas a título de exemplo.

12 220 Capítulo 11: Criando, eliminando e modificando tabelas xemplos, as chaves estrangeiras refiram-se às chaves primárias das tabelas, isso não é uma obrigatoriedade no modelo relacional. Qualquer conjunto de atributos que configure uma chave candidata vide seção a respeito mais adiante pode constituir uma chave de referência. REMOVENDO RESTRIÇÕES Restrições podem ser removidas através da cláusula drop constraint, como no exemplo a seguir. alter table disciplina drop constraint fk_disciplina_professor RESTRIÇÕES INCONSISTENTES Algumas alterações das características de uma tabela podem ou não ser bem sucedidas, dependendo da instância corrente no momento da operação. Por exemplo, se uma coluna que permite nulos é modificada para not null, é necessário que nenhum dos registros possua o valor nulo nesta coluna. Se já houver valores nulos, é necessário alterá-los todos, antes da mudança. Numa tabela não vazia, novas colunas devem permitir nulos ou possuir algum valor default; caso, contrário, a inserção dessas colunas causaria inconsistências na base de dados, pois não haveria como preenchê-las. Outros exemplos em que novas restrições podem ser inválidas ocorrem para chaves estrangeiras, índices sem duplicatas, restrições de valores e quaisquer outras exigências baseadas em condições lógicas, que devem ser verificadas na instância de uma ou mais tabelas. Veja como cada implementação trata esses casos nas seções específicas, neste capítulo CRIANDO, ELIMINANDO E MODIFICANDO TABELAS NO ACCESS Nem todas as alterações que o Access suporta podem ser descritas por comandos SQL. Na verdade, esses comandos são razoavelmente limitados, uma vez que supõe-se que o usuário faça uso da interface de gerenciamento. As seções a seguir detalham alguns aspectos relevantes sobre as possibilidades de alteração de tabelas no Access. SINTAXE Os comandos create table e alter table obedecem à sintaxe mostrada a seguir. <comando create table> := create table <tabela> { <definição de atributo> <constraint geral>,... <comando alter table> := alter table <tabela> <operação> <operação> := { add column <definição de atributo> add <constraint geral> drop constraint <nome de constraint> drop column <coluna> <definição de atributo> := <atributo> <tipo> [ null not null ] [ <constraint de atributo> ] <constraint geral> := constraint <nome de constraint> { { primary key unique not null <coluna>,... foreign key [ no index ] <coluna>,... references <tabela> [ <coluna>,... ]

13 Criando, eliminando e modificando tabelas no Access 221 [ on update cascade set null ] [ on delete cascade set null ] <constraint de atributo> := constraint <nome de constraint> { { primary key unique not null references <tabela> [ <coluna>,... ] [ on update cascade set null ] [ on delete cascade set null ] Os comandos acima compreendem a criação de tabelas e as operações de alteração, incluindo a adição e remoção de colunas e constraints. Note que mesmo as restrições que aplicam-se a apenas um atributo, não sendo explicitamente nomeadas, são tratadas genericamente como constraints. NOMES DE TABELAS, ATRIBUTOS E RESTRIÇÕES Nomes podem ser bastante flexíveis no Access. Os nomes para tabelas, atributos e restrições podem ter até 64 caracteres, incluindo letras, números, espaços e caracteres especiais, exceto. ponto,! exclamação, ` acento grave e [ ] abre/fecha colchetes. Um nome não pode iniciar com o caracter de espaço e não pode incluir caracteres de controle valores ASCII de 0 a 31. Embora sejam permitidos, caracteres especiais e espaços em nomes não são uma boa prática, pois podem causar ambigüidades no SQL. Uma tabela chamada #1 teste, por exemplo, requer o uso de colchetes num comando SQL, porque X select * from #1 teste provoca erros de sintaxe. O correto é referenciar essa tabela como select * from [#1 teste] Escrever colchetes em todas as referências a tabelas e atributos assim nomeados é um teste de paciência, que pode e deve ser evitado. O Access não difere entre maiúsculas e minúsculas nos nomes. PALAVRAS RESERVADAS O emprego de palavras reservadas no Access também é flexível. Dependendo do contexto, algumas palavras reservadas são aceitas. Por exemplo, a tabela TESTE pode ser criada como X create table teste having varchar 40 not null, between char 1 mesmo sendo os nomes dos atributos, having e between, palavras de uso reservado. Isso ocorre porque, no contexto da definição de atributos, essas duas palavras não têm papel sintático relevante. Um atributo chamado key ou unique, contudo, causaria um erro de sintaxe, pois essas últimas têm papel sintático na definição de um atributo. Note, porém, que mesmo aceitos na definição da tabela, os nomes dos atributos podem causar dores-de-cabeça mais tarde. Um comando SQL como X select having from teste where between > 12 não é aceito e deveria ser escrito select having from teste

14 222 Capítulo 11: Criando, eliminando e modificando tabelas where [between] > 12 Como norma geral, o mais seguro é procurar não utilizar palavras reservadas na definição de elementos do banco de dados. VALORES NULOS Access é liberal com valores nulos quando da criação de novas colunas em tabelas já instanciadas. Para tipos numéricos, mesmo que o atributo sendo criado não suporte nulos, as novas colunas assumem este valor ainda que algum valor padrão tenha sido especificado. Novos registros ou registros que sejam regravados, entretanto, são verificados quanto à presença de valores nulos. Para tipos não numéricos, uma coluna que não aceita nulos somente pode ser inserida se a tabela ainda estiver vazia. CHAVES PRIMÁRIAS PRIMARY KEYS A definição de uma chave primária implica na criação de um índice sem duplicação, que a implementa vide capítulo 14. Um índice decorrente da definição da chave primária não admite valores nulos. INTEGRIDADE REFERENCIAL CHAVES ESTRANGEIRAS No Access, é possível associar, para cada chave estrangeira, separadamente, os efeitos de remoção em cascata e/ou de propagação de atualização. Também é possível alterar para nulos os atributos atingidos quando um registro referenciado por uma chave estrangeira é removido ou alterado. VALORES DEFAULT O Access não aceita a especificação de valores default através do SQL; contudo, através da interface, qualquer expressão aritmética podendo incluir literais e funções é válida na designação do valor default de um atributo. CHAVES CANDIDATAS Toda chave candidata é implementada através de índice sem duplicação. Um índice decorrente da definição de chaves candidatas pode admitir valores nulos. Vide capítulo 14 para maiores detalhes. RESTRIÇÕES DE VALORES Restrições de valores não podem ser especificadas através da cláusula check do SQL, embora seja possível fazê-lo pela interface do Access. ATRIBUTOS AUTONUMERADOS Atributos autonumerados podem ser definidos pelo tipo autoincrement ou pelo seu sinônimo, o tipo counter. Por exemplo, se a tabela ALUNO utilizasse este recurso para a geração de números de matrícula automaticamente, a mesma poderia ter sido criada como create table aluno matricula autoincrement 1000,10 not null constraint pk_aluno primary key,

15 Criando, eliminando e modificando tabelas no MySQL 223 nome varchar 40 not null, sexo char 1, codcurso char 3, nascimento datetime, constraint fk_aluno_curso foreign key codcurso references curso Uma coluna autonumerada é implementada com o tipo long sinônimo de int, integer, e integer4. Depois de criada, uma coluna de autonumeração pode ter seu tipo alterado para outro qualquer, sem essa propriedade, desde que seja possível fazer a conversão dos valores. Entretanto, uma coluna normal não pode ser transformada numa coluna com autonumeração. É possível estabelecer o valor inicial e o incremento da numeração. No exemplo acima, os registros serão numerados de 10 em 10 a partir de Se nada for especificado, a numeração dos registros é gerada a partir de 1, com incremento de 1. Quando uma coluna de autonumeração é adicionada a uma tabela, todos os registros eventualmente existentes são numerados automaticamente. É possível descobrir qual foi o último valor de autoincremento utilizado em alguma tabela com a variável como no comando abaixo. Note que não é possível especificar uma tabela específica. É mostrado sempre o último valor utilizado, independentemente da tabela ao qual está associado. Os valores inicial e de incremento de uma autonumeração podem ser alterados depois da criação da tabela. O comando alter table aluno alter column matricula autoincrement 50000,100 faz com que os novos valores passema a ser numerados a partir de 50000, com incrementos de 100. É preciso atenção num comando desse tipo porque os novos valores de vem ser compatíveis com os eventuais registros que já existam na tabela CRIANDO, ELIMINANDO E MODIFICANDO TABELAS NO MYSQL No MySQL, o tamanho máximo de cada tabela depende do tamanho permitido para os arquivos do sistema operacional. Contudo, tabelas do tipo MyISAM têm um tamanho máximo default de 4 GBytes, que pode ser estendido com a utilização das opções de tabela avg_row_length e max_rows. Cada tabela pode ter, no máximo, 32 índices podendo este limite ser aumentado para 64. SINTAXE A sintaxe dos comandos create table e alter table é apresentada a seguir. <create table> := create [ temporary ] table [ if not exists ] <tabela> { { <definição de atributo> <restrição geral>,... [<opções de tabela>... ] [ [ ignore replace ] <comando select> ] like <tabela> <alter table> := alter [ ignore ] table <tabela> <operação>,... <operação> := { add [ column ] <definição de atributo> [ first { after <coluna> ] add [ column ] <definição de atributo>,... add < restrição geral > drop [ column ] <coluna> drop primary key

16 224 Capítulo 11: Criando, eliminando e modificando tabelas drop index <índice> alter [ column ] <coluna> { set default <literal> drop default change [ column ] <coluna> <definição de atributo> [ first after <coluna> ] modify [ column ] <definição de atributo> [ first after <coluna> ] { enable disable keys rename [ to ] <tabela> order by { <atributo> [ asc desc ],... <opções de tabela> <definição de atributo> := <coluna> <tipo de dados> [ unsigned ] [ zerofill ] [ <restrição de atributo>,... ] <restrição geral> := { [ primary ] key <atributo>,... index [ <índice> ] <atributo>,... unique [ <índice> ] <atributo>,... fulltext [ <índice> ] <atributo>,... check <expressão> [ [ constraint ] <restrição> ] foreign key <índice> <atributo>,... <referência estrangeira> <restrição de atributo> := { [ not ] null default <valor> auto_increment [ primary ] key <referência estrangeira> <referência estrangeira> := references <tabela> [ <atributo>,... ] [ match full match partial ] [ on delete { restrict cascade set null no action set default ] [ on update { restrict cascade set null no action set default ] <opções de tabela> := { type = { bdb heap isam innodb merge mrg_myisam myisam auto_increment = <número> avg_row_lenght = <número> checksum = { 0 1 comment = " <string> " max_rows = <número> min_rows = <número> packkeys = { 0 1 default password = " <string> " delay_key_write = { 0 1 row_format = { default dynamic fixed compressed raid_type = { 1 striped raid0 raid_chunks = <número> raid_chunksize = <número> union = <tabela>,... insert_method = { no first last data directory = " <path> " index directory = " <path> " O significado das construções desta sintaxe e seus aspectos mais relevantes são discutidos a seguir. MOSTRANDO AS TABELAS Inicialmente, é importante saber como obter a definição corrente de cada tabela num banco de dados MySQL. Com isso, é possível conferir o efeito dos comandos aqui mostrados e exemplificados. O comando show tables mostra as tabelas existentes num banco de dados. O resultado é uma lista de nomes que inclui todas as tabelas permanentes do banco de dados.

17 Criando, eliminando e modificando tabelas no MySQL 225 O comando describe ou desc exibe as principais informações sobre a estrutura de uma tabela. { describe desc <tabela> { <coluna> <string de comparação> Em tabelas com muitas colunas, pode-se especificar alguma coluna em particular ou fornecer uma string genérica, que pode conter os caracteres curinga % percentual, significando qualquer string, e _ sublinhado, significando qualquer caracter. Por exemplo, o comando describe aluno produz a listagem do quadro a seguir. Um comando como Field Type Collation Null Key Default Extra matricula int11 binary PRI 0 nome varchar40 latin1_swedish_ci sexo char1 latin1_swedish_ci YES NULL codcurso char3 latin1_swedish_ci YES NULL nascimento date latin1_swedish_ci YES NULL 5 rows in set 0.00 sec desc disciplina chst produz resultado semelhante, porém mostrando somente a coluna chst. Já o comando describe disciplina 'ch%' produz informações sobre as colunas chst e chsp. O comando show create table é útil para exibir as características de uma tabela. Usando, por exemplo, show create table aluno é possível conhecer todas as características correntes da referida tabela, na forma de um comando create table remontado. TIPOS DE TABELAS MySQL trabalha com tabelas de vários tipos, que dividem-se em dois grupos: tabelas com suporte a transações e tabelas sem suporte a transações. Tabelas sem suporte a transações Tabelas com suporte a transações MyISAM MERGE HEAP ISAM InnoDB BDB Todas as tabelas têm um arquivo.frm que contém suas definições. Tabelas que não suportam transações requerem menos espaço e operam mais rapidamente, pois não há necessidade das tarefas extras do sistema por conta desse gerenciamento. Tabelas com suporte à transação permitem, por exemplo, operações de rollback, pois mantêm atas logs de todas as suas operações. Tabelas MyISAM É o tipo default no MySQL. Têm seus dados gravados em arquivos.myd e índices gravados em arquivos.myi. Utilizam índices do tipo B-tree 4 e podem existir sob três formatos: static registros de tamanho fixo, dynamic registros de tamanho variável e compressed formato para 4 Veja detalhes sobre índices no capítulo 14.

18 226 Capítulo 11: Criando, eliminando e modificando tabelas leitura apenas. Tabelas deste tipo são armazenadas em arquivos no diretório do banco de dados. Para uma tabela denominada TESTE, por exemplo, criam-se os arquivos 5 test e.frm test e.myd teste.myi definições para a tabela dados armazenados estruturas de índices Tabelas MERGE ou MRG_MyISAM Tabelas desse tipo são formadas a partir da união de outras tabelas MyISAM. Com isso, pode-se operar sobre as tabelas componentes simultaneamente, com comandos como select, update ou delete. Também são úteis para a consolidação de dados, uma vez que tabelas de diferentes fontes podem ser unificadas facilmente. Contudo, há várias limitações em relação aos comandos permitidos sobre elas, além de restrições de uso das tabelas componentes de uma tabela MERGE quando esta está em uso. O termo MRG_MyISAM pode ser empregado como sinônimo de MERGE. Tabelas HEAP São tabelas armazenadas exclusivamente na memória, que utilizam índices do tipo hash sendo, portanto, extremamente rápidas. Não há garantia alguma contra falhas do sistema. Tabelas desse tipo são usualmente empregadas como tabelas temporárias, de fácil reconstrução em caso de pane. Há várias restrições sobre as operações que podem suportar, além de cuidados a tomar por ocasião da sua criação. Tabelas ISAM Este tipo de tabela foi sobrepujado pelo tipo MyISAM e tende a desaparecer, embora ainda possa ser utilizado em algumas versões. Tabelas InnoDB InnoDB, na verdade, constitui uma máquina de banco de dados que suporta transações, recuperação de informação, locks e multi-uso, e outras características. Diferentemente das tabelas MyISAM, que armazenam seus dados e índices em arquivos específicos, tabelas InnoDB armazenam dados e índices em tablespaces, que podem abranger vários arquivos. Algumas instalações devem ser explicitamente configuradas para abrigar esse tipo de tabela. Tabelas BDB São tabelas criadas na máquina BerkeleyDB e suportam controle de transações, commit e rollback. Essas tabelas são suportadas primordialmente em instalações Unix. Algumas instalações devem ser explicitamente configuradas para abrigar tabelas desse tipo. O tipo de uma tabela é estabelecido no comando create table, como no exemplo a seguir. create table teste a varchar 40 not null, b int type = myisam Uma tabela já existente pode ser convertida para um outro tipo. O comando alter table teste type = innodb altera o tipo da tabela criada acima. Se for escolhido um determinado tipo de tabela que não esteja disponível na instalação, MySQL cria a tabela usando um tipo assemelhado em geral, MyISAM. Por exemplo, a indisponibilidade do tipo BDB acarreta a utilização do tipo MyISAM como alternativa. 5 Os nomes dos arquivos preservam maiúsculas e minúsculas empregadas no nome da tabela.

19 Criando, eliminando e modificando tabelas no MySQL 227 Muitas vezes, é comum que durante o teste de uma base de dados seja preciso repetir os comandos de criação de tabelas até que o projeto esteja estabilizado. Nessas situações, é interessante utilizar a opção if not exists, disponível no MySQL, que evita erros na criação de uma tabela quando a mesma já existe. Por exemplo, o comando create table if not exists teste a varchar 40 not null, b int somente leva adiante a criação da tabela se ainda não existir tabela como o mesmo nome. Note que a tabela existente não precisa ser idêntica à que está sendo criada; basta que tenham nomes iguais. NOMES Os nomes para bancos de dados e tabelas podem ter até 64 caracteres. Em função do método de armazenagem de dados do MySQL, nomes de bancos seguem as mesmas regras para pastas do sistema operacional, exceto os caracteres. ponto, / barra e \ barra invertida. Os nomes de tabelas seguem as mesmas regras dos nomes de arquivos, exceto pelos caracteres. ponto e / barra. Nomes de colunas podem ter até 64 caracteres e aceitam qualquer caracter; nomes alternativos, usados em cláusulas as, podem ter até 255 caracteres e também aceitam qualquer caracter. Em todos os casos, contudo, excetuam-se os caracteres ASCII de códigos 0 e 255, além dos caracteres que denotam aspas simples ou duplas. Note que isso implica em cuidados quando utilizam-se sistemas operacionais distintos, uma vez que as regras de denominação de pastas e arquivos podem diferir de ambiente para ambiente. Outra conseqüência disso é que nomes de bancos de dados e tabelas passam a ser diferenciados em maiúsculas e minúsculas, uma vez que alguns sistemas operacionais, como Unix, assim o fazem. Nomes alternativos de tabelas, introduzidos pelas cláusulas as, diferenciam maiúsculas e minúsculas e requerem cuidado. Um comando como X select A.nome from aluno a provoca erro, pois a variável de registro A não é reconhecida. Uma forma de evitar equívocos com caixas altas e baixas é utilizar a opção lower_case_table_names ligada, pois a mesma força os nomes de bancos e tabelas para caixa baixa. Espaços e caracteres especiais em nomes continuam não sendo uma boa idéia, pois podem causar ambigüidades. Uma tabela chamada teste duplo, por exemplo, requer o uso do delimitador ` acento grave num comando SQL, porque select * from teste duplo provoca erros de sintaxe. O correto é referenciar essa tabela como abaixo. select * from `teste duplo` É sempre bom lembrar: jamais use nomes contendo espaços ou caracteres especiais, exceto o caracter _ sublinhado. PALAVRAS RESERVADAS O comando create table teste having varchar 40 not null, between char 1

20 228 Capítulo 11: Criando, eliminando e modificando tabelas não é aceito porque o MySQL proíbe expressamente o uso de palavras reservadas na designação de nomes, qualquer que seja o contexto. Entretanto, um comando com os mesmos nomes com o delimitador ` acento grave create table teste `having` varchar 40 not null, `between` char 1 é aceito. Mas tudo tem seu preço. Invocar esses atributos requer delimitadores, que podem ser ` acento grave, ' apóstrofo ou " aspas duplas. O nome da tabela aceita somente o delimitador ` acento grave. Assim, os comandos funcionam, mas o comando select having from teste select 'having' from teste select `having` from teste não funciona. X select having from teste TIPOS MODIFICADOS Em alguns casos, o MySQL promove pequenas alterações nos tipos escolhidos para os atributos, tanto na criação de uma tabela como na sua alteração. Isso acontece principalmente em atributos que armazenam strings. Veja mais detalhes no capítulo 7, na seção que trata dos tipos no MySQL. TIPOS NUMÉRICOS COM UNSIGNED E ZEROFILL Um tipo numérico pode ser modificado com a opção unsigned, como foi explicado no capítulo 7. Normalmente, um tipo numérico aceita valores positivos e negativos. A opção unsigned determina que valores negativos não sejam aceitos. Quando um atributo de tipo numérico é definido com a propriedade zerofill, os valores dessa coluna são preenchidos com zeros à esquerda, até o tamanho do campo, toda vez que são mostrados no resultado de uma consulta. Por exemplo, se a tabela DISCIPLINA tivesse sido definida como no comando abaixo create table disciplina coddisciplina int not null, disciplina varchar 40 not null, codprofessor int, chst float not null default 0 check chst >= 0, chsp float zerofill not null default 0 check chsp >= 0, constraint pk_disciplina primary key coddisciplina, constraint fk_disciplina_professor foreign key codprofessor references professor, constraint uq_disciplina unique disciplina, constraint up_codprofessor unique codprofessor, constraint carga_horaria check chst >= 0.5 * chsp o resultado de um comando select para todos os registros da tabela seria mostrado como coddisciplina disciplina codprofessor chst chsp 112 Dir. Constitucional Direito Civil Estatística Compiladores

Banco de Dados I Introdução SQL

Banco de Dados I Introdução SQL Banco de Dados I Introdução SQL Frederico Queiroga fredericoqueiroga@gmail.com https://sites.google.com/site/fredericoqueiroga/ Linguagem SQL Aspectos Gerais: Independência do fabricante: Está incorporada

Leia mais

Tabelas. Banco de Dados I MySQL

Tabelas. Banco de Dados I MySQL FACULDADE ANGLO AMERICANO FOZ DO IGUAÇU Curso de Ciência da Computação 5º Período Disciplina: Banco de Dados I Prof. Erinaldo Sanches Nascimento Tabelas Banco de Dados I MySQL Linguagem de Definição de

Leia mais

A linguagem SQL

A linguagem SQL SQL 2008.1 A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua primeira versão

Leia mais

Professor Leonardo Larback

Professor Leonardo Larback Professor Leonardo Larback Engines MySQL Server possui um conceito chamado de Storage Engine ou mecanismos de armazenamento, ou ainda, tipos de tabela. Através da engine selecionada, o servidor sabe como

Leia mais

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação SQL Básica DDL Prof. Marcos A. Schreiner Curso de Licenciatura em Computação 21 de outubro de 2015 Prof. Marcos A. Schreiner (UFPR) 21 de outubro de 2015 1 / 28 1 Introdução 2 SQL DDL CREATE Criar Banco

Leia mais

MySql. Introdução a MySQL. Andréa Garcia Trindade

MySql. Introdução a MySQL. Andréa Garcia Trindade MySql Introdução a MySQL Andréa Garcia Trindade Introdução O que é Banco de Dados SGBD MYSQL Tipos de Tabelas Tipos de Dados Linguagem SQL Comandos SQL O que é um Banco de Dados? Conjuntos de dados Grupo

Leia mais

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas Banco de dados Conteúdo: DDL Prof. Patrícia Lucas O mysql MySQL Workbench é uma ferramenta de design de banco de dados visual que integra o desenvolvimento SQL, administração, design de banco de dados,

Leia mais

SQL Linguagem de Definição de Dados

SQL Linguagem de Definição de Dados SQL Linguagem de Definição de Dados Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Structured Query Language Uma das mais importantes linguagens relacionais (se não a mais

Leia mais

Sumário. SQL - Criação de Tabelas. Structured Query Language. SQL Versões. André Restivo. October 18, 2010

Sumário. SQL - Criação de Tabelas. Structured Query Language. SQL Versões. André Restivo. October 18, 2010 Sumário SQL - Criação de Tabelas André Restivo Faculdade de Engenharia da Universidade do Porto October 18, 2010 1 Introdução 2 Tabelas 3 Colunas 4 5 Modificação de Tabelas 6 Domínios André Restivo (FEUP)

Leia mais

BANCO DE DADOS. Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE <nome_banco_de_dados>

BANCO DE DADOS. Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE <nome_banco_de_dados> BANCO DE DADOS 1. Scripts de criação de banco de dados Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE Onde:

Leia mais

Banco de Dados. Professora: Luciana Faria

Banco de Dados. Professora: Luciana Faria Banco de Dados Professora: Luciana Faria Introdução ao linguagem é a SQL (Structured Query Language) Linguagem de Consulta Estruturada Para se utilizar, administrar, e trabalhar com um banco de dados é

Leia mais

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR SQL Structured Query Language, ou Linguagem de Consulta Estruturada, foi desenvolvida pela IBM nos anos 70 para demonstrar a viabilidade do modelo relacional para bancos de dados. No final dos anos 80

Leia mais

BCD29008 Banco de dados

BCD29008 Banco de dados BCD29008 Banco de dados Linguagem SQL Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/bcd 21 de agosto de 2017

Leia mais

Múltiplas Tabelas. Disciplina de Banco de Dados

Múltiplas Tabelas. Disciplina de Banco de Dados Múltiplas Tabelas Uma das grandes características de um sistema de banco de dados relacional é a capacidade de interagir com múltiplas tabelas relacionadas. Precisamos lembrar que para relacionar tabelas

Leia mais

Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU

Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU Aula 6 BD1 Modelo Relacional Profa. Elaine Faria UFU - 2017 Introdução Modelo Relacional Proposto por Codd em 1970 Revolucionou a área de banco de dados É o modelo dominante base para os SGBDs líderes

Leia mais

Linguagem SQL Restrições, Triggers e Views

Linguagem SQL Restrições, Triggers e Views FACULDADE INGÁ Unidade de Ensino Superior Ingá Ltda Ciência da Computação Linguagem SQL Restrições, Triggers e Views Prof. Erinaldo Sanches Nascimento Objetivos Especificar restrições mais gerais sobre

Leia mais

SQL. Linguagem de Definição de Dados (DDL) Tipos em SQL. Tipos Data/Tempo em SQL (cont.)

SQL. Linguagem de Definição de Dados (DDL) Tipos em SQL. Tipos Data/Tempo em SQL (cont.) SQL Linguagem de Definição de Dados (DDL) Linguagem de Definição dos Dados Tipos em SQL Manipular Tabelas (relações) Integridade e Segurança Linguagem de Manipulação dos Dados Estrutura básica Operações

Leia mais

PSI Linguagem de Definição de dados. Módulo 15

PSI Linguagem de Definição de dados. Módulo 15 PSI Linguagem de Definição de dados Módulo 15 Objetivos de aprendizagem No final deste módulo os alunos devem ter adquirido conhecimentos, procedimentos e atitudes que lhe permitam: Criação, alteração

Leia mais

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL. LINGUAGEM SQL SQL CREATE DATABASE MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL. SQL CREATE TABLE SQL NOT NULL O valor NOT NULL obriga que o campo contenha sempre

Leia mais

SQL Básica. Andre Noel

SQL Básica. Andre Noel SQL Básica Andre Noel Introdução A SQL é um dos principais motivos de sucesso dos BDs relacionais comerciais Introdução A SQL é um dos principais motivos de sucesso dos BDs relacionais comerciais Se tornou

Leia mais

Introdução ao PostgreSQL

Introdução ao PostgreSQL Introdução ao PostgreSQL Fontes Karine Reis Ferreira karine@dpi.inpe.br Gilberto Câmara gilberto@dpi.inpe.br Gilberto Ribeiro de Queiroz gribeiro@dpi.inpe.br Marcos André Gonçalves - UFMG Parte 3 Aula

Leia mais

Utilizando o Postgres - comandos SQL para a manipulação de dados

Utilizando o Postgres - comandos SQL para a manipulação de dados Utilizando o Postgres - comandos SQL para a manipulação de dados SELECT A declaração SELECT é utilizada para selecionar os dados de um banco de dados. SELECT nome FROM clientes WHERE A cláusula WHERE é

Leia mais

Bases de Dados. DDL Data Definition Language

Bases de Dados. DDL Data Definition Language Bases de Dados DDL Data Definition Language SQL SQL = Structured Query Language Foi originalmente criada pela IBM nos anos 70 como parte de um protótipo de sistema relacional Posteriormente foi implementada

Leia mais

MODELAGEM DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

MODELAGEM DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc. MODELAGEM DE DADOS -INTRODUÇÃO AO SQL Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br INTRODUÇÃO AO SQL Ferramentas brmodelo Ferramenta Case PostgreSQL versão 8 ou superior SGBD Em 1986 o

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com 02/06/2016 SUMÁRIO SQL DDL DML SQL (STRUCTURED

Leia mais

Bancos (Bases) de Dados

Bancos (Bases) de Dados Bancos (Bases) de Dados Aula #8 SQL Prof. Eduardo R. Hruschka * Slides baseados no material elaborado pelas professoras: Cristina D. A. Ciferri Elaine P. M. de Souza SQL (Structured Query Language) Linguagem

Leia mais

Instrução Create Table

Instrução Create Table Tipos em SQL char(n): cadeia de caracteres de comprimento fixo n varchar(n): cadeia de caracteres de comprimento variável, com o máximo n especificado pelo utilizador int: inteiro (um subconjunto finito

Leia mais

Manipulação de Dados com SQL

Manipulação de Dados com SQL Manipulação de Dados com SQL Wendel Melo Faculdade de Computação Universidade Federal de Uberlândia www.facom.ufu.br/~wendelmelo Banco de Dados I manipulação de dados com SQL 2 Structured Query Language

Leia mais

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Definição de Dados Banco de Dados SQL Structured Query Language Uma das mais importantes linguagens relacionais (se não a mais importante) Exemplos de SGBD que utilizam SQL Oracle Informix

Leia mais

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

'%'! $!0 $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,/)!)+,/)% *! +,0''% * %$!*!$$ #!%&%'%'%$! 94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31? MODELAGEM FÍSICA Capítulo 3! " # $ $!%%%& '$! $% $$%"%' ) ' *'!%'!$ $ $ $% +, %#!!" '$*'#%! $ $$%" % '$%!!% $% * % $ *-! %$% $!* '% $!$$.!'% & $%!% $ $ ' %/!$ 0 $*' $% *0 )#%!$0% 1&$$$%+#!*22,"$% )'%$$%%&

Leia mais

Modelo Relacional Prof. Msc Denival A. dos Santos

Modelo Relacional Prof. Msc Denival A. dos Santos Modelo Relacional Prof. Msc Denival A. dos Santos Introdução Criado por Edgar F. Codd em 70 (primeiros sistemas relacionais: 1977 78: System R e Ingres); O modelo relacional é um modelo lógico fundamentado

Leia mais

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea BANCO DE DADOS Prof. Fabiano Taguchi http://fabianotaguchi.wordpress.com fabianotaguchi@hotmail.com SQL A Structed Query Language foi desenvolvida em 1974 nos laboratório da IBM em San José na Califórnia,

Leia mais

BANCO DE DADOS GERENCIAL 1 A U L A 2

BANCO DE DADOS GERENCIAL 1 A U L A 2 BANCO DE DADOS GERENCIAL 1 A U L A 2 N Í V E I S D E V I S Ã O, S U B G R U P O D D L : C R I A N D O B A N C O D E D A D O S, C R I A N D O T A B E L A S, E S T R U T U R A D A T A B E L A CONCEITOS :

Leia mais

Banco de Dados. Linguagem SQL

Banco de Dados. Linguagem SQL Banco de Dados Linguagem SQL 1 A linguagem SQL: história Em junho de 1970, o matemático Edgar Frank Codd, publicou o artigo "A Relational Model of Data for Large Shared Data Banks" na revista "Communications

Leia mais

Aula 06 Sistemas Embarcados LT38C

Aula 06 Sistemas Embarcados LT38C Aula 06 Sistemas Embarcados LT38C Prof. Lucas Ricken Garcia 2017/1 Introdução a Banco de Dados Coleção de dados relacionados. Fatos conhecidos que podem ser registrados e possuem significado implícito.

Leia mais

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language) AULA 8 8.1. OBJETIVO DA AULA Relembrar conceitos e recursos básicos apresentados nas aulas anteriores, dar continuidade nas codificações iniciadas e ainda não finalizadas, explorar acesso a banco de dados

Leia mais

A linguagem SQL

A linguagem SQL SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua primeira versão recebeu o nome de

Leia mais

Mysql. Quanto mais informações você busca, mais você evolui. Vitor Ramos. Disciplina de Banco de Dados

Mysql. Quanto mais informações você busca, mais você evolui. Vitor Ramos. Disciplina de Banco de Dados Mysql Quanto mais informações você busca, mais você evolui. Vitor Ramos SQL Structured Query Language - Linguagem de Consulta Estruturada Desenvolvida pela IBM, nos anos 70; Inicialmente chamada SEQUEL

Leia mais

modelo introduzido por E. F. Codd Meados da década de 70: protótipos. INGRES (UC Berkeley, 73 77) System R (IBM Research at San Jose, 74 78)

modelo introduzido por E. F. Codd Meados da década de 70: protótipos. INGRES (UC Berkeley, 73 77) System R (IBM Research at San Jose, 74 78) 1 1970 - modelo introduzido por E. F. Codd Meados da década de 70: protótipos INGRES (UC Berkeley, 73 77) System R (IBM Research at San Jose, 74 78) 1979: primeiro produto SQL (Oracle) Meados da década

Leia mais

MYSQL - PRIMEIROS COMANDOS CRIAÇÃCO DO BD E DAS TABELAS, INSERÇÃO E CONSULTA DE REGISTROS. create database [if not exists] <nome>

MYSQL - PRIMEIROS COMANDOS CRIAÇÃCO DO BD E DAS TABELAS, INSERÇÃO E CONSULTA DE REGISTROS. create database [if not exists] <nome> 1. Manuseio do banco de dados MYSQL - PRIMEIROS COMANDOS CRIAÇÃCO DO BD E DAS TABELAS, INSERÇÃO E CONSULTA DE REGISTROS As seguintes instruções manuseiam o banco de dados: cria o banco mostra os bancos

Leia mais

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 16. Escola Politécnica da Universidade de São Paulo

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 16. Escola Politécnica da Universidade de São Paulo PCS3413 Engenharia de So-ware e Banco de Dados Aula 16 Escola Politécnica da Universidade de São Paulo 1 SQL - STRUCTURED QUERY LANGUAGE SQL - Structured Query Language Linguagem de acesso a Banco de Dados

Leia mais

Administração de Banco de Dados

Administração de Banco de Dados Administração de Banco de Dados Aula 6 Prof. Marcos Alexandruk Aula 6 Estruturas lógicas do Oracle: Tabelas tabelas relacionais tabelas temporárias tabelas organizadas por índices tabelas de objetos tabelas

Leia mais

Rápida revisão do Modelo Relacional

Rápida revisão do Modelo Relacional Rápida revisão do Modelo Relacional Conceito de relação Tuplas e atributos Rápida revisão do Modelo Relacional Regras de integridade Entidade: Deve existir uma chave primária com valor único e não-nulo.

Leia mais

INDEX. Serve para organizar os dados e agilizar a pesquisa/consulta dos dados armazenado nas tabelas.

INDEX. Serve para organizar os dados e agilizar a pesquisa/consulta dos dados armazenado nas tabelas. INDEX Serve para organizar os dados e agilizar a pesquisa/consulta dos dados armazenado nas tabelas. 1 INDEX o Criação de index segue o padrão ANSI (o mesmo comando para criar index em um determinado SGBD,

Leia mais

Oracle Database 10g: Fundamentos de SQL e PL/SQL

Oracle Database 10g: Fundamentos de SQL e PL/SQL Oracle University Contact Us: 0-800-167225 Oracle Database 10g: Fundamentos de SQL e PL/SQL Duration: 5 Dias O que é que gostaria de aprender Conheça os fundamentos de SQL e PL/SQL usando o SQL Developer

Leia mais

SQL BÁSICO. Luiz Antônio Vivacqua Corrêa Meyer

SQL BÁSICO. Luiz Antônio Vivacqua Corrêa Meyer SQL BÁSICO Luiz Antônio Vivacqua Corrêa Meyer SQL (Structured Query Language) Início na década de 70 pela IBM com o nome de SEQUEL. Em 1980 o produto mudou seu nome para SQL. American National Standards

Leia mais

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g Pedro F. Carvalho OCP Oracle 2008.2 10g SQL Avançado Atualização e Inserção de Dados Comando INSERT Sumário Inclusão simples, inclusão de dados com SELECT Comando UPDATE Alteração simples, alteração usando

Leia mais

O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de

O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de Introdução O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de padrão SQL (Structured Query Language). O padrão SQL define precisamente uma interface SQL para a

Leia mais

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes Escola Secundária de Albufeira Comandos MySQL (Páginas Web Dinâmicas: PHP e MySQL) (csmnunes@gmail.com) 2009/2010 Criar Base de Dados CREATE DATABASE basededados; Apagar Base de Dados DROP DATABASE basededados;

Leia mais

Conceitos de Modelo Relacional Restrições de um Banco de Dados

Conceitos de Modelo Relacional Restrições de um Banco de Dados Aula 03 Revisando Conceitos de Modelo Relacional Restrições de um Banco de Dados Modelo Relacional, representa o banco de dados como uma coleção de relações. Criando as tabelas Cada linha representa uma

Leia mais

saída durante o runtime Usando Functions de uma Única Linha para Personalizar Relatórios Mostrar as diferenças entre as functions SQL de uma única

saída durante o runtime Usando Functions de uma Única Linha para Personalizar Relatórios Mostrar as diferenças entre as functions SQL de uma única Tópicos do Curso: Introdução Listar os principais recursos do Banco de Dados Oracle 10g Apresentar uma visão geral de: componentes, plataforma de internet, servidor de aplicações e suite do desenvolvedor

Leia mais

Teste Exemplo Revisão da tentativa 1

Teste Exemplo Revisão da tentativa 1 Teste Exemplo Revisão da tentativa 1 Iniciado em: Quinta, 6 Dezembro 2007, 21:31 Completado em: Quinta, 6 Dezembro 2007, 21:48 Tempo gasto: 16 minutos 53 segundos Classificação: 8/20 (40% Nota: 8 sobre

Leia mais

Revisão de Bancos de Dados

Revisão de Bancos de Dados Revisão de Bancos de Dados Conceitos Básicos 1. Defina o que é um banco de dados e o que é um sistema gerenciador de bancos de dados (SGBD). 2. Defina as arquiteturas de software em duas camadas (cliente/servidor)

Leia mais

Laboratório de Banco de Dados. Prof. Luiz Vivacqua.

Laboratório de Banco de Dados. Prof. Luiz Vivacqua. (la.vivacqua@gmail.com) Ementa Conceitos básicos Sistemas de banco de dados Relacional Visão Geral do PostGreSQL Álgebra Relacional Operadores básicos Operadores adicionais A Linguagem de Consulta Estruturada

Leia mais

Material Teórico. Organização de Dados. Responsável pelo Conteúdo: Prof. Ms. Alexander Gobbato Albuquerque

Material Teórico. Organização de Dados. Responsável pelo Conteúdo: Prof. Ms. Alexander Gobbato Albuquerque Banco de Dados Organização de Dados Material Teórico Responsável pelo Conteúdo: Prof. Ms. Alexander Gobbato Albuquerque Revisão Textual: Profa. Esp.Vera Lídia de Sá Cicarone Organização de Dados Introdução

Leia mais

MODELO DE BANCO DE DADOS RELACIONAL

MODELO DE BANCO DE DADOS RELACIONAL UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO BANCO DE DADOS I MODELO DE BANCO DE DADOS RELACIONAL Profº Erinaldo Sanches Nascimento Objetivos Descrever os princípios básicos

Leia mais

Conceito de Campos e Tabelas

Conceito de Campos e Tabelas Aula 04 Conceito de Campos e Tabelas Tabelas É um conjunto de registros de um mesmo tipo onde cada linha é composta por um campo que recebe um valor de atributo. Em um Banco de Dados poderá existir uma

Leia mais

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar - Aula 1 - PROJETO FÍSICO DE BANCOS DE DADOS 1. INTRODUÇÃO No módulo passado estudamos as técnicas utilizadas para se criar um projeto de banco de dados (BD): Modelo Entidade-Relacionamento, Modelo Lógico

Leia mais

SQL (Tópicos) Structured Query Language

SQL (Tópicos) Structured Query Language SQL (Tópicos) Structured Query Language ISI Introdução aos Sistemas de Informação SQL (Tópicos) 1 SQL: componentes SQL / DDL (Data Definition Language) Permite definir os Esquemas de Relação Permite definir

Leia mais

Modelagem Física e SQL

Modelagem Física e SQL Programação em Banco de Dados - Parte 1 Modelagem Física e SQL Prof. Pablo Passos prof.pablo.passos@gmail.com SQL - Um modelo físico é gerado a partir de um modelo lógico já construído. A geração dos objetos

Leia mais

Linguagem de Consulta Estruturada (SQL)

Linguagem de Consulta Estruturada (SQL) Linguagem de Consulta Estruturada (SQL) SQL SQL (Structured Query Language), ou Linguagem de Consulta Estruturada. Usada em Bancos de Dados Relacionais. É padronizada (SQL ANSI). ANSI (American National

Leia mais

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL Objetivo: No curso Oracle 11G Introdução ao Oracle, SQL, PL/SQL será abordado desde a introdução da tecnologia do banco de dados em questão como todos os conceitos

Leia mais

Importar e Exportar Dados

Importar e Exportar Dados Importar e Exportar Dados Administração de Base de Dados OBJECTIVOS: Definir comandos e formatos Definir restrições (constraints) DEFINIÇÃO DO ESQUEMA DA BASE DE DADOS O esquema da BD e composto pelas

Leia mais

Modelagem Física e SQL

Modelagem Física e SQL Programação em Banco de Dados - Parte 1 Modelagem Física e SQL Prof. Pablo Passos prof.pablo.passos@gmail.com SQL - Um modelo físico é gerado a partir de um modelo lógico já construído. A geração dos objetos

Leia mais

Modelo Relacional + SQL (DDL) Material elaborado pela Prof. Karin Becker

Modelo Relacional + SQL (DDL) Material elaborado pela Prof. Karin Becker Modelo Relacional + SQL (DDL) Material elaborado pela Prof. Karin Becker Modelo Relacional Codd, E.F A relational model of data for large shared data banks. Communications of the ACM, 13(6):377-87, June

Leia mais

Revisando Banco de Dados. Modelo Relacional

Revisando Banco de Dados. Modelo Relacional : Revisando Banco de Dados Banco de Dados (BD) é o arquivo físico, em dispositivos periféricos, onde estão armazenados os dados de diversos sistemas, para consulta e atualização pelo usuário. Sistema Gerenciador

Leia mais

conteúdos. bases de dados, SGBD e aplicações. conceitos. modelo relacional (DER) conceitos

conteúdos. bases de dados, SGBD e aplicações. conceitos. modelo relacional (DER) conceitos conceitos 1 conteúdos A necessidade de processamento de DADOS em tempo útil de forma a recolher INFORMAÇÃO relevante, foi sempre uma necessidade sentida pelo Homem. conceitos modelo relacional (DER) 04-01-2012

Leia mais

BCD29008 Banco de dados

BCD29008 Banco de dados BCD29008 Banco de dados Modelo ER & Modelo Relacional Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/bcd 18 de

Leia mais

Conceitos SQL SQL 19/03/2017 O que é dado? O que é BD? O que é uma informação? O que é SGBD? O que é SQL? O que é BD? O que é SGBD?

Conceitos SQL SQL 19/03/2017 O que é dado? O que é BD? O que é uma informação? O que é SGBD? O que é SQL? O que é BD? O que é SGBD? - ---@--- Conceitos O que é dado? O que é uma informação? O que é BD? O que é BD? O que é SGBD? O que é? O que é SGBD? Como se comunicar com o SGBD? 1 O que é? Onde Nasceu? Tipos de Bancos Relacionais

Leia mais

A Linguagem SQL. Tecnologia de Base de Dados. MSc. Eugénio. Macumbe

A Linguagem SQL. Tecnologia de Base de Dados. MSc. Eugénio. Macumbe A Linguagem SQL Tecnologia de Base de Dados MSc. Eugénio. Macumbe A Linguagem SQL As raízes da linguagem SQL remontam a 1974, altura em que na IBM corp. se desenvolvia o protótipo de um sistema relacional

Leia mais

Tarefa Orientada 8 Criação de tabelas

Tarefa Orientada 8 Criação de tabelas Tarefa Orientada 8 Criação de tabelas Objectivos: Iniciar o MS SQL Server Manegement Studio Criar tabelas Especificar tipos de dados Definir restrições Alterar as definições de uma tabela Eliminar uma

Leia mais

MATA60 BANCO DE DADOS Aula 10- Indexação. Prof. Daniela Barreiro Claro

MATA60 BANCO DE DADOS Aula 10- Indexação. Prof. Daniela Barreiro Claro MATA60 BANCO DE DADOS Aula 10- Indexação Prof. Daniela Barreiro Claro Indexação Indexação em SQL; Vantagens e Custo dos Índices; Indexação no PostgreSQL; FORMAS - UFBA 2 de X; X=23 Indexação Sintaxe: create

Leia mais

FACULDADE INGÁ Unidade de Ensino Superior Ingá Ltda Ciência da Computação TRIGGERS. Prof. Erinaldo Sanches Nascimento

FACULDADE INGÁ Unidade de Ensino Superior Ingá Ltda Ciência da Computação TRIGGERS. Prof. Erinaldo Sanches Nascimento FACULDADE INGÁ Unidade de Ensino Superior Ingá Ltda Ciência da Computação TRIGGERS Prof. Erinaldo Sanches Nascimento Objetivos Especificar restrições mais gerais sobre o banco de dados. Especificar regras

Leia mais

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka Aula de SQL Comandos DDL André Luiz de Oliveira Eduardo Raul Hruschka E-mail: andre_luiz@icmc.usp.br erh@icmc.usp.br Agenda Instalação do MySQL e Workbench Comandos DDL Data Definition Language Criação

Leia mais

TLBD II. Continuação

TLBD II. Continuação TLBD II Continuação As expressões aritméticas podem conter nomes de colunas, valores numéricos constantes e os operadores aritméticos: OPERADOR DESCRIÇÃO + Adição - Subtracção * Multiplicação / Divisão

Leia mais

BANCO DE DADOS WEB AULA 7. criação de tabelas. professor Luciano Roberto Rocha.

BANCO DE DADOS WEB AULA 7. criação de tabelas. professor Luciano Roberto Rocha. BANCO DE DADOS WEB AULA 7 criação de tabelas professor Luciano Roberto Rocha www.lrocha.com Arquitetura de um Banco de Dados Todos os dados de um banco conceitualmente são organizados no formato de tabelas,

Leia mais

Comandos DDL. id_modulo = id_m odulo

Comandos DDL. id_modulo = id_m odulo Comandos DDL Estudo de Caso Controle Acadêmico Simplificado Uma escola contém vários cursos, onde cada aluno possui uma matricula num determinado curso. Estes cursos, por sua vez, possuem módulos, aos

Leia mais

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida SQL PostgreSQL I Criação de Tabelas Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida Composição da SQL Linguagem de Definição de Dados (DDL): Comandos para

Leia mais

Sistemas de Informação e Bases de Dados 2012/2013. Restrições de Integridade em SQL

Sistemas de Informação e Bases de Dados 2012/2013. Restrições de Integridade em SQL Sistemas de Informação e Bases de Dados 2012/2013 Restrições de Integridade em SQL Alberto Sardinha Bibliografia Raghu Ramakrishnan, Database Management Systems, Cap. 3 e 5 1 Captura e Tratamento das RIs

Leia mais

Definição de Dados com SQL

Definição de Dados com SQL Wendel Melo Faculdade de Computação Universidade Federal de Uberlândia www.facom.ufu.br/~wendelmelo Banco de Dados I Definição de Dados com SQL 2 Structured Query Language (SQL) Linguagem de consulta estruturada

Leia mais

INTRODUÇÃO AO MYSQL PROF. ME. HÉLIO ESPERIDIÃO

INTRODUÇÃO AO MYSQL PROF. ME. HÉLIO ESPERIDIÃO INTRODUÇÃO AO MYSQL PROF. ME. HÉLIO ESPERIDIÃO HeidiSQL É um programa que permite acessar o SGDB Mysql. Pode ser adquirido gratuitamente na internet. Não é necessário instalar. Possui versão portável.

Leia mais

INSERT INTO shop VALUES (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C',1.69), (3,'D',1.25),(4,'D',19.95);

INSERT INTO shop VALUES (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C',1.69), (3,'D',1.25),(4,'D',19.95); Aqui segue exemplos de como resolver alguns dos problemas mais comuns do MySQL. Algum dos exemplos usam a tabela de compras, coloque os preços de cada artigo (número de item) de cada negociante. Supondo

Leia mais

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO Disciplina: Banco de Dados I Professor: Prof. Me. Everton

Leia mais

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Definição de Dados SQL Structured Query Language Uma das mais importantes linguagens relacionais (se não a mais importante) Exemplos de SGBD que utilizam SQL Oracle Informix Ingress SQL

Leia mais

BANCO DE DADOS PARA NINJAS

BANCO DE DADOS PARA NINJAS BANCO DE DADOS PARA NINJAS PARANGABA RONNISON REGES VIDAL Ceará, 25 de Outubro de 2016 ROTEIRO l Conhecimento Pra que usar? Ferramentas SGBD's Consultas (Jutsu) Linguagem de Consulta PRA QUE USAR? PRA

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;

Leia mais

Exemplos de Vistas SQL. Tipos em SQL. Linguagem de Definição de Dados (DDL) CREATE VIEW todososclientes As

Exemplos de Vistas SQL. Tipos em SQL. Linguagem de Definição de Dados (DDL) CREATE VIEW todososclientes As Exemplos de Vistas SQL Considere-se a vista (com o nome todososconsumidores) contento os nomes das agências e seus clientes CREATE VIEW todososclientes As Π nomebalcao,nomecliente (temconta conta) Π nomebalcao,nomecliente

Leia mais

edsoncs@gmail.com www.linkedin.com/in/edsonhu Agenda Banco de Dados Relacional Modelo Descritivo Modelo Conceitual Modelo Lógico Arquitetura Cliente/Servidor Componentes SQL Server Management Studio (SSMS)

Leia mais

Manipulando a base de dados

Manipulando a base de dados Manipulando a base de dados Uma base de dados pode ser manipulada com quatro operações básicas: Incluir, Apagar, Alterar e Pesquisar. Vale lembrar que como toda linguagem para computadores, o MySQL tem

Leia mais

Subsistema de Integridade Semântica

Subsistema de Integridade Semântica Restrições de Integridade Semântica Controle de valores válidos para os dados estados dos dados condizentes com os requisitos da aplicação transições de estados corretas O SGBD deve controlar esta integridade

Leia mais

Restrições do modelo relacional

Restrições do modelo relacional Restrições de CHAVE a relação CARRO da figura abaixo apresenta duas chaves candidatas considera-se como chave primária, o atributo-chave que é usado para identificar a tupla na relação e ela deve ser sublinhada

Leia mais

Oracle Database 11g: Introdução à Linguagem SQL Novo

Oracle Database 11g: Introdução à Linguagem SQL Novo Oracle University Contact Us: 0800 891 6502 Oracle Database 11g: Introdução à Linguagem SQL Novo Duration: 5 Days What you will learn Neste curso, os alunos aprendem os conceitos de bancos de dados relacionais.

Leia mais

Linguagem de Definição de Dados (DDL)

Linguagem de Definição de Dados (DDL) Modelagem de Banco de Dados Linguagem de Definição de Dados (DDL) Professor: Anderson D. Moura Março, 2009 Linguagem de Definição de Dados Linguagem para especificar a informação acerca de cada tabela,

Leia mais

Prof. Dr. Joaquim Assunção Banco de Dados. SQL (parte 4) DDL Restrições

Prof. Dr. Joaquim Assunção Banco de Dados. SQL (parte 4) DDL Restrições Prof. Dr. Joaquim Assunção. 2017 Banco de Dados SQL (parte 4) DDL Restrições Restrições SQL são usadas para especificar regras para dados em uma tabela. CREATE TABLE nome_da_tabela ( coluna1 tipo_de_dado

Leia mais

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita: SQL Laboratório de Computação para Ciências Módulo II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Mestrado Profissional em Ensino

Leia mais

Sistemas de Informação e Bases de Dados 2012/2013. Linguagem SQL

Sistemas de Informação e Bases de Dados 2012/2013. Linguagem SQL Sistemas de Informação e Bases de Dados 2012/2013 Linguagem SQL Alberto Sardinha Bibliografia Raghu Ramakrishnan, Database Management Systems, Cap. 3 e 5 1 Sumário Linguagem SQL 2 História Princípio dos

Leia mais

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP Campus de Caraguatatuba Tecnólogo em Análise e Desenvolvimento de Sistemas 1 0 Semestre de 2013 BD I Prof. Lineu Mialaret Aula 25:

Leia mais

SISTEMAS DE INFORMAÇÃO

SISTEMAS DE INFORMAÇÃO Prof. Rhyan Ximenes SISTEMAS DE INFORMAÇÃO Disciplina: Banco de Dados II E x c e l ê n c i a n o s e u f u t u r o fluci anofei j ao.com. br Semest r e: º Turma: 02 Turno: Noite Dat a: 21/06/13 Not a:

Leia mais