PI S3 DSW I DouglasARS

De IFSC
Revisão de 19h21min de 20 de outubro de 2015 por imported>Douglas (→‎Vídeos)
Ir para navegação Ir para pesquisar

Apresentação

Olá Estudante,

Estamos adentrando pela terceira semana de estudos. Precisamos falar um pouco mais sobre o MySQL e a linguagem SQL, de algumas configurações mais avançadas e aproveitar para recordar as etapas da instalação. Nesta semana também será liberado a primeira atividade obrigatória (AO1), cujo resultado será o envio de um arquivo de programa pelo moodle. Se você ainda não instalou os programa, corra pra fazer. A atividade ficará aberta por 6 dias somente e vale 1 ponto. Aproveito para lembrar que a grande maioria dos aplicativos comercias, ou mesmo industriais, são desenvolvidos a partir de um ambiente completo de desenvolvimento que conta necessariamente com o suporte a base de dados. Desta forma, é necessário que se tenha ferramentas que proporcionem a manipulação e a administração desses banco de dados como o MySQL e PostgreSQL com licenças públicas ou Oracle de licensa privada.

Fiquem atentos as postagens Fórum e participem dos nossos encontros virtuais.

Espero todos vocês na quinta-feira!

Abraço a todos e Bons Estudos!

Prof. Douglas A.

Objetivos

  • Configurar o MySQL.
  • Comparando o MySQL com o PostgreSQL.
  • Testando o MySQL pelo terminal do Linux utilizando os comandos SQL.

Instalando separadamente

Nesta semana, vamos falar com mais cuidado sobre as instalações e configurações. Também vamos apresentar informações importantes sobre esses aplicativos.


Vídeos

Instalação e uso do MySQL 5.5 (CE) no Ubuntu: https://www.youtube.com/watch?v=omaugV64nls

Instalação do MySQL no Ubuntu: https://www.youtube.com/watch?v=T3t-wziJN6I

Textos e Apostilas

Apostilas SQL: https://www.oficinadanet.com.br/apostilas/212/mysql

Instalar o MySQL

O MySQL é um sistema de gerenciamento de bancos de dados. Basicamente, ele irá organizar e proporcionar acesso a bases de dados onde nosso site pode armazenar informação.

Novamente, podemos utilizar o apt para obter e instalar nosso software. Desta vez, vamos também instalar alguns pacotes "auxiliares" que irão nos ajudar a obter nossos componentes para comunicarem uns com os outros:

$ sudo apt-get install mysql-server php5-mysql

Nota 1: Deverá ser solicitada a senha do usuário com os privilégios necessários para a instalação.

Nota 2: Neste caso, você não tem que executar sudo apt-get update antes do comando. Isso é porque o executamos recentemente através dos comandos acima para instalar o Apache. O índice de pacotes em nosso computador já deve estar atualizado.

Durante a instalação, seu servidor vai pedir para você selecionar e confirmar uma senha para o usuário "root" do MySQL. Esta é uma conta administrativa no MySQL que possui privilégios avançados. Pense nela como sendo similar à conta de root para o próprio servidor, no entanto, esta que você está configurando agora é uma conta específica do MySQL.

Quando a instalação estiver concluída, precisaremos executar alguns comandos adicionais para ter nosso ambiente MySQL configurado de forma segura.

Passo 1
Precisamos dizer ao MySQL para criar sua estrutura de diretório de banco de dados, onde ele irá armazenar suas informações. Você pode fazer isto digitando:
$ sudo mysql_install_db

Depois, queremos executar um script simples de segurança que vai remover alguns padrões perigosos e bloquear um pouco o acesso ao nosso sistema de banco de dados. Inicie o script interativo executando:

$ sudo mysql_secure_installation

Você será solicitado a digitar a senha que você definiu para a conta root do MySQL. Em seguida, ele irá perguntar se você deseja alterar esta senha. Se você estiver satisfeito com sua senha atual, digite "n" para "não" no terminal.

Para as demais perguntas, você deve simplesmente pressionar a telca <Enter> em cada prompt para aceitar os valores padrão. Isto irá remover alguns usuários e bases de exemplo, desabilitar logins remotos de root, e carregar estas novas regras para que o MySQL aplique imediatamente as alterações que fizemos.

Neste ponto, seu sistema de banco de dados está agora configurado e podemos avançar. Passo três - Instalar o PHP

O PHP é o componente da nossa configuração que irá processar código para exibir o conteúdo dinâmico. Ele pode executar script, conectar às nossas bases de dados MySQL para obter informações, e entregar o conteúdo processado para o nosso servidor web exibir.

Podemos aproveitar mais uma vez o sistema apt para instalar nossos componentes. Vamos incluir alguns pacotes auxiliares também.

$ sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

Isto irá instalar o PHP sem problemas. Vamos testar isso em instantes.

Na maioria do casos, vamos querer modificar a forma que o Apache serve arquivos quando uma pasta é requisitada. Atualmente, se um usuário requisita uma pasta do servidor, o Apache irá olhar primeiramente para um arquivo chamado index.html. Queremos informar ao nosso servidor web para dar preferência aos arquivos PHP, então faremos o Apache olhar para um arquivo index.php primeiro.

Para fazer isto, digite este comando para abrir o arquivo dir.inf em um editor de texto com privilégios de root:

sudo nano /etc/apache2/mods-enabled/dir.conf

Ele terá esta aparência:

<IfModule mod_dir.c>

   DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

</IfModule>

Queremos mover o arquivo de índice PHP em destaque acima para a primeira posição depois da especificação DirectoryIndex , como segue:

<IfModule mod_dir.c>

   DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm

</IfModule>

Quando você tiver concluído, salve e feche o arquivo pressionando "CTRL-X". Você tem que confirmar a gravação digitando "Y" e em seguida pressione "ENTER" para confirmar a localização de salvamento do arquivo.

Após isso, precisamos reiniciar o servidor web Apache de forma que nossas alterações sejam reconhecidas. Você pode fazer isto digitando o seguinte:

sudo service apache2 restart

Instalar módulos PHP

Para melhorar a funcionalidade do PHP, podemos opcionalmente instalar alguns módulos adicionais.

Para ver as opções disponíveis para módulos e bibliotecas PHP, você pode digitar isto em seu sistema:

apt-cache search php5-

O resultado são todos os componentes opcionais que você pode instalar. Ele lhe dará uma breve descrição de cada um:

php5-cgi - server-side, HTML-embedded scripting language (CGI binary) php5-cli - command-line interpreter for the php5 scripting language php5-common - Common files for packages built from the php5 source php5-curl - CURL module for php5 php5-dbg - Debug symbols for PHP5 php5-dev - Files for PHP5 module development php5-gd - GD module for php5 . . .

Para obter mais informações sobre o que cada módulo faz, você pode buscar na Internet, ou olhar a descrição longa do pacote digitando:

apt-cache show package_name

Haverá uma grande quantidade de saída, com um campo chamado Description-en que terá uma explicação mais longa da funcionalidade que o módulo oferece.

Por exemplo, para encontrar o que o módulo php5-cli faz, podemos digitar isto:

apt-cache show php5-cli

Juntamente com várias outras informações, você vai encontrar algo parecido com isto:

. . . SHA256: 91cfdbda65df65c9a4a5bd3478d6e7d3e92c53efcddf3436bbe9bbe27eca409d Description-en: command-line interpreter for the php5 scripting language

This package provides the /usr/bin/php5 command interpreter, useful for
testing PHP scripts from a shell or performing general shell scripting tasks.
.
The following extensions are built in: bcmath bz2 calendar Core ctype date
dba dom ereg exif fileinfo filter ftp gettext hash iconv libxml mbstring
mhash openssl pcntl pcre Phar posix Reflection session shmop SimpleXML soap
sockets SPL standard sysvmsg sysvsem sysvshm tokenizer wddx xml xmlreader
xmlwriter zip zlib.
.
PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
open source general-purpose scripting language that is especially suited
for web development and can be embedded into HTML.

Description-md5: f8450d3b28653dcf1a4615f3b1d4e347 Homepage: http://www.php.net/ . . .

Se, após pesquisar, você decidir que gostaria de instalar um pacote, você pode fazê-lo utilizando o comando apt-get install assim como fizemos para nossos outros softwares.

Se decidirmos que o php5-cli é algo que precisamos, podemos digitar:

sudo apt-get install php5-cli

Se você quiser instalar mais de um módulo, você pode fazer isso listando cada um, separado por um espaço, seguindo o comando apt-get, como abaixo:

sudo apt-get install package1 package2 ...

Nesse ponto, sua pilha LAMP está instalada e configurada. Devemos ainda testar o nosso PHP. Passo quatro — Testar o processamento PHP no seu servidor web

A fim de testar se nosso sistema está corretamente configurado para o PHP, podemos criar um script bem básico.

Vamos chamar este script de info.php. Para que o Apache possa encontrar o arquivo e servi-lo corretamente, ele deve ser salvo em um diretório muito específico, o qual é chamado de "web root".

No Ubuntu 14.04, este diretório está localizado em /var/www/html. Podemos criar o arquivo neste local digitando:

sudo nano /var/www/html/info.php

Isto vai abrir um arquivo em branco. Queremos colocar o texto a seguir, que é um código PHP válido, dentro do arquivo:

<?php phpinfo(); ?>

Quando você tiver concluído, salve e feche o arquivo.

Agora podemos testar se nosso servidor web pode exibir corretamente o conteúdo gerado por um script PHP. Para testar isso, temos apenas que visitar esta página em nosso navegador. Você vai precisar novamente do endereço IP público do seu servidor.

O endereço que você quer visitar será:

http://your_server_IP_address/info.php

A página que você deve ver deve se parecer com isto:

Testando o MySQL

1. Procura se há um serviço chamado mysql rodando no meu computador:

$ sudo netstat -tap | grep mysql

2. Acessar o mysql a partir do terminal do Linux (não esqueça da senha):

$ mysql -u root -p

3. Para mostrar as instâncias de banco de dados que são criadas por default, digite:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| phpmyadmin         |
+--------------------+
4 rows in set (0.00 sec)

Essas base de dados são criadas por padrão. São instâncias administrativas do próprio sistema.

4. Para abrir uma dessas instâncias, digite:

mysql>use myaql;
Database changed

5. Para listar todas as tabelas desse instância faça:

mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
24 rows in set (0.00 sec)

Aparecem várias tabelas do sistema. Uma delas é a tabela que contém informações de usuário (user).

6. Para '''listar todas as '''colunas''' da tabela, faça:

 mysql> show columns from user;
<pre>
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field                  | Type                              | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host                   | char(60)                          | NO   | PRI |         |       |
| User                   | char(16)                          | NO   | PRI |         |       |
| Password               | char(41)                          | NO   |     |         |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Insert_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Update_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Delete_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Create_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Drop_priv              | enum('N','Y')                     | NO   |     | N       |       |
| Reload_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Shutdown_priv          | enum('N','Y')                     | NO   |     | N       |       |
| Process_priv           | enum('N','Y')                     | NO   |     | N       |       |
| File_priv              | enum('N','Y')                     | NO   |     | N       |       |
| Grant_priv             | enum('N','Y')                     | NO   |     | N       |       |
| References_priv        | enum('N','Y')                     | NO   |     | N       |       |
| Index_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Alter_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Show_db_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Super_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Create_tmp_table_priv  | enum('N','Y')                     | NO   |     | N       |       |
| Lock_tables_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Execute_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Repl_slave_priv        | enum('N','Y')                     | NO   |     | N       |       |
| Repl_client_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Create_view_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Show_view_priv         | enum('N','Y')                     | NO   |     | N       |       |
| Create_routine_priv    | enum('N','Y')                     | NO   |     | N       |       |
| Alter_routine_priv     | enum('N','Y')                     | NO   |     | N       |       |
| Create_user_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Event_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Trigger_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Create_tablespace_priv | enum('N','Y')                     | NO   |     | N       |       |
| ssl_type               | enum('','ANY','X509','SPECIFIED') | NO   |     |         |       |
| ssl_cipher             | blob                              | NO   |     | NULL    |       |
| x509_issuer            | blob                              | NO   |     | NULL    |       |
| x509_subject           | blob                              | NO   |     | NULL    |       |
| max_questions          | int(11) unsigned                  | NO   |     | 0       |       |
| max_updates            | int(11) unsigned                  | NO   |     | 0       |       |
| max_connections        | int(11) unsigned                  | NO   |     | 0       |       |
| max_user_connections   | int(11) unsigned                  | NO   |     | 0       |       |
| plugin                 | char(64)                          | YES  |     |         |       |
| authentication_string  | text                              | YES  |     | NULL    |       |
+------------------------+-----------------------------------+------+-----+---------+-------+
42 rows in set (0.14 sec)

7. Esse comando pode ser trocado por:

mysql> desc user;

O resultado vai ser o mesmo. Notem que aparece nome do campo, tipo, se aceita nulos, tipo de chave entre outros.

8. Vamos fazer uma consulta a alguns campos dessa tabela trazendo a informação de algumas colunas com o comando select:

mysql> select user, password, host from user;
+------------------+-------------------------------------------+-----------+
| user             | password                                  | host      |
+------------------+-------------------------------------------+-----------+
| root             | *63A57B904D48C4C8382FC7643F8BDA9925EEBCE8 | localhost |
| root             | *63A57B904D48C4C8382FC7643F8BDA9925EEBCE8 | 127.0.0.1 |
| root             | *63A57B904D48C4C8382FC7643F8BDA9925EEBCE8 | ::1       |
| debian-sys-maint | *019FEA88BE7A8D65CD00EA5FE38B46DAC6DFB243 | localhost |
| phpmyadmin       | *63A57B904D48C4C8382FC7643F8BDA9925EEBCE8 | localhost |
+------------------+-------------------------------------------+-----------+
5 rows in set (0.03 sec)

9. Vamos criar uma instancia de banco de dados de teste para criar nossa primeira tabela:

mysql> create database teste;
Query OK, 1 row affected (0.02 sec)
mysql>show databases;
mysql>use teste;
mysql>show tables;

Nessa sequência de comandos, criamos a base de dados teste, mostramos todas as base de dados (inclusive teste), colocamos em uso, e aparace que a base de dados teste encontra-se vazia (empty).

10. Agora vamos criar a primeira tabela de teste. Abaixo o comando e explicação da criação das colunas:

mysql> create table pessoas(id int(10) not null auto_increment primary key, nome varchar(100) not null, cpf varchar(12));
Query OK, 0 rows affected (0.50 sec)

Nesse comando, criamos a tabela pessoas, com os campos id (identidade) que não aceita nulos (not null), que vai ser criado automaticamente (auto_increment), campo nome do tipo texto com tamanho de 100, campo cpf com tamanho 12 (Exemplo: 123456789-12).

mysql> show tables;
+-----------------+
| Tables_in_teste |
+-----------------+
| pessoas         |
+-----------------+
1 row in set (0.03 sec)

11. Para mostrar o conteúdo da tabela pessoas:

mysql> select * from pessoas;

Empty set (0.03 sec)

Como a tabela foi criada agora, ela continua vazia.

12. vamos inserir um primeiro registro na tabela pessoas com o comando a seguir:

mysql> insert into pessoas (nome,cpf) values ('Douglas de Souza','123456789-00');
Query OK, 1 row affected (0.09 sec)
mysql> select * from pessoas;
+----+------------------+--------------+
| id | nome             | cpf          |
+----+------------------+--------------+
|  1 | Douglas de Souza | 123456789-00 |
+----+------------------+--------------+
1 row in set (0.00 sec)

E assim, terminamos por inserir o primeiro registro. Tente fazer:

mysql> insert into pessoas (nome,cpf) values ('Alexandre Rodrigues','111222333-44');
Query OK, 1 row affected (0.07 sec)
mysql> select * from pessoas;
+----+---------------------+--------------+
| id | nome                | cpf          |
+----+---------------------+--------------+
|  1 | Douglas de Souza    | 123456789-00 |
|  2 | Alexandre Rodrigues | 111222333-44 |
+----+---------------------+--------------+
2 rows in set (0.00 sec)

13. Para sair do console mysql:

mysql>exit;
Bye

MySQL x PostgreSQL

São dois excelentes sistemas gerenciadores de banco de dados (SGBDs) gratuitos. O MySQL está disponível sob a Licença Pública GNU (GPL), e para quem não quiser estar limitado pelos termos da GPL, existe uma licença convencional. Já o PostgreSQL está disponível sob a licença flexível BSD.

O MySQL é o mais utilizado no desenvolvimento de aplicações onde a velocidade é importante, enquanto que o PostgreSQL se destaca por ser mais robusto e possuir muito mais recursos que o MySQL. Esses recursos tornam o PostgreSQL um "verdadeiro banco de dados".

Nas últimas versões do MySQL, os desenvolvedores acrescentaram diversos recursos que já existiam no PostgreSQL como transações (confirmação e cancelamento de operações realizadas COMMIT e ROLLBACK), triggers (gatilhos), Stored Procedures (Procedimentos Armazenados), views (visões), lock line (bloqueio em nível de linha) e constraints (cláusulas de integridade).

No entanto, o PostgreSQL continua sendo mais eficiente em vários aspectos. Suporta tamanhos ilimitados de linhas, bancos de dados e tabelas (até 16TB), aceita vários tipos de sub-consultas, possui mais tipos de dados e conta com um bom mecanismo de FAILSAVE (Segurança contra falhas, no caso do desligamento repentino do sistema).

A maior vantagem do MySQL ainda é a velocidade de acesso, no entanto para bases de dados muito grandes, complexas e que exige confiabilidade e escalabilidade vale a pena usar o PostgreSQL. No caso base de dados menores, não há diferença na velocidade ou pode se desconsiderar os milésimos de segundos entre os dois SGBDs.

Características do MySQL

Facilidade de administração e baixo consumo de recursos do hardware. Tornou-se popular graças à Internet, pois os bancos tradicionais tinham tempos de conexão extremamente elevados, inadequados para aplicações CGI. Para atingir seus objetivos, não implementava funções com grande overhead como integridade referencial, commit, rollback e níveis de isolamento de transação.

  1. Servidor multithreaded:
  2. Um único processo mysqld atende a todos os clientes.
  3. Tabelas e índices correspondem à arquivos físicos e bancos de dados correspondem à diretórios.
  4. Distribuição de dados em múltiplos discos deve ser feita manualmente, por meio de links simbólicos.
  5. Segurança via SSL
  6. Com suporte à transações
  7. Recursos SQL mais sofisticados, como agregados, COMMIT e ROLLBACK, triggers (gatilhos), Stored Procedures (Procedimentos Armazenados), views (visões), lock line (bloqueio em nível de linha) e constraints (cláusulas de integridade).
  8. Maior compatibilidade com o padrão ANSI.
Quando Usar o MySQL
  1. Back-end para geração de conteúdo de web sites
  2. Aplicação envolvendo basicamente consultas e adição de dados. Sugiro não usar para aplicações com fortes demandas transacionais, especialmente se houverem atualizações concorrentes!
  3. Muitas empresas combinam o MySQL (aplicações web) com um outro banco de dados (retaguarda financeira).


Características do PostgreSQL

O PostgreSQL é um sistema gerenciador de banco de dados objeto-relacional (SGBDOR), baseado no PostgreSQL desenvolvido pelo Departamento de Ciência da Computação da Universidade da Califórnia em Berkeley. O POSTGRES foi pioneiro em vários conceitos que somente se tornaram disponíveis muito mais tarde em alguns sistemas de banco de dados comerciais.

O PostgreSQL é um descendente de código fonte aberto deste código original de Berkeley. É suportada grande parte do padrão SQL:2003, além de serem oferecidas muitas funcionalidades modernas, como:

  • comandos complexos
  • chaves estrangeiras
  • gatilhos
  • visões
  • integridade transacional
  • controle de simultaneidade multiversão
Quando Usar o PostgreSQL

Aplicações com fortes componentes transacionais. Aplicações que necessitem de tipos de dados especializados, como Sistemas de Informações Geográficas (SIG) e repositórios de meta-dados Projetos baseados em metodologias Orientadas à Objeto – perda de compatibilidade com o padrão ANSI SQL Aplicações OLAP “light”, que não necessitem do nível de sofisticação de um DataWarehouse.


Leia mais em: http://www.devmedia.com.br/postgresql-x-mysql-qual-escolher/3923#ixzz3p8GqXZEt

Semana 4

Nesta terceira semana, revisamos a instalação do MySQL, apresentamos informações importantes sobre o MySQL x PostgreSQL, e acabamos por testar alguns comandos SQL através do terminal do Linux, que possibilitou a criação da base de dados, de uma tabela, até a inserção de um registro. Na semana 4...

Bons estudos!

Prof. Douglas A.

Referências

[1] http://www.devmedia.com.br/postgresql-x-mysql-qual-escolher/3923 [2]


<< <> >>