sexta-feira, 27 de dezembro de 2019

Fora!!! Abraham Weintraub!!!

Fora!!!   Abraham Weintraub!!!




Hoje eu li isso, maravilha!!!  Eu sou mãe de aluno que foi prejudicado por ele!!!  Eu quero esse homem fora da Educação!!!  Ele já prejudicou milhares de estudantes no Brasil inteiro em 2019!!!

Esse homem (Abraham Weintraub) tem que deixar de ser o Ministro da Educação, todas as mães de alunos, e todos os estudantes de cursos de ensino básico em escolas públicas, de ensino médio em colégios públicos, e de ensino superior em universidades públicas, irão ficar extremamente feliz.

Esse homem (Abraham Weintraub) prejudicou milhares de alunos no Brasil inteiro em 2019.
Com o corte de verbas na educação básica, no ensino médio, no ensino superior, em cursos de mestrado, em cursos de doutorado, ele prejudicou milhares de estudantes.

Como esse homem fêz o corte de verbas, uma das maiores consequências disso foi que vários alunos de pós-graduação, alunos de cursos de doutorado, alunos de cursos de mestrado, no Brasil inteiro em 2019, tiveram sua tese de pesquisa prejudicada logo no início das aulas. Ele prejudicou a conclusão de cursos, de vários alunos, no Brasil inteiro!!!.

Como esse homem fêz o corte de verbas, uma das maiores consequências disso foi o que os alunos que tem aula em tempo integral, as escolas e as universidades tiveram que cortar o bandejão (= almoço grátis), com ele prejudicou a alimentação de milhares de estudantes que vão para a escola de manhã bem cedo e só voltam para a moradia quando as aulas terminam de noite após 22 horas. Esses alunos tiveram que se alimentar de salgados, de coxinha de galinha, de bolo de chocolate, durante o ano inteiro de 2019, porque alunos ficaram sem almoço grátis. Alunos estudando tempo integral (manhã - tarde- noite) e se alimentando de coxinha de galinha, se alimentando de bolo. Ele prejudicou muita gente.

---



O Governo PT = Governo Lula + Governo Dilma = 8 piores anos para a Educação do Brasil = 8 piores anos para a Saúde do Brasil, milhares de pessoas foram prejudicadas (alunos, professores, médicos) durante todo o tempo de governo Lula + Dilma.


O Governo Lula + Governo Dilma também prejudicaram o estudo de milhares de alunos que estudaram em escolas públicas (ensino básico e ensino médio) e em universidades públicas (cursos de graduação, cursos de pós-graduação, cursos de mestrado, cursos de doutorado). Durante os 8 anos de Governo Lula + Dilma eles fizeram diversos cortes de verbas na Educação, prejudicando o estudo de milhares de alunos, porque a consequência desses cortes de verba foi :


1) Foi as escolas públicas e universidades públicas não ter dinheiro suficiente para fazer o pagamento do salário dos professores. Isso causou diversas greves anos atrás.


2) Foi as escolas públicas e universidades públicas não ter dinheiro suficiente para fazer o almoço grátis e a merenda grátis dos alunos. Isso causou diversas greves anos atrás.


3) Foi as escolas públicas e universidades públicas não ter dinheiro suficiente para pagar o pessoal que faz a limpeza das escolas.  Isso causou diversas greves anos atrás.


4) Foi as escolas públicas e universidades públicas terem o ano letivo prejudicado, porque com as greves de professores e greves do estabelecimento de ensino, terem o tempo letivo anual prejudicado, tendo os alunos e professores que fazerem reposição de aulas depois.


5) Com o corte de verbas do Governo Lula + Governo Dilma vários prédios de escolas públicas e universidades públicas tiveram a infraestrutura prejudicada, ou seja ficaram vários anos sem  ter a manutenção predial básica nos prédios, tiveram incêndios alguns prédios, tiveram elevadores quebrados durante vários meses sem conserto, tiveram as paredes sem ver uma tinta nova, antes do início do ano letivo durante vários anos.  Isso causou greves anos atrás.


6) Idem os postos de saúde e hospitais públicos, o Governo Lula + Dima, com diversos cortes de verbas feitos durante os 8 anos do governo deles,  prejudicou os estudos de pós-graduação de vários médicos, prejudicou a infraestrutura básica de diversos hospitais, atrasou o salário de milhares de médicos, diversas vezes. Isso causou diversas greves anos atrás.

---


Após demissões no MEC, suspeita é que Weintraub saia da pasta = https://jornalggn.com.br/educacao/apos-demissoes-no-mec-suspeita-e-que-weintraub-saia-da-pasta/



---



FORA WEINTRAUB! = https://pensaraeducacao.com.br/pensaraeducacaoempauta/fora-weintraub/


---
Abraham Weintraub tira férias e pode não voltar ao cargo em 2020.  Segundo fontes, o ministro perdeu o apoio de parte dos integrantes do governo Bolsonaro por causa do seu comportamento polêmico e da paralisia no MEC = https://www.correiobraziliense.com.br/app/noticia/politica/2019/12/13/interna_politica,813820/abraham-weintraub-tira-ferias-e-pode-nao-voltar-ao-cargo-em-2020.shtml

--
Fora!!! #AbrahamWeintraub!!! Esse homem não serve para ser Ministro da #Educação!!!
Ele prejudicou milhares de alunos do Brasil em 2019!!!
--
Ministro da Educação diz que universidades custam muito caro e critica reitora da UFMT https://jornalggn.com.br/educacao/ministro-da-educacao-diz-que-universidades-custam-muito-caro-e-critica-reitora-da-ufmt/ via @jornalggn

domingo, 22 de dezembro de 2019

SQL - Filtros de Seleção


7. SQL - FILTROS DE SELEÇÃO 

Os comandos abordados até então, são utilizados em relação à estrutura das tabelas em sua totalidade. 

Para busca e seleção de áreas específicas das tabelas devemos acrescentar o complemento WERE em alguns dos comandos abordados anteriormente para que a operação somente seja realizada nos registros que atenderem as condições especificadas, neste sentido, faz-se necessário a abordagem do conceito de operadores. 

OPERADORES RELACIONAIS: 

• Igual (=), Diferente (!=) 

• Maior (>), Maior ou igual (>=) 

• Menor (<), Menor ou igual (<=) 

• Nulo (IS NULL), ou não-nulo (IS NOT NULL) 

• Entre intervalo (BETWEEN) 

• Valor parcial (like) 


OPERADORES LÓGICOS: 

• AND 
• OR 
• NOT 


Para exemplo de aplicação, adotemos duas situações distintas: 

1º Buscar no banco de dados todas as informações referentes a uma determinada pessoa através do nº de CPF; 

2º Pesquisar quantas pessoas com idade superior a vinte anos estão cadastradas no sistema 

SINTAXE: 
SELECT Campos FROM Tabela WHERE Condição

SELECT * FROM Pessoas WHERE CPF = '111.111.111-11'
SELECT NOME FROM PESSOAS WHERE IDADE > 20


Para atualização de campos específicos, podemos utilizar o comando UPDATE seguido do complemento WERE, exemplos a seguir: 

Se fosse necessário atualizar o nome do titular do CPF 222.222.222-22 para Fábio, usaríamos a sintaxe abaixo, o mesmo se aplica a mudança de idade para 25 anos do usuário Mário no segundo exemplo 

UPDATE Tabela SET Campo = Valor WHERE Condição
UPDATE PESSOAS SET NOME = 'Fabio' WHERE  CPF = '222.222.222-22'
UPDATE PESSOAS SET IDADE = 25 WHERE NOME = 'Mario'


Para deletar campos específicos sem excluir a tabela inteira, podemos usar o comando DELETE precedido do complemento WERE.

DELETE FROM Tabela WHERE Condição
DELETE FROM PESSOAS WHERE CPF = '222.222.222-22'
DELETE FROM PESSOAS WHERE NOME = 'Mario'


8. RELACIONAMENTOS NO SQL 

Para relacionarmos tabelas, utilizamos o parâmetro JOIN, sua sintaxe é:

SELECT Nome dos Campos FROM Nome-da-Tabela1 
JOIN Nome-da-Tabela2  ON Nome-da-Tabela3 

SELECT Campos FROM T1 JOIN T2 ON T1.FK=T2.PK
Condição: Relacionar chave estrangeira da Tabela1 com chave primária da Tabela2. Isto não é uma regra, aplica-se ao exemplo.

Se os campos em comum entre as tabelas possuírem o mesmo nome, podemos usar esta sintaxe:  

SELECT Nome dos Campos FROM T1 JOIN T2 USING Chave
Observação: onde Chave é o nome da chave da tabela.


INNER JOIN

SELECT * FROM Alunos JOIN Cursos ON Alunos.CPF = Cursos.CPF

SQL - Indice, Chave e Relacionamento da Tabela


SQL - Indice da Tabela


Criar Índice = CREATE INDEX Nome ON

Alterar Índice = ALTER INDEX TabelaEColuna

Exclusão Indice = DROP INDEX Nome Propriedade Nome

OBS: O comando DROP INDEX remove o índice, mas não remove os dados no campo em questão.



4. NORMALIZAÇÃO DE DADOS 
(RELACIONAMENTOS E CHAVES) 

Normalização de dados é um termo que está intimamente ligado a Relacionamentos, que por sua vez é ligado a chaves. 

• Relacionamentos = São ligações entre tabelas onde existes um ou mais campos em comum entre as tabelas relacionadas conhecidos como campos chaves. 

• Campos Chaves = São valores que apresentam “referência” de uma tabela em outra (chave de identificação). As tabelas dos bancos de dados são compostas por linhas e colunas, sendo que algumas das colunas podem apresentar características especificas de acordo com a forma com que a tabela foi construída ou da aplicação que será construída sob o banco de dados, geralmente algumas colunas são criadas especificamente para gerar relacionamentos entre duas ou mais tabelas, tais colunas são denominadas “colunas chaves”. 


4.1 Tipos de Chaves 

1. Chaves Primárias (Primary Key – PK), os valores são únicos (não se repetem nos registros da tabela). Esta característica também é denominada de identificador único. 

2. Chave Composta é formada pela composição de duas ou mais colunas para gerar um identificador único, podendo significar que nenhum campo isoladamente possa se tornar a chave primária, sendo necessário dois ou mais campos para gerar uma combinação única de cada registro. 

 Neste exemplo o nº de CPF é utilizado como chave primária, não pode haver duas pessoas com o mesmo número de CPF. Em uma tabela de cadastro de alunos, o mesmo se aplica ao número de RA (Registro de Aluno) 

Usando a mesma tabela do exemplo anterior, neste caso, se o nº de CPF dependesse de cada estado, a identificação seria composta pela chave estrangeira. 

3. Chave Estrangeira (Foreign Key – FK), modelo adotado onde a coluna armazena a chave primária de outra tabela (referência), não sendo necessário preencher todas as informações que são “buscadas” através do código ou informação atrelada. 

Neste exemplo, a tela de cadastro utiliza uma tabela que armazena os dados utilizando o número de matrícula como uma chave estrangeira, sendo que, este mesmo campo é a chave primária no cadastro de funcionários (RH) 

4.2 Tipos de Relacionamentos 

a) Relacionamento 1 para 1 (1:1), para cada registro na primeira tabela existe no máximo um correspondente na segunda tabela, e vice-versa. 

Neste exemplo, existe um único correspondente na tabela 2 para a tabela 1 em virtude de cada pessoa possuir um número específico de CPF.

b) Relacionamento 1 para muitos (1:*), neste tipo de relacionamento, para cada registro na primeira tabela podem haver dois ou mais correspondentes na segunda tabela, mas para cada registro na segunda tabela deve haver apenas um correspondente na primeira tabela. Neste exemplo, um indivíduo pode ser proprietário de mais de um automóvel, sendo possível também que outra pessoa não possua nenhum automóvel registrado em seu número de CPF.

c) Relacionamento muitos para muitos (*:*), para cada registro da primeira tabela podem existir um ou mais correspondentes na segunda tabela, e vice-versa. Neste exemplo, uma pessoa pode exercer mais de uma profissão, assim como, uma determinada profissão possa ser exercida por mais de uma pessoa.


A Linguagem SQL tem como grandes virtudes sua capacidade de gerenciar índices, sem a necessidade de controle individualizado de índice corrente, algo muito comum nas linguagens de manipulação de dados do tipo registro a registro. 


SQL - Agrupamento GROUP BY


GROUP BY - Agrupamentos 

As funções de grupo operam sobre grupos de tuplas(linhas). Retornam resultados baseados em grupos de tuplas em vez de resultados de funções por tupla individual. 

A claúsula "group by" do comando "select" é utilizada para dividir tuplas em grupos menores. 

A cláusula "GROUP BY" pode ser usada para dividir as tuplas de uma tabela em grupos menores. As funções de grupo devolvem uma informação sumarizada para cada grupo. 

16) Apresente a média de salário pagos por departamento. 

Resp: SELECT DUPNUME, AVG(EMPSALA) FROM EMP GROUP BY DEPNUME; 

Observação: Qualquer coluna ou expressão na lista de seleção, que não for uma função agregada, deverá constar da claúsula "group by". Portanto é errado tentar impor uma "restrição" do tipo agregada na cláusula Where. Having 

A cláusula "HAVING" pode ser utilizada para especificar quais grupos deverão ser exibidos, portanto restringindo-os. 

17) Retome o problema anterior, porém apresente resposta apenas para departamentos com mais de 10 empregados. 

Resp: SELECT DEPNUME, AVG(EMPSALA) FROM EMP GROUP BY DEPNUME HAVING COUNT(*) > 3; 

Observação.: A claúsula "group by" deve ser colocada antes da "having", pois os grupos são formados e as funções de grupos são calculadas antes de se resolver a cláusula "having". 

A cláusula "where" não pode ser utilizada para restringir grupos que deverão ser exibidos. 

Exemplificando ERRO típico - Restringindo Média Maior que 1000: 

SELECT DEPNUME, AVG(EMPSALA) FROM EMP WHERE AVG(SALARIO) > 1000 GROUP BY DEPNUME; 
( Esta seleção está ERRADA! ) 

SELECT DEPNUME, AVG(EMPSALA) FROM EMP GROUP BY DEPNUME HAVING AVG(EMPSALA) > 1000; 
( Seleção Adequada ) 

Seqüência no comando "Select": 

SELECT coluna(s) FROM tabela(s) WHERE condições das tuplas GROUP BY condições dos grupos de tuplas HAVING condições dos grupos de tuplas ORDER BY colunas; 

O "sql" fará a seguinte avaliação: 

a) WHERE, para estabelecer tuplas individuais candidatas (não pode conter funções de grupo) 

b) GROUP BY, para fixar grupos. 

c) HAVING, para selecionar grupos para exibição. 

Equi-Junção (junção por igualdade) - O relacionamento existente entre tabelas é chamado de equi-junção, pois os valores de colunas das duas tabelas são iguais. 

A Equi-junção é possível apenas quando tivermos definido de forma adequada a chave estrangeira de uma tabela e sua referência a chave primária da tabela precedente. 

Apesar de admitir-se em alguns casos, a equi-junção de tabelas, sem a correspondência Chave Primária-Chave Estrangeira, recomendamos fortemente não utilizar este tipo de construção, pois certamente em nenhum momento nos exemplos propostos em nossa disciplina SQL ou nas disciplinas de Análise e Projeto de Sistemas, serão necessárias tais junções. 

18) Listar Nomes de Empregados, Cargos e Nome do Departamento onde o empregado trabalha. 

Resp: Observemos que dois dos três dados solicitados estão na Tabela Emp, enquanto o outro dado está na Tabela Dept. 

Deveremos então acessar os dados restringindo convenientemente as relações existentes entre as tabelas.  De fato sabemos que DEPNUME é chave primária da tabela de Departamentos e também é chave estrangeira da Tabela de Empregados. Portanto, este campo será o responsável pela equi-junção. 

SELECT A.EMPNOME, A.EMPSERV, B.DEPNOME FROM EMP A, DEPT B WHERE A.DEPNUME = B.DEPNUME; 

Observação: 

Note que as tabelas quando contém colunas com o mesmo nome, usa-se um apelido "alias" para substituir o nome da tabela associado a coluna. 

Imagine que alguém tivesse definido NOME para ser o Nome do Empregado na Tabela de Empregados e também NOME para ser o Nome do Departamento na Tabela de Departamentos. 

Tudo funcionaria de forma adequada, pois o aliás se encarregaria de evitar que uma ambiqüidade fosse verificada. 

Embora o SQL resolva de forma muito elegante o problema da nomenclatura idêntica para campos de tabelas, recomendamos que o estudante fortemente evite tal forma de nomear os campos. 

O SQL nunca confundirá um A.NOME com um B.NOME, porém podemos afirmar o mesmo de nós mesmos? 

19) Liste os Códigos do Cada Funcionário, seus Nomes, seus Cargos e o nome do Gerente ao qual este se relaciona. 

Resp: Precisamos criar um auto-relacionamento, ou seja, juntar uma tabela a ela própria. É possível juntarmos uma tabela a ela mesma com a utilização de apelidos, permitindo juntar tuplas da tabela a outra tuplas da mesma tabela. 

SELECT A.EMPNUME, A.EMPNOME, A.EMPSERV, B.EMPNOME FROM EMP A, EMP B WHERE A.EMPGERE = B.EMPNUME; 

As Sub-Consultas Uma sub-consulta é um comando "select" que é aninhado dentro de outro "select" e que devolve resultados intermediários. 

20) Relacione todos os nomes de funcionários e seus respectivos cargos, desde que o orçamento do departamento seja igual a 300000. 

Resp: SELECT EMPNOME, EMPSERV FROM EMP A WHERE 300000 IN (SELECT DEPORCA FROM DEPT WHERE DEPT.DEPNUME = A.DEPNUME ); 

Nota: Observe que a cláusula IN torna-se verdadeira quando o atributo indicado está presente no conjunto obtido através da subconsulta. 

21) Relacione todos os departamentos que possuem empregados com remuneração maior que 3500. 

Resp: SELECT DEPNOME FROM DEPT A WHERE EXISTS (SELECT * FROM EMP WHERE EMPSALA > 3500 AND EMP.DEPNUME = A.DEPNUME'); 

Nota: Observe que a cláusula EXISTS indica se o resultado de uma pesquisa contém ou não tuplas. Observe também que poderemos verficar a não existência (NOT EXISTS) caso esta alternativa seja mais conveniente.

SQL - Funções de Caracteres


SQL - Funções de Caracteres 


Lower - força caracteres maiúsculos aparecerem em minúsculos. 

Upper - força caracteres minúsculos aparecerem em maiúsculos. 

Concat(x,y)- concatena a string "x" com a string "y". 

Substring(x,y,str) - extrai um substring da string "str", começando em "x", e termina em "y". 

To_Char(num) - converte um valor numérico para uma string de caracteres. 

To_Date(char,fmt) - converte uma string caracter em uma data. ^Q - converte data para o formato apresentado. 


Apresente o nome de todos os empregados em letras minúsculas. 

Resp: SELECT LOWER( EMPNOME ) FROM EMP; 


Apresente o nome de todos os empregados (somente as 10 primeiras letras). 

Resp: SELECT SUBSTRING (1,10,EMPNOME) FROM EMP; 


Apresente o nome de todos os empregados admitidos em 01/01/80. 

Resp: SELECT * FROM EMP WHERE EMPADMI = ^Q"DD-AAA-YYYY"("01-JAN-1980"); 
ou SELECT * FROM EMP WHERE EMPADMI = ^Q("01-JAN-1980"); 

Funções Agregadas (ou de Agrupamento) função retorno avg(n) média do valor n, ignorando nulos count(expr) vezes que o número da expr avalia para algo nao nulo max(expr) maior valor da expr min(expr) menor valor da expr sum(n) soma dos valores de n, ignorando nulos 


Apresente a Média, o Maior, o Menor e também a Somatória dos Salários pagos aos empregados. 

Resp: 
SELECT AVG(EMPSALA) FROM EMP; 
SELECT MIN(EMPSALA) FROM EMP; 
SELECT MAX(EMPSALA) FROM EMP; 
SELECT SUM(EMPSALA) FROM EMP; 


SQL - União de Consultas




Uniões 

Podemos eventualmente unir duas linhas de consultas simplesmente utilizando a palavra reservada UNION. 

Liste todos os empregados que tenham códigos < 10 ou Funcionários que trabalhem em departamentos com código maior que 10. 

Resp: Poderíamos resolver esta pesquisa com um único Select, porém devido ao fato de estarmos trabalhando em nosso exemplo com apenas duas tabelas não conseguimos criar um exemplo muito adequado para utilização deste recurso. 

Select * From Emp Where EmpNume < 10
Union (Select * From Emp Where DepNume < 10);