Olá pessoal tudo bem Aqui o professor Everson Estamos aqui na nossa web Aula 5 da disciplina de sistemas de banco de dados tudo bem com vocês Pessoal espero que todos estejam bem nessa web aula nós vamos ver o assunto linguagem SQL [Música] ddl muito bem pessoal então vamos começar aqui a nossa web aula certo nessa nossa web aula nós vamos ver o assunto linguagem de definição de dados o nosso ddl certo o ddl é de data definition language e nesse assunto vocês deverão adquirir as seguintes competências e conhecimentos conhecer as restrições e em banco de
dados conhecer os comandos de ddl data definition language e identificar as aplicações desses comandos aonde nós vamos empregar esses comandos em quais situações certo muito bem pessoal então a gente começa aqui a trabalhar com eh algumas questões que nos trazem A reflexão eh da modelagem de dados né Eh desse projeto de banco de D que nós construímos eh nas unidades anteriores e agora algumas considerações em relação ao modelo físico que vão nos preparar para as questões eh da ddl né da linguagem de definição de dados então a gente começa aqui trabalhando com os índices índices
para desempenho de consultas certo então vamos imaginar a seguinte situação nós temos um uma tabela certo imagina uma tabela de produtos com eh código descrição preço e essa tabela de produtos possui vários registros vários várias linhas então nós temos eh inicialmente duas formas de acesso a esses dados uma primeira forma é um acesso sequencial que a gente vai lendo os dados linha a linha certo isso vai demorar um tempo da mesma forma que nós fôssemos eh procurar um assunto num livro F é passando folha a folha do livro certo até chegar o assunto que a
gente tá querendo e uma outra forma sem ser a sequencial é um acesso indexado ou seja na mesma eh exemplo do livro então a gente ao invés de passar sequencialmente as folhas do livro Até o assunto a gente consulta um índice e vai na na página correspondente um acesso muito mais rápido da mesma forma Vamos fazer uma analogia para o banco de dados então um acesso sequencial ao uma base de da tabela produto a gente vai ler linha a linha o tomate laranja o arroz o feijão e assim por diante certo eh E se nós
tivermos Ah o índice né para que essa consulta nos traga o resultado mais rápido nós precisamos Então dessa eh desse componente certo dessa eh desse mecanismo então o índice é uma estrutura de dados que organiza registros em disco para otimizar tipo de operações como a recuperação de dados através do select certo então é muito importante nós termos eh o o o o índice né para que a gente consiga melhorar o desempenho de uma consulta muitas vezes a gente tem uma consulta né um select e ele demora até chegar o resultado dos dados talvez falte algum
índice certo então isso é importante é nós fazermos essa análise ok muito bem pessoal agora a gente trata eh em relação aos índices quais são os tipos de índices que nós podemos ter nós temos o índice primary né que é um índice vinculado à chave primária então normalmente todo o sgbd relacional né ele vai ter uma implementação de um índice à medida que a gente implementa uma chave primária né então uma uma chave primária ela pode ter eh eh a apenas um campo ou mais de um campo sendo simples ou composta a gente vai falar
sobre chave primária daqui a pouquinho então o índice primary é o índice vinculado à chave primária criado automaticamente podemos ter também um índice Unic que define né Eh um um campo ou conjunto de Campos que não podem ter valores repetidos então nós também podemos ter essa característica de índice Unic eh quando a gente quer por exemplo formar eh a um um conjunto de Campos único ou apenas um campo por exemplo posso empregar num campo CPF um índice único Tá certo não permitindo que eu tenha uma duplicata ali eu tenho index né que representa um índice
normal eh de um ou mais campos de uma tabela eh favorecendo a recuperação da informação normalmente esse index né esse tipo de índice ele está vinculado à sua cláusula a de uma consulta para otimizar eh por exemplo você tá eh fazendo um aare por ano então de repente a coluna ano poderia ter um índice index certo e o último é o índice full text que otimiza busca em palavras ou frases de terços longos que é uma outra característica que nós podemos ter ok muito bem pessoal agora a gente passa aqui às questões é de restrição
de chave primária então nós sabemos que nós podemos ter algumas restrições né algumas constraints de banco de dados que a gente chama então uma construite é uma restrição de banco nós podemos ter quatro principais restrições a chave primária certo a chave estrangeira eh o a restrição de not nul e a restrição de cheque de cheque Constru quando a gente define por exemplo numa coluna sexo que só podem ter eh os valores m ou f isso é por exemplo uma restrição de che construite certo uma restrição de not nul significa que eu tô empregando naquela coluna
uma obrigatoriedade de preenchimento ou não né Eh se ele for nulo eu posso ter nul eh eh como um dado né E se ele for not nul Então eu preciso preencher alguma informação algum dado dentro dessa coluna e as duas restrições mais importantes aqui que nós podemos ter no modelo relacional é a chave primária e a chave estrangeira que nos dão um mecanismo de integridade referencial eh base do modelo relacional então nós temos aqui as restrições chave primária certo que compreende então uma identificação de uma ou mais colunas é de uma tabela de forma única
certo então essa chave primária pode ser simples ou composta simples quando eu tenho apenas um um campo nessa chave primária composta quando eu tenho n Campos aí a gente vai trabalhar com as questões e de chave negocial onde você adota eh as colunas naturais da sua tabela né do negócio para eh definir uma chave apropriada né que tem a característica de identificar o registro como único ou então você pode ter uma chave artificial que a gente chama né que é uma chave chave com com um alto incremento com uma Sequence associada eh e aí ele
vai eh eh somando né 1 2 3 nessa chave Então vai depender muito eh da forma de modelagem que eh que o projetista do banco desenvolveu né muitas vezes Chaves eh compostas eh negociais elas à medida que que vão percorrendo modelo elas vão ficando maiores E aí talvez não fique bacana você trabalhar lá na frente com uma consulta com um a com nove ou sete Campos aí a gente tem que ter um bom senso Tá certo em e usar uma chave negocial de uma ou mais colunas ou usar uma chave artificial né com o identity
com um alto incremento associado a essa coluna certo uma outra coisa importante que os valores dessa dessas colunas né da coluna simples ou composta n colunas e possuem restrição de não conter nuro Então à medida que a gente define uma chave primária nós vamos colocar duas características que não pode conter nulo e não pode conter repetições daqueles valores eh se a chave por simples ou composta Então quais são as atividades da chave primária identificação dos registros né então normalmente que você vai buscar o registro Pela chave primária né então talvez você eh faça uma consulta
eh colocando select from no a que você vai colocar essa Identificação do registro como uma chave primária como um ID Aluno por exemplo certo eh uma outra atividade é a indexação dos registros né da forma que Eu mencionei então uma chave primária ela vai ter um um índice associado favorecendo a recuperação da informação e uma outra coisa importantíssima é o relacionamento entre tabelas eu só vou conseguir relacionar uma tabela com a outra se eu tenho uma chave primária definida né em 98% dos casos você ainda pode ter relacionamentos com outras tabelas com alternate que é
uma chave eh uma chave opcional que você pode ter na tabela é normalmente empregando o índice único nela e aí você com essa altern aqui também você pode fazer relacionamentos normalmente você faz os relacionamentos com a chave primária por exemplo tabela de UEF com tabela de município tabela de UEF definindo sigla da UEF como chave primária e aí eh lá na tabela de município nós vamos ter a chave estrangeira cglo da UEF apontando para a tabela de UEF ok certinho então são questões importantes que nós temos aqui relacionadas a restrições em banco de dados bom
eu falei sobre restrição de valores nulos né que é o not nul que garante não aceitar valores nulos já tinha mencionado e temos aqui a questão da restrição de cheque né onde nós definimos uma coluna Quais são os valores que podem ser aceitos então Eh eh a gente fica entre uma tabela de apoio e uma cheque construite em banco de dados quando a gente emprega uma cheque construite numa tabela a gente vai definir que aquela coluna ela possui uma característica de cheque que os valores são pré-definidos como por exemplo sexo e mof eu já tinha
dado esse exemplo anteriormente certo à medida que esses valores crescem muito você tem 3 4 5 seis valores possíveis na coluna talvez você não utilize o maché construite mas utilize uma tabela de apoio com uma chave estrangeira para garantir a integridade certo Eu normalmente tenho como regra e trabalhar com cheque Constru com com até dois valores MF sim ou não Tá bom e depois disso eu prefiro utilizar tabela de apoio e nós temos também restrição de coluna única onde nós temos aqui um índice e único né que permite que aquele aquela coluna o conjunto de
colunas seja identificada de forma iica dentro da tabela perfeito então eu já havia explicado um pouquinho sobre essa situação muito bem pessoal chave estrangeira então é Nossa última restrição do banco de dados e é um componente e principal elementar do modelo relacional certo então essa chave estrangeira ou fore aqui é uma coluna né ou conjunto de colunas e de uma tabela utilizada para impor integridade né integridade referencial porque ela referencia uma outra tabela no relacionamento entre duas entre duas tabelas Então vamos ver aqui o mecanismo Eu tenho um produto a tabela de produto com eh
código descrição preço e código da categoria E aqui eu tenho as categorias desse produto que tem um código e uma descrição quando implemento uma chave estrangeira de categoria para produto eu estou garantindo que os valores que serão imput aqui em código da tabela categoria ela esteja aqui dentro da tabela categoria Então vamos imaginar a seguinte situação nós temos aqui o id1 descrição da categoria ferramentas dois medicamentos certo então se a pessoa colocar aqui na tabela de produto no no código da categoria o número TR né ele vai vai aqui na tabela de categoria E vai
verificar se eu tenho o número três aqui eh nos registros da tabela de categoria se eu não tiver ele vai dar o mecanismo de eh de integridade do banco vai dar um erro de eh Chave estrangeira violação da chave estrangeira violação da forem que significa que você está tentando colocar um dado aqui no código da categoria que não consta na tabela P na tabela de categoria Então dessa forma nós temos a integridade referencial aqui eh eh no banco de dados relacional Ok chave primária e chave estrangeira são muito importantes Tá ok muito bem pessoal vamos
lá vamos trabalhar agora com gerenciamento de espaço de banco de dados a gente eh tem eh uma estrutura composta por table Space e data files à medida que a gente desenvolve os objetos Associados aos data files e esses data files estão Associados aos tb spaces certo então a tb Space é uma é uma forma lógica da gente tá organizando os dados de uma tabela e a gente associa então a sa spaces certo a segmentos e extensões então nós temos a estrutura de uma Space com segmento né que ela Ela utiliza a formação da TS Space
segmento 1 segmento 2 segmento 3 e segmento Então vai ter extensões que é o espaço ocupado eh pelo segmento onde nós vamos ter realmente aqui as eh os dados eh armazenados no no sistema de arquivo muito bem pessoal bom agora nós vamos discutir a questão que vocês devem ter eh resolvido agora pouco certo e a questão Então ela diz respeito à chave primária Então vou ler aqui a questão uma chave primária Primar PK compreende a identificação de uma ou mais colunas de uma tabela de forma única nesse sentido Qual das alternativas corresponde a uma característica
de uma chave primária conter dados complexos não é uma característica né dados complexos vai depender do tipo de dado certo se ele é um float ou se ele é um um tipo de dado XML que vai nos dar essa essas questões então con dados complexos não é uma característica de chave primária con dados simples também não é uma característica porque a chave primária não tá eh associada a tipo de dado né um integer ou um campo date Enfim então também não está associada a conter dados simples não ter dados complexos né Nós já vimos agora
a pouco que e não está associado a as questões de tipo de dados não conter dados nulos Isso é uma característica lembram a gente não pode ter dentro de uma chave primária dados nulos né então a gente tem duas Caracas importantes não conter dados nulos e não conter repetição do dado e poder conter pode conter dados nulos então é A negação dessa então resposta correta como uma característica de chama primária é não conter dados duros ok muito bem vamos em frente então e agora a gente entra aqui na questão da SQL Tá certo então passando
um pouquinho essa questão aqui e das restrições de banco de dados né A gente entra aqui é propriamente dito no na na linguagem SQL que nós podemos ter a definição de estruturas consultas linguagem gerenciamento eh seleções Database enfim e aí a gente começa trabalhando com a linguagem SQL eh traduzindo aqui a SQL D structor query language ou linguagem de consulta estruturada essa linguagem de consulta estruturada ela pode ser subdividida em aqui cinco sublinguais ou linguagem de consulta de dados data query language que tem o comando de select temos aqui a dml data manipulation language ou
linguagem de manipulação de dados com os comandos insert update delete ddl de data definition language ou linguagem de definição de dados contendo os comandos de Create alter e drop dcl data control language ou linguagem de controle de dados que é a onde nós vamos dar permissões pras pessoas e ou grupos de de usuários a a manipular as tabelas né de poder fazer um insert poder fazer um update e poder fazer uma consulta a partir aqui da dcl e a dtl data transaction language ou linguagem de transação de dados temos os comandos de Bin commit roback
nós vamos ver um pouquinho de dtl ao final aqui do nossa eh da nossa disciplina certo na web aula 8 e nós vamos trabalhar nessa web aula com addl com data definition language certo mais uma visão em cima da SQL né então ddl linguagem de definição de dados dml manipulação dcl controle eh de dados dtl transaction né data transaction language e a query aqui data qu language tá é uma outra visão da skl muitos autores colocam o dkl junto com o dml mas eh Na verdade uma consulta Não manipula o dado ele apenas apresenta né
recupera esse dado então por isso essa subdivisão e por fim aqui mais uma visão dos comandos né é um pouco mais abrangente ddl Create alter e drop podemos ter o truncate que é o apagar de todas as linhas similar ao delite e mas é ddl O comment que é um comentário da tabela ou coluna e um rename também como ddl dml select delite que são os comuns e aqui vocês percebam que o delete ou melhor que o select junto com o dml né a gente viu anteriormente que esta no dql mas nós podemos ainda desenvolver
um merge entre consultas chamadas de procedimentos armazenados como Store proceder ou functions plano ou plano de execução que a gente Verifica a como é que está o acesso eh a à tabela se um acesso sequencial se é um acesso indexado se a gente precisa aqui desenvolver um um índice para otimizar a nossa consulta e o lock table aonde você loca aquela tabela para aquele usuário para desenvolver alguma operação com uma transação dcl Grant revoke eu concedo permissão e revogo a permissão e o tcl de transação commit e roback commit confirma a transação roback desfaz save
Point é naquele ponto é onde tem o save Point você salva a transação e set transaction é onde você ca aquela transação perfeito muito bem pessoal agora a gente entra propriamente dito na linguagem de definição de dados então nós temos aqui a linguagem de definição de dados né que que é encarregada então e para trabalhar com tabelas do do sgbd e e existem então Eh três principais comandos né o Create drop al a gente viu que tem e alguns outros comandos que estão nessa categoria mas nós não vamos trabalhar aqui vamos nos concentrar nesses três
comandos o drop então ele elimina um objeto do banco o Create cria esse objeto então Create cria objeto e o Drop elimina o objeto do banco de dados e o wter ele aplicado em alguns tipos de objetos aonde nós podemos desenvolver uma alteração na estrutura de uma tabela por exemplo então posso ter um Create table Create proced Create user E aí se eu quero eliminar aquele objeto do banco eu uso drop drop table drop index drop constraint drop user certo drop proced perfeito então aqui a gente tem um primeiro contato com o cread table né
então cre table cria tabela fornecedores é colunas nome telefone e endereo está associado um tipo deos nomear de 255 telefone 25 e endereço 25 essa tabela aqui não foi definida uma chave primá certo no momento da criação eu posso ter a definição da chave primária ao lado do campo então poderia ser nome nome varch 255 Primar ke por exemplo iria transformar esse campo em not nul e ainda ia desenvolver um índice conforme a gente verificou anteriormente se eu quero remover Então essa tabela e do banco eu faço um drop table fornecedores perfeito muito bem temos
aqui então né as operações básicas da ddl o Create Como Eu mencionei cria tabelas Campos índices no banco de dados o drop remove tabelas Campos e índic do banco e o wter altera essa estrutura no banco de dados a estrutura de uma tabela certo muito bem vamos agora alguns exemplos de eh comandos de ddl então a gente pode começar trabalhando com cate Database né Create Database nome do banco por exemplo Create Database Everson né vocês podem eh utilizar desse comando aqui para eh desenvolver a sistematização lá no Lab virt né Vocês podem criar um banco
de dados com o nome de vocês lá no skl server perfeito e aí testar eh as partes da sistematização nós temos uma primeira parte que trabalha com o Create table e insert né que é o projeto de banco e vocês podem então para testar esses comandos pode de criar um um Database com essa sintaxe criei Database e o nome do Aluno por exemplo lá no skl server do Lab virde certo então a sintaxe de um Create table é o Create table nome da tabela e as definições das colunas restrições de unicidade restrição referencial restrição de
cheque que a gente viu agora a pouco cheque constren chave estrangeira e e restrição de eh de un por exemplo Ok então tudo é colocado aqui dentro do Create table muito bem a gente agora passa aqui a um exemplo de de criação da tabela estado estado sigla char 2 not aqui a gente tá com uma restrição de de not né de preenchimento nesse Campo nome char 30 e área float Primar sigla então aqui nessa tabela de Estado está sendo criado essas três colunas com os eso de dados correspondentes e já estamos já está sendo definida
a Primar no campo com eh sigla perfeito sintaxe básica de um Create table aqui a gente vai ter a criação de um esquema né Create esquema empresa esse essa do esquema é uma forma de você estruturar os seus dados logicamente Então dentro de um banco Você pode ter vários esquemas né Eh normalmente aí você tá associando os esquemas com os projetos então eu ten um projeto de Recursos Humanos de logística de financeiro e aí todas as tabelas de objetos eh desses assuntos ficarão Nos esquemas correspondentes e depois a gente tem aqui Um cre table dados
cadastrais com sigla nome endereço siga com char 2 not nome é com char 30 e endereço com char de 30 perfeito e assim por diante muito bem bom a gente trabalhou com Create table agora a gente vai trabalhar com o comando drop né que foi desenvolvido para remover né aquele objeto do banco de dados então sintaxe básica drop table nome da tabela você pode usar isso em mais de um tipo de objeto como por por exemplo os objetos esquema ou os objetos constraints ou index ou user então posso ter um drop esquema agenda certo e
um drop table telefone estou dropando estou eliminando a tabela telefone do banco de dados um uma outra característica importante é o seguinte alguns sgbds eles não permitem que você drope o esquema se você tiver algum objeto dentro desse esquema imagina o seguinte você tem uma tabela de uf município dentro de um esquema logística e você quer dropar o esquema logística e ele não vai deixar alguns sgbds não deixam porque você tem tabelas lá dentro né objetos lá dentro desse esquema então uma forma de você remover tudo é drop esquema empresa Cascade ou seja drop Cascade
tudo que tiver de objeto dentro desse esquema empresa vai ser dropado perfeito muito bem agora a gente trabalha com a questão aqui da do wter né um outro comando muito utilizado nas definições de tabela então V imaginar que você criou uma tabela região ou melhor criou uma tabela estado esqueceu do campo região então você pode ter aqui alter table estado altere a tabela estado adicionando o campo região char 20 perfeito então meso depois do Create table desenvolvido você pode desenvolver alterações nessa tabela inclusive quando você tem e a possibilidade de ter dados já dentro da
tabela você ainda po e utilizar o alter table mas em algumas situações você vai ter que trabalhar o dado primeiro por exemplo se eu entro aqui com alter estado a de região char 20 not nul ele vai permitir esse comando Desde que eu não tenha nenhum registro na tabela se eu tiver registro eu não vou conseguir porque ele vai criar essa coluna região e todos os registros Associados vão vão estar nulos então se eu tiver o not no associado eu não consigo então uma forma de você fazer essa alteração é primeiro você adiciona o campo
como nulo depois você atualiza os registros né com update colocando algum valor respondente e depois você seta um altert novamente para passar esse campo portin ou você pode ainda desenvolver um alter table estado né alterando a tabela estado adicionando o campo região char 20 note nul mas com um valor padrão um valor default é default é zero default alguma informação que ele vai utilizar esse default para preencher todo mundo que tá nulo perfeito Então são essas duas formas que nós podemos trabalhar muito bem alguns exemplos é de de alter table Ten o alter table AD
região nós vimos anteriormente aqui alter table contato alter a tabela contato adicionando coluna apelido como varchar de 15 Poxa mas não era varchar de 15 era varchar de 25 Então você faz um alter T contato alter colum apelido varchar 25 aqui você tá adicionando a coluna apelido e aqui você tá alterando columa apelido para um outro tipo de dat Type aqui você tá desenvolvendo o alter table contato drop colum apelido está dropando a tabela ou melhor a coluna apelido da tabela contato e aqui você tá desenvolvendo aqui uma um alter t telefone AD for Key
é contato FK reference contato ID aqui contato FK é da tabela telefone que está referenciando o o ID da tabela contato e você também pode dropar esse e essa construite né um alter table nome da tabela drop Constru nome da Constru perfeito vamos vamos em frente então pessoal bom pessoal respondendo aqui então a questão certo então vamos ler skl é o strip langage é linguagem de consulta estruturada é uma linguagem padrão de gerenciamento de dados que interage com os principais bancos de dados baseados no modelo relacional nesse sentido o comando abaixo corresponde a qual tipo
de linguagem Create table stato sigla char de do nome char de 30 área flo Primar é uma linguagem de pesquisa de dados não nem existe essa su linguagem aqui talvez é uma linguagem de consulta de dados aqui né mas não é porque o consulta de dados seria um select linguagem de controle de dados dcl não que são os comandos de eh Grant e revoke linguagem de manipulação de dados também não é porque os comandos são insert update e delete linguagem de transação de dados também não são o comit o HB e o transaction linguagem de
definição de dados sim é uma linguagem de definição de dados porque o comando Create Faz parte dessa su linguagem da SQL ok muito bem Pessoal espero que todos tenham curtido essa web aula certo e eh Espero que todos tenham curtido Mais Uma Vez vamos em frente contem comigo e até a próxima pessoal grande abraço a todos valeu n