استخدام طرق عرض MySQL على دبيان 7

المقدمة

يحتوي MySQL على ميزة رائعة تُعرف باسم "طرق العرض". المشاهدات هي استعلامات مخزنة. اعتبرها اسمًا مستعارًا لاستعلام طويل. في هذا الدليل ، سأوضح لك كيفية استخدام طرق العرض لتنظيم البيانات بشكل أكثر كفاءة.

المتطلبات الأساسية

  • خادم Vultr SSD سحابي محمّل بـ Debian 7.
  • مستخدم لديه امتيازات المسؤول (الجذر).
  • المعرفة الأساسية بلينكس ، سطر الأوامر ، و SSH.

الخطوة الأولى - تثبيت خادم MySQL

تثبيت MySQL على Debian 7.x سهل للغاية. أولاً ، نحتاج إلى التأكد من تحديث مصادرنا من خلال تنفيذ:

sudo apt-get update

بعد ذلك ، يمكننا تثبيت خادم MySQL:

sudo apt-get install -y mysql-server

سيتم عرض مربع حوار يطالبك بإنشاء كلمة مرور للمستخدم "الجذر". تأكد من أنك تتذكر كلمة المرور هذه.

دعونا نصلح أمان التثبيت الخاص بنا من خلال تنفيذ:

sudo mysql_secure_installation

بعد التنفيذ ، ستظهر لك سلسلة من المطالبات. يتم عرض كل الإجابات التي يجب عليك تحديدها أدناه.

...
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...

الخطوة الثانية - تثبيت قاعدة بيانات نموذجية

في هذه المرحلة ، ليس لدينا بيانات على الخادم لتجربتها. في هذا البرنامج التعليمي ، سنستخدم قاعدة بيانات الموظفين لأنه من السهل العمل معها ومتاحة مجانًا من موقع MySQL.

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

نحتاج إلى التثبيت bzip2حتى نتمكن من استخراج الملف.

sudo apt-get install bzip2

استخرج قاعدة البيانات. الملف كبير إلى حد ما ، لذلك قد يستغرق بضع لحظات.

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

بمجرد استخراج الملف ، سيكون لديك مجلد بعنوان employees_db. نحتاج إلى الانتقال إلى هذا الدليل لتثبيت قاعدة البيانات.

cd employees_db 
ls -l

سيبدو الإخراج كما يلي:

-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 وإنشاء قاعدة البيانات واستيراد البيانات:

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

ستظهر مطالبة تطلب كلمة مرور الجذر الخاصة بك. هذه هي كلمة المرور التي قمت بتعيينها في الخطوة الأولى.

نظرًا لأن قاعدة البيانات كبيرة جدًا ، فمن المحتمل أن يستغرق استيراد البيانات بالكامل من 1 إلى 3 دقائق. إذا تم تنفيذ كل شيء بشكل صحيح ، فسترى الناتج التالي.

+-----------------------------+
| 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 |
+------------------+

الآن ، يمكننا تسجيل الدخول إلى MySQL وعرض البيانات المستوردة.

sudo mysql -h localhost -u root -p

أدخل كلمة مرور الجذر التي قمت بتعيينها في القسم السابق.

تحقق من قائمة قواعد البيانات لقاعدة بيانات الموظفين التي تم إنشاؤها حديثًا .

show databases;

سيبدو الإخراج كما يلي:

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

دعونا نستخدم قاعدة بيانات الموظفين .

use employees;

تحقق من الجداول داخله.

show tables;

سيؤدي هذا إلى إخراج:

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

الخطوة الثالثة - إنشاء طرق العرض واستخدامها وإزالتها

في هذه الخطوة ، ستتعلم كيفية إنشاء طرق العرض واستخدامها. لقد قسمت هذه الخطوة إلى أقسام أصغر لمطابقة البيانات وجمع البيانات للمؤسسة. حان الوقت لبدء التفاعل مع بيانات الاختبار الخاصة بنا.

دمج / مطابقة البيانات

أدناه ، لدي استفسار يعرض جميع الموظفين الذين لديهم راتب سنوي يساوي أو يزيد عن 50000 دولار.

select * from salaries where salary >= 50000;

الإخراج (مبتور):

+--------+--------+------------+------------+
| 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 |
(...)

كما ترى ، يعرض هذا فقط أرقام الموظفين. قد يكون مصدر إزعاج عند محاولة التعرف على موظف بسرعة. لحسن الحظ ، يمكننا إنشاء طريقة عرض ستخزن استعلامًا طويلًا إلى حد ما يمكنه مطابقة أرقام الموظفين بأسماء الموظفين عن طريق سحب البيانات ومطابقتها من جداول متعددة. الاستعلام مبين أدناه.

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;

لاحظ كيف حذفت >= 50000من الاستعلام. سنستخدم هذه القيمة بعد إنشاء وجهة نظرنا.

لإنشاء العرض ، نقوم ببساطة بإلحاق create view view_name asالاستعلام. في هذه الحالة ، سوف أقوم بإنشاء طريقة عرض تسمى المسماة_الرواتب .

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;

نحن نعرض البيانات من طريقة عرض بنفس الطريقة التي نعرض بها البيانات من جدول.

select * from named_salaries

إذا تم إنشاء العرض بشكل صحيح ، فسترى الناتج التالي (تم اقتطاع البيانات):

+------------+-----------+--------+--------+------------+------------+
| 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 |
(...)

نظرًا لأنه يمكننا التفاعل مع طرق العرض بنفس الطريقة التي يمكننا التفاعل بها مع الجدول ، فمن الممكن أن نأخذ >= 50000من الاستعلام الأصلي ونطبقه على طريقة العرض.

select * from named_salaries where salary >= 50000;

الإخراج (مبتور):

+------------+-----------+--------+--------+------------+------------+
| 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 |
(...)
+------------+-----------+--------+--------+------------+------------+

كما ترى ، تعامل الاستعلام مع العرض تمامًا مثل جدول تقليدي.

دعنا نستخدم طريقة عرض في مثال آخر. أدناه ، لدي استعلام مطول إلى حد ما يسرد مدراء الأقسام وأسماءهم الأولى / الأخيرة وأرقام الموظفين وأسماء الأقسام وأرقام الأقسام. يقوم الاستعلام بتجميع البيانات من عدة جداول مختلفة.

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;

الإخراج (مبتور):

+-------------+--------------+--------+------------+------------+--------------------+---------+
| 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    |
(...)

كما ترى ، سيكون من غير المناسب إلى حد ما كتابة هذا الاستعلام في كل مرة تحتاج فيها إلى جلب قائمة بمديري الأقسام. لنقم بإنشاء طريقة عرض لتسهيل الأمر. سأدعو وجهة النظر "الإدارة".

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;

الآن ، يمكننا ببساطة الكتابة select * from management;لاسترداد نفس البيانات. بالطبع ، يمكننا أيضًا تطبيق معلمات إضافية على ذلك - تمامًا مثل الجدول التقليدي. على سبيل المثال ، لنفترض أننا أردنا فقط عرض مديري الأقسام لـ "خدمة العملاء".

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

انتاج:

+------------+-------------+--------+------------+------------+------------------+---------+
| 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    |
+------------+-------------+--------+------------+------------+------------------+---------+

أو ربما نريد "خدمة العملاء" و "الموارد البشرية":

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

انتاج:

+------------+--------------+--------+------------+------------+------------------+---------+
| 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    |
+------------+--------------+--------+------------+------------+------------------+---------+

إزالة منظر

يعد حذف طريقة عرض أمرًا بسيطًا للغاية. على غرار إزالة جدول ، يمكنك الكتابة drop view view_name;. على سبيل المثال، إذا أردنا أن حذف named_salaries الرأي، فإن الأمر على النحو التالي: drop view named_salaries;.



Leave a Comment

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

6 أشياء شديدة الجنون حول نينتندو سويتش

6 أشياء شديدة الجنون حول نينتندو سويتش

يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.

وظائف طبقات معمارية مرجعية للبيانات الضخمة

وظائف طبقات معمارية مرجعية للبيانات الضخمة

اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد