Debian 7de MySQL Görünümlerini Kullanma

Giriş

MySQL, "görünümler" olarak bilinen harika bir özelliğe sahiptir. Görünümler, saklanan sorgulardır. Bunları, aksi takdirde uzun bir sorgu için takma ad olarak düşünün. Bu kılavuzda, verileri daha verimli bir şekilde düzenlemek için görünümlerin nasıl kullanılacağını göstereceğim.

Ön şartlar

  • Debian 7 yüklü bir Vultr SSD bulut sunucusu.
  • Yönetici (kök) ayrıcalıklarına sahip kullanıcı.
  • Linux, komut satırı ve SSH hakkında temel bilgiler.

Birinci adım - MySQL sunucusunu kurun

Debian 7.x üzerine MySQL kurulumu çok basittir. İlk olarak, kaynaklarımızı şu şekilde yürüterek güncellememiz gerekir:

sudo apt-get update

Ardından, MySQL sunucusunu kurabiliriz:

sudo apt-get install -y mysql-server

"Kök" kullanıcı için bir şifre oluşturmanızı isteyen bir iletişim kutusu görüntülenir. Bu şifreyi hatırladığınızdan emin olun.

Yaparak kurulumumuzun güvenliğini sertleştirelim:

sudo mysql_secure_installation

Yürütmeden sonra bir dizi bilgi istemi sunulacak. Seçmeniz gereken cevapların her biri aşağıda görüntülenir.

...
Enter current password for root (enter for none):
OK, successfully used password, moving on...
...
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
...
Remove anonymous users? [Y/n] y
 ... Success!
...
Disallow root login remotely? [Y/n] y
 ... Success!
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
...
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...

İkinci adım - Örnek veritabanını yükleyin

Bu noktada, sunucuda denenecek veri yok. Bu eğitim için, MySQL'in web sitesinden çalışması kolay ve ücretsiz olarak erişilebilir olduğundan , çalışanların veritabanını kullanacağız.

sudo wget https://launchpad.net/test-db/employees-db-1/1.0.6/+download/employees_db-full-1.0.6.tar.bz2

bzip2Dosyayı çıkarabilmemiz için yüklememiz gerekiyor .

sudo apt-get install bzip2

Veritabanını ayıklayın. Dosya oldukça büyük, bu yüzden birkaç dakika sürebilir.

sudo bzip2 -dfv employees_db-full-1.0.6.tar.bz2
sudo tar -xf employees_db-full-1.0.6.tar

Dosya çıkarıldıktan sonra başlıklı bir klasörünüz olacaktır employees_db. Veritabanını kurmak için bu dizine gitmemiz gerekiyor.

cd employees_db 
ls -l

Çıktı şöyle görünecektir:

-rw-r--r--. 1 501 games       752 Mar 30  2009 Changelog
-rw-r--r--. 1 501 games      6460 Oct  9  2008 employees_partitioned2.sql
-rw-r--r--. 1 501 games      7624 Feb  6  2009 employees_partitioned3.sql
-rw-r--r--. 1 501 games      5660 Feb  6  2009 employees_partitioned.sql
-rw-r--r--. 1 501 games      3861 Nov 28  2008 employees.sql
-rw-r--r--. 1 501 games       241 Jul 30  2008 load_departments.dump
-rw-r--r--. 1 501 games  13828291 Mar 30  2009 load_dept_emp.dump
-rw-r--r--. 1 501 games      1043 Jul 30  2008 load_dept_manager.dump
-rw-r--r--. 1 501 games  17422825 Jul 30  2008 load_employees.dump
-rw-r--r--. 1 501 games 115848997 Jul 30  2008 load_salaries.dump
-rw-r--r--. 1 501 games  21265449 Jul 30  2008 load_titles.dump
-rw-r--r--. 1 501 games      3889 Mar 30  2009 objects.sql
-rw-r--r--. 1 501 games      2211 Jul 30  2008 README
-rw-r--r--. 1 501 games      4455 Mar 30  2009 test_employees_md5.sql
-rw-r--r--. 1 501 games      4450 Mar 30  2009 test_employees_sha.sql

MySQL sunucusuna bağlanmak, veritabanını oluşturmak ve verileri almak için aşağıdaki komutu yürütün:

sudo mysql -h localhost -u root -p -t < employees.sql

Kök şifrenizi soran bir istem belirecektir. Bu, birinci adımda belirlediğiniz şifredir.

Veritabanının oldukça büyük olması nedeniyle, verilerin tamamen içe aktarılması muhtemelen 1-3 dakika sürebilir. Her şey doğru yapılmışsa, aşağıdaki çıktıyı göreceksiniz.

+-----------------------------+
| INFO                        |
+-----------------------------+
| CREATING DATABASE STRUCTURE |
+-----------------------------+
+------------------------+
| INFO                   |
+------------------------+
| storage engine: InnoDB |
+------------------------+
+---------------------+
| INFO                |
+---------------------+
| LOADING departments |
+---------------------+
+-------------------+
| INFO              |
+-------------------+
| LOADING employees |
+-------------------+
+------------------+
| INFO             |
+------------------+
| LOADING dept_emp |
+------------------+
+----------------------+
| INFO                 |
+----------------------+
| LOADING dept_manager |
+----------------------+
+----------------+
| INFO           |
+----------------+
| LOADING titles |
+----------------+
+------------------+
| INFO             |
+------------------+
| LOADING salaries |
+------------------+

Şimdi, MySQL'e giriş yapabilir ve içe aktarılan verileri görüntüleyebiliriz.

sudo mysql -h localhost -u root -p

Önceki bölümde belirlediğiniz kök parolayı girin .

Yeni oluşturulan çalışanlar veritabanımız için veritabanı listesini kontrol edin .

show databases;

Çıktı şöyle görünecektir:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| employees          |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.01 sec)

Çalışanlar veritabanını kullanalım .

use employees;

İçindeki tabloları kontrol edin.

show tables;

Bu çıktı:

+---------------------+
| Tables_in_employees |
+---------------------+
| departments         |
| dept_emp            |
| dept_manager        |
| employees           |
| salaries            |
| titles              |
+---------------------+
6 rows in set (0.01 sec)

Üçüncü adım - Görünüm oluşturma, kullanma ve kaldırma

Bu adımda, görünümler oluşturmayı ve kullanmayı öğreneceksiniz. Verileri eşleştirmek ve verileri kuruluş için birleştirmek için bu adımı daha küçük bölümlere ayırdım. Test verilerimizle etkileşime geçme zamanı.

Verileri birleştirme / eşleştirme

Aşağıda, yıllık maaşı 50.000 dolara eşit ya da daha fazla olan tüm çalışanları gösteren bir sorgu var.

select * from salaries where salary >= 50000;

Çıktı (kesilmiş):

+--------+--------+------------+------------+
| emp_no | salary | from_date  | to_date    |
+--------+--------+------------+------------+
|  10001 |  60117 | 1986-06-26 | 1987-06-26 |
|  10001 |  62102 | 1987-06-26 | 1988-06-25 |
|  10001 |  66074 | 1988-06-25 | 1989-06-25 |
|  10001 |  66596 | 1989-06-25 | 1990-06-25 |
|  10001 |  66961 | 1990-06-25 | 1991-06-25 |
(...)

Gördüğünüz gibi, bu yalnızca çalışan numaralarını gösterir. Bir çalışanı hızlı bir şekilde tanımlamaya çalışmak sıkıntı olabilir. Neyse ki, birden çok tablodan veri çekip eşleştirerek çalışan sayılarını çalışan adlarıyla eşleştirebilecek oldukça uzun bir sorgu depolayacak bir görünüm oluşturabiliriz. Sorgu aşağıda gösterilmiştir.

select employees.first_name,employees.last_name,employees.emp_no,salaries.salary,salaries.to_date,salaries.from_date from employees, salaries where employees.emp_no = salaries.emp_no;

Sorgudan nasıl atlandığımı fark ettim >= 50000. Görüşümüz oluşturulduktan sonra bu değeri kullanacağız.

Görünümü oluşturmak create view view_name asiçin sorguya eklememiz yeterlidir . Bu durumda, named_salaries adlı bir görünüm oluşturacağım .

create view named_salaries as select employees.first_name,employees.last_name,employees.emp_no,salaries.salary,salaries.to_date,salaries.from_date from employees, salaries where employees.emp_no = salaries.emp_no;

Bir görünümdeki verileri, tablodaki verileri görüntülediğimiz şekilde görüntüleriz.

select * from named_salaries

Görünüm düzgün bir şekilde oluşturulduysa, aşağıdaki çıktıyı göreceksiniz (veriler kesildi):

+------------+-----------+--------+--------+------------+------------+
| first_name | last_name | emp_no | salary | to_date    | from_date  |
+------------+-----------+--------+--------+------------+------------+
| Georgi     | Facello   |  10001 |  60117 | 1987-06-26 | 1986-06-26 |
| Georgi     | Facello   |  10001 |  62102 | 1988-06-25 | 1987-06-26 |
| Georgi     | Facello   |  10001 |  66074 | 1989-06-25 | 1988-06-25 |
| Georgi     | Facello   |  10001 |  66596 | 1990-06-25 | 1989-06-25 |
| Georgi     | Facello   |  10001 |  66961 | 1991-06-25 | 1990-06-25 |
| Georgi     | Facello   |  10001 |  71046 | 8  1992-06-24 | 1991-06-25 |
(...)

Görünümlerle bir tabloyla etkileşimde bulunabildiğimiz gibi etkileşim kurabildiğimiz için >= 50000, orijinal sorgudan almak ve görünüme uygulamak mümkündür.

select * from named_salaries where salary >= 50000;

Çıktı (kesilmiş):

+------------+-----------+--------+--------+------------+------------+
| first_name | last_name | emp_no | salary | to_date    | from_date  |
+------------+-----------+--------+--------+------------+------------+
| Georgi     | Facello   |  10001 |  60117 | 1987-06-26 | 1986-06-26 |
(...)
| Bezalel    | Simmel    |  10002 |  65828 | 1997-08-03 | 1996-08-03 |
(...)
| Chirstian  | Koblick   |  10004 |  50594 | 1992-11-29 | 1991-11-30 |
(...)
| Kyoichi    | Maliniak  |  10005 |  78228 | 1990-09-12 | 1989-09-12 |
(...)
| Anneke     | Preusig   |  10006 |  53747 | 1998-08-03 | 1997-08-03 |
(...)
+------------+-----------+--------+--------+------------+------------+

Gördüğünüz gibi, sorgu görünümü geleneksel bir tablo gibi ele aldı.

Başka bir örnekte bir görünüm kullanalım. Aşağıda, bölüm yöneticilerini, adlarını / soyadlarını, çalışan numaralarını, bölüm adlarını ve bölüm numaralarını listeleyen oldukça uzun bir sorguya sahibim. Sorgu, birkaç farklı tablodaki verileri bir araya getirir.

select employees.first_name,employees.last_name,employees.emp_no,dept_manager.to_date,dept_manager.from_date,departments.dept_name,departments.dept_no from employees, dept_manager, departments where employees.emp_no = dept_manager.emp_no AND departments.dept_no = dept_manager.dept_no;

Çıktı (kesilmiş):

+-------------+--------------+--------+------------+------------+--------------------+---------+
| first_name  | last_name    | emp_no | to_date    | from_date  | dept_name          | dept_no |
+-------------+--------------+--------+------------+------------+--------------------+---------+
| Tonny       | Butterworth  | 111692 | 1988-10-17 | 1985-01-01 | Customer Service   | d009    |
| Marjo       | Giarratana   | 111784 | 1992-09-08 | 1988-10-17 | Customer Service   | d009    |
| Xiaobin     | Spinelli     | 111877 | 1996-01-03 | 1992-09-08 | Customer Service   | d009    |
| Yuchang     | Weedman      | 111939 | 9999-01-01 | 1996-01-03 | Customer Service   | d009    |
| DeForest    | Hagimont     | 110511 | 1992-04-25 | 1985-01-01 | Development        | d005    |
| Leon        | DasSarma     | 110567 | 9999-01-01 | 1992-04-25 | Development        | d005    |
(...)

Gördüğünüz gibi, departman yöneticilerinin her listesini getirmeniz gerektiğinde bu sorguyu yazmak biraz rahatsız edici olacaktır. Daha kolay hale getirmek için bir görünüm oluşturalım. Görünümü "yönetim" olarak adlandıracağım.

create view management as select employees.first_name,employees.last_name,employees.emp_no,dept_manager.to_date,dept_manager.from_date,departments.dept_name,departments.dept_no from employees, dept_manager, departments where employees.emp_no = dept_manager.emp_no AND departments.dept_no = dept_manager.dept_no;

Şimdi, select * from management;aynı verileri almak için yazabiliriz . Tabii ki, buna geleneksel parametreler gibi ek parametreler de uygulayabiliriz. Örneğin, yalnızca "Müşteri Hizmetleri" bölüm müdürlerini göstermek istediğimizi varsayalım.

select * from management where dept_name = 'Customer Service';

Çıktı:

+------------+-------------+--------+------------+------------+------------------+---------+
| first_name | last_name   | emp_no | to_date    | from_date  | dept_name        | dept_no |
+------------+-------------+--------+------------+------------+------------------+---------+
| Tonny      | Butterworth | 111692 | 1988-10-17 | 1985-01-01 | Customer Service | d009    |
| Marjo      | Giarratana  | 111784 | 1992-09-08 | 1988-10-17 | Customer Service | d009    |
| Xiaobin    | Spinelli    | 111877 | 1996-01-03 | 1992-09-08 | Customer Service | d009    |
| Yuchang    | Weedman     | 111939 | 9999-01-01 | 1996-01-03 | Customer Service | d009    |
+------------+-------------+--------+------------+------------+------------------+---------+

Ya da belki "Müşteri Hizmetleri" ve "İnsan Kaynakları" istiyoruz:

select * from management where dept_name = 'Customer Service' OR dept_name = 'Human Resources';

Çıktı:

+------------+--------------+--------+------------+------------+------------------+---------+
| first_name | last_name    | emp_no | to_date    | from_date  | dept_name        | dept_no |
+------------+--------------+--------+------------+------------+------------------+---------+
| Tonny      | Butterworth  | 111692 | 1988-10-17 | 1985-01-01 | Customer Service | d009    |
| Marjo      | Giarratana   | 111784 | 1992-09-08 | 1988-10-17 | Customer Service | d009    |
| Xiaobin    | Spinelli     | 111877 | 1996-01-03 | 1992-09-08 | Customer Service | d009    |
| Yuchang    | Weedman      | 111939 | 9999-01-01 | 1996-01-03 | Customer Service | d009    |
| Shirish    | Ossenbruggen | 110183 | 1992-03-21 | 1985-01-01 | Human Resources  | d003    |
| Karsten    | Sigstam      | 110228 | 9999-01-01 | 1992-03-21 | Human Resources  | d003    |
+------------+--------------+--------+------------+------------+------------------+---------+

Bir görünümü kaldırma

Bir görünümü silmek çok basittir. Bir tabloyu kaldırmaya benzer şekilde, yazın drop view view_name;. Biz silmek istiyorsa Örneğin, named_salaries görünümü komut şu şekilde olacaktır: drop view named_salaries;.

Yorum bırak

CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin

CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin

CentOS 7 üzerinde LibreNMS kullanarak ağ cihazlarınızı etkili bir şekilde izleyin. Ağ izleme için gerekli adımları ve yapılandırmaları öğrenin.

Counter-Strike: Global Offensive Server Nasıl Kurulur?

Counter-Strike: Global Offensive Server Nasıl Kurulur?

Counter-Strike: Global Offensive sunucusu kurmak için gerekli adımlar. Gerekli araçlar ve yükleme süreci hakkında bilgi.

Ubuntu 16.04 LTS Üzerinde OpenNMS Kurulumu

Ubuntu 16.04 LTS Üzerinde OpenNMS Kurulumu

OpenNMS, çok sayıda cihazı izlemek ve yönetmek için kullanılabilen bir açık kaynak ağ yönetim platformudur. Ubuntu 16.04 LTS üzerinde OpenNMS kurulumu için tüm adımları keşfedin.

Ubuntu 16.04te LibreNMS Kullanarak Cihazlarınızı İzleyin

Ubuntu 16.04te LibreNMS Kullanarak Cihazlarınızı İzleyin

Farklı Bir Sistem mi Kullanıyorsunuz? LibreNMS tam özellikli bir açık kaynak ağ izleme sistemidir.

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.

Hala Teslim Edilmeyen Teknoloji Sözleri

Hala Teslim Edilmeyen Teknoloji Sözleri

Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.