Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL दृश्य कैसे बनाएं और उपयोग करें

MySQL व्यू क्या है?

एक MySQL दृश्य केवल एक साधारण डेटाबेस ऑब्जेक्ट है जो SQL क्वेरी लेखकों को सही तरीके से उपयोग किए जाने पर बहुत समय बचा सकता है। एक दृश्य एक संग्रहीत क्वेरी है जिसे उपयोगकर्ता तालिका की तरह ही संदर्भित कर सकता है। कई बार उपयोगकर्ता कई समस्याओं को हल करने के लिए खुद को एक ही आधार क्वेरी का उपयोग करते हुए पाएंगे। दृश्य उस क्वेरी को तुरंत सहेजने और बाद में उसे संदर्भित करने का एक तरीका है।

दृश्यों का उपयोग करने के क्या लाभ हैं?

दृश्यों के कई फायदे हैं। सबसे पहले, MySQL उपयोगकर्ता को तालिका की तरह ही दृश्य दिखाई देते हैं। सेलेक्ट क्लॉज एक व्यू को ठीक उसी तरह रेफरेंस कर सकता है जैसे कि यह एक टेबल होगा। एक अन्य लाभ यह है कि जब किसी दृश्य द्वारा संदर्भित अंतर्निहित तालिकाएं बदलती हैं, तो दृश्य के परिणाम भी बदल जाते हैं। तीसरा फायदा यह है कि एक दृश्य सर्वर पर बहुत कम जगह लेता है। दृश्य के SQL परिणामों की गणना हर बार एक्सेस किए जाने पर की जाती है, इसलिए वे सर्वर पर तब तक संग्रहीत नहीं होते हैं जब तक कि उन्हें एक्सेस नहीं किया जाता है।

इस अभ्यास के लिए टेबल

इस लेख के लिए, एक डेटाबेस बनाया जाएगा जिसमें एक काल्पनिक कार रेसिंग सीज़न के बारे में जानकारी होगी जिसमें प्रत्येक ट्रैक पर तीन ड्राइवर, चार ट्रैक और एक रेस होगी। इस डेटाबेस में चार टेबल हैं।

  • ड्राइवर
  • ट्रैक
  • दौड़
  • समाप्त    

तालिकाओं के लिए संरचना नीचे दी गई है।

create table drivers
(
  id int auto_increment,
  name varchar(64) not null,
  car_number int not null,
  constraint drivers_pk
     primary key (id)
);
create table tracks
(
  id int auto_increment,
  name varchar(64) not null,
  location varchar(64) not null,
  constraint track_pk
     primary key (id)
);
create table races
(
  id int auto_increment,
  name varchar(64) not null,
  track int not null,
  distance int not null,
  constraint races_pk
     primary key (id)
);


create table finishes
(
  id int auto_increment,
  driver int not null,
  race int not null,
  position int not null,
  constraint finishes_pk
     primary key (id)
);

ड्राइवर

अब, अपने अगले चरण में, हम एक टेबल में तीन ड्राइवर और उनकी कार के नंबर डालेंगे।

  • बडी बेकर 28
  • डेल अर्नहार्ड जूनियर 8
  • रिकी रुड 88
insert into drivers (name,car_number) values
  ('Buddy Baker',28),
  ('Dale Earnhardt Jr.',8),
  ('Ricky Rudd',88);

हमारे परिणाम अब निम्न आउटपुट दिखाएंगे।

ID Name कार नंबर
1 बडी बेकर 28
2 डेल अर्नहार्ड जूनियर. 8
3 Ricky Rudd 88

रेसट्रैक

इसके बाद, हम चार रेसट्रैक और उनका स्थान जोड़ते हैं।

  • तल्लादेगा सुपरस्पीडवे - लिंकन, एएल
  • डेटोना इंटरनेशनल स्पीडवे - डेटोना बीच, FL
  • इंडियानापोलिस मोटर स्पीडवे - स्पीडवे, IN
  • मिशिगन इंटरनेशनल स्पीडवे - ब्रुकलिन, एमआई
insert into tracks (name,location) values
  ('Talladega Superspeedway','Lincoln, AL'),
  ('Daytona International Speedway','Daytona Beach, FL'),
  ('Indianapolis Motor Speedway','Speedway, IN'),
  ('Michigan International Speedway','Brooklyn, MI');

हमारे परिणाम अब निम्न आउटपुट दिखाएंगे।

ID Name Location
1 तल्लादेगा सुपरस्पीडवे लिंकन, AL
2 डेटोना इंटरनेशनल स्पीडवे डेटोना बीच, FL
3 इंडियानापोलिस मोटर स्पीडवे स्पीडवे, IN
4 मिशिगन इंटरनेशनल स्पीडवे ब्रुकलिन, MI

दौड़

अब, चार दौड़, प्रत्येक के लिए दूरी के साथ, दर्ज की जाती हैं।

  • डेटोना 500 ,2,500
  • तल्लादेगा 500,1,500
  • ब्रिकयार्ड 400,3, 400
  • मिशिगन 400,4,400
insert into races (name,track,distance) values
  ('Daytona 500',2,500),
  ('Talladega 500',1,500),
  ('Brickyard 400',3,400),
  ('Michigan 400',4,'400');

हमारे परिणाम अब निम्न आउटपुट दिखाएंगे।

ID Name ट्रैक Distance
1 तल्लादेगा 500 2 500
2 डेटोना 500 1 500
3 ब्रिकयार्ड 400 3 400
4 मिशिगन 400 4 400

परिणाम

अंत में, सीज़न की शुरुआत के लिए तालिकाएँ अब बनाई गई हैं।

डेटोना 500 में पहली रेस में:

  • रिकी रुड पहले स्थान पर रहे
  • डेल अर्नहार्ड जूनियर दूसरे स्थान पर रहे 
  • बडी बेकर तीसरे स्थान पर रहे।
insert into finishes (driver, race, position) values
  (1,1,3),
  (2,1,2),
  (3,1,1);

संकलित डेटा

पहला डेटा इनपुट

अब क्वेरी करने के लिए वास्तविक डेटा है। यदि हम सभी ड्राइवर परिणामों को उनके संबंधित ट्रैक और दौड़ के साथ देखने के लिए एक क्वेरी चलाते हैं, तो यह थोड़ा जटिल है क्योंकि इसमें कई जॉइन हैं।

select d.name as driver,
     r.name as race,
     t.name as track,
     t.location as location,
     f.position as position
  from finishes f
  left join races r
     on f.race = r.id
  left join tracks t
     on r.track = t.id
  left join drivers d
     on d.id = f.driver;

हमारे परिणाम अब निम्न आउटपुट दिखाते हैं।

ड्राइवर रेस ट्रैक Location स्थिति
बडी बेकर डेटोना 500 डेटोना इंटरनेशनल स्पीडवे डेटोना बीच, FL 3
डेल अर्नहार्ड जूनियर डेटोना 500 डेटोना इंटरनेशनल स्पीडवे डेटोना बीच, FL 2
रिकी रुड डेटोना 500 डेटोना इंटरनेशनल स्पीडवे डेटोना बीच, FL 1

दूसरा डेटा इनपुट

दूसरी दौड़ के रूप में, तल्लादेगा 500, डेटा जोड़ा जाता है, क्वेरी को फिर से लिखा जा सकता है, पहले की क्वेरी के समान। इस रेस में डेल अर्नहार्ड्ट पहले और बडी बेकर दूसरे नंबर पर आते हैं।

insert into finishes (driver, race, position) values
  (1,2,2),
  (2,2,1),
  (3,2,3);

उपरोक्त क्वेरी के परिणाम इस तरह दिखाई देंगे।

ड्राइवर रेस ट्रैक Location स्थिति
बडी बेकर डेटोना 500 डेटोना इंटरनेशनल स्पीडवे डेटोना बीच, FL 3
डेल अर्नहार्ड जूनियर डेटोना 500 डेटोना इंटरनेशनल स्पीडवे डेटोना बीच, FL 2
रिकी रुड डेटोना 500 डेटोना इंटरनेशनल स्पीडवे डेटोना बीच, FL 1
बडी बेकर तल्लादेगा 500 तल्लादेगा सुपरस्पीडवे लिंकन, AL 2
डेल अर्नहार्ड्ट, जूनियर तल्लादेगा 500 तल्लादेगा सुपरस्पीडवे लिंकन, AL 1
रिकी रुड तल्लादेगा 500 तल्लादेगा सुपरस्पीडवे लिंकन, AL 3

दृश्य बनाएं

अब जबकि डेटाबेस में कई दौड़ हैं, परिणामों को देखने के नए तरीके हैं। प्रश्न “सर्वश्रेष्ठ फिनिश . के लिए लिखे जा सकते हैं ” और “अधिकांश जीत ।" ये सभी प्रश्न उसी अंतर्निहित डेटा के साथ शुरू होंगे जो प्रत्येक दौड़ की स्थिति में ड्राइवरों ने समाप्त किया था। इन प्रश्नों को विकसित करने की प्रक्रिया को सरल बनाने के लिए, "दृश्य के रूप में बनाएं या बदलें" एक खंड के साथ एक दृश्य बनाया जा सकता है। इस क्लॉज के बाद SQL है जिसे सेव करना है। इस मामले में, इसे पिछली क्वेरी से पहले जोड़ा जाता है जिसे हमने ऊपर दिखाया था।

create or replace view all_finishes as
select d.name as driver,
     r.name as race,
     t.name as track,
     t.location as location,
     f.position as position
  from finishes f
  left join races r
     on f.race = r.id
  left join tracks t
     on r.track = t.id
  left join drivers d
     on d.id = f.driver;

परिणाम SQL की एक शक्तिशाली विशेषता है। यह परिणाम अब कुछ ऐसा है जो एक तालिका की तरह दिखता है, लेकिन किसी भी अंतर्निहित तालिका में नई जानकारी जोड़े जाने पर बदल जाएगा। आइए इस क्वेरी को चलाते हैं।

select * from all_finishes;
ड्राइवर रेस ट्रैक Location स्थिति
बडी बेकर डेटोना 500 डेटोना इंटरनेशनल स्पीडवे डेटोना बीच, FL 3
डेल अर्नहार्ड जूनियर डेटोना 500 डेटोना इंटरनेशनल स्पीडवे डेटोना बीच, FL 2
रिकी रुड डेटोना 500 डेटोना इंटरनेशनल स्पीडवे डेटोना बीच, FL 1
बडी बेकर तल्लादेगा 500 तल्लादेगा सुपरस्पीडवे लिंकन, AL 2
डेल अर्नहार्ड्ट, जूनियर तल्लादेगा 500 तल्लादेगा सुपरस्पीडवे लिंकन, AL 1
रिकी रुड तल्लादेगा 500 तल्लादेगा सुपरस्पीडवे लिंकन, AL 3

पिछली बार जब हमने यह क्वेरी चलाई थी तो परिणाम समान हैं:

अंतर यह है कि अब दृश्य को तालिका की तरह पूछताछ की जा सकती है। एक प्रश्न जो प्रत्येक दौड़ के विजेताओं को दिखाता है।

select * from all_finishes where position = 1;

क्वेरी ये परिणाम प्रदान करती है।

ड्राइवर रेस ट्रैक Location स्थिति
रिकी रुड डेटोना 500 डेटोना इंटरनेशनल स्पीडवे डेटोना बीच, FL 1
डेल अर्नहार्ड्ट, जूनियर तल्लादेगा 500 तल्लादेगा सुपरस्पीडवे लिंकन, AL 1

औसत खत्म के आधार पर नेता को प्रदर्शित करने के लिए एक प्रश्न भी लिखा जा सकता है।

select avg(position) as finish,
  driver
from all_finishes
  group by driver
     order by finish;

जो सीजन के लिए अब तक डेल अर्नहार्ड्ट को मुख्य भूमिका में दिखाता है:

समाप्त driver
1.5 डेल अर्नहार्ड्ट, जूनियर
2.0 Ricky Rudd
2.5 बडी बेकर

चूंकि विचार अन्य विचारों को संदर्भित कर सकते हैं, इन प्रश्नों के साथ अधिक व्यापक विचार बनाए जा सकते हैं।

create view standings_leader as
select avg(position) as finish,
  driver
from all_finishes
  group by driver
     order by finish;

उपरोक्त क्वेरी के परिणाम इस तरह दिखाई देंगे।

समाप्त driver
1.5 डेल अर्नहार्ड्ट, जूनियर
2.0 Ricky Rudd
2.5 बडी बेकर

साथ ही:

create view race_winners as
select * from all_finishes where position = 1;

जो हमें वही परिणाम प्रदान करता है।

ड्राइवर रेस ट्रैक Location स्थिति
रिकी रुड डेटोना 500 डेटोना इंटरनेशनल स्पीडवे डेटोना बीच, FL 1
डेल अर्नहार्ड्ट, जूनियर तल्लादेगा 500 तल्लादेगा सुपरस्पीडवे लिंकन, AL 1

डेटा जोड़ना

विचारों का सबसे शक्तिशाली हिस्सा यह है कि जब हम इन रेस फिनिश जैसे अधिक डेटा जोड़ते हैं, जहां बडी बेकर ब्रिकयार्ड 400 और मिशिगन 400 जीतता है, तो हम समान परिणाम प्राप्त करने के लिए अपने विचारों को क्वेरी कर सकते हैं।

insert into finishes (driver, race, position) values
  (1,3,1),
  (2,3,3),
  (3,3,2);

insert into finishes (driver, race, position) values
  (1,4,1),
  (2,4,2),
  (3,4,3);

अब हम इस क्वेरी के साथ सभी खत्म देख सकते हैं।

select * from all_finishes;\

उपरोक्त क्वेरी के परिणाम इस तरह दिखाई देंगे।

ड्राइवर रेस ट्रैक Location स्थिति
बडी बेकर डेटोना 500 डेटोना इंटरनेशनल स्पीडवे डेटोना बीच, FL 3
डेल अर्नहार्ड जूनियर डेटोना 500 डेटोना इंटरनेशनल स्पीडवे डेटोना बीच, FL 2
रिकी रुड डेटोना 500 डेटोना इंटरनेशनल स्पीडवे डेटोना बीच, FL 1
बडी बेकर तल्लादेगा 500 तल्लादेगा सुपरस्पीडवे लिंकन, AL 2
डेल अर्नहार्ड जूनियर तल्लादेगा 500 तल्लादेगा सुपरस्पीडवे लिंकन, AL 1
रिकी रुड तल्लादेगा 500 तल्लादेगा सुपरस्पीडवे लिंकन, AL 3
बडी बेकर ब्रिकयार्ड 400 इंडियानापोलिस मोटर स्पीडवे स्पीडवे, IN 1
डेल अर्नहार्ड जूनियर ब्रिकयार्ड 400 इंडियानापोलिस मोटर स्पीडवे स्पीडवे, IN 3
रिकी रुड ब्रिकयार्ड 400 इंडियानापोलिस मोटर स्पीडवे स्पीडवे, IN 2
बडी बेकर मिशिगन 400 मिशिगन इंटरनेशनल स्पीडवे ब्रुकलिन, MI 1
डेल अर्नहार्ड जूनियर मिशिगन 400 मिशिगन इंटरनेशनल स्पीडवे ब्रुकलिन, MI 2
रिकी रुड मिशिगन 400 मिशिगन इंटरनेशनल स्पीडवे ब्रुकलिन, MI 3

हम भी दौड़ सकते हैं:

select * from race_winners;

जो हमें देता है:

ड्राइवर रेस ट्रैक Location स्थिति
रिकी रुड डेटोना 500 डेटोना इंटरनेशनल स्पीडवे डेटोना बीच, FL 1
डेल अर्नहार्ड जूनियर तल्लादेगा 500 तल्लादेगा सुपरस्पीडवे लिंकन, AL 1
बडी बेकर ब्रिकयार्ड 400 इंडियानापोलिस मोटर स्पीडवे स्पीडवे, IN 1
बडी बेकर मिशिगन 400 मिशिगन इंटरनेशनल स्पीडवे ब्रुकलिन, MI 1

साथ ही, इसका परिणाम श्रृंखला चैंपियन में होता है:

select * from standings_leader;

जिसके परिणाम:

समाप्त driver
2 बडी बेकर
2 डेल अर्नहार्ड्ट, जूनियर
2 Ricky Rudd

निष्कर्ष

जब हम अपने डेटाबेस सर्वर (अधिक विशेष रूप से डेटाबेस कैटलॉग में) में एक क्वेरी सहेजते हैं और उसे एक नाम देते हैं, तो इस नई नामित क्वेरी को डेटाबेस व्यू, या अधिक सरलता से, एक दृश्य कहा जाता है। MySQL व्यू महत्वपूर्ण और पुन:प्रयोज्य प्रश्नों को सहेजने का एक शक्तिशाली तरीका है जो महत्वपूर्ण जानकारी की पुनर्प्राप्ति को गति देने में हमारी सहायता कर सकता है। चूंकि ये सहेजे गए दृश्य अन्य विचारों को संदर्भित कर सकते हैं, इसलिए इन महत्वपूर्ण प्रश्नों के साथ अधिक विस्तृत दृश्य बनाए जा सकते हैं।

हमें रेट करें!

हम होस्टिंग™ में सबसे मददगार इंसान होने पर गर्व करते हैं!

हमारी सहायता टीम अनुभवी लिनक्स तकनीशियनों और प्रतिभाशाली सिस्टम प्रशासकों से भरी हुई है, जिन्हें कई वेब होस्टिंग तकनीकों का गहन ज्ञान है, विशेष रूप से इस लेख में चर्चा की गई।

यदि इस जानकारी के संबंध में आपके कोई प्रश्न हैं, तो हम इस लेख से संबंधित किसी भी प्रश्न का उत्तर देने के लिए हमेशा उपलब्ध हैं, 24 घंटे एक दिन, सप्ताह में 7 दिन एक वर्ष में 365 दिन।

अगर आप पूरी तरह से प्रबंधित VPS सर्वर, क्लाउड डेडिकेटेड, VMWare प्राइवेट क्लाउड, प्राइवेट पैरेंट सर्वर, मैनेज्ड क्लाउड सर्वर या डेडिकेटेड सर्वर के मालिक हैं और आप बताए गए किसी भी चरण को करने में असहज महसूस करते हैं, तो हम इस प्रक्रिया में आपकी सहायता करने के लिए फोन @800.580.4985, चैट या समर्थन टिकट के माध्यम से संपर्क किया जा सकता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में तारीखों के बीच महीनों का अंतर

  2. किसी भी तालिका के लिए वर्तमान AUTO_INCREMENT मान प्राप्त करें

  3. MySQL प्रदर्शन:MyISAM बनाम InnoDB

  4. PDO में LIKE क्वेरी लागू करें

  5. DAYNAME () उदाहरण – MySQL