>> Apresentação e considerações
Fala galera, aqui nesse post vou tentar explorar alguns itens básicos do SQL, vou fazer um caso de uso prático.
Por eu ser um viciado em séries e detono de ver séries no Netflix, vou fazer um exemplo criando a minha base de dados para as séries, com algumas informações que julguei serem relevantes para esse tutorial, espero que gostem!
>> Legenda
~# – Indicação que os comandos devem ser executados no Shell do Linux
MariaDB [(none)]> – Indica o root do MySQL sem database selecionada
MariaDB [netflix]> – Indica o Shell do MySQL estando dentro da database netflix.
>> Pré requisitos
– Possuir MySQL ou MariaDB instalado.
>> CREATE DATABASE
Vamos criar uma base chamada “netflix”
~# mysql -uroot -p MariaDB [(none)]> CREATE DATABASE netflix; MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | netflix | | performance_schema | +--------------------+ 4 rows in set (0.00 sec)
>> CREATE TABLE – Criando a tabela
Vamos criar uma tabela em nosso banco que é onde vamos inserir posteriormente os dados das séries, e assim poderemos manipulá-los, para isso é necessário estarmos dentro da base
USE netflix; MariaDB [netflix]> CREATE TABLE series ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, title VARCHAR(50) NOT NULL, release_year YEAR NOT NULL, age_rating INT NOT NULL, seasons INT NOT NULL, episodes INT NOT NULL);
>> INSERT – Inserindo dados na tablela
MariaDB [netflix]> INSERT INTO series ( title, release_year, age_rating, seasons, episodes) values('Revenge', 2015, 14, 4, 89); INSERT INTO series ( title, release_year, age_rating, seasons, episodes) values( values(Luke Cage, 2016, 16, 1, 13); INSERT INTO series ( title, release_year, age_rating, seasons, episodes) values('Spartacus', 2013, 18, 4, 39); INSERT INTO series ( title, release_year, age_rating, seasons, episodes) values('The Get Down', 2017, 16, 2, 11); INSERT INTO series ( title, release_year, age_rating, seasons, episodes) values('Black Mirror', 2016, 16, 3, 13);
O comando desc nos mostra os atributos ou a descrição da tabela.
MariaDB [netflix]> desc series; +--------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | varchar(50) | YES | | NULL | | | release_year | year(4) | NO | | NULL | | | age_rating | int(11) | NO | | NULL | | | seasons | int(11) | NO | | NULL | | | episodes | int(11) | NO | | NULL | | +--------------+-------------+------+-----+---------+----------------+
>> SELECT – Listando informações da tabela
MariaDB [netflix]> select * from series; Listando todo o conteúdo da tabela sem a passagem de nenhum filtro +----+--------------+--------------+------------+---------+----------+ | id | title | release_year | age_rating | seasons | episodes | +----+--------------+--------------+------------+---------+----------+ | 1 | Breaking Bad | 2013 | 18 | 5 | 62 | | 2 | Revenge | 2015 | 14 | 4 | 89 | | 3 | Spartacus | 2013 | 18 | 4 | 39 | | 4 | The Get Down | 2017 | 16 | 2 | 11 | | 5 | Black Mirror | 2016 | 16 | 3 | 13 | +----+--------------+--------------+------------+---------+----------+ 5 rows in set (0.00 sec)
Vamos listar o Título e o ano de lançamento das séries
MariaDB [netflix]> select title,release_year from series; +--------------+--------------+ | title | release_year | +--------------+--------------+ | Breaking Bad | 2013 | | Revenge | 2015 | | Spartacus | 2013 | | The Get Down | 2017 | | Black Mirror | 2016 | +--------------+--------------+ 5 rows in set (0.00 sec)
Listando as séries que possui a classificação indicativa para menores de 18 anos
MariaDB [netflix]> select * from series where age_rating < 18; +----+--------------+--------------+------------+---------+----------+ | id | title | release_year | age_rating | seasons | episodes | +----+--------------+--------------+------------+---------+----------+ | 2 | Revenge | 2015 | 14 | 4 | 89 | | 4 | The Get Down | 2017 | 16 | 2 | 11 | | 5 | Black Mirror | 2016 | 16 | 3 | 13 | +----+--------------+--------------+------------+---------+----------+ 3 rows in set (0.00 sec)
Vamos consultar agora as séries que começam com a letra “B” e a classificação indicativa seja para menores de 18 anos, e vamos exibir somente três colunas
MariaDB [netflix]> select title,age_rating,seasons from series where title REGEXP '^[B]' and age_rating < 18; +--------------+------------+---------+ | title | age_rating | seasons | +--------------+------------+---------+ | Black Mirror | 16 | 3 | +--------------+------------+---------+ 1 row in set (0.00 sec)
Ordenando a consulta pela quantidade de episódios
MariaDB [netflix]> select title,episodes from series order by episodes; +--------------+----------+ | title | episodes | +--------------+----------+ | The Get Down | 11 | | Black Mirror | 13 | | Spartacus | 39 | | Breaking Bad | 62 | | Revenge | 89 | +--------------+----------+ 5 rows in set (0.00 sec)
>> Brincando com o UPDATE
Vamos inserir um novo registro com as informações da série Narcos
MariaDB [netflix]> INSERT INTO series ( title, release_year, age_rating, seasons, episodes) values('Narcos', 2005, 12, 20, 50);
Ao listar a nossa linha criada, vemos que as informações a respeito da série estão incorretas
MariaDB [netflix]> select * from series where title='Narcos'; +----+--------+--------------+------------+---------+----------+ | id | title | release_year | age_rating | seasons | episodes | +----+--------+--------------+------------+---------+----------+ | 6 | Narcos | 2005 | 12 | 20 | 50 | +----+--------+--------------+------------+---------+----------+ 1 row in set (0.00 sec)
Agora vamos atualizar a tabela e ver o resultado:
MariaDB [netflix]> UPDATE series SET release_year=2016, age_rating=16, seasons=2, episodes=20 where title='Narcos'; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 MariaDB [netflix]> select * from series where title='Narcos'; +----+--------+--------------+------------+---------+----------+ | id | title | release_year | age_rating | seasons | episodes | +----+--------+--------------+------------+---------+----------+ | 6 | Narcos | 2016 | 16 | 2 | 20 | +----+--------+--------------+------------+---------+----------+ 1 row in set (0.00 sec)
>> DELETE
Acabamos inserindo um valor incorreto! Opa, embora Velozes e Furiosos tenham vários episódios não se caracteriza como uma série, o registro acabou sendo inserido incorretamente.
MariaDB [netflix]> INSERT INTO series ( title, release_year, age_rating, seasons, episodes) values('Velozes e Furiosos', 2009, 12, 2, 8);
Com o comando abaixo deletamos o registro do filme
MariaDB [netflix]> delete from series where title='Velozes e Furiosos';
>> SELECT COUNT – Contando linhas
Contando quantas linhas temos com o valor id
MariaDB [netflix]> select count(*) from series where id; +----------+ | count(*) | +----------+ | 6 | +----------+
Contando quantas séries temos no ano de 2016
MariaDB [netflix]> select count(*) from series where release_year=2016; +----------+ | count(*) | +----------+ | 2 | +----------+
>> TRUNCATE
O truncate irá apagar todos os dados da tabela matendo a sua estrutura, vemos aqui que todos os dados existentes em nossa tabela já não existem mais
MariaDB [netflix]> truncate series; Query OK, 0 rows affected (0.00 sec) MariaDB [netflix]> select * from series; Empty set (0.00 sec)
>> DROP TABLE
Vamos apagar nossa tabela
MariaDB [netflix]> drop table series; Query OK, 0 rows affected (0.01 sec) MariaDB [netflix]> select * from series; ERROR 1146 (42S02): Table 'netflix.series' doesn't exist
>> DROP DATABASE
Acabamos por aqui, deletando a nossa database do Banco de Dados.
MariaDB [netflix]> drop database netflix; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+
>> Conclusão
Acredito que com esse simples post conseguimos explorar alguns dos recursos da linguagem SQL, como Sysadmins e DevOpeiros que somos, precisamos conhecer da linguagem SQL para a realização de diversas tarefas que podem facilitar o nosso dia-a-dia.
05/06/2017 at 8:10 am
Muito legal esse post Rodrigo. É sempre bom posts introdutórios para ajudar quem esta começando e para relembrar quem não utiliza SQL todos os dias.
CurtirCurtido por 1 pessoa
05/06/2017 at 8:31 am
Show Marcos, obrigado pelo FeedBack, inicialmente estou colocando no Blog alguns Posts introdutórios de algumas ferramentas e a idéia é ir evoluindo para propósitos maiores.
SQL por exemplo é algo que usei pouco na minha carreira, agora começei a usar mais por conta do Hadoop, Hive, Impala…é claro que é diferente do relacional, mais se aproveita muita coisa…e em breve começo a maratona de Posts a respeito de Hadoop!
Abraço!
CurtirCurtir