मारियाडीबी - त्वरित गाइड

एक डेटाबेस एप्लिकेशन मुख्य एप्लिकेशन से अलग मौजूद है और डेटा संग्रह संग्रहीत करता है। प्रत्येक डेटाबेस में उस डेटा के निर्माण, पहुंच, प्रबंधन, खोज और प्रतिकृति के लिए एक या एक से अधिक एपीआई कार्यरत होते हैं।

डेटाबेस गैर-संबंधपरक डेटा स्रोतों जैसे ऑब्जेक्ट या फ़ाइलों का भी उपयोग करते हैं। हालांकि, डेटाबेस बड़े डेटासेट के लिए सबसे अच्छा विकल्प साबित होता है, जो धीमे पुनर्प्राप्ति और अन्य डेटा स्रोतों के साथ लिखने से पीड़ित होगा।

रिलेशनल डेटाबेस मैनेजमेंट सिस्टम, या RDBMS, विभिन्न तालिकाओं में डेटा संग्रहीत करते हैं। इन तालिकाओं के बीच वर्गीकरण प्राथमिक कुंजियों और विदेशी कुंजियों का उपयोग करके स्थापित किए जाते हैं।

RDBMS निम्नलिखित सुविधाएँ प्रदान करता है -

  • वे आपको तालिकाओं, स्तंभों और सूचकांकों के साथ डेटा स्रोत लागू करने में सक्षम बनाते हैं।

  • वे कई तालिकाओं की पंक्तियों में संदर्भों की अखंडता सुनिश्चित करते हैं।

  • वे स्वचालित रूप से सूचकांक अपडेट करते हैं।

  • वे तालिकाओं से डेटा में हेरफेर या सोर्सिंग में SQL प्रश्नों और संचालन की व्याख्या करते हैं।

RDBMS शब्दावली

मारियाडीबी की चर्चा शुरू करने से पहले, डेटाबेस से संबंधित कुछ शर्तों की समीक्षा करते हैं।

  • Database - एक डेटाबेस एक डेटा स्रोत है जिसमें संबंधित डेटा रखने वाले टेबल होते हैं।

  • Table - एक तालिका, जिसका अर्थ है एक स्प्रेडशीट, एक मैट्रिक्स है जिसमें डेटा होता है।

  • Column- एक स्तंभ, जिसका अर्थ है डेटा तत्व, एक संरचना है जो एक प्रकार का डेटा रखती है; उदाहरण के लिए, शिपिंग दिनांक।

  • Row- एक पंक्ति एक संरचना समूह से संबंधित डेटा है; उदाहरण के लिए, एक ग्राहक के लिए डेटा। इसे टपल, एंट्री या रिकॉर्ड के रूप में भी जाना जाता है।

  • Redundancy - यह शब्द सिस्टम को गति देने के लिए डेटा को दो बार संग्रहीत करने के लिए संदर्भित करता है।

  • Primary Key- यह एक विशिष्ट, पहचान मूल्य को संदर्भित करता है। यह मान किसी तालिका में दो बार दिखाई नहीं दे सकता है, और इसके साथ केवल एक पंक्ति जुड़ी हुई है।

  • Foreign Key - एक विदेशी कुंजी दो तालिकाओं के बीच एक कड़ी के रूप में कार्य करती है।

  • Compound Key- एक यौगिक कुंजी, या समग्र कुंजी, एक कुंजी है जो कई स्तंभों को संदर्भित करती है। यह एक अद्वितीय गुणवत्ता की कमी वाले स्तंभ के कारण कई स्तंभों को संदर्भित करता है।

  • Index - एक सूचकांक लगभग एक पुस्तक के सूचकांक के समान है।

  • Referential Integrity - यह शब्द मौजूदा पंक्तियों के लिए सभी विदेशी प्रमुख मूल्यों को सुनिश्चित करने को संदर्भित करता है।

मारियाडीबी डेटाबेस

MariaDB MySQL के मूल डेवलपर्स द्वारा बनाया गया MySQL का एक लोकप्रिय कांटा है। यह Oracle द्वारा MySQL के अधिग्रहण से संबंधित चिंताओं से बाहर निकला। यह छोटे डेटा प्रोसेसिंग कार्यों और उद्यम की जरूरतों के लिए समर्थन प्रदान करता है। इसका उद्देश्य MySQL के लिए एक ड्रॉप-इन रिप्लेसमेंट होना है जिसमें केवल MySQL के एक साधारण अनइंस्टॉल की आवश्यकता होती है और MariaDB की एक स्थापना। MariaDB MySQL की समान सुविधाएँ और बहुत कुछ प्रदान करता है।

मारियाडीबी की प्रमुख विशेषताएं

मारियाडीबी की महत्वपूर्ण विशेषताएं हैं -

  • मारबीडीबी के सभी जीपीएल, एलजीपीएल या बीएसडी के अधीन हैं।

  • मारडीडीबी में अन्य RDBMS डेटा स्रोतों के साथ काम करने के लिए उच्च प्रदर्शन भंडारण इंजन सहित भंडारण इंजनों की एक विस्तृत चयन शामिल है।

  • MariaDB मानक और लोकप्रिय क्वेरी भाषा का उपयोग करता है।

  • MariaDB कई ऑपरेटिंग सिस्टम पर चलती है और विभिन्न प्रकार की प्रोग्रामिंग भाषाओं का समर्थन करती है।

  • मारियाबडी सबसे लोकप्रिय वेब विकास भाषाओं में से एक PHP के लिए समर्थन प्रदान करता है।

  • मारियाडीबी गैलेरा क्लस्टर तकनीक प्रदान करता है।

  • MariaDB भी MySQL में कई ऑपरेशन और कमांड उपलब्ध नहीं है, और प्रदर्शन को नकारात्मक रूप से प्रभावित करने वाली सुविधाओं को समाप्त / बदल देता है।

शुरू करना

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

यह मार्गदर्शिका एक PHP वातावरण में MariaDB के उपयोग पर केंद्रित है, इसलिए हमारे उदाहरण PHP डेवलपर्स के लिए सबसे उपयोगी होंगे।

यदि आपमें परिचितता की कमी है या समीक्षा करने की आवश्यकता है तो हम दृढ़ता से हमारे PHP ट्यूटोरियल की समीक्षा करने की सलाह देते हैं।

MariaDB के सभी डाउनलोड आधिकारिक MariaDB नींव वेबसाइट के डाउनलोड अनुभाग में स्थित हैं । उस संस्करण के लिंक पर क्लिक करें जिसे आप चाहते हैं, और कई ऑपरेटिंग सिस्टम, आर्किटेक्चर और इंस्टॉलेशन फ़ाइल प्रकारों के डाउनलोड की सूची प्रदर्शित की गई है।

LINUX / UNIX पर इंस्टॉल हो रहा है

यदि आपके पास लिनक्स / यूनिक्स प्रणालियों का अंतरंग ज्ञान है, तो अपने इंस्टॉल को बनाने के लिए स्रोत डाउनलोड करें। स्थापित करने का हमारा अनुशंसित तरीका वितरण पैकेजों का उपयोग करना है। MariaDB निम्नलिखित लिनक्स / यूनिक्स वितरण के लिए पैकेज प्रदान करता है -

  • RedHat/CentOS/Fedora
  • Debian/Ubuntu

निम्न वितरणों में उनके भंडार में मारियाडीबी पैकेज शामिल है -

  • openSUSE
  • आर्क लिनक्स
  • Mageia
  • Mint
  • Slackware

एक Ubuntu वातावरण में स्थापित करने के लिए इन चरणों का पालन करें -

Step 1 - रूट यूजर के रूप में लॉगइन करें।

Step 2 - MariaDB पैकेज वाली निर्देशिका पर नेविगेट करें।

Step 3 - निम्नलिखित कोड के साथ GnuPG हस्ताक्षर कुंजी आयात करें -

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db

Step 4 - में MariaDB जोड़ें sources.listफ़ाइल। फ़ाइल खोलें, और निम्न कोड जोड़ें -

sudo add-apt-repository 'deb http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntuprecise main'

Step 5 - निम्नलिखित के साथ सिस्टम को रिफ्रेश करें -

sudo apt-get update

Step 6 - निम्नलिखित के साथ MariaDB स्थापित करें -

sudo apt-get install mariadb-server

विंडोज पर इंस्टॉल करना

स्वचालित इंस्टॉल फ़ाइल (MSI) का पता लगाने और डाउनलोड करने के बाद, इंस्टॉलेशन शुरू करने के लिए फ़ाइल पर डबल क्लिक करें। इंस्टॉलेशन विज़ार्ड आपको स्थापना के हर चरण और किसी भी आवश्यक सेटिंग्स के माध्यम से चलेगा।

कमांड प्रॉम्प्ट से इसे शुरू करके इंस्टॉलेशन का परीक्षण करें। स्थापना के स्थान पर नेविगेट करें, आमतौर पर निर्देशिका में, और प्रॉम्प्ट पर निम्नलिखित टाइप करें -

mysqld.exe --console

यदि स्थापना सफल होती है, तो आपको स्टार्टअप से संबंधित संदेश दिखाई देंगे। यदि यह प्रकट नहीं होता है, तो आपके पास अनुमति के मुद्दे हो सकते हैं। सुनिश्चित करें कि आपका उपयोगकर्ता खाता एप्लिकेशन एक्सेस कर सकता है। विंडोज वातावरण में मारियाबीडी प्रशासन के लिए ग्राफिकल क्लाइंट उपलब्ध हैं। यदि आपको कमांड लाइन असहज या बोझिल लगती है, तो उनके साथ प्रयोग करना सुनिश्चित करें।

स्थापना का परीक्षण

MariaDB के कामकाज और स्थापना की पुष्टि करने के लिए कुछ सरल कार्य करें।

Use the Admin Utility to Get Server Status

सर्वर संस्करण को mysqladmin बाइनरी के साथ देखें।

[root@host]# mysqladmin --version

यह संस्करण, वितरण, ऑपरेटिंग सिस्टम और आर्किटेक्चर को प्रदर्शित करना चाहिए। यदि आप उस प्रकार का आउटपुट नहीं देखते हैं, तो मुद्दों के लिए अपनी स्थापना की जांच करें।

Execute Simple Commands with a Client

मारियाडीबी के लिए कमांड प्रॉम्प्ट लाओ। यह आपको MariaDB से कनेक्ट करना चाहिए और आदेशों के निष्पादन की अनुमति देना चाहिए। एक साधारण कमांड निम्नानुसार दर्ज करें -

mysql> SHOW DATABASES;

स्थापना के बाद

MariaDB की सफल स्थापना के बाद, रूट पासवर्ड सेट करें। एक ताजा इंस्टॉल में एक खाली पासवर्ड होगा। नया पासवर्ड सेट करने के लिए निम्नलिखित दर्ज करें -

mysqladmin -u root password "[enter your password here]";

अपने नए क्रेडेंशियल्स के साथ सर्वर से कनेक्ट करने के लिए निम्नलिखित दर्ज करें -

mysql -u root -p
Enter password:*******

विंडोज पर अपग्रेड करना

यदि आपके पास पहले से ही MySQL आपके विंडोज सिस्टम पर स्थापित है, और मारियाडीबी में अपग्रेड करना चाहते हैं; MySQL की स्थापना रद्द न करें और MariaDB स्थापित करें। यह मौजूदा डेटाबेस के साथ संघर्ष का कारण बनेगा। आपको इसके बजाय MariaDB स्थापित करना होगा, और फिर Windows स्थापना फ़ाइल में अपग्रेड विज़ार्ड का उपयोग करना होगा।

आपके MySQL my.cnf फ़ाइल के विकल्प को MariaDB के साथ काम करना चाहिए। हालांकि, MariaDB में कई विशेषताएं हैं, जो MySQL में नहीं पाई जाती हैं।

अपनी my.cnf फ़ाइल में निम्नलिखित संघर्षों पर विचार करें -

  • MariaDB अस्थायी फ़ाइलों के लिए डिफ़ॉल्ट रूप से Aria संग्रहण इंजन का उपयोग करता है। यदि आपके पास बहुत सी अस्थायी फ़ाइलें हैं, तो यदि आप MyISAM तालिकाओं का उपयोग नहीं करते हैं, तो कुंजी बफ़र आकार को संशोधित करें।

  • यदि आपके एप्लिकेशन अक्सर कनेक्ट / डिस्कनेक्ट होते हैं, तो थ्रेड कैश आकार बदल दें।

  • यदि आप 100 से अधिक कनेक्शन का उपयोग करते हैं, तो थ्रेड पूल का उपयोग करें।

अनुकूलता

MySQL और MariaDB अनिवार्य रूप से समान हैं। हालांकि, उन्नयन में मुद्दों को बनाने के लिए पर्याप्त अंतर हैं। मारियाबेड नॉलेज बेस में इन प्रमुख अंतरों की अधिक समीक्षा करें ।

मारियाडीबी को चलाने का प्रयास करने से पहले, पहले इसकी वर्तमान स्थिति का निर्धारण करें, रनिंग या शटडाउन। मारियाडीबी शुरू करने और रोकने के लिए तीन विकल्प हैं -

  • Mysqld (MariaDB बाइनरी) चलाएँ।
  • Mysqld_safe स्टार्टअप स्क्रिप्ट चलाएँ।
  • Mysql.server स्टार्टअप स्क्रिप्ट चलाएँ।

यदि आपने एक गैर-मानक स्थान में MariaDB स्थापित किया है, तो आपको स्क्रिप्ट फ़ाइलों में स्थान की जानकारी संपादित करनी पड़ सकती है। बस स्क्रिप्ट के साथ एक "स्टॉप" पैरामीटर जोड़कर MariaDB बंद करो।

यदि आप इसे लिनक्स के तहत स्वचालित रूप से शुरू करना चाहते हैं, तो अपने साथ स्टार्टअप स्क्रिप्ट जोड़ें initप्रणाली। प्रत्येक वितरण की एक अलग प्रक्रिया होती है। अपने सिस्टम प्रलेखन का संदर्भ लें।

एक उपयोगकर्ता खाता बनाना

निम्नलिखित कोड के साथ एक नया उपयोगकर्ता खाता बनाएँ -

CREATE USER 'newusername'@'localhost' IDENTIFIED BY 'userpassword';

यह कोड बिना किसी विशेषाधिकार के उपयोगकर्ता तालिका में एक पंक्ति जोड़ता है। आपके पास पासवर्ड के लिए हैश मान का उपयोग करने का विकल्प भी है। निम्नलिखित कोड के साथ उपयोगकर्ता विशेषाधिकार प्रदान करें -

GRANT SELECT, INSERT, UPDATE, DELETE ON database1 TO 'newusername'@'localhost';

अन्य विशेषाधिकारों में मारियाडीबी में हर संभव कमांड या ऑपरेशन शामिल है। एक उपयोगकर्ता बनाने के बाद, अनुदान तालिका को रीफ्रेश करने के लिए एक "FLUSH PRIVILEGES" कमांड निष्पादित करें। यह उपयोगकर्ता खाते का उपयोग करने की अनुमति देता है।

कॉन्फ़िगरेशन फ़ाइल

यूनिक्स / लिनक्स पर एक निर्माण के बाद, विन्यास फाइल "/etc/mysql/my.cnf" का पालन करने के लिए संपादित किया जाना चाहिए -

# Example mysql config file.
# You can copy this to one of:
# /etc/my.cnf to set global options,
# /mysql-data-dir/my.cnf to get server specific options or
# ~/my.cnf for user specific options.

#

# One can use all long options that the program supports.
# Run the program with --help to get a list of available options

# This will be passed to all mysql clients
[client]
#password = my_password
#port = 3306
#socket = /tmp/mysql.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# The MySQL server
[mysqld]
#port = 3306
#socket = /tmp/mysql.sock
temp-pool

# The following three entries caused mysqld 10.0.1-MariaDB (and possibly other
   versions) to abort...
# skip-locking
# set-variable = key_buffer = 16M
# set-variable = thread_cache = 4

loose-innodb_data_file_path = ibdata1:1000M
loose-mutex-deadlock-detector
gdb

######### Fix the two following paths

# Where you want to have your database
data = /path/to/data/dir

# Where you have your mysql/MariaDB source + sql/share/english
language = /path/to/src/dir/sql/share/english

[mysqldump]
quick
MariaDB
8
set-variable = max_allowed_packet=16M
[mysql]
no-auto-rehash

[myisamchk]
set-variable = key_buffer = 128M

अपने परिवेश से मेल खाने के लिए पंक्तियों "डेटा =" और "भाषा =" को संपादित करें।

फ़ाइल संशोधन के बाद, स्रोत निर्देशिका में नेविगेट करें और निम्नलिखित निष्पादित करें -

./scripts/mysql_install_db --srcdir = $PWD --datadir = /path/to/data/dir -- user = $LOGNAME

"स्वीकार करें"$PWD” variable if you added datadir to the configuration file. Ensure “$मारियाडीबी के संस्करण 10.0.1 को चलाते समय LOGNAME ”का उपयोग किया जाता है।

प्रशासन कमांड करता है

मारियाडीबी के साथ काम करते समय आप नियमित रूप से उपयोग करने वाले महत्वपूर्ण आदेशों की सूची की समीक्षा करेंगे -

  • USE [database name] - वर्तमान डिफ़ॉल्ट डेटाबेस सेट करता है।

  • SHOW DATABASES - वर्तमान में सर्वर पर डेटाबेस सूचीबद्ध करता है।

  • SHOW TABLES - सभी गैर-अस्थायी तालिकाओं को सूचीबद्ध करता है।

  • SHOW COLUMNS FROM [table name] - निर्दिष्ट तालिका से संबंधित स्तंभ जानकारी प्रदान करता है।

  • SHOW INDEX FROM TABLENAME [table name] - निर्दिष्ट तालिका से संबंधित तालिका सूचकांक जानकारी प्रदान करता है।

  • SHOW TABLE STATUS LIKE [table name]\G – - गैर-अस्थायी तालिकाओं के बारे में जानकारी के साथ तालिकाओं को प्रदान करता है, और LIKE क्लॉज के बाद दिखाई देने वाले पैटर्न का उपयोग तालिका नामों को लाने के लिए किया जाता है।

PHP, C #, जावास्क्रिप्ट, रूबी ऑन रेल्स, Django, और अधिक जैसे प्रोग्रामिंग भाषाओं और चौखटों की एक विस्तृत विविधता के साथ MariaDB अच्छी तरह से भागीदार है। PHP अपनी सरलता और ऐतिहासिक पदचिह्न के कारण सभी उपलब्ध भाषाओं में सबसे लोकप्रिय है। यह मार्गदर्शिका PHP पर ध्यान केंद्रित करेगी जिसमें MariaDB के साथ भागीदारी की गई है।

PHP MySQL डेटाबेस के साथ काम करने के लिए कार्यों का चयन प्रदान करता है। ये फ़ंक्शन इसे एक्सेस करने या संचालन करने जैसे कार्य करते हैं, और वे MariaDB के साथ पूरी तरह से संगत हैं। जैसे ही आप किसी अन्य PHP फ़ंक्शन को कॉल करेंगे इन कार्यों को कॉल करें।

मारियाडीबी के लिए आप जिन PHP कार्यों का उपयोग करेंगे, वे निम्नलिखित प्रारूप के अनुरूप होंगे -

mysql_function(value,value,...);

फ़ंक्शन का दूसरा भाग इसकी कार्रवाई को निर्दिष्ट करता है। इस गाइड में उपयोग किए जाने वाले दो कार्य इस प्रकार हैं -

mysqli_connect($connect); mysqli_query($connect,"SQL statement");

निम्न उदाहरण मारियाडीबी फ़ंक्शन के लिए PHP कॉल के सामान्य सिंटैक्स को प्रदर्शित करता है -

<html>
   <head>
      <title>PHP and MariaDB</title>
   </head>

   <body>
      <?php
         $retval = mysql_function(value, [value,...]); if( !$retval ) {
            die ( "Error: Error message here" );
         }
         // MariaDB or PHP Statements
      ?>
   </body>
</html>

अगले अनुभाग में, हम पीएचपी कार्यों का उपयोग करते हुए आवश्यक MariaDB कार्यों की जांच करेंगे।

MariaDB के साथ संबंध स्थापित करने का एक तरीका कमांड प्रॉम्प्ट पर mysql बाइनरी का उपयोग करना है।

MYSQL बाइनरी

नीचे दिए गए एक उदाहरण की समीक्षा करें।

[root@host]# mysql -u root -p

Enter password:******

ऊपर दिया गया कोड MariaDB से जुड़ता है और SQL कमांड को निष्पादित करने के लिए कमांड प्रॉम्प्ट प्रदान करता है। कोड दर्ज करने के बाद, एक स्वागत योग्य संदेश एक सफल कनेक्शन का संकेत देता है, जिसमें संस्करण संख्या प्रदर्शित होती है।

Welcome to the MariaDB monitor. Commands end with ; or \g. 
Your MariaDB connection id is 122323232 
Server version: 5.5.40-MariaDB-log
  
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
mysql>

उदाहरण रूट एक्सेस का उपयोग करता है, लेकिन विशेषाधिकारों के साथ कोई भी उपयोगकर्ता निश्चित रूप से MariaDB प्रांप्ट तक पहुंच सकता है और संचालन कर सकता है।

के माध्यम से MariaDB से डिस्कनेक्ट करें exit आदेश निम्नानुसार है -

mysql> exit

PHP कनेक्शन स्क्रिप्ट

मारियाबीडी से कनेक्ट और डिस्कनेक्ट करने का एक अन्य तरीका एक PHP स्क्रिप्ट को नियोजित करना है। PHP प्रदान करता हैmysql_connect()डेटाबेस कनेक्शन खोलने का कार्य। यह पांच वैकल्पिक मापदंडों का उपयोग करता है, और एक सफल कनेक्शन, या असफल कनेक्शन पर एक गलत होने के बाद एक MariaDB लिंक पहचानकर्ता देता है। यह भी प्रदान करता हैmysql_close() डेटाबेस कनेक्शन बंद करने के लिए कार्य करता है, जो एकल पैरामीटर का उपयोग करता है।

वाक्य - विन्यास

निम्नलिखित PHP कनेक्शन स्क्रिप्ट सिंटैक्स की समीक्षा करें -

connection mysql_connect(server,user,passwd,new_link,client_flag);

मापदंडों का विवरण नीचे दिया गया है -

अनु क्रमांक पैरामीटर और विवरण
1

server

यह वैकल्पिक पैरामीटर डेटाबेस सर्वर को चलाने वाले होस्ट नाम को निर्दिष्ट करता है। इसका डिफ़ॉल्ट मान "स्थानीय होस्ट: .3036" है।

2

user

यह वैकल्पिक पैरामीटर डेटाबेस तक पहुँचने वाले उपयोगकर्ता नाम को निर्दिष्ट करता है। इसका डिफ़ॉल्ट मान सर्वर का स्वामी है।

3

passwd

यह वैकल्पिक पैरामीटर उपयोगकर्ता के पासवर्ड को निर्दिष्ट करता है। इसका डिफ़ॉल्ट मान रिक्त है।

4

new_link

यह वैकल्पिक पैरामीटर निर्दिष्ट करता है कि दूसरी कॉल पर mysql_connect() एक नए कनेक्शन के बजाय समान तर्कों के साथ, वर्तमान कनेक्शन के पहचानकर्ता को वापस कर दिया जाएगा।

5

client flags

यह वैकल्पिक पैरामीटर निम्नलिखित स्थिर मूल्यों के संयोजन का उपयोग करता है -

  • MYSQL_CLIENT_SSL - यह ssl एन्क्रिप्शन का उपयोग करता है।

  • MYSQL_CLIENT_COMPRESS - यह संपीड़न प्रोटोकॉल का उपयोग करता है।

  • MYSQL_CLIENT_IGNORE_SPACE - यह फ़ंक्शन नामों के बाद स्थान की अनुमति देता है।

  • MYSQL_CLIENT_INTERACTIVE - यह कनेक्शन को बंद करने से पहले निष्क्रियता के इंटरैक्टिव टाइमआउट सेकंड की अनुमति देता है।

नीचे दिए गए PHP वियोग लिपि सिंटैक्स की समीक्षा करें -

bool mysql_close ( resource $link_identifier );

यदि आप संसाधन को छोड़ देते हैं, तो हाल ही में खोला गया संसाधन बंद हो जाएगा। यह एक सफल करीबी, या असत्य पर सही का मान लौटाता है।

मारियाडीबी सर्वर से जुड़ने के लिए निम्न उदाहरण कोड का प्रयास करें -

<html>
   <head>
      <title>Connect to MariaDB Server</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'guest1'; $dbpass = 'guest1a';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      
         if(! $conn ) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_close($conn);
      ?>
   </body>
</html>

सफल कनेक्शन पर, आप निम्न आउटपुट देखेंगे -

mysql> Connected successfully

मारियाडीबी में डेटाबेस के निर्माण या विलोपन के लिए विशेष रूप से केवल मूल उपयोगकर्ताओं या व्यवस्थापक को दिए गए विशेषाधिकारों की आवश्यकता होती है। इन खातों के तहत, आपके पास डेटाबेस बनाने के लिए दो विकल्प हैं - mysqladmin बाइनरी और एक PHP स्क्रिप्ट।

mysqladmin बाइनरी

निम्न उदाहरण नाम के साथ एक डेटाबेस बनाने में mysqladmin बाइनरी के उपयोग को दर्शाता है Products -

[root@host]# mysqladmin -u root -p create PRODUCTS
Enter password:******

PHP डेटाबेस स्क्रिप्ट बनाएँ

PHP रोजगार देता है mysql_queryमारियाडीबी डेटाबेस बनाने में कार्य करता है। फ़ंक्शन दो मापदंडों का उपयोग करता है, एक वैकल्पिक, और सफल होने पर या तो "सही" का मान लौटाता है, या नहीं।

वाक्य - विन्यास

निम्नलिखित की समीक्षा करें create database script वाक्य रचना -

bool mysql_query( sql, connection );

मापदंडों का विवरण नीचे दिया गया है -

S.No पैरामीटर और विवरण
1

sql

इस आवश्यक पैरामीटर में ऑपरेशन करने के लिए आवश्यक SQL क्वेरी शामिल है।

2

connection

जब निर्दिष्ट नहीं किया जाता है, तो यह वैकल्पिक पैरामीटर उपयोग किए गए सबसे हाल के कनेक्शन का उपयोग करता है।

डेटाबेस बनाने के लिए निम्न उदाहरण कोड का प्रयास करें -

<html>
   <head>
      <title>Create a MariaDB Database</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036'; $dbuser = 'root';
         $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }

         echo 'Connected successfully<br />';
         $sql = 'CREATE DATABASE PRODUCTS'; $retval = mysql_query( $sql, $conn );
      
         if(! $retval ) { die('Could not create database: ' . mysql_error()); } echo "Database PRODUCTS created successfully\n"; mysql_close($conn);
      ?>
   </body>
</html>

सफल विलोपन पर, आप निम्न आउटपुट देखेंगे -

mysql> Database PRODUCTS created successfully 
mysql> SHOW DATABASES; 
+-----------------------+ 
| Database              | 
+-----------------------+ 
| PRODUCTS              | 
+-----------------------+

मारियाडीबी में डेटाबेस के निर्माण या विलोपन के लिए विशेष रूप से मूल उपयोगकर्ताओं या व्यवस्थापक को दिए गए विशेषाधिकारों की आवश्यकता होती है। इन खातों के तहत, आपके पास डेटाबेस को हटाने के लिए दो विकल्प हैं: mysqladmin बाइनरी और एक PHP स्क्रिप्ट।

ध्यान दें कि हटाए गए डेटाबेस अपरिवर्तनीय हैं, इसलिए इस ऑपरेशन को करने में सावधानी बरतें। इसके अलावा, हटाने के लिए इस्तेमाल की जाने वाली PHP स्क्रिप्टnot हटाने से पहले एक पुष्टिकरण के साथ आपको संकेत दें।

mysqladmin बाइनरी

निम्न उदाहरण दर्शाता है कि मौजूदा डेटाबेस को हटाने के लिए mysqladmin बाइनरी का उपयोग कैसे करें -

[root@host]# mysqladmin -u root -p drop PRODUCTS
Enter password:******
mysql> DROP PRODUCTS
ERROR 1008 (HY000): Can't drop database 'PRODUCTS'; database doesn't exist

PHP ड्रॉप डाटाबेस स्क्रिप्ट

PHP रोजगार देता है mysql_queryमारियाडीबी डेटाबेस हटाने में कार्य करता है। फ़ंक्शन दो मापदंडों का उपयोग करता है, एक वैकल्पिक, और सफल होने पर या तो "सही" का मान लौटाता है, या नहीं।

वाक्य - विन्यास

निम्नलिखित ड्रॉप डेटाबेस स्क्रिप्ट सिंटैक्स की समीक्षा करें -

bool mysql_query( sql, connection );

मापदंडों का विवरण नीचे दिया गया है -

अनु क्रमांक पैरामीटर और विवरण
1

sql

इस आवश्यक पैरामीटर में ऑपरेशन करने के लिए आवश्यक SQL क्वेरी शामिल है।

2

connection

जब निर्दिष्ट नहीं किया जाता है, तो यह वैकल्पिक पैरामीटर उपयोग किए गए सबसे हाल के कनेक्शन का उपयोग करता है।

डेटाबेस हटाने के लिए निम्न उदाहरण कोड का प्रयास करें -

<html>
   <head>
      <title>Delete a MariaDB Database</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036'; $dbuser = 'root';
         $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }
         echo 'Connected successfully<br />';
         
         $sql = 'DROP DATABASE PRODUCTS'; $retval = mysql_query( $sql, $conn );
         
         if(! $retval ){ die('Could not delete database: ' . mysql_error()); } echo "Database PRODUCTS deleted successfully\n"; mysql_close($conn);
      ?>
   </body>
</html>

सफल विलोपन पर, आप निम्न आउटपुट देखेंगे -

mysql> Database PRODUCTS deleted successfully

मारियाडीबी से जुड़ने के बाद, आपको काम करने के लिए एक डेटाबेस का चयन करना होगा क्योंकि कई डेटाबेस मौजूद हो सकते हैं। इस कार्य को करने के दो तरीके हैं: कमांड प्रॉम्प्ट से या PHP स्क्रिप्ट के माध्यम से।

कमांड प्रॉम्प्ट

कमांड प्रॉम्प्ट पर एक डेटाबेस चुनने में, बस SQL ​​कमांड का उपयोग करें ‘use’ -

[root@host]# mysql -u root -p

Enter password:******

mysql> use PRODUCTS;

Database changed

mysql> SELECT database();  
+-------------------------+ 
| Database                | 
+-------------------------+ 
| PRODUCTS                | 
+-------------------------+

एक बार जब आप एक डेटाबेस का चयन करते हैं, तो बाद के सभी आदेश चुने हुए डेटाबेस पर काम करेंगे।

Note- सभी नाम (जैसे, डेटाबेस, टेबल, फ़ील्ड) केस संवेदी हैं। सुनिश्चित करें कि आदेश उचित मामले के अनुरूप हों।

PHP सलेक्ट डेटाबेस स्क्रिप्ट

PHP प्रदान करता है mysql_select_dbडेटाबेस चयन के लिए कार्य। फ़ंक्शन दो मापदंडों का उपयोग करता है, एक वैकल्पिक, और सफल चयन पर "सही" का मान लौटाता है, या विफलता पर गलत।

वाक्य - विन्यास

निम्नलिखित चुनिंदा डेटाबेस स्क्रिप्ट सिंटैक्स की समीक्षा करें।

bool mysql_select_db( db_name, connection );

मापदंडों का विवरण नीचे दिया गया है -

S.No पैरामीटर और विवरण
1

db_name

यह आवश्यक पैरामीटर डेटाबेस का नाम उपयोग करने के लिए निर्दिष्ट करता है।

2

connection

जब निर्दिष्ट नहीं किया जाता है, तो यह वैकल्पिक पैरामीटर उपयोग किए गए सबसे हाल के कनेक्शन का उपयोग करता है।

डेटाबेस का चयन करने के लिए निम्नलिखित उदाहरण कोड का प्रयास करें -

<html>
   <head>
      <title>Select a MariaDB Database</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036'; $dbuser = 'guest1';
         $dbpass = 'guest1a'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }
         echo 'Connected successfully';
         
         mysql_select_db( 'PRODUCTS' );
         mysql_close($conn);
      ?>
   </body>
</html>

सफल चयन पर, आप निम्न आउटपुट देखेंगे -

mysql> Connected successfully

आपके डेटाबेस के अनुकूलन के लिए अच्छी फ़ील्ड परिभाषाएँ आवश्यक हैं। आदर्श दृष्टिकोण की आवश्यकता है कि आप विशेष रूप से आवश्यक प्रकार और आकार के क्षेत्र का उपयोग करें। उदाहरण के लिए, यदि आप केवल एक फ़ील्ड का उपयोग करेंगे, तो पाँच-वर्ण चौड़े, किसी क्षेत्र को परिभाषित नहीं करते, 20-वर्ण चौड़े। फ़ील्ड (या स्तंभ) प्रकार को डेटा प्रकार के रूप में भी जाना जाता है, जो फ़ील्ड के भीतर संग्रहीत डेटा प्रकारों को दिया जाता है।

MariaDB डेटा प्रकारों को संख्यात्मक, दिनांक और समय और स्ट्रिंग मानों के रूप में वर्गीकृत किया जा सकता है।

संख्यात्मक डेटा प्रकार

मारियाडीबी द्वारा समर्थित संख्यात्मक डेटा प्रकार इस प्रकार हैं -

  • TINYINT - यह डेटा प्रकार -128 के 127 और हस्ताक्षरित सीमा के भीतर गिरने वाले छोटे पूर्णांकों का प्रतिनिधित्व करता है, और 0 से 255 की अहस्ताक्षरित सीमा।

  • BOOLEAN - यह डेटा प्रकार "असत्य" के साथ एक मान 0 और "सत्य" के साथ 1 मान जोड़ता है।

  • SMALLINT - यह डेटा प्रकार हस्ताक्षरित सीमा -32768 से 32768, और 0 से 65535 की अहस्ताक्षरित सीमा के भीतर पूर्णांक का प्रतिनिधित्व करता है।

  • MEDIUMINT - यह डेटा प्रकार -8388608 से 8388607 की हस्ताक्षरित सीमा में पूर्णांक और 0 से 16777215 की अहस्ताक्षरित सीमा का प्रतिनिधित्व करता है।

  • INT(also INTEGER)- यह डेटा प्रकार सामान्य आकार के पूर्णांक का प्रतिनिधित्व करता है। जब अहस्ताक्षरित के रूप में चिह्नित किया जाता है, तो सीमा 0 से 4294967295 तक होती है। जब हस्ताक्षर किए जाते हैं (डिफ़ॉल्ट सेटिंग), तो सीमा -2147483648 से 2147483647 तक फैलती है। जब एक कॉलम ZEROFILL (एक अहस्ताक्षरित स्थिति) पर सेट होता है, तो इसके सभी मान शून्य से जगह पर पूर्व निर्धारित होते हैं। INT मान में M अंक।

  • BIGINT - यह डेटा प्रकार 9223372036854775808 से 9223372036854775807, और 0 से 18446744073709551615 की अहस्ताक्षरित सीमा के भीतर पूर्णांक का प्रतिनिधित्व करता है।

  • DECIMAL(DEC, NUMERIC, FIXED) - यह डेटा प्रकार सटीक निश्चित-बिंदु संख्याओं का प्रतिनिधित्व करता है, जिसमें एम अपने अंकों को निर्दिष्ट करता है और डी दशमलव के बाद अंकों को निर्दिष्ट करता है। M मान "-" या दशमलव बिंदु को नहीं जोड़ता है। यदि D को 0 पर सेट किया गया है, तो कोई भी दशमलव या भिन्न भाग दिखाई नहीं देता है और मान INSERT पर निकटतम DECIMAL के पास होगा। अधिकतम अनुमत अंक 65 है, और दशमलव के लिए अधिकतम 30 है। चूक पर एम के लिए डिफ़ॉल्ट मान 10 है, और चूक पर डी के लिए 0 है।

  • FLOAT - यह डेटा प्रकार मान 0 की एक छोटी, फ़्लोटिंग-पॉइंट संख्या या निम्न श्रेणियों के भीतर एक संख्या का प्रतिनिधित्व करता है -

    • -3.402823466E + 38 से -1.175494351E-38

    • 1.175494351E-38 से 3.402823466E + 38

  • DOUBLE (यह भी REAL तथा DOUBLE PRECISION) - यह डेटा प्रकार मान 0 के सामान्य आकार, फ़्लोटिंग-पॉइंट संख्याओं या निम्न श्रेणियों के भीतर प्रदर्शित करता है -

    • -1.7976931348623157E + 308 से -2.2250738585072014E-308

    • 2.2250738585072014E-308 से 1.7976931348623157E + 308

  • BIT- यह डेटा प्रकार प्रति बिट बिट की संख्या को निर्दिष्ट करने वाले एम के साथ बिट फ़ील्ड का प्रतिनिधित्व करता है। M के चूकने पर, डिफ़ॉल्ट 1 है। बिट मानों को "b '[value]' के साथ लागू किया जा सकता है, जिसमें मान 0s और 1s में बिट मान का प्रतिनिधित्व करता है। शून्य-पैडिंग पूर्ण लंबाई के लिए बाईं ओर से स्वचालित रूप से होती है; उदाहरण के लिए, "10" "0010" बन जाता है।

दिनांक और समय डेटा प्रकार

मारियाडीबी द्वारा समर्थित तारीख और समय डेटा प्रकार इस प्रकार हैं -

  • DATE - यह डेटा प्रकार "1000-01-01" की एक तिथि सीमा को "9999-12-31" तक दर्शाता है, और "YYYY-MM-DD" तिथि प्रारूप का उपयोग करता है।

  • TIME - यह डेटा प्रकार "-838: 59: 59.999999" की समय सीमा को "838: 59: 59.99.9999" दर्शाता है।

  • DATETIME- यह डेटा प्रकार "1000-01-01 00: 00: 00.000000" से "9999-12-31 23: 59: 59.999999" तक का प्रतिनिधित्व करता है। यह "YYYY-MM-DD HH: MM: SS" प्रारूप का उपयोग करता है।

  • TIMESTAMP- यह डेटा प्रकार "YYYY-MM-DD HH: MM: DD" प्रारूप के टाइमस्टैम्प का प्रतिनिधित्व करता है। यह मुख्य रूप से डेटाबेस संशोधनों, जैसे, प्रविष्टि या अपडेट के समय का विवरण देने में उपयोग करता है।

  • YEAR- यह डेटा प्रकार 4-अंकीय प्रारूप में एक वर्ष का प्रतिनिधित्व करता है। चार अंकों का प्रारूप 1901 से 2155, और 0000 के मानों की अनुमति देता है।

स्ट्रिंग डेटाटाइप्स

MariaDB द्वारा समर्थित स्ट्रिंग प्रकार मान इस प्रकार हैं -

  • String literals - यह डेटा प्रकार उद्धरण द्वारा संलग्न चरित्र अनुक्रमों का प्रतिनिधित्व करता है।

  • CHAR- यह डेटा प्रकार एक राइट-पैडेड, फिक्स्ड-लेंथ स्ट्रिंग को दर्शाता है जिसमें निर्दिष्ट लंबाई के स्पेस होते हैं। M 0 से 255 की सीमा में वर्णों की कॉलम लंबाई का प्रतिनिधित्व करता है, इसका डिफ़ॉल्ट मान 1 है।

  • VARCHAR - यह डेटा प्रकार 0 से 65535 की एम रेंज (अधिकतम कॉलम लंबाई) के साथ एक चर-लंबाई स्ट्रिंग का प्रतिनिधित्व करता है।

  • BINARY - यह डेटा प्रकार बाइट बाइट स्ट्रिंग्स का प्रतिनिधित्व करता है, एम के साथ बाइट्स में कॉलम की लंबाई के रूप में।

  • VARBINARY - यह डेटा प्रकार कॉलम लंबाई के रूप में एम के साथ बाइनरी बाइट स्ट्रिंग्स का प्रतिनिधित्व करता है।

  • TINYBLOB- यह डेटा प्रकार 255 (28 - 1) बाइट्स की अधिकतम लंबाई के साथ एक ब्लॉब कॉलम का प्रतिनिधित्व करता है। भंडारण में, प्रत्येक एक-बाइट लंबाई उपसर्ग का उपयोग करता है जो मूल्य में बाइट मात्रा को दर्शाता है।

  • BLOB- यह डेटा प्रकार 65,535 (216 - 1) बाइट्स की अधिकतम लंबाई के साथ एक ब्लॉब कॉलम का प्रतिनिधित्व करता है। भंडारण में, प्रत्येक दो-बाइट लंबाई उपसर्ग का उपयोग करता है जो मूल्य में बाइट मात्रा का संकेत देता है।

  • MEDIUMBLOB- यह डेटा प्रकार 16,777,215 (2 24 - 1) बाइट्स की अधिकतम लंबाई के साथ एक ब्लॉब कॉलम का प्रतिनिधित्व करता है । भंडारण में, प्रत्येक मूल्य में बाइट मात्रा को इंगित करते हुए तीन-बाइट लंबाई उपसर्ग का उपयोग करता है।

  • LONGBLOB- यह डेटा प्रकार 4,294,967,295 (2 32 - 1) बाइट्स की अधिकतम लंबाई के साथ एक ब्लॉब कॉलम का प्रतिनिधित्व करता है । भंडारण में, प्रत्येक मूल्य में बाइट मात्रा को इंगित करते हुए चार-बाइट लंबाई उपसर्ग का उपयोग करता है।

  • TINYTEXT- यह डेटा प्रकार अधिकतम 255 (2 8 - 1) वर्णों के साथ एक टेक्स्ट कॉलम का प्रतिनिधित्व करता है । भंडारण में, प्रत्येक एक-बाइट लंबाई उपसर्ग का उपयोग करता है जो मूल्य में बाइट मात्रा को दर्शाता है।

  • TEXT- यह डेटा प्रकार 65,535 (2 16 - 1) वर्णों की अधिकतम लंबाई के साथ एक पाठ कॉलम का प्रतिनिधित्व करता है । भंडारण में, प्रत्येक दो-बाइट लंबाई उपसर्ग का उपयोग करता है जो मूल्य में बाइट मात्रा का संकेत देता है।

  • MEDIUMTEXT- यह डेटा प्रकार 16,777,215 (2 24 - 1) वर्णों की अधिकतम लंबाई के साथ एक पाठ कॉलम का प्रतिनिधित्व करता है । भंडारण में, प्रत्येक मूल्य में बाइट मात्रा को इंगित करते हुए तीन-बाइट लंबाई उपसर्ग का उपयोग करता है।

  • LONGTEXT- यह डेटा प्रकार 4,294,967,295 या 4GB (2 32 - 1) वर्णों की अधिकतम लंबाई के साथ एक पाठ स्तंभ का प्रतिनिधित्व करता है । भंडारण में, प्रत्येक मूल्य में बाइट मात्रा को इंगित करते हुए चार-बाइट लंबाई उपसर्ग का उपयोग करता है।

  • ENUM - यह डेटा प्रकार एक स्ट्रिंग ऑब्जेक्ट को एक सूची से केवल एक ही मूल्य का प्रतिनिधित्व करता है।

  • SET- यह डेटा प्रकार किसी स्ट्रिंग सूची में शून्य या अधिक मानों का प्रतिनिधित्व करता है, जिसमें अधिकतम 64 सदस्य होते हैं। सेट मान पूर्णांक मानों के रूप में आंतरिक रूप से प्रस्तुत करते हैं।

इस अध्याय में, हम सीखेंगे कि तालिकाओं का निर्माण कैसे करें। तालिका बनाने से पहले, उसका नाम, फ़ील्ड नाम और फ़ील्ड परिभाषाएँ पहले निर्धारित करें।

तालिका निर्माण के लिए सामान्य वाक्यविन्यास निम्नलिखित है -

CREATE TABLE table_name (column_name column_type);

उत्पाद डेटाबेस में तालिका बनाने के लिए लागू कमांड की समीक्षा करें -

databaseproducts_ tbl(
   product_id INT NOT NULL AUTO_INCREMENT,
   product_name VARCHAR(100) NOT NULL,
   product_manufacturer VARCHAR(40) NOT NULL,
   submission_date DATE,
   PRIMARY KEY ( product_id )
);

उपरोक्त उदाहरण "शून्य नहीं" एक शून्य मान के कारण त्रुटियों से बचने के लिए फ़ील्ड विशेषता के रूप में उपयोग करता है। विशेषता "AUTO_INCREMENT" मारियाबीडी को अगले उपलब्ध मूल्य को आईडी क्षेत्र में जोड़ने का निर्देश देती है। कीवर्ड प्राथमिक कुंजी एक कॉलम को परिभाषित करती हैprimary key। अल्पविराम द्वारा अलग किए गए कई कॉलम एक प्राथमिक कुंजी को परिभाषित कर सकते हैं।

टेबल बनाने के दो मुख्य तरीके कमांड प्रॉम्प्ट और एक PHP स्क्रिप्ट का उपयोग कर रहे हैं।

कमांड प्रॉम्प्ट

नीचे दिखाए अनुसार कार्य करने के लिए क्रिएट टेबल कमांड का उपयोग करें -

root@host# mysql -u root -p
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> CREATE TABLE products_tbl(
   -> product_id INT NOT NULL AUTO_INCREMENT,
   -> product_name VARCHAR(100) NOT NULL,
   -> product_manufacturer VARCHAR(40) NOT NULL,
   -> submission_date DATE,
   -> PRIMARY KEY ( product_id )
   -> );
mysql> SHOW TABLES;
+------------------------+
| PRODUCTS               |
+------------------------+
| products_tbl           |
+------------------------+

सुनिश्चित करें कि सभी आदेश अर्धविराम के साथ समाप्त किए गए हैं।

PHP तालिका स्क्रिप्ट बनाएँ

PHP प्रदान करता है mysql_query()तालिका निर्माण के लिए। इसके दूसरे तर्क में आवश्यक SQL कमांड है -

<html>
   <head>
      <title>Create a MariaDB Table</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'root'; $dbpass = 'rootpassword';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      
         if(! $conn ){ die('Could not connect: ' . mysql_error()); } echo 'Connected successfully<br />'; $sql = "CREATE TABLE products_tbl( ".
            "product_id INT NOT NULL AUTO_INCREMENT, ".
            "product_name VARCHAR(100) NOT NULL, ".
            "product_manufacturer VARCHAR(40) NOT NULL, ".
            "submission_date DATE, ".
            "PRIMARY KEY ( product_id )); ";
      
         mysql_select_db( 'PRODUCTS' );
         $retval = mysql_query( $sql, $conn ); if(! $retval ) {
            die('Could not create table: ' . mysql_error());
         }
         echo "Table created successfully\n";
         
         mysql_close($conn);
      ?>
   </body>
</html>

सफल तालिका निर्माण पर, आप निम्न आउटपुट देखेंगे -

mysql> Table created successfully

इस अध्याय में, हम टेबल हटाना सीखेंगे।

तालिका हटाना बहुत आसान है, लेकिन याद रखें कि सभी हटाए गए टेबल अपरिवर्तनीय हैं। तालिका हटाने के लिए सामान्य वाक्यविन्यास निम्नानुसार है -

DROP TABLE table_name ;

तालिका ड्रॉप करने के लिए दो विकल्प मौजूद हैं: कमांड प्रॉम्प्ट या PHP स्क्रिप्ट का उपयोग करें।

कमांड प्रॉम्प्ट

कमांड प्रॉम्प्ट पर, बस का उपयोग करें DROP TABLE SQL कमांड -

root@host# mysql -u root -p
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> DROP TABLE products_tbl

mysql> SELECT * from products_tbl
ERROR 1146 (42S02): Table 'products_tbl' doesn't exist

PHP ड्रॉप टेबल स्क्रिप्ट

PHP प्रदान करता है mysql_query()टेबल छोड़ने के लिए। बस इसका दूसरा तर्क उपयुक्त SQL कमांड पास करें -

<html>
   <head>
      <title>Create a MariaDB Table</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'root'; $dbpass = 'rootpassword';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
         
         if(! $conn ) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully<br />'; $sql = "DROP TABLE products_tbl";
         mysql_select_db( 'PRODUCTS' );
         $retval = mysql_query( $sql, $conn ); if(! $retval ) {
            die('Could not delete table: ' . mysql_error());
         }
         echo "Table deleted successfully\n";
         
         mysql_close($conn);
      ?>
   </body>
</html>

सफल टेबल विलोपन पर, आप निम्न आउटपुट देखेंगे -

mysql> Table deleted successfully

इस अध्याय में, हम सीखेंगे कि तालिका में डेटा कैसे डालें।

तालिका में डेटा सम्मिलित करने के लिए INSERT कमांड की आवश्यकता होती है। कमांड का सामान्य सिंटैक्स INSERT है जिसके बाद तालिका का नाम, फ़ील्ड और मान हैं।

नीचे दिए गए इसके सामान्य सिंटैक्स की समीक्षा करें -

INSERT INTO tablename (field,field2,...) VALUES (value, value2,...);

स्टेटमेंट में स्ट्रिंग मानों के लिए सिंगल या डबल कोट्स के उपयोग की आवश्यकता होती है। कथन के अन्य विकल्पों में "INSERT ... SET" कथन, "INSERT ... चयनित" कथन और कई अन्य विकल्प शामिल हैं।

Note - कथन के भीतर दिखाई देने वाला फ़ंक्शन () फ़ंक्शन, केवल INSERT विवरणों पर लागू होता है और अन्यत्र उपयोग किए जाने पर NULL लौटाता है।

ऑपरेशन करने के लिए दो विकल्प मौजूद हैं: कमांड लाइन का उपयोग करें या PHP स्क्रिप्ट का उपयोग करें।

कमांड प्रॉम्प्ट

प्रॉम्प्ट पर, एक सेलेक्ट ऑपरेशन करने के कई तरीके हैं। एक मानक विवरण नीचे दिया गया है -

belowmysql>
INSERT INTO products_tbl (ID_number, Nomenclature) VALUES (12345,“Orbitron 4000”);
mysql> SHOW COLUMNS FROM products_tbl;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| ID_number   | int(5)      |      |     |         |       |
| Nomenclature| char(13)    |      |     |         |       |
+-------------+-------------+------+-----+---------+-------+

आप कई पंक्तियों को सम्मिलित कर सकते हैं -

INSERT INTO products VALUES (1, “first row”), (2, “second row”);

आप सेट खंड को भी नियोजित कर सकते हैं -

INSERT INTO products SELECT * FROM inventory WHERE status = 'available';

PHP सम्मिलन स्क्रिप्ट

ऑपरेशन करने के लिए PHP फ़ंक्शन के भीतर एक ही "INSERT INTO ..." स्टेटमेंट को रोजगार दें। आप उपयोग करेंगेmysql_query() एक बार फिर से कार्य करें।

नीचे दिए गए उदाहरण की समीक्षा करें -

<?php
   if(isset($_POST['add'])) {
      $dbhost = 'localhost:3036'; $dbuser = 'root';
      $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
         die('Could not connect: ' . mysql_error());
      }

      if(! get_magic_quotes_gpc() ) {
         $product_name = addslashes ($_POST['product_name']);
         $product_manufacturer = addslashes ($_POST['product_name']);
      } else {
         $product_name = $_POST['product_name'];
         $product_manufacturer = $_POST['product_manufacturer'];
      }
      $ship_date = $_POST['ship_date'];
      $sql = "INSERT INTO products_tbl ". "(product_name,product_manufacturer, ship_date) ". "VALUES"."('$product_name','$product_manufacturer','$ship_date')";

      mysql_select_db('PRODUCTS');
      $retval = mysql_query( $sql, $conn ); if(! $retval ) {
         die('Could not enter data: ' . mysql_error());
      }

      echo "Entered data successfully\n";
      mysql_close($conn);
   }
?>

सफल डेटा प्रविष्टि पर, आप निम्न आउटपुट देखेंगे -

mysql> Entered data successfully

आप सही डेटा प्रविष्टि सुनिश्चित करने के लिए जाँच के रूप में डालने के बयान के साथ सत्यापन बयानों का भी सहयोग करेंगे। MariaDB में इस उद्देश्य के लिए कई विकल्प शामिल हैं, जिनमें से कुछ स्वचालित हैं।

इस अध्याय में, हम सीखेंगे कि तालिका से डेटा का चयन कैसे करें।

चयनित कथन चयनित पंक्तियों को पुनः प्राप्त करते हैं। वे UNION स्टेटमेंट्स, एक ऑर्डरिंग क्लॉज, एक लिमिट क्लॉज, एक WHERE क्लॉज, एक ग्रुप BY ... HAVING क्लॉज और सबक्वेरीज शामिल कर सकते हैं।

निम्नलिखित सामान्य वाक्य रचना की समीक्षा करें -

SELECT field, field2,... FROM table_name, table_name2,... WHERE...

एक सेलेक्ट स्टेटमेंट उपयोग की गई तालिका को निर्दिष्ट करने के लिए कई विकल्प प्रदान करता है -

  • database_name.table_name

  • table_name.column_name

  • database_name.table_name.column_name

सभी चुनिंदा बयानों में एक या अधिक होना चाहिए select expressions। निम्न विकल्पों में से एक से मिलकर भाव चुनें -

  • एक स्तंभ नाम।

  • ऑपरेटरों और कार्यों को नियोजित करने वाली एक अभिव्यक्ति।

  • दिए गए तालिका के भीतर सभी स्तंभों का चयन करने के लिए विनिर्देशन "table_name। *"।

  • FROM क्लॉज में निर्दिष्ट सभी तालिकाओं से सभी कॉलमों का चयन करने के लिए वर्ण "*"।

कमांड प्रॉम्प्ट या PHP स्क्रिप्ट का चयन स्टेटमेंट निष्पादित करने में किया जा सकता है।

कमांड प्रॉम्प्ट

कमांड प्रॉम्प्ट पर, कथनों को निम्नानुसार निष्पादित करें -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> SELECT * from products_tbl
+-------------+---------------+
| ID_number   | Nomenclature  |
+-------------+---------------+
| 12345       | Orbitron 4000 |
+-------------+---------------+

PHP सेलेक्ट स्क्रिप्ट

ऑपरेशन करने के लिए एक PHP फ़ंक्शन के भीतर उसी SELECT स्टेटमेंट को नियुक्त करें। आप उपयोग करेंगेmysql_query()एक बार फिर से कार्य करें। नीचे दिए गए एक उदाहरण की समीक्षा करें -

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root'; $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT product_id, product_name,product_manufacturer, ship_date FROM products_tbl';
   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn ); if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Product ID :{$row['product_id']} <br> ". "Name: {$row['product_name']} <br> ".
         "Manufacturer: {$row['product_manufacturer']} <br> ". "Ship Date : {$row['ship_date']} <br>".
         "--------------------------------<br>";
   }

   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

सफल डेटा पुनर्प्राप्ति पर, आप निम्न आउटपुट देखेंगे -

Product ID: 12345
Nomenclature: Orbitron 4000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 12346
Nomenclature: Orbitron 3000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
mysql> Fetched data successfully

सर्वोत्तम प्रथाओं का सुझाव है कि प्रत्येक SELECT स्टेटमेंट के बाद कर्सर मेमोरी को रिलीज़ करना। PHP प्रदान करता हैmysql_free_result()इस उद्देश्य के लिए कार्य करें। नीचे दिखाए अनुसार इसके उपयोग की समीक्षा करें -

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root'; $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl';
   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn ); if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
      echo "Product ID :{$row[0]} <br> ". "Name: {$row[1]} <br> ".
         "Manufacturer: {$row[2]} <br> ". "Ship Date : {$row[3]} <br> ".
         "--------------------------------<br>";
   }

   mysql_free_result($retval); echo "Fetched data successfully\n"; mysql_close($conn);
?>

WHEREक्लॉज़ विभिन्न स्टेटमेंट्स जैसे कि SELECT, UPDATE, DELETE और INSERT को फ़िल्टर करता है। वे कार्रवाई को निर्दिष्ट करने के लिए उपयोग किए जाने वाले मानदंड प्रस्तुत करते हैं। वे आम तौर पर एक बयान में एक टेबल नाम के बाद दिखाई देते हैं, और उनकी स्थिति इस प्रकार है। WHERE क्लॉज अनिवार्य रूप से एक if स्टेटमेंट की तरह कार्य करता है।

नीचे दिए गए WHERE क्लॉज के सामान्य सिंटैक्स की समीक्षा करें -

[COMMAND] field,field2,... FROM table_name,table_name2,... WHERE [CONDITION]

WHERE क्लॉज के निम्नलिखित गुणों पर ध्यान दें -

  • यह वैकल्पिक है।

  • यह किसी भी शर्त को निर्दिष्ट करने की अनुमति देता है।

  • यह AND और OR ऑपरेटर का उपयोग करके कई शर्तों के विनिर्देशन की अनुमति देता है।

  • केस की संवेदनशीलता केवल LIKE तुलनाओं का उपयोग करके कथनों पर लागू होती है।

WHERE क्लॉज निम्नलिखित ऑपरेटरों के उपयोग की अनुमति देता है -

ऑपरेटर
=! =
> <
> = <=

जहां क्लॉस का उपयोग कमांड प्रॉम्प्ट पर या PHP स्क्रिप्ट के भीतर किया जा सकता है।

कमांड प्रॉम्प्ट

कमांड प्रॉम्प्ट पर, बस एक मानक कमांड का उपयोग करें -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> SELECT * from products_tbl WHERE product_manufacturer = 'XYZ Corp';
+-------------+----------------+----------------------+
| ID_number   | Nomenclature   | product_manufacturer |
+-------------+----------------+----------------------+
| 12345       | Orbitron 4000  | XYZ Corp             |
+-------------+----------------+----------------------+
| 12346       | Orbitron 3000  | XYZ Corp             |
+-------------+----------------+----------------------+
| 12347       | Orbitron 1000  | XYZ Corp             |
+-------------+----------------+----------------------+

का उपयोग करके एक उदाहरण की समीक्षा करें AND शर्त -

SELECT *
FROM products_tbl
WHERE product_name = 'Bun Janshu 3000';
AND product_id <= 344;

यह उदाहरण AND और OR दोनों स्थितियों को जोड़ता है

SELECT *
FROM products_tbl
WHERE (product_name = 'Bun Janshu 3000' AND product_id < 344)
OR (product_name = 'Bun Janshu 3000');

PHP लिपियों का उपयोग करते हुए कहां खंड

को रोजगार दें mysql_query() WHERE क्लॉज का उपयोग करके संचालन में कार्य -

<?php
   $dbhost = 'localhost:3036'; $dbuser = 'root';
   $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl WHERE product_manufacturer = "XYZ Corp"'; mysql_select_db('PRODUCTS'); $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Product ID :{$row['product_id']} <br> ".
         "Name: {$row['product_name']} <br> ". "Manufacturer: {$row['product_manufacturer']} <br> ".
         "Ship Date: {$row['ship_date']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn);
?>

सफल डेटा पुनर्प्राप्ति पर, आप निम्न आउटपुट देखेंगे -

Product ID: 12345
Nomenclature: Orbitron 4000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 12346
Nomenclature: Orbitron 3000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
Product ID: 12347
Nomenclature: Orbitron 1000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
mysql> Fetched data successfully

UPDATEमान मौजूदा फ़ील्ड को मान बदलकर संशोधित करता है। यह संशोधन के लिए कॉलम निर्दिष्ट करने के लिए, और नए मूल्यों को निर्दिष्ट करने के लिए सेट सेट का उपयोग करता है। ये मान या तो अभिव्यक्ति या फ़ील्ड के डिफ़ॉल्ट मान हो सकते हैं। डिफ़ॉल्ट मान सेट करने के लिए DEFAULT कीवर्ड का उपयोग करना पड़ता है। एक अद्यतन के लिए शर्तों को निर्दिष्ट करने के लिए कमांड एक WHERE क्लॉज को भी नियोजित कर सकता है और / या ORDER BY क्लॉज को एक निश्चित क्रम में अपडेट करने के लिए।

निम्नलिखित सामान्य वाक्य रचना की समीक्षा करें -

UPDATE table_name SET field=new_value, field2=new_value2,...
[WHERE ...]

कमांड प्रॉम्प्ट से या PHP स्क्रिप्ट का उपयोग करके एक अद्यतन कमांड निष्पादित करें।

कमांड प्रॉम्प्ट

कमांड प्रॉम्प्ट पर, बस एक मानक कमांडरॉट का उपयोग करें -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> UPDATE products_tbl
   SET nomenclature = 'Fiber Blaster 300Z' WHERE ID_number = 112;
mysql> SELECT * from products_tbl WHERE ID_number='112';
+-------------+---------------------+----------------------+
| ID_number   | Nomenclature        | product_manufacturer |
+-------------+---------------------+----------------------+
| 112         | Fiber Blaster 300Z  | XYZ Corp             |
+-------------+---------------------+----------------------+

PHP अपडेट क्वेरी स्क्रिप्ट

को रोजगार दें mysql_query() UPDATE कमांड स्टेटमेंट में कार्य -

<?php
   $dbhost = ‘localhost:3036’; $dbuser = ‘root’;
   $dbpass = ‘rootpassword’; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
      die(‘Could not connect: ‘ . mysql_error());
   }

   $sql = ‘UPDATE products_tbl SET product_name = ”Fiber Blaster 300z” WHERE product_id = 112’; mysql_select_db(‘PRODUCTS’); $retval = mysql_query( $sql, $conn );

   if(! $retval ) { die(‘Could not update data: ‘ . mysql_error()); } echo “Updated data successfully\n”; mysql_close($conn);
?>

सफल डेटा अपडेट पर, आप निम्न आउटपुट देखेंगे -

mysql> Updated data successfully

DELETE कमांड निर्दिष्ट तालिका से तालिका पंक्तियों को हटाती है, और हटाए गए मात्रा को वापस करती है। ROW_COUNT () फ़ंक्शन के साथ हटाए गए मात्रा तक पहुंचें। WHERE क्लॉज पंक्तियों को निर्दिष्ट करता है, और इसकी अनुपस्थिति में, सभी पंक्तियों को हटा दिया जाता है। एक सीमा खंड हटाए गए पंक्तियों की संख्या को नियंत्रित करता है।

कई पंक्तियों के लिए DELETE कथन में, यह केवल उन पंक्तियों को हटा देता है जो किसी स्थिति को संतुष्ट करती हैं; और सीमा और जहां खंड की अनुमति नहीं है। DELETE कथन विभिन्न डेटाबेस में तालिकाओं से पंक्तियों को हटाने की अनुमति देता है, लेकिन एक तालिका से हटाने की अनुमति नहीं देता है और फिर एक उप-तालिका के भीतर एक ही तालिका से चयन करता है।

निम्नलिखित DELETE सिंटैक्स की समीक्षा करें -

DELETE FROM table_name [WHERE …]

कमांड प्रॉम्प्ट से या PHP स्क्रिप्ट का उपयोग करके किसी DELETE कमांड को निष्पादित करें।

कमांड प्रॉम्प्ट

कमांड प्रॉम्प्ट पर, बस एक मानक कमांड का उपयोग करें -

root@host# mysql –u root –p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> DELETE FROM products_tbl WHERE product_id=133;
mysql> SELECT * from products_tbl WHERE ID_number='133';
ERROR 1032 (HY000): Can't find record in 'products_tbl'

PHP डिलीट क्वेरी स्क्रिप्ट

उपयोग mysql_query() DELETE कमांड स्टेटमेंट में कार्य -

<?php
   $dbhost = 'localhost:3036'; $dbuser = 'root';
   $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'DELETE FROM products_tbl WHERE product_id = 261'; mysql_select_db('PRODUCTS'); $retval = mysql_query( $sql, $conn );

   if(! $retval ) { die('Could not delete data: ' . mysql_error()); } echo "Deleted data successfully\n"; mysql_close($conn);
?>

सफल डेटा विलोपन पर, आप निम्न आउटपुट देखेंगे -

mysql> Deleted data successfully
mysql> SELECT * from products_tbl WHERE ID_number='261';
ERROR 1032 (HY000): Can't find record in 'products_tbl'

जब ऑपरेशन एक सटीक मिलान का उपयोग करता है तो WHERE क्लॉज डेटा पुनर्प्राप्त करने का एक तरीका प्रदान करता है। साझा विशेषताओं के साथ कई परिणामों की आवश्यकता वाली स्थितियों में,LIKE खण्ड मिलान से व्यापक पैटर्न को समायोजित करता है।

एक पैटर्न मैच के लिए LIKE क्लॉज टेस्ट, एक सही या गलत रिटर्न देता है। तुलना के लिए उपयोग किए जाने वाले पैटर्न निम्नलिखित वाइल्डकार्ड वर्णों को स्वीकार करते हैं: "%", जो वर्णों की संख्या से मेल खाता है (0 या अधिक); और "_", जो एक एकल चरित्र से मेल खाता है। "_" वाइल्डकार्ड वर्ण केवल इसके सेट के भीतर वर्णों से मेल खाता है, जिसका अर्थ है कि यह किसी अन्य सेट का उपयोग करते समय लैटिन वर्णों की उपेक्षा करेगा। केस संवेदनशीलता के लिए अतिरिक्त सेटिंग्स की आवश्यकता के कारण मैच केस-असंवेदनशील हैं।

एक LIKE क्लॉज विपरीत स्थिति का परीक्षण करने की अनुमति देता है, जैसे बहुत not ऑपरेटर।

यदि कथन अभिव्यक्ति या पैटर्न NULL का मूल्यांकन करता है, तो परिणाम NULL है।

नीचे दिए गए सामान्य LIKE क्लॉज सिंटैक्स की समीक्षा करें -

SELECT field, field2,... FROM table_name, table_name2,...
WHERE field LIKE condition

कमांड प्रॉम्प्ट पर या PHP स्क्रिप्ट के भीतर एक LIKE क्लॉज को रोजगार दें।

कमांड प्रॉम्प्ट

कमांड प्रॉम्प्ट पर, बस एक मानक कमांड का उपयोग करें -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from products_tbl
   WHERE product_manufacturer LIKE 'XYZ%';
+-------------+----------------+----------------------+
| ID_number   | Nomenclature   | product_manufacturer |
+-------------+----------------+----------------------+
| 12345       | Orbitron 4000  | XYZ Corp             |
+-------------+----------------+----------------------+
| 12346       | Orbitron 3000  | XYZ Corp             |
+-------------+----------------+----------------------+
| 12347       | Orbitron 1000  | XYZ Corp             |
+-------------+----------------+----------------------+

PHP स्क्रिप्ट का उपयोग क्लॉज की तरह

उपयोग mysql_query() LIKE क्लॉज को नियोजित करने वाले कथनों में कार्य करता है

<?php
   $dbhost = 'localhost:3036'; $dbuser = 'root';
   $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl WHERE product_manufacturer LIKE "xyz%"'; mysql_select_db('PRODUCTS'); $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Product ID:{$row['product_id']} <br> ".
         "Name: {$row['product_name']} <br> ". "Manufacturer: {$row['product_manufacturer']} <br> ".
         "Ship Date: {$row['ship_date']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn);
?>

सफल डेटा पुनर्प्राप्ति पर, आप निम्न आउटपुट देखेंगे -

Product ID: 12345
Nomenclature: Orbitron 4000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 12346
Nomenclature: Orbitron 3000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
Product ID: 12347
Nomenclature: Orbitron 1000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
mysql> Fetched data successfully

ORDER BYखंड, जैसा कि पिछली चर्चाओं में बताया गया है, एक बयान के परिणामों को क्रमबद्ध करता है। यह संचालित डेटा के क्रम को निर्दिष्ट करता है, और इसमें आरोही (एएससी) या अवरोही (डीईएससी) क्रम में सॉर्ट करने का विकल्प शामिल है। आदेश विनिर्देश के चूक पर, डिफ़ॉल्ट क्रम आरोही है।

ORDER BY क्लॉज़ कई प्रकार के कथन जैसे कि DELETE और UPDATE में दिखाई देते हैं। वे हमेशा एक बयान के अंत में दिखाई देते हैं, न कि एक उपशम में या एक निर्धारित फ़ंक्शन से पहले, क्योंकि वे अंतिम परिणाम तालिका पर काम करते हैं। आप किसी स्तंभ की पहचान करने के लिए पूर्णांक का उपयोग नहीं कर सकते हैं।

नीचे दिए गए क्रम द्वारा ORDER के सामान्य सिंटैक्स की समीक्षा करें -

SELECT field, field2,... [or column] FROM table_name, table_name2,...
ORDER BY field, field2,... ASC[or DESC]

कमांड प्रॉम्प्ट पर या PHP स्क्रिप्ट के भीतर किसी भी क्रम से एक क्रम का उपयोग करें।

कमांड प्रॉम्प्ट

कमांड प्रॉम्प्ट पर, बस एक मानक कमांड का उपयोग करें -

root@ host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed

mysql> SELECT * from products_tbl ORDER BY product_manufacturer ASC
+-------------+----------------+----------------------+
| ID_number   | Nomenclature   | product_manufacturer |
+-------------+----------------+----------------------+
| 56789       | SuperBlast 400 | LMN Corp             |
+-------------+----------------+----------------------+
| 67891       | Zoomzoom 5000  | QFT Corp             |
+-------------+----------------+----------------------+
| 12347       | Orbitron 1000  | XYZ Corp             |
+-------------+----------------+----------------------+

PHP स्क्रिप्ट क्लॉज द्वारा ऑर्डर का उपयोग करना

उपयोग करें mysql_query() समारोह, एक बार फिर बयानों के आधार पर आदेश द्वारा रोजगार -

<?php
   $dbhost = 'localhost:3036'; $dbuser = 'root';
   $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl ORDER BY product_manufacturer DESC'; mysql_select_db('PRODUCTS'); $retval = mysql_query( $sql, $conn );

   if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Product ID :{$row['product_id']} <br> ".
         "Name: {$row['product_name']} <br> ". "Manufacturer: {$row['product_manufacturer']} <br> ".
         "Ship Date : {$row['ship_date']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn);
?>

सफल डेटा पुनर्प्राप्ति पर, आप निम्न आउटपुट देखेंगे -

Product ID: 12347
Nomenclature: Orbitron 1000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 67891
Nomenclature: Zoomzoom 5000
Manufacturer: QFT Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 56789
Nomenclature: SuperBlast 400
Manufacturer: LMN Corp
Ship Date: 01/04/17
----------------------------------------------
mysql> Fetched data successfully

पिछली चर्चाओं और उदाहरणों में, हमने एक ही तालिका से पुनर्प्राप्ति की जांच की, या कई स्रोतों से कई मान प्राप्त किए। अधिकांश वास्तविक-विश्व डेटा ऑपरेशन अधिक जटिल होते हैं, जिनमें कई तालिकाओं से एकत्रीकरण, तुलना और पुनर्प्राप्ति की आवश्यकता होती है।

JOINsएक ही वस्तु में दो या दो से अधिक तालिकाओं के विलय की अनुमति दें। वे SELECT, UPDATE और DELETE कथनों के माध्यम से कार्यरत हैं।

नीचे दिखाए गए अनुसार एक जॉइन को नियोजित करने वाले कथन के सामान्य सिंटैक्स की समीक्षा करें -

SELECT column
FROM table_name1
INNER JOIN table_name2
ON table_name1.column = table_name2.column;

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

जॉइन कई रूपों में आते हैं जैसे कि लेफ्ट जॉइन, राइट जॉइन या इनर जॉइन। विभिन्न प्रकार के प्रकार साझा मूल्यों या विशेषताओं के आधार पर विभिन्न प्रकार के एकत्रीकरण प्रदान करते हैं।

कमांड प्रॉम्प्ट पर या PHP स्क्रिप्ट के साथ एक जॉइन को रोजगार दें।

कमांड प्रॉम्प्ट

कमांड प्रॉम्प्ट पर, बस एक मानक स्टेटमेंट का उपयोग करें -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed

mysql> SELECT products.ID_number, products.Nomenclature, inventory.inventory_ct
   FROM products
   INNER JOIN inventory
   ON products.ID_numbeer = inventory.ID_number;
+-------------+----------------+-----------------+
| ID_number   | Nomenclature   | Inventory Count |
+-------------+----------------+-----------------+
| 12345       | Orbitron 4000  | 150             |
+-------------+----------------+-----------------+
| 12346       | Orbitron 3000  | 200             |
+-------------+----------------+-----------------+
| 12347       | Orbitron 1000  | 0               |
+-------------+----------------+-----------------+

PHP स्क्रिप्ट JOIN का उपयोग करना

उपयोग mysql_query() समारोह में शामिल होने के लिए कार्य -

<?php
   $dbhost = 'localhost:3036'; $dbuser = 'root';
   $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT a.product_id, a.product_manufacturer, b.product_count FROM products_tbl a, pcount_tbl b WHERE a.product_manufacturer = b.product_manufacturer'; mysql_select_db('PRODUCTS'); $retval = mysql_query( $sql, $conn );

   if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Manufacturer:{$row['product_manufacturer']} <br> ".
         "Count: {$row['product_count']} <br> ". "Product ID: {$row['product_id']} <br> ".
         "--------------------------------<br>";
   }

   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

सफल डेटा पुनर्प्राप्ति पर, आप निम्न आउटपुट देखेंगे -

ID Number: 12345
Nomenclature: Orbitron 4000
Inventory Count: 150
--------------------------------------
ID Number: 12346
Nomenclature: Orbitron 3000
Inventory Count: 200
--------------------------------------
ID Number: 12347
Nomenclature: Orbitron 1000
Inventory Count: 0
--------------------------------------
mysql> Fetched data successfully

NULL मानों के साथ काम करते समय, याद रखें कि वे अज्ञात मूल्य हैं। वे खाली तार या शून्य नहीं हैं, जो मान्य मूल्य हैं। तालिका निर्माण में, स्तंभ विनिर्देश उन्हें शून्य मान स्वीकार करने या उन्हें अस्वीकार करने के लिए सेट करने की अनुमति देते हैं। बस एक पूर्ण या नहीं पूर्ण खंड का उपयोग करें। इसमें एक आईडी नंबर की तरह रिकॉर्ड जानकारी गुम होने के मामलों में आवेदन हैं।

उपयोगकर्ता-परिभाषित चर में स्पष्ट असाइनमेंट तक NULL का मान है। संग्रहीत नियमित पैरामीटर और स्थानीय चर NULL का मान सेट करने की अनुमति देते हैं। जब किसी स्थानीय चर का कोई डिफ़ॉल्ट मान नहीं होता है, तो उसका NULL का मान होता है।

NULL केस-असंवेदनशील है, और इसमें निम्नलिखित उपनाम हैं -

  • UNKNOWN (एक बुलियन मूल्य)
  • \N

नाल संचालक

मानक तुलना ऑपरेटरों का उपयोग NULL (जैसे, =,>,> =, <=, <, या =!) के साथ नहीं किया जा सकता है क्योंकि NULL मान के साथ सभी तुलना NULL, सही या गलत नहीं है। NULL या संभवतः इसके साथ तुलना करने के लिए "<=>" (NULL-SAFE) ऑपरेटर का उपयोग करना चाहिए।

अन्य उपलब्ध ऑपरेटर हैं -

  • IS NULL - यह एक NULL मान के लिए परीक्षण करता है।

  • पूर्ण नहीं है - यह एक पूर्ण मूल्य की अनुपस्थिति की पुष्टि करता है।

  • ISNULL - यह NULL मान की खोज पर 1 का मान लौटाता है, और इसकी अनुपस्थिति में 0 होता है।

  • COALESCE - यह किसी सूची का पहला गैर-पूर्ण मान लौटाता है, या किसी के अभाव में NULL मान लौटाता है।

पूर्ण मानों को क्रमबद्ध करना

छँटाई के संचालन में, NULL मानों का मूल्य सबसे कम होता है, इसलिए DESC क्रम में NULL मानों को सबसे नीचे देता है। MariaDB NULL मानों के लिए उच्च मान सेट करने की अनुमति देता है।

इसे करने के दो तरीके हैं जैसे कि नीचे दिखाया गया है -

SELECT column1 FROM product_tbl ORDER BY ISNULL(column1), column1;

दूसरा तरीका -

SELECT column1 FROM product_tbl ORDER BY IF(column1 IS NULL, 0, 1), column1 DESC;

पूर्ण कार्य

जब आम तौर पर कोई पैरामीटर NULL होता है तो फंक्शन्स NULL आउटपुट करते हैं। हालाँकि, विशेष रूप से NULL मान प्रबंधित करने के लिए डिज़ाइन किए गए कार्य हैं। वे हैं -

  • IFNULL()- अगर पहला एक्सप्रेशन NULL नहीं है तो वह उसे लौटा देता है। जब यह NULL का मूल्यांकन करता है, तो यह दूसरी अभिव्यक्ति देता है।

  • NULLIF() - यह NULL लौटाता है जब तुलनात्मक भाव समान होते हैं, यदि नहीं, तो यह पहली अभिव्यक्ति देता है।

एसयूएम और एवीजी जैसे कार्य NULL मूल्यों की उपेक्षा करते हैं।

पूर्ण मानों को सम्मिलित करना

NULL घोषित किए गए कॉलम में NULL मान सम्मिलित करने पर, एक त्रुटि उत्पन्न होती है। डिफ़ॉल्ट SQL मोड में, एक NULL कॉलम इसके बजाय डेटा प्रकार के आधार पर डिफ़ॉल्ट मान नहीं डालेगा।

जब कोई फ़ील्ड TIMESTAMP, AUTO_INCREMENT, या वर्चुअल कॉलम होता है, तो MariaDB NULL मानों को अलग तरीके से प्रबंधित करता है। AUTO_INCREMENT कॉलम में प्रविष्टि अनुक्रम में अगले नंबर को इसके स्थान पर डालने का कारण बनती है। TIMESTAMP फ़ील्ड में, MariaDB वर्तमान टाइमस्टैम्प को इसके बजाय असाइन करती है। वर्चुअल कॉलम में, इस ट्यूटोरियल में बाद में चर्चा किए गए विषय, डिफ़ॉल्ट मान असाइन किया गया है।

अद्वितीय संकेत कई NULL मान रख सकते हैं, हालाँकि, प्राथमिक कुंजियाँ NULL नहीं हो सकती हैं।

NULL Values ​​and Alter Command

जब आप किसी स्तंभ को संशोधित करने के लिए ALTER कमांड का उपयोग करते हैं, तो NULL विशिष्टताओं की अनुपस्थिति में, MariaDB स्वचालित रूप से मान प्रदान करता है।

LIKE क्लॉस से उपलब्ध पैटर्न के मिलान के अलावा, MariaDB REGEXP ऑपरेटर के माध्यम से नियमित अभिव्यक्ति-आधारित मिलान प्रदान करता है। ऑपरेटर एक दिए गए पैटर्न के आधार पर एक स्ट्रिंग अभिव्यक्ति के लिए पैटर्न मिलान करता है।

मारियाडीबी 10.0.5 ने पीसीआरई रेगुलर एक्सप्रेशंस की शुरुआत की, जो नाटकीय रूप से पुनरावर्ती पैटर्न, लुक-फॉरवर्ड दावे, और अधिक जैसे क्षेत्रों में मेल खाने की गुंजाइश बढ़ाता है।

नीचे दिए गए मानक REGEXP ऑपरेटर सिंटैक्स के उपयोग की समीक्षा करें -

SELECT column FROM table_name WHERE column REGEXP '[PATTERN]';

REGEXP एक पैटर्न मैच के लिए 1 या एक के अभाव में 0 देता है।

विपरीत के लिए एक विकल्प NOTEXEXP के रूप में मौजूद है। MariaDB भी REGEXP और NOT REGEXP, RLIKE और NOT RLIKE का पर्यायवाची है, जो अनुकूलता के लिए बनाए गए थे।

तुलनात्मक पैटर्न शाब्दिक स्ट्रिंग या कुछ और हो सकता है जैसे टेबल कॉलम। स्ट्रिंग्स में, यह C एस्केप सिंटैक्स का उपयोग करता है, इसलिए किसी भी "\" वर्णों को दोहराएं। REGEXP बाइनरी स्ट्रिंग्स के अपवाद के साथ केस-असंवेदनशील भी है।

संभावित प्रतिमानों की एक तालिका, जिसका उपयोग किया जा सकता है -

अनु क्रमांक पैटर्न और विवरण
1

^

यह स्ट्रिंग की शुरुआत से मेल खाता है।

2

$

यह स्ट्रिंग के अंत से मेल खाता है।

3

.

यह एक एकल चरित्र से मेल खाता है।

4

[...]

यह कोष्ठक में किसी भी वर्ण से मेल खाता है।

5

[^...]

यह कोष्ठक में सूचीबद्ध किसी भी वर्ण से मेल खाता है।

6

p1|p2|p3

यह किसी भी पैटर्न से मेल खाता है।

7

*

यह पूर्ववर्ती तत्व के 0 या अधिक उदाहरणों से मेल खाता है।

8

+

यह पूर्ववर्ती तत्व के 1 या अधिक उदाहरणों से मेल खाता है।

9

{n}

यह पूर्ववर्ती तत्व के n उदाहरणों से मेल खाता है।

10

{m,n}

यह पूर्ववर्ती तत्व के मीटर से n उदाहरणों से मेल खाता है।

नीचे दिए गए उदाहरणों के मिलान के उदाहरणों की समीक्षा करें -

"Pr" से शुरू होने वाले उत्पाद -

SELECT name FROM product_tbl WHERE name REGEXP '^pr';

"ना" के साथ समाप्त होने वाले उत्पाद -

SELECT name FROM product_tbl WHERE name REGEXP 'na$';

स्वर से शुरू होने वाले उत्पाद -

SELECT name FROM product_tbl WHERE name REGEXP '^[aeiou]';

लेनदेन अनुक्रमिक समूह संचालन हैं। वे एक एकल इकाई के रूप में कार्य करते हैं, और तब तक समाप्त नहीं होते हैं जब तक कि समूह के भीतर सभी ऑपरेशन सफलतापूर्वक निष्पादित नहीं हो जाते हैं। समूह में एक एकल विफलता पूरे लेनदेन को विफल करने का कारण बनती है, और इसका डेटाबेस पर कोई प्रभाव नहीं पड़ता है।

लेनदेन ACID (एटमॉसिटी, कंसिस्टेंसी, अलगाव और स्थायित्व) के अनुरूप होते हैं -

  • Atomicity - यह विफलताओं पर गर्भपात और वापस परिवर्तनों को रोल करके सभी कार्यों की सफलता सुनिश्चित करता है।

  • Consistency - यह सुनिश्चित करता है कि डेटाबेस एक सफल लेनदेन पर परिवर्तन लागू करता है।

  • Isolation - यह लेनदेन के स्वतंत्र लेनदेन संचालन को सक्षम करता है।

  • Durability - यह सिस्टम की विफलता की स्थिति में एक सफल लेनदेन की दृढ़ता सुनिश्चित करता है।

लेन-देन विवरण के मुखिया पर COMMIT और ROLLBACK कथनों के बाद शुरू किया गया START TRANSACTION कथन है -

  • START लेन-देन लेनदेन शुरू करता है।

  • COMMIT डेटा में परिवर्तन बचाता है।

  • रोलबैक लेनदेन को समाप्त करता है, किसी भी परिवर्तन को नष्ट करता है।

एक सफल लेनदेन पर, COMMIT कार्य करता है। एक विफलता पर, रोलबैक कार्य करता है।

Note- कुछ कथनों में निहितार्थ होता है और लेन-देन में इस्तेमाल होने पर उनमें त्रुटि भी होती है। ऐसे बयानों के उदाहरणों में शामिल हैं, लेकिन क्रिएट, अलर्ट और डीआरओपी तक सीमित नहीं हैं।

मारबीडीबी लेनदेन में SAVEPOINT और LOCK TABLES जैसे विकल्प भी शामिल हैं। SAVEPOINT ROLLBACK के साथ उपयोग करने के लिए एक पुनर्स्थापना बिंदु सेट करता है। कुछ समय के दौरान संशोधनों को रोकने के लिए सत्र के दौरान तालिकाओं को नियंत्रित करने की अनुमति देता है।

AUTOCOMMIT चर लेनदेन पर नियंत्रण प्रदान करता है। 1 संचालन की एक सेटिंग को सफल लेनदेन माना जाता है, और 0 की एक सेटिंग केवल स्पष्ट अर्थ कथन पर होने वाले परिवर्तनों की दृढ़ता का कारण बनती है।

एक लेनदेन की संरचना

लेन-देन विवरण की सामान्य संरचना में स्टार्ट ट्रांसक्शन के साथ शुरुआत होती है। अगला कदम एक या एक से अधिक कमांड / ऑपरेशंस डाल रहा है, त्रुटियों की जांच करने वाले स्टेटमेंट्स डाल रहा है, खोजे गए किसी भी एरर को मैनेज करने के लिए ROLLBACK स्टेटमेंट्स डाल रहा है और आखिरकार सफल ऑपरेशंस पर बदलाव लागू करने के लिए COMMIT स्टेटमेंट डाल रहा है।

नीचे दिए गए उदाहरण की समीक्षा करें -

START TRANSACTION;
SELECT name FROM products WHERE manufacturer = 'XYZ Corp';
UPDATE spring_products SET item = name;
COMMIT;

ALTER कमांड एक मौजूदा तालिका की संरचना को बदलने का एक तरीका प्रदान करता है, जिसका अर्थ है कि कॉलम को हटाने या जोड़ने, सूचकांकों को संशोधित करने, डेटा प्रकार बदलने या नाम बदलने जैसे संशोधन। जब मेटाडेटा लॉक सक्रिय होता है तो परिवर्तन लागू करने के लिए भी प्रतीक्षा करता है।

कॉलम को संशोधित करने के लिए ALTER का उपयोग करना

DROP के साथ जोड़ा गया एक मौजूदा कॉलम हटाता है। हालाँकि, यह विफल रहता है यदि स्तंभ एकमात्र शेष स्तंभ है।

नीचे दिए गए उदाहरण की समीक्षा करें -

mysql> ALTER TABLE products_tbl DROP version_num;

कॉलम जोड़ने के लिए ALTER ... ADD स्टेटमेंट का उपयोग करें -

mysql> ALTER TABLE products_tbl ADD discontinued CHAR(1);

कॉलम के स्थान को निर्दिष्ट करने के लिए कीवर्ड FIRST और AFTER का उपयोग करें -

ALTER TABLE products_tbl ADD discontinued CHAR(1) FIRST;
ALTER TABLE products_tbl ADD discontinued CHAR(1) AFTER quantity;

FIRST और AFER कीवर्ड पर ध्यान दें, केवल ALTER ... ADD स्टेटमेंट पर लागू होते हैं। इसके अलावा, आपको एक तालिका छोड़नी होगी और फिर इसे पुन: जमा करने के लिए जोड़ना होगा।

ALTER स्टेटमेंट में MODIFY या CHANGE क्लॉज का उपयोग करके एक कॉलम परिभाषा या नाम बदलें। क्लॉस के समान प्रभाव होते हैं, लेकिन अलग-अलग सिंटैक्स का उपयोग करते हैं।

नीचे दिए गए एक CHANGE उदाहरण की समीक्षा करें -

mysql> ALTER TABLE products_tbl CHANGE discontinued status CHAR(4);

CHANGE का उपयोग करते हुए एक बयान में, मूल कॉलम और फिर इसे बदलने वाले नए कॉलम को निर्दिष्ट करें। नीचे एक MODIFY उदाहरण की समीक्षा करें -

mysql> ALTER TABLE products_tbl MODIFY discontinued CHAR(4);

ALTER कमांड डिफ़ॉल्ट मानों को बदलने की भी अनुमति देता है। एक उदाहरण की समीक्षा करें -

mysql> ALTER TABLE products_tbl ALTER discontinued SET DEFAULT N;

आप इसे DROP क्लॉज़ के साथ जोड़कर डिफ़ॉल्ट बाधाओं को दूर करने के लिए भी उपयोग कर सकते हैं -

mysql> ALTER TABLE products_tbl ALTER discontinued DROP DEFAULT;

तालिकाएँ संशोधित करने के लिए ALTER का उपयोग करना

प्रकार तालिका के साथ तालिका प्रकार बदलें -

mysql> ALTER TABLE products_tbl TYPE = INNODB;

RENAME कीवर्ड वाली तालिका का नाम बदलें -

mysql> ALTER TABLE products_tbl RENAME TO products2016_tbl;

सूचकांक रिकॉर्ड पुनर्प्राप्ति में तेजी लाने के लिए उपकरण हैं। एक इंडेक्स एक इंडेक्स किए गए कॉलम के भीतर प्रत्येक मान के लिए एक प्रविष्टि बनाता है।

सूचकांक चार प्रकार के होते हैं -

  • Primary (एक रिकॉर्ड सभी रिकॉर्ड का प्रतिनिधित्व करता है)

  • Unique (एक रिकॉर्ड कई रिकॉर्ड का प्रतिनिधित्व करता है)

  • Plain

  • Full-Text (पाठ खोज में कई विकल्पों की अनुमति देता है)।

"कुंजी" और "इंडेक्स" शब्द इस उपयोग में समान हैं।

अनुक्रमणिका एक या अधिक स्तंभों के साथ संबद्ध होती है, और तीव्र खोजों और कुशल रिकॉर्ड संगठन का समर्थन करती है। सूचकांक बनाते समय, विचार करें कि आपके प्रश्नों में कौन से कॉलम अक्सर उपयोग किए जाते हैं। फिर उन पर एक या कई इंडेक्स बनाएं। इसके अलावा, प्राथमिक कुंजी के तालिकाओं के रूप में अनुक्रमित देखें।

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

एक इंडेक्स बनाएं

आप क्रिएट टेबल ... इंडेक्स स्टेटमेंट या क्रिएट इंडेक्स स्टेटमेंट के माध्यम से एक इंडेक्स बना सकते हैं। पठनीयता, रखरखाव और सर्वोत्तम प्रथाओं का समर्थन करने वाला सबसे अच्छा विकल्प क्रिएट इंडेक्स है।

नीचे दिए गए सूचकांक के सामान्य सिंटैक्स की समीक्षा करें -

CREATE [UNIQUE or FULLTEXT or...] INDEX index_name ON table_name column;

इसके उपयोग के एक उदाहरण की समीक्षा करें -

CREATE UNIQUE INDEX top_sellers ON products_tbl product;

एक सूचकांक ड्रॉप करें

आप DROP INDEX या ALTER TABLE ... DROP के साथ एक इंडेक्स ड्रॉप कर सकते हैं। पठनीयता, रखरखाव और सर्वोत्तम प्रथाओं का समर्थन करने वाला सबसे अच्छा विकल्प DROP INDEX है।

नीचे दिए गए ड्रॉप इंडेक्स के सामान्य सिंटैक्स की समीक्षा करें -

DROP INDEX index_name ON table_name;

इसके उपयोग के एक उदाहरण की समीक्षा करें -

DROP INDEX top_sellers ON product_tbl;

एक सूचकांक का नाम बदलें

ALTER TABLE स्टेटमेंट के साथ एक इंडेक्स का नाम बदलें। नीचे दिए गए इसके सामान्य सिंटैक्स की समीक्षा करें -

ALTER TABLE table_name DROP INDEX index_name, ADD INDEX new_index_name;

इसके उपयोग के एक उदाहरण की समीक्षा करें -

ALTER TABLE products_tbl DROP INDEX top_sellers, ADD INDEX top_2016sellers;

अनुक्रमणिका का प्रबंधन

आपको सभी अनुक्रमितों की जांच करने और उन्हें ट्रैक करने की आवश्यकता होगी। किसी दिए गए तालिका से जुड़े सभी मौजूदा अनुक्रमितों को सूचीबद्ध करने के लिए SHOW INDEX का उपयोग करें। आप "\ G" जैसे विकल्प का उपयोग करके प्रदर्शित सामग्री का प्रारूप सेट कर सकते हैं, जो एक ऊर्ध्वाधर प्रारूप को निर्दिष्ट करता है।

निम्नलिखित उदाहरण की समीक्षा करें -

mysql > SHOW INDEX FROM products_tbl\G

टेबल सांख्यिकी

रिकॉर्ड्स, और प्रदान किए गए आँकड़ों की तेज़ पहुँच को देखते हुए प्रश्नों को अनुकूलित करने के लिए इंडेक्स का अत्यधिक उपयोग किया जाता है। हालांकि, कई उपयोगकर्ता इंडेक्स मेंटेनेंस को बोझिल पाते हैं। मारियाडीबी 10.0 ने भंडारण इंजन स्वतंत्र सांख्यिकी तालिकाएँ उपलब्ध कराईं, जो हर भंडारण इंजन में प्रत्येक तालिका के लिए डेटा आँकड़ों की गणना करती हैं, और यहाँ तक कि उन स्तंभों के आँकड़े भी जिन्हें अनुक्रमणित नहीं किया गया है।

कुछ ऑपरेशन गति या डिस्पोजेबल डेटा के कारण अस्थायी तालिकाओं से लाभ उठा सकते हैं। एक अस्थायी तालिका का जीवन एक सत्र की समाप्ति पर समाप्त होता है चाहे आप उन्हें कमांड प्रॉम्प्ट से नियोजित करें, एक PHP स्क्रिप्ट के साथ, या एक क्लाइंट प्रोग्राम के माध्यम से। यह विशिष्ट रूप से सिस्टम में दिखाई नहीं देता है। SHOW TABLES कमांड अस्थायी तालिका युक्त सूची को प्रकट नहीं करेगी।

एक अस्थायी तालिका बनाएँ

एक रचनात्मक तालिका कथन के भीतर मंदिर का कीवर्ड एक अस्थायी तालिका बनाता है। नीचे दिए गए एक उदाहरण की समीक्षा करें -

mysql>CREATE TEMPORARY TABLE order (
   item_name VARCHAR(50) NOT NULL
   , price DECIMAL(7,2) NOT NULL DEFAULT 0.00
   , quantity INT UNSIGNED NOT NULL DEFAULT 0
);

एक अस्थायी तालिका बनाने में, आप मौजूदा तालिकाओं को क्लोन कर सकते हैं, जिसका अर्थ है कि उनके सभी सामान्य लक्षण, LIKE खंड के साथ। अस्थायी तालिका को स्पॉन करने के लिए उपयोग किया गया CREATE TABLE कथन TEMPORARY कीवर्ड के परिणामस्वरूप लेनदेन नहीं करेगा।

हालांकि अस्थायी टेबल गैर-अस्थायी से अलग होती हैं और एक सत्र के अंत में गिरती हैं, उनके कुछ निश्चित संघर्ष हो सकते हैं -

  • वे कभी-कभी समाप्त सत्रों से भूत अस्थायी तालिकाओं के साथ संघर्ष करते हैं।

  • वे कभी-कभी गैर-अस्थायी तालिकाओं के छाया नामों के साथ संघर्ष करते हैं।

Note - अस्थाई तालिकाओं को मौजूदा गैर-अस्थायी तालिका के समान नाम रखने की अनुमति है क्योंकि मारियाबीडी इसे एक अंतर संदर्भ के रूप में देखती है।

शासन प्रबंध

MariaDB अस्थायी तालिकाएँ बनाने के लिए उपयोगकर्ताओं को विशेषाधिकार देने की आवश्यकता है। गैर-व्यवस्थापक उपयोगकर्ताओं को यह विशेषाधिकार देने के लिए एक GRANT कथन का उपयोग करें।

GRANT CREATE TEMPORARY TABLES ON orders TO 'machine122'@'localhost';

एक अस्थायी तालिका छोड़ें

यद्यपि सत्रों के अंत में अस्थायी टेबल अनिवार्य रूप से हटा दिए जाते हैं, आपके पास उन्हें हटाने का विकल्प होता है। एक अस्थायी तालिका को छोड़ने के लिए टेम्पररी कीवर्ड के उपयोग की आवश्यकता होती है, और सर्वोत्तम अभ्यास किसी भी गैर-अस्थायी से पहले अस्थायी टेबल छोड़ने का सुझाव देते हैं।

mysql> DROP TABLE order;

कुछ स्थितियों में मौजूदा तालिका की सटीक प्रतिलिपि बनाने की आवश्यकता होती है। क्रिएट ... सेलेक्ट स्टेटमेंट इस आउटपुट का उत्पादन नहीं कर सकता क्योंकि यह इंडेक्स और डिफॉल्ट वैल्यू जैसी चीजों की उपेक्षा करता है।

तालिका को डुप्लिकेट करने की प्रक्रिया इस प्रकार है -

  • स्रोत तालिका की संपूर्ण संरचना का विवरण बनाने वाली सृजन तालिका कथन का निर्माण करने के लिए शो का निर्माण करें।

  • तालिका को एक नया नाम देने के लिए कथन संपादित करें, और इसे निष्पादित करें।

  • यदि आप भी तालिका डेटा की जरूरत है एक INSERT INTO ... का चयन करें बयान का उपयोग करें।

mysql> INSERT INTO inventory_copy_tbl (
   product_id,product_name,product_manufacturer,ship_date)
   
   SELECT product_id,product_name,product_manufacturer,ship_date,
   FROM inventory_tbl;

डुप्लिकेट बनाने के लिए एक अन्य विधि क्रिएट टेबल एएस स्टेटमेंट का उपयोग करती है। बयान सभी कॉलम, कॉलम परिभाषाओं की प्रतिलिपि बनाता है, और स्रोत तालिका के डेटा के साथ कॉपी को पॉप्युलेट करता है।

नीचे दिए गए इसके सिंटैक्स की समीक्षा करें -

CREATE TABLE clone_tbl AS
   SELECT columns
   FROM original_tbl
   WHERE conditions];

नीचे इसके उपयोग के एक उदाहरण की समीक्षा करें -

CREATE TABLE products_copy_tbl AS
   SELECT *
   FROM products_tbl;

10.0.3 संस्करण में, MariaDB ने एक भंडारण इंजन पेश किया जिसे अनुक्रम के रूप में जाना जाता है। इसका तदर्थ संचालन के लिए पूर्णांक अनुक्रम उत्पन्न करता है, और फिर इसे समाप्त करता है। अनुक्रम में अवरोही या आरोही क्रम में धनात्मक पूर्णांक होते हैं, और एक आरंभ, समाप्ति और वृद्धि मूल्य का उपयोग करता है।

यह अपने वर्चुअल (डिस्क से लिखित नहीं) प्रकृति की वजह से, केवल अपनी मूल क्वेरी में कई प्रश्नों में उपयोग की अनुमति नहीं देता है। हालाँकि, अनुक्रम तालिकाओं को ALTER कमांड के माध्यम से मानक तालिकाओं में परिवर्तित किया जा सकता है। यदि परिवर्तित तालिका हटा दी जाती है, तो अनुक्रम तालिका अभी भी मौजूद है। अनुक्रम भी नकारात्मक संख्या उत्पन्न नहीं कर सकते हैं या न्यूनतम / अधिकतम पर घूम सकते हैं।

अनुक्रम इंजन स्थापित करना

अनुक्रमों का उपयोग करने के लिए अनुक्रम इंजन को स्थापित करने की आवश्यकता होती है, जिसे मारबीडीबी बाइनरी के बजाय एक प्लगइन के रूप में वितरित करता है। इसे निम्न कमांड के साथ स्थापित करें -

INSTALL SONAME "ha_sequence";

स्थापना के बाद, इसे सत्यापित करें -

SHOW ENGINES\G

याद रखें कि इंजन इंस्टालेशन के बाद, आप अनुक्रम सिंटैक्स का उपयोग करने वाले नाम के साथ एक मानक तालिका नहीं बना सकते हैं, लेकिन आप अनुक्रम-वाक्यविन्यास नाम के साथ एक अस्थायी तालिका बना सकते हैं।

अनुक्रम का निर्माण

अनुक्रम निर्माण की दो विधियाँ हैं -

  • एक तालिका बनाएं और स्तंभ को ऑटो-इंक्रीमेंट के रूप में परिभाषित करने के लिए AUTO_INCREMENT विशेषता का उपयोग करें।

  • किसी मौजूदा डेटाबेस का उपयोग करें और एक अनुक्रम का उपयोग करें अनुक्रम का उत्पादन करने के लिए क्वेरी का चयन करें। क्वेरी seq_ [FROM] _to_ [TO] या seq_ [FROM] _to_ [TO] _step_STEP सिंटैक्स का उपयोग करता है।

सर्वोत्तम प्रथाएं दूसरी विधि के उपयोग को पसंद करती हैं। नीचे दिए गए अनुक्रम निर्माण के एक उदाहरण की समीक्षा करें -

SELECT * FROM seq_77_to_99;

दृश्यों के कई उपयोग हैं -

  • संचालन में संबंधित मुद्दों से बचाने के लिए एक कॉलम के भीतर लापता मान खोजें -

SELECT myseq.seq FROM seq_22_to_28 myseq LEFT JOIN table1 t ON myseq.seq
   = x.y WHERE x.y IS NULL;
  • मूल्यों के संयोजन का निर्माण करें -

SELECT x1.seq, x2.seq FROM seq_5_to_9 x1 JOIN seq_5_to_9 x2 ORDER BY 5, 6;
  • एक संख्या के गुणकों का पता लगाएं -

SELECT seq FROM seq_3_to_100_step_4;
  • बुकिंग सिस्टम जैसे अनुप्रयोगों में उपयोग के लिए एक तारीख अनुक्रम का निर्माण करें।
  • एक समय अनुक्रम का निर्माण।

मारियाडीबी, जैसा कि पहले पाठों में चर्चा किया गया है, कुछ स्थितियों में डुप्लिकेट रिकॉर्ड और तालिकाओं की अनुमति देता है। इनमें से कुछ डुप्लिकेट वास्तव में अलग-अलग डेटा या ऑब्जेक्ट प्रकारों के कारण या ऑपरेशन ऑब्जेक्ट के अनूठे जीवन काल या भंडारण के परिणामस्वरूप डुप्लिकेट नहीं हैं। ये डुप्लिकेट भी आम तौर पर कोई समस्या नहीं है।

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

रणनीतियाँ और उपकरण

डुप्लिकेट को प्रबंधित करने के चार प्रमुख तरीके हैं -

  • जोइन के साथ उनके लिए मछली, और उन्हें एक अस्थायी तालिका के साथ हटा दें।

  • डुप्लिकेट कुंजी पर डुप्लिकेट की खोज पर अद्यतन करने के लिए INSERT का उपयोग करें ...

  • चयन कथन के परिणामों को कम करने और डुप्लिकेट को निकालने के लिए DISTINCT का उपयोग करें।

  • डुप्लिकेट के सम्मिलन को रोकने के लिए INSERT IGNORE का उपयोग करें।

अस्थायी तालिका के साथ जुड़ें का उपयोग करना

बस एक आंतरिक जुड़ाव की तरह अर्ध-सम्मिलित करें, और फिर एक अस्थायी तालिका के साथ पाए गए डुप्लिकेट को हटा दें।

INSERT का उपयोग करना

जब INSERT ... ON DUPLICATE KEY UPDATE को डुप्लिकेट यूनीक या प्राइमरी की की जानकारी मिलती है, तो यह एक अपडेट करता है। कई विशिष्ट कुंजियों की खोज पर, यह केवल पहले अपडेट करता है। इसलिए, कई अद्वितीय सूचकांकों के साथ तालिकाओं पर इसका उपयोग न करें।

निम्नलिखित उदाहरण की समीक्षा करें, जो यह बताता है कि एक आबादी वाले क्षेत्र में प्रविष्टि पर अनुक्रमित मूल्यों वाले तालिका में क्या होता है -

INSERT INTO add_dupl VALUES (1,'Apple');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

Note - यदि यह कोई कुंजी नहीं पाता है, तो INSERT ... DUPLICATE KEY पर अद्यतन सामान्य कथन की तरह निष्पादित होता है।

DISTINCT का उपयोग करना

परिणाम से डुप्लिकेट क्लॉज डुप्लिकेट को हटा देते हैं। DISTINCT क्लॉज के लिए सामान्य सिंटैक्स निम्नानुसार है -

SELECT DISTINCT fields
FROM table
[WHERE conditions];

Note - DISTINCT क्लाज के साथ एक बयान के परिणाम -

  • एक अभिव्यक्ति का उपयोग करते समय, यह इसके लिए अद्वितीय मान लौटाता है।

  • कई अभिव्यक्तियों का उपयोग करते समय, यह अद्वितीय संयोजन देता है।

  • यह NULL मूल्यों की उपेक्षा नहीं करता है; इस प्रकार, परिणामों में अद्वितीय मान के रूप में NULL भी होते हैं।

एकल अभिव्यक्ति के लिए DISTINCT क्लॉज का उपयोग करके निम्नलिखित कथन की समीक्षा करें -

SELECT DISTINCT product_id
FROM products
WHERE product_name = 'DustBlaster 5000';

कई उदाहरणों का उपयोग करके निम्नलिखित उदाहरण की समीक्षा करें -

SELECT DISTINCT product_name, product_id
FROM products
WHERE product_id < 30

INSERT IGNORE का उपयोग करना

एक INSERT IGNORE स्टेटमेंट मारियाडीबी को डुप्लिकेट रिकॉर्ड की खोज पर प्रविष्टि को रद्द करने का निर्देश देता है। नीचे दिए गए इसके उपयोग के एक उदाहरण की समीक्षा करें -

mysql> INSERT IGNORE INTO customer_tbl (LN, FN)
   VALUES( 'Lex', 'Luther');

इसके अलावा, डुप्लिकेट के पीछे के तर्क पर ध्यान दें। कुछ तालिकाओं को उस तालिका डेटा की प्रकृति के आधार पर डुप्लिकेट की आवश्यकता होती है। डुप्लिकेट रिकॉर्ड को प्रबंधित करने के लिए आपकी रणनीति में जरूरत के अनुसार रुकें।

उपयोगकर्ता इनपुट को स्वीकार करने का सरल कार्य शोषण के द्वार खोलता है। समस्या मुख्य रूप से डेटा के तार्किक प्रबंधन से उपजी है, लेकिन सौभाग्य से, इन बड़ी खामियों से बचना काफी आसान है।

SQL इंजेक्शन के अवसर आम तौर पर एक नाम की तरह डेटा दर्ज करने वाले उपयोगकर्ताओं पर होते हैं, और इस इनपुट का विश्लेषण करने में कोड तर्क विफल रहता है। कोड, इसके बजाय, एक हमलावर को एक MariaDB कथन सम्मिलित करने की अनुमति देता है, जो डेटाबेस पर चलेगा।

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

if(check_match("/^\w{8,20}$/", $_GET['user_name'], $matches)) {
   $result = mysql_query("SELECT * FROM system_users WHERE user_name = $matches[0]");
} else {
   echo "Invalid username";
}

इसके अलावा, इनपुट अड़चनें बनाने में REGEXP ऑपरेटर और LIKE क्लॉज का उपयोग करें।

इनपुट के सभी प्रकार के आवश्यक स्पष्ट नियंत्रण पर विचार करें जैसे कि -

  • उपयोग किए गए भागने वाले पात्रों को नियंत्रित करें।

  • इनपुट के लिए विशिष्ट उपयुक्त डेटा प्रकारों को नियंत्रित करें। आवश्यक डेटा प्रकार और आकार तक इनपुट को सीमित करें।

  • दर्ज किए गए डेटा के सिंटैक्स को नियंत्रित करें। आवश्यक पैटर्न के बाहर कुछ भी अनुमति न दें।

  • अनुमत शर्तों को नियंत्रित करें। SQL कीवर्ड को ब्लैकलिस्ट करें।

आप इंजेक्शन के हमलों के खतरों को नहीं जान सकते हैं, या उन्हें महत्वहीन मान सकते हैं, लेकिन वे सुरक्षा चिंताओं की सूची में शीर्ष पर हैं। इसके अलावा, इन दो प्रविष्टियों के प्रभाव पर विचार करें -

1=1
-or-
*

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

इसके अलावा, किसी भी प्रोग्रामिंग / स्क्रिप्टिंग भाषा द्वारा प्रदान किए गए पैटर्न मिलान और नियमित अभिव्यक्ति टूल पर विचार करें, जो कि MariaDB के साथ जोड़ा गया है, जो अधिक नियंत्रण प्रदान करते हैं, और कभी-कभी नियंत्रण भी।

डेटा व्यवसाय और संचालन की नींव के रूप में कार्य करता है, और विभिन्न संभावित खतरों (जैसे, हमलावर, सिस्टम विफलताओं, खराब उन्नयन, और रखरखाव त्रुटियों) के साथ, बैकअप महत्वपूर्ण रहता है। ये बैकअप कई रूप लेते हैं, और उन प्रक्रियाओं के भीतर विकल्पों का एक व्यापक सेट के साथ बनाने के लिए कई विकल्प मौजूद हैं। याद रखने वाली महत्वपूर्ण बातें डेटाबेस प्रकार, महत्वपूर्ण जानकारी और शामिल संरचना हैं। यह जानकारी आपके सर्वोत्तम विकल्प को निर्धारित करती है।

विकल्प

बैकअप के लिए मुख्य विकल्पों में तार्किक बैकअप और भौतिक बैकअप शामिल हैं। लॉजिकल बैकअप डेटा को पुनर्स्थापित करने के लिए SQL स्टेटमेंट को होल्ड करता है। भौतिक बैकअप में डेटा की प्रतियां होती हैं।

  • Logical backupsभौतिक बैकअप के विपरीत एक अलग कॉन्फ़िगरेशन के साथ किसी अन्य मशीन पर डेटा को पुनर्स्थापित करने का लचीलापन प्रदान करते हैं, जो अक्सर एक ही मशीन और डेटाबेस प्रकार तक सीमित होते हैं। डेटाबेस और टेबल स्तर पर तार्किक बैकअप होते हैं, और भौतिक निर्देशिका और फ़ाइल स्तर पर होते हैं।

  • Physical backupsतार्किक की तुलना में आकार में छोटे हैं, और प्रदर्शन करने और पुनर्स्थापित करने के लिए भी कम समय लगता है। भौतिक बैकअप में लॉग और कॉन्फ़िगरेशन फ़ाइलें भी शामिल हैं, लेकिन तार्किक बैकअप नहीं है।

बैकअप उपकरण

MariaDB बैकअप के लिए मुख्य उपकरण का उपयोग किया जाता है mysqldump। यह तार्किक बैकअप और लचीलापन प्रदान करता है। यह छोटे डेटाबेस के लिए एक उत्कृष्ट विकल्प भी साबित होता है।Mysqldumpएसक्यूएल, सीएसवी, एक्सएमएल और कई अन्य स्वरूपों में डेटा को डंप करता है। इसका उत्पादन स्पष्ट निर्देश के बिना संग्रहीत प्रक्रियाओं, विचारों और घटनाओं को बरकरार नहीं रखता है।

के लिए तीन विकल्प हैं mysqldump बैकअप -

  • Raw data - टैट विकल्प के माध्यम से एक टेबल को कच्चे डेटा फ़ाइल के रूप में डंप करें, जो फ़ाइल के गंतव्य को भी निर्दिष्ट करता है -

$ mysqldump -u root -p --no-create-info \
   --tab=/tmp PRODUCTS products_tbl
  • Data/Definitions export- यह विकल्प एक या एक से अधिक तालिकाओं को फ़ाइल में निर्यात करने की अनुमति देता है, और मेजबान मशीन पर सभी मौजूदा डेटाबेस का समर्थन करता है। किसी फ़ाइल में सामग्री या परिभाषाएँ निर्यात करने का एक उदाहरण देखें

$ mysqldump -u root -p PRODUCTS products_tbl > export_file.txt
  • Transfer - आप डेटाबेस और तालिकाओं को किसी अन्य होस्ट पर भी आउटपुट कर सकते हैं

$ mysqldump -u root -p database_name \
   | mysql -h other-host.com database_name

चयन का उपयोग ... OUTFILE वक्तव्य में

डेटा निर्यात करने के लिए एक अन्य विकल्प SELECT ... INTOFILE स्टेटमेंट को नियोजित करता है। यह सरल विकल्प तालिका को एक सरल स्वरूपित पाठ फ़ाइल में आउटपुट करता है -

mysql> SELECT * FROM products_tbl
   -> INTO OUTFILE '/tmp/products.txt';

इसकी विशेषताएँ आपके पसंदीदा विनिर्देशों के लिए फ़ाइल को प्रारूपित करने की अनुमति देती हैं।

इस कथन के निम्नलिखित गुणों पर ध्यान दें -

  • फ़ाइल का नाम आउटपुट के लिए अपना वांछित स्थान निर्दिष्ट करना चाहिए।

  • स्टेटमेंट को निष्पादित करने के लिए आपको MariaDB फ़ाइल विशेषाधिकार की आवश्यकता होती है।

  • आउटपुट फ़ाइल नाम अद्वितीय होना चाहिए।

  • आपको होस्ट पर लॉगिन क्रेडेंशियल की आवश्यकता है।

  • UNIX वातावरण में, आउटपुट फ़ाइल विश्व पठनीय है, लेकिन इसका सर्वर स्वामित्व इसे हटाने की आपकी क्षमता को प्रभावित करता है। सुनिश्चित करें कि आपके पास विशेषाधिकार हैं।

बैकअप में कनेक्शन का उपयोग करना

कनेक्ट हैंडलर डेटा के निर्यात की अनुमति देता है। यह उन परिस्थितियों में मुख्य रूप से उपयोगी साबित होता है जब SELECT ... INTO OUTFILE ऑपरेशन फ़ाइल प्रारूप का समर्थन नहीं करता है।

निम्नलिखित उदाहरण की समीक्षा करें -

create table products
engine = CONNECT table_type = XML file_name = 'products.htm' header = yes
option_list = 'name = TABLE,coltype = HTML,attribute = border = 1;cellpadding = 5'

select plugin_name handler, plugin_version version, plugin_author
author, plugin_description description, plugin_maturity maturity
from information_schema.plugins where plugin_type = 'STORAGE ENGINE';

अन्य उपकरण

बैकअप के अन्य विकल्प इस प्रकार हैं -

  • XtraBackup- यह विकल्प XtraDB / InnoDB डेटाबेस को लक्षित करता है और किसी भी भंडारण इंजन के साथ काम करता है। Percona की आधिकारिक साइट के इस टूल के बारे में अधिक जानें।

  • Snapshots- कुछ फाइल सिस्टम स्नैपशॉट की अनुमति देते हैं। इस प्रक्रिया में रीड लॉक के साथ टेबल को फ्लश करना, स्नैपशॉट को माउंट करना, टेबल को अनलॉक करना, स्नैपशॉट को कॉपी करना और फिर स्नैपशॉट को अनमाउंट करना शामिल है।

  • LVM- यह लोकप्रिय तरीका एक पर्ल स्क्रिप्ट को नियोजित करता है। यह हर टेबल पर रीड लॉक होता है और डिस्क में कैश फ्लश करता है। फिर यह एक स्नैपशॉट प्राप्त करता है और तालिकाओं को अनलॉक करता है। अधिकारी से सलाह लेंmylvmbackup अधिक जानकारी के लिए वेबसाइट।

  • TokuBackup- पेरकोना द्वारा प्रदान किया गया यह समाधान इनोबीडी बैकअप विकल्पों की समस्याओं और सीमाओं को ध्यान में रखते हुए हॉट बैकअप प्रदान करता है। यह फ़ाइलों की एक ट्रांसएक्शनल साउंड कॉपी तैयार करता है, जबकि एप्लिकेशन उन्हें हेरफेर करना जारी रखते हैं। अधिक जानकारी के लिए पेरकोना वेबसाइट पर क्लिक करें ।।

INNODB विचार

InnoDB प्रदर्शन बढ़ाने के लिए एक बफर पूल का उपयोग करता है। एक बैकअप में, पूरी तालिका को बफर पूल में कॉपी करने से बचने के लिए इनोबीडी को कॉन्फ़िगर करें क्योंकि तार्किक बैकअप आमतौर पर पूर्ण टेबल स्कैन करते हैं।

इस अध्याय में, हम विभिन्न बैकअप लोडिंग विधियों के बारे में जानेंगे। एक बैकअप से डेटाबेस को पुनर्स्थापित करना एक सरल और कभी-कभी बहुत लंबी प्रक्रिया है।

लोडिंग डेटा में तीन विकल्प होते हैं: लोड डेटा स्टेटमेंट, माईस्क्लीमपोर्ट, और एक साधारण माईस्क्ल्पम्प रिस्टोर।

लोड डेटा का उपयोग करना

लोड डाटा स्टेटमेंट एक थोक लोडर के रूप में कार्य करता है। पाठ फ़ाइल लोड करने वाले इसके उपयोग के एक उदाहरण की समीक्षा करें -

mysql> LOAD DATA LOCAL INFILE 'products_copy.txt' INTO TABLE empty_tbl;

लोड डेटा स्टेटमेंट के निम्नलिखित गुणों पर ध्यान दें -

  • MariaDB को होस्ट की गहन खोज करने से रोकने के लिए LOCAL कीवर्ड का उपयोग करें, और एक बहुत ही विशिष्ट पथ का उपयोग करें।

  • यह कथन एक प्रारूप को मानता है जिसमें लाइनफीड्स (न्यूलाइन) द्वारा समाप्त लाइनों और टैब द्वारा अलग किए गए डेटा मान शामिल हैं।

  • स्पष्ट रूप से एक लाइन पर फ़ील्ड्स को फ़ॉर्मेट करने के लिए FIELDS क्लॉज़ का उपयोग करें। लाइन समाप्त करने के लिए LINES क्लॉज का उपयोग करें। नीचे एक उदाहरण की समीक्षा करें।

mysql> LOAD DATA LOCAL INFILE 'products_copy.txt' INTO TABLE empty_tbl
   FIELDS TERMINATED BY '|'
   LINES TERMINATED BY '\n';
  • स्टेटमेंट मानता है कि डेटाफाइल के भीतर कॉलम टेबल के समान क्रम का उपयोग करता है। यदि आपको एक अलग क्रम सेट करने की आवश्यकता है, तो आप फ़ाइल को निम्नानुसार लोड कर सकते हैं -

mysql> LOAD DATA LOCAL INFILE 'products_copy.txt' INTO TABLE empty_tbl (c, b, a);

MYSQLIMPORT का उपयोग करना

Mysqlimport टूल कमांड लाइन से समान संचालन की अनुमति देने वाले LOAD DATA रैपर के रूप में कार्य करता है।

डेटा निम्नानुसार लोड करें -

$ mysqlimport -u root -p --local database_name source_file.txt

प्रारूपण निम्नानुसार निर्दिष्ट करें -

$ mysqlimport -u root -p --local --fields-terminated-by="|" \
   --lines-terminated-by="\n" database_name source_file.txt

उपयोग --columns कॉलम ऑर्डर निर्दिष्ट करने का विकल्प -

$ mysqlimport -u root -p --local --columns=c,b,a \
   database_name source_file.txt

MYSQLDUMP का उपयोग करना

के साथ बहाल करना mysqldump होस्ट में डंप फ़ाइल वापस लोड करने के लिए इस सरल कथन की आवश्यकता है -

shell> mysql database_name < source_file.sql

विशेष प्रभार और उद्धरण

LOAD DATA स्टेटमेंट में, उद्धरण और विशेष वर्णों की सही व्याख्या नहीं की जा सकती है। यह कथन निर्विवाद मूल्यों को मानता है और बैकस्लैशों को पलायन पात्रों के रूप में मानता है। स्वरूपण निर्दिष्ट करने के लिए FIELDS क्लॉज का उपयोग करें। "ENCLOSED BY" के साथ उद्धरणों को इंगित करें, जो डेटा मानों से उद्धरणों को अलग करने का कारण बनता है। "ESCAPED BY" के साथ बदलें

इस अध्याय में सबसे अधिक उपयोग किए जाने वाले कार्यों की एक सूची है, जो परिभाषाएँ, स्पष्टीकरण और उदाहरण पेश करते हैं।

MariaDB सकल कार्य

अधिकतर अक्सर उपयोग किए जाने वाले सामूहिक कार्य नीचे दिए गए हैं -

अनु क्रमांक नाम और विवरण
1

COUNT

यह रिकॉर्ड की संख्या को गिनता है।

Example - ग्राहक से चयन करें (*) ग्राहक_टेबल;

2

MIN

यह अभिलेखों के एक सेट के न्यूनतम मूल्य को प्रकट करता है।

Example - संगठन का चयन करें, MIN (खाता) संविदा समूह संगठन से;

3

MAX

यह अभिलेखों के एक सेट के अधिकतम मूल्य को प्रकट करता है।

Example - संगठन का चयन करें, MAX (account_size) संविदा समूह से;

4

AVG

यह रिकॉर्ड के एक सेट के औसत मूल्य की गणना करता है।

Example - अनुबंध से AVG (account_size) का चयन करें;

5

SUM

यह रिकॉर्ड के एक सेट की राशि की गणना करता है।

Example - SUM (account_size) का चयन अनुबंधों से करें;

मारियाडीबी आयु गणना

TIMESTAMPDIFF समारोह उम्र की गणना करने का एक तरीका प्रदान करता है -

SELECT CURDATE() AS today;
SELECT ID, DOB, TIMESTAMPDIFF(YEAR,DOB,'2015-07-01') AS age FROM officer_info;

मारियाबेड स्ट्रिंग स्ट्रिंग कॉनटेनटेशन

CONCATफंक्शन एक परिणामी ऑपरेशन के बाद परिणामी स्ट्रिंग देता है। आप एक या अधिक तर्कों का उपयोग कर सकते हैं। नीचे दिए गए इसके सिंटैक्स की समीक्षा करें -

SELECT CONCAT(item, item,...);

निम्नलिखित उदाहरण की समीक्षा करें -

SELECT CONCAT('Ram', 'bu', 'tan');
Output:Rambutan

MariaDB दिनांक / समय कार्य

नीचे दिए गए महत्वपूर्ण कार्य हैं -

अनु क्रमांक नाम और विवरण
1

CURDATE()

यह yyyy-mm-dd या yyyymmdd प्रारूप में दिनांक लौटाता है।

Example - का चयन करें ();

2

DATE()

यह कई प्रारूपों में तारीख लौटाता है।

Example ProductCREATE TABLE product_release_tbl (x DATE);

3

CURTIME()

यह HH: MM: SS या HHMMSS.uuuuuu प्रारूप में समय देता है।

Example - सही समय () का चयन करें;

4

DATE_SUB()

यह निर्दिष्ट तिथि से कई दिनों को जोड़ता या घटाता है।

Example - सेलेक्ट DATE_SUB ('2016-02-08', INTERVAL 60 DAY);

5

DATEDIFF()

यह दो तिथियों के बीच के दिनों को निर्धारित करता है।

Example - चयनित तिथि ('2016-01-01 23:59:59', '2016-01-03');

6

DATE ADD()

यह किसी भी इकाई को दिनांक और समय से / समय जोड़ता है या घटाता है।

Example - चयन DATE_ADD ('2016-01-04 23:59:59', INTERVAL 22 सेकंड);

7

EXTRACT()

यह तारीख से एक इकाई निकालता है।

Example - का चयन करें ('2016-01-08' से वर्ष);

8

NOW()

यह yyyy-mm-dd hh: mm: ss या yyyymmddhhmmss.uuuuuu प्रारूप में वर्तमान दिनांक और समय देता है।

Example - अभी चयन करें ();

9

DATE FORMAT()

यह निर्दिष्ट प्रारूप स्ट्रिंग के अनुसार दिनांक को प्रारूपित करता है।

Example - Select DATE_FORMAT ('2016-01-09 20:20:00', '% W% M% Y');

निम्नलिखित कुछ महत्वपूर्ण समय कार्य हैं -

अनु क्रमांक नाम और विवरण
1

HOUR()

यह समय के घंटे, या बीते हुए घंटों को वापस करता है।

Example - चुनें घंटे ('19: 17: 09 ');

2

LOCALTIME()

यह अब () की तरह कार्य करता है।

3

MICROSECOND()

यह समय के माइक्रोसेकंड को वापस करता है।

Example - चयनित माइक्रोसेकंड ('16: 30: 00.543876 ');

4

MINUTE()

यह समय के मिनट लौटाता है।

Example - चयन मिनट ('2016-05-22 17:22:01');

5

SECOND()

यह तारीख के सेकंड लौटाता है।

Example - सेकेंड सेकंड ('2016-03-12 16: 30: 04.000001');

6

TIME_FORMAT()

यह निर्दिष्ट प्रारूप स्ट्रिंग के अनुसार समय को प्रारूपित करता है।

Example - Select TIME_FORMAT ('22: 02: 20 ','% H% k% h% I% l '));

7

TIMESTAMP()

यह yyyy-mm-dd hh: mm: dd प्रारूप में एक गतिविधि के लिए टाइमस्टैम्प प्रदान करता है।

Example - बनाएँ टेबल आदेश_ (आईडी INT, tmst TIMESTAMP);

मारियाबडी न्यूमेरिक फंक्शंस

नीचे दिए गए MariaDB में कुछ महत्वपूर्ण संख्यात्मक कार्य हैं -

अनु क्रमांक नाम और विवरण
1

TRUNCATE()

यह दशमलव स्थान विनिर्देश में एक छोटा नंबर देता है।

Example - चयनित ट्रंकट (101.222, 1);

2

COS()

यह एक्स रेडियंस के कोसाइन को लौटाता है।

Example - चयनित COS (PI ());

3

CEILING()

यह x के नीचे सबसे छोटा पूर्णांक देता है।

Example - सिलेक्ट सिबिलिंग (2.11);

4

DEGREES()

यह रेडियन को डिग्री में परिवर्तित करता है।

Example - चयनित DEGREES (PI ());

5

DIV()

यह पूर्णांक विभाजन करता है।

Example - 100 DIV 4 का चयन करें;

6

EXP()

यह एक्स की शक्ति के लिए ई लौटाता है।

Example - का चयन करें EXP (2);

7

FLOOR()

यह x के ऊपर सबसे बड़ा पूर्णांक लौटाता है।

Example - चुनें फर्श (2.01);

8

LN()

यह x का प्राकृतिक लघुगणक लौटाता है।

Example - एलएन (3) का चयन करें;

9

LOG()

यह एक निश्चित आधार पर प्राकृतिक लघुगणक या लघुगणक लौटाता है।

Example - चयनित लॉग (3);

10

SQRT()

यह वर्गमूल को लौटाता है।

Example - SQRT का चयन करें (16);

मारियाडीबी स्ट्रिंग फंक्शंस

महत्वपूर्ण स्ट्रिंग फ़ंक्शन नीचे दिए गए हैं -

अनु क्रमांक नाम और विवरण
1

INSTR()

यह एक विकल्प के पहले उदाहरण की स्थिति लौटाता है।

Example - चयनित INSTR ('रामबूटन', 'तन');

2

RIGHT()

यह सबसे सही स्ट्रिंग वर्ण देता है।

Example - राईट राइट (an रामबुटन ’, 3);

3

LENGTH()

यह एक स्ट्रिंग की बाइट लंबाई लौटाता है।

Example - चयन लेंथ ('रामबुटन');

4

LOCATE()

यह एक विकल्प के पहले उदाहरण की स्थिति लौटाता है।

Example - सेलेक्ट लोकेट ('टैन', 'रामबुटन');

5

INSERT()

यह एक निश्चित स्थिति में निर्दिष्ट विकल्प के साथ एक स्ट्रिंग लौटाता है, जिसे संशोधित किया गया था।

Example - चुनें INSERT ('रामपुतन', 4, 1, 'बी');

6

LEFT()

यह बाईं ओर के वर्ण लौटाता है।

Example - सेफ्टी लेफ्ट ('रामबूटन', 3);

7

UPPER()

यह वर्णों को अपरकेस में बदलता है।

Example - चुनें UPPER (अंतिम नाम);

8

LOWER()

यह वर्णों को निचले हिस्से में बदलता है।

Example - चयन कम (lastname);

9

STRCMP()

यह स्ट्रिंग्स और रिटर्न 0 की तुलना करता है जब वे समान होते हैं।

Example - स्ट्रेट स्ट्राप ('अंडा', 'पनीर');

10

REPLACE()

यह वर्णों को बदलने के बाद एक स्ट्रिंग लौटाता है।

Example - चुनें अवशेष ('sully', 'l', 'n');

1 1

REVERSE()

यह एक स्ट्रिंग में वर्णों को उलट देता है।

Example - सही समीक्षा ('रेसकार');

12

REPEAT()

यह दिए गए वर्णों को x बार दोहराते हुए एक स्ट्रिंग देता है।

Example - चुनें रिपीट ('हा', 10);

13

SUBSTRING()

यह एक स्ट्रिंग से एक विकल्प देता है, स्थिति x पर शुरू होता है।

Example - सेलेक्टिंग सब्ब्सिंग ('रामबूटन', 3);

14

TRIM()

यह एक स्ट्रिंग से अनुगामी / अग्रणी वर्णों को निकालता है।

Example - सिलेक्ट ट्रिम ('_rambutan' से '_' लेवलिंग);