मालवेअर हे अनाहूत किंवा धोकादायक प्रोग्राम आहेत जे...
![व्हायरस आणि मालवेअर काढून टाकण्यासाठी सर्वोत्तम उपयुक्तता](https://i2.wp.com/webhelper.info/images/danger.jpg)
MySQL हा रिलेशनल डेटाबेसचा एक प्रकार आहे. MySQL एक सर्व्हर आहे ज्यावर विविध वापरकर्ते कनेक्ट करू शकतात.
जेव्हा तुम्ही इंटरनेटशी कनेक्ट करता, तेव्हा तुम्ही तुमचे वापरकर्तानाव आणि पासवर्ड तसेच तुम्ही कनेक्ट करत असलेल्या सर्व्हरचे नाव टाकता का? MySQL सह काम करताना, समान प्रणाली वापरली जाते.
आणखी एक गोष्ट: रिलेशनल डेटाबेस म्हणजे काय? रिलेशनल म्हणजे टेबलवर आधारित. मायक्रोसॉफ्टचा प्रसिद्ध स्प्रेडशीट एडिटर, एक्सेल, प्रत्यक्षात रिलेशनल डेटाबेस एडिटर आहे.
PHP मध्ये MySQL सर्व्हरशी कनेक्ट करण्यासाठी, mysqli_connect() फंक्शन वापरा. हे फंक्शन तीन वितर्क घेते: सर्व्हरचे नाव, वापरकर्तानाव आणि पासवर्ड.
mysqli_connect() फंक्शन कनेक्शन आयडेंटिफायर परत करते, ते व्हेरिएबलमध्ये साठवले जाते आणि नंतर डेटाबेससह कार्य करण्यासाठी वापरले जाते.
MySQL सर्व्हर कनेक्शन कोड:
$link = mysqli_connect("लोकलहोस्ट", "रूट", "");
या प्रकरणात, मी Denwere वर स्थानिक मशीनवर काम करत आहे, म्हणून होस्टनाव लोकलहोस्ट आहे, वापरकर्तानाव रूट आहे आणि पासवर्ड नाही.
MySQL सह कार्य पूर्ण केल्यानंतर कनेक्शन देखील बंद करणे आवश्यक आहे. mysqli_close() फंक्शन कनेक्शन बंद करण्यासाठी वापरले जाते. चला उदाहरण विस्तृत करूया:
$link = mysqli_connect("लोकलहोस्ट", "रूट", ""); जर (!$link) die("Error"); mysqli_close($link);
येथे आम्ही सत्यासाठी कनेक्शन आयडेंटिफायर तपासले; जर आमच्या कनेक्शनमध्ये काही चूक असेल, तर प्रोग्राम कार्यान्वित होणार नाही, die() फंक्शन त्याची अंमलबजावणी थांबवेल आणि ब्राउझरमध्ये एक त्रुटी संदेश प्रदर्शित करेल.
कनेक्शन तपासण्यासाठी खालील कार्ये वापरली जातात:
mysqli_get_host_info() फंक्शन वापरल्या जाणाऱ्या कनेक्शनचा प्रकार असलेली स्ट्रिंग देते.
हे देखील लक्षात घ्या की define कमांड वापरून, मी सर्व कनेक्शन पॅरामीटर्स स्थिरांक म्हणून सेव्ह केले आहेत. जेव्हा तुम्ही मोठे प्रकल्प लिहिता आणि MySQL सर्व्हरशी जोडलेल्या अनेक फाईल्स असतात, तेव्हा कनेक्शन पॅरामीटर्स वेगळ्या फाईलमध्ये संग्रहित करणे आणि समाविष्ट किंवा आवश्यक फंक्शन वापरून ते समाविष्ट करणे सोयीचे असते.
MySQL सर्व्हरमध्ये अनेक डेटाबेस असू शकतात. सर्व प्रथम, आम्हाला काम करण्यासाठी आवश्यक असलेला आधार निवडणे आवश्यक आहे. PHP मध्ये, mysqli_connect() फंक्शनमध्ये यासाठी आणखी एक पॅरामीटर आहे - डेटाबेस नाव.
मी ते माझ्या संगणकावर phpMyAdmin द्वारे टेस्टर नावाने तयार केले आहे. चला त्याच्याशी कनेक्ट करूया:
$link = mysqli_connect("लोकलहोस्ट", "रूट", "", "टेस्टर"); जर (!$link) die("Error"); mysql_close($link);
म्हणून, आम्ही काम करण्यासाठी डेटाबेस निवडला आहे. परंतु आपल्याला माहिती आहे की, रिलेशनल डेटाबेसमध्ये टेबल असतात आणि आमच्या डेटाबेसमध्ये अद्याप टेबल नाहीत. डेटाबेस रिकामा, टेबलशिवाय तयार केला जातो. त्यात टेबल्स स्वतंत्रपणे जोडणे आवश्यक आहे. आता त्यात PHP वापरून टेबल जोडू.
MySQL डेटाबेसच्या नावावर, SQL भाग म्हणजे स्ट्रक्चर्ड क्वेरी लँग्वेज, जी संरचित क्वेरी भाषा म्हणून भाषांतरित करते. आम्ही SQL मध्ये क्वेरी लिहू आणि त्यांना PHP प्रोग्राममधून MySQL सर्व्हरवर पाठवू.
टेबल तयार करण्यासाठी आम्हाला फक्त CREATE TABLE कमांड जारी करावी लागेल. चला वापरकर्ते नावाचे एक टेबल तयार करू ज्याचे कॉलम वापरकर्त्यांचे लॉगिन (लॉगिन कॉलम) आणि पासवर्ड (पासवर्ड कॉलम) साठवतील.
$query = "टेबल वापरकर्ते तयार करा(लॉगिन VARCHAR(20), पासवर्ड VARCHAR(20))";
या कोडमध्ये, आम्ही $query व्हेरिएबलला एसक्यूएल क्वेरीचे प्रतिनिधित्व करणारी मजकूराची स्ट्रिंग नियुक्त केली आहे. आम्ही वापरकर्ते नावाची टेबल तयार करतो ज्यात दोन कॉलम लॉगिन आणि पासवर्ड असतात, दोन्ही VARCHAR(20) डेटा प्रकार. आम्ही डेटा प्रकारांबद्दल नंतर बोलू, आत्ता मी फक्त लक्षात घेतो की VARCHAR(20) 20 वर्णांची कमाल लांबी असलेली स्ट्रिंग आहे.
आमची क्वेरी MySQL सर्व्हरवर पाठवण्यासाठी आम्ही PHP फंक्शन mysqli_query() वापरतो. ऑपरेशन यशस्वी झाल्यास हे फंक्शन एक सकारात्मक संख्या देते आणि त्रुटी आढळल्यास खोटी (विनंती वाक्यरचना चुकीची आहे किंवा प्रोग्रामला विनंती कार्यान्वित करण्याची परवानगी नाही).
$link = mysqli_connect("लोकलहोस्ट", "रूट", "", "टेस्टर"); जर (!$link) die("Error"); $query = "टेबल वापरकर्ते तयार करा(लॉगिन VARCHAR(20), पासवर्ड VARCHAR(20))"; mysqli_query($query); mysqli_close($link);
SQL क्वेरी व्हेरिएबलमध्ये लिहिण्याची गरज नाही; ती थेट mysql_query() फंक्शनसाठी वितर्क म्हणून लिहिली जाऊ शकते. हे फक्त कोड अधिक वाचनीय दिसते.
या स्क्रिप्टमध्ये एक कमतरता आहे - ती ब्राउझरला काहीही आउटपुट करत नाही. चला एक संदेश जोडूया:
$link = mysqli_connect("लोकलहोस्ट", "रूट", "", "टेस्टर"); जर (!$link) die("Error"); $query = "टेबल वापरकर्ते तयार करा(लॉगिन VARCHAR(20), पासवर्ड VARCHAR(20))"; जर (mysqli_query($query)) echo "टेबल तयार केले गेले आहे."; अन्यथा प्रतिध्वनी "टेबल तयार नाही."; mysqli_close($link);
आम्ही ही स्क्रिप्ट पुन्हा चालवल्यास, आम्हाला ब्राउझरमध्ये एक संदेश दिसेल: "टेबल तयार केले गेले नाही." वस्तुस्थिती अशी आहे की टेबल पहिल्या लॉन्च दरम्यान तयार केले गेले होते आणि पुन्हा त्याच नावाने टेबल तयार करणे अशक्य आहे. आम्हाला त्रुटीच्या परिस्थितीचा सामना करावा लागतो, त्यामुळे MySQL सह काम करताना त्रुटी हाताळण्याबद्दल बोलण्याची वेळ आली आहे.
प्रोग्राम डीबग करताना, आम्हाला त्रुटीबद्दल अचूक माहितीची आवश्यकता असू शकते. जेव्हा MySQL मध्ये एरर येते, तेव्हा डेटाबेस सर्व्हर त्रुटी क्रमांक आणि त्याच्या वर्णनासह एक ओळ सेट करतो. या डेटामध्ये प्रवेश करण्यासाठी PHP कडे विशेष कार्ये आहेत.
आता आपल्या स्क्रिप्टमध्ये mysql_error() फंक्शन जोडू.
$link = mysql_connect("लोकलहोस्ट", "रूट", "", "टेस्टर"); जर (!$link) die("Error"); $query = "टेबल वापरकर्ते तयार करा(लॉगिन VARCHAR(20), पासवर्ड VARCHAR(20))"; जर (mysqli_query($query)) echo "टेबल तयार केले गेले आहे."; अन्यथा प्रतिध्वनी "टेबल तयार नाही: ".mysqli_error(); mysqli_close($link);
आता आमची स्क्रिप्ट ब्राउझरला ओळ परत करेल: "टेबल तयार नाही: टेबल "वापरकर्ते" आधीच अस्तित्वात आहे."
तर, आता आमच्याकडे एक टेबल आहे ज्याची आम्हाला गरज नाही. डेटाबेसमधून टेबल्स कसे टाकायचे हे शिकण्याची वेळ आली आहे.
टेबल ड्रॉप करण्यासाठी, टेबलच्या नावानंतर ड्रॉप टेबल कमांड वापरा.
$link = mysqli_connect("लोकलहोस्ट", "रूट", "", "टेस्टर"); जर (!$link) die("Error"); $query = "ड्रॉप टेबल वापरकर्ते"; जर (!mysqli_query($query)) echo "टेबल हटवताना त्रुटी: ".mysqli_error(); अन्यथा प्रतिध्वनी "टेबल हटविले."; mysqli_close($link);
तर, आम्ही MySQL च्या मूलभूत गोष्टींवर प्रभुत्व मिळवले आहे. आम्ही काय करायला शिकलो:
मग आम्ही MySQL डेटा प्रकार जवळून पाहू.
पुढील धडा वाचा:
ज्याने वेब तंत्रज्ञानावर प्रभुत्व मिळवण्याचे ध्येय ठेवले आहे त्यांना लवकरच किंवा नंतर SQL भाषेवर प्रभुत्व मिळवणे आवश्यक आहे - एक संरचित क्वेरी भाषा जी रिलेशनल डेटाबेसमध्ये डेटा तयार करण्यासाठी आणि व्यवस्थापित करण्यासाठी वापरली जाते. जर आपण आधुनिक वेब अनुप्रयोगाबद्दल बोललो तर, आज जवळजवळ प्रत्येक अनुप्रयोग DBMS - डेटाबेस व्यवस्थापन प्रणालीशी संवाद साधतो.
वेब ऍप्लिकेशन्ससह काम करण्यासाठी सर्वात लोकप्रिय DBMS म्हणजे MySQL. आज, इंटरनेटवर चालणाऱ्या जवळपास सर्व वेबसाइट MySQL DBMS शी संवाद साधतात. अर्थात, मायएसक्यूएल हा एकमेव डीबीएमएस नाही, इतर अनेक आहेत, परंतु असे दिसून आले की ते सर्वात लोकप्रिय आहे. त्यामुळे, वेब ऍप्लिकेशन डेव्हलपरला MySQL DBMS आणि SQL भाषेवर प्रभुत्व असणे आवश्यक आहे.
तरीही डझनभर पुस्तके विकत घेण्याची किंवा डाउनलोड करण्याची गरज नाही, तुम्ही ती लगेच वाचणार नाही, आणि जरी तुम्ही ती मिळवली तरी ते तुम्हाला फार मोठे परिणाम देणार नाहीत. परिणाम आवश्यक आहे, जेव्हा आपण काहीतरी करतो आणि सतत पुस्तके वाचत नाही तेव्हाच आपल्याला तो मिळू शकतो. पुस्तके वाचणे चांगले आहे, परंतु सराव करणे अधिक चांगले आहे, अनुभव आणि कौशल्ये मिळवण्याचा हा एकमेव मार्ग आहे.
MySQL शिकण्यासाठी एक चांगले पुस्तक निवडा. या पुस्तकावर लक्ष केंद्रित करा, ते वाचा, प्रत्येक प्रकरणाचा सराव करा. जर तुम्ही एखाद्या गोष्टीवर चांगले प्रभुत्व मिळवले नसेल, तर त्याचा सराव करा, परत जाण्यास घाबरू नका आणि वाचा आणि ते आणखी काही वेळा करा. मी ऍलन बेव्हलीचे "लर्निंग SQL" पुस्तक वाचण्याची शिफारस करतो, या पुस्तकाने मला खूप मदत केली. पुस्तक सामान्य लोकांसाठी सोप्या भाषेत लिहिलेले आहे, पुस्तकात मायएसक्यूएल सर्व्हर कसे स्थापित करावे, ऑपरेटर, फिल्टर इ. कसे कार्य करतात याचे वर्णन केले आहे. या पुस्तकाबद्दल अधिक वाचा.
जर तुमच्याकडे अद्याप MySQL सोबत काम करण्याचे कौशल्य नसेल, किंवा तुम्हाला डेटा प्रकार आणि SQL ऑपरेटर्सची माहिती नसेल, तर मी phpMyAdmin मध्ये शिकणे सुरू करण्याची शिफारस करत नाही. याचा अर्थ असा नाही की phpMyAdmin वाईट आहे. SQL आणि MySQL मध्ये प्रभुत्व मिळवण्याचे मुख्य कार्य कन्सोल ऍप्लिकेशनद्वारे उत्तम प्रकारे केले जाते.
अधिकृत वेबसाइटवरून MySQL सर्व्हर विनामूल्य डाउनलोड करा, तो तुमच्या संगणकावर स्थापित करा आणि कार्य करण्यास प्रारंभ करा. उदाहरणार्थ: जर तुम्ही ॲलन बेव्हलीचे “लर्निंग SQL” हे पुस्तक घेतले तर त्यात SQL आणि MySQL सोबत काम करण्याचा तपशीलवार कोर्स आहे, कन्सोल ऍप्लिकेशनद्वारे काम करण्याची सर्व उदाहरणे.
फक्त एक पुस्तक वाचा, एकाच वेळी सर्व काही मिळवण्याचा प्रयत्न करू नका, ते कार्य करणार नाही, तुम्ही वेळ वाया घालवाल आणि काहीही शिकणार नाही. एकदा मूलभूत गोष्टींवर प्रभुत्व मिळवणे महत्वाचे आहे आणि त्यानंतर तुम्हाला फक्त सराव, सराव आणि MySQL दस्तऐवजीकरण आवश्यक असेल, जे अधिकृत वेबसाइटवर आहे.
आपली साधने: निवडलेले पुस्तक, MySQL सर्व्हर, सराव, सराव आणि पुन्हा सराव.
कन्सोल ऍप्लिकेशनद्वारे काम करण्याचा अनुभव असल्यास, विकासकाला समान phpMyAdmin मध्ये काम करणे कठीण होणार नाही; हे आवश्यक आणि महत्त्वाचे आहे कारण तुम्ही phpMyAdmin मध्ये SQL जाणून न घेता डेटाबेस व्यवस्थापित आणि तयार करू शकता. परंतु SQL लक्षात ठेवा - वेब ऍप्लिकेशन्स विकसित करताना तुम्हाला प्रश्न लिहावे लागतील, यापासून सुटका नाही.
टॅग्ज: sql, mysql, डेटाबेस
MySQL शिकवणारे शिक्षक आणि मार्गदर्शक पाठ्यपुस्तकातील या विभागातील टिप्पण्यांमध्ये MySQL शिकण्याचा क्रम आयोजित करण्यासाठी त्यांचे स्वतःचे पर्याय देऊ शकतात. जे वाचक MySQL चा स्वयं-अभ्यास करत आहेत ते पाठ्यपुस्तकाच्या संस्थेवर त्यांच्या टिप्पण्या देखील देऊ शकतात. MySQL चा स्वयं-अभ्यास प्रभावी होण्यासाठी, MySQL प्रशिक्षण देत असलेल्या पद्धतीविषयक अनुभवाचा समावेश करणे आवश्यक आहे. नवशिक्याच्या ट्यूटोरियलने विकासकाला त्वरीत प्रारंभ करण्यास मदत केली पाहिजे.
जीवनात, आम्हाला अनेकदा काही माहिती साठवण्याची गरज भासते, आणि म्हणून आम्ही अनेकदा डेटाबेस हाताळतो.
उदाहरणार्थ, आम्ही आमच्या मित्रांचे फोन नंबर संग्रहित करण्यासाठी आणि आमचा वेळ व्यवस्थित करण्यासाठी नोटबुक वापरतो. फोन बुकमध्ये एकाच शहरात राहणाऱ्या लोकांची माहिती असते. हे सर्व काही प्रकारचे डेटाबेस आहेत. बरं, हे डेटाबेस असल्याने, त्यामध्ये डेटा कसा साठवला जातो ते पाहू. उदाहरणार्थ, फोन बुक एक टेबल आहे (टेबल 10.1).
या सारणीमध्ये, डेटा म्हणजे वास्तविक फोन नंबर, पत्ते आणि पूर्ण नावे, म्हणजे. “इव्हानोव्ह इव्हान इव्हानोविच”, “३२-४३-१२” इत्यादी ओळी आणि या सारणीच्या स्तंभांची नावे, उदा. "पूर्ण नाव", "फोन नंबर" आणि "पत्ता" या ओळी या डेटाचा अर्थ, त्यांचे शब्दार्थ निर्दिष्ट करतात.
तक्ता 10.1. डेटाबेस उदाहरण: फोन बुक
आता कल्पना करा की या टेबलमध्ये दोन नाही तर दोन हजार नोंदी आहेत, तुम्ही ही डिरेक्टरी तयार करत आहात आणि कुठेतरी एरर आली आहे (उदाहरणार्थ, पत्त्यातील टायपो). वरवर पाहता, ही त्रुटी व्यक्तिचलितपणे शोधणे आणि त्याचे निराकरण करणे कठीण होईल. आपल्याला काही प्रकारचे ऑटोमेशन वापरण्याची आवश्यकता आहे. मोठ्या प्रमाणात डेटा व्यवस्थापित करण्यासाठी, प्रोग्रामर (गणितज्ञांच्या मदतीने) डेटाबेस व्यवस्थापन प्रणाली (DBMS) घेऊन आले. मजकूर डेटाबेसच्या तुलनेत, इलेक्ट्रॉनिक डीबीएमएसचे बरेच फायदे आहेत, माहिती द्रुतपणे शोधण्याची क्षमता, डेटा एकमेकांशी जोडणे, विविध ऍप्लिकेशन प्रोग्राम्समध्ये या डेटाचा वापर करणे आणि अनेक वापरकर्त्यांद्वारे डेटामध्ये एकाच वेळी प्रवेश करणे.
अचूकतेसाठी, आम्ही Glossary.ru द्वारे प्रस्तावित डेटाबेसची व्याख्या देऊ
डेटाबेस हा संबंधित डेटाचा संग्रह आहे, विशिष्ट नियमांनुसार आयोजित केला जातो, वर्णन, स्टोरेज आणि मॅनिपुलेशनसाठी सामान्य तत्त्वे प्रदान करतो, अनुप्रयोग प्रोग्रामपासून स्वतंत्र. डेटाबेस हे विषय क्षेत्राचे माहिती मॉडेल आहे. डेटाबेस मॅनेजमेंट सिस्टम (DBMS) वापरून डेटाबेसमध्ये प्रवेश केला जातो. DBMS डेटाबेस तयार करण्यासाठी, केंद्रीकृत व्यवस्थापनासाठी आणि विविध वापरकर्त्यांसाठी त्यांच्यामध्ये प्रवेश आयोजित करण्यासाठी समर्थन प्रदान करते.
म्हणून, आम्ही निष्कर्षापर्यंत पोहोचलो की प्रोग्राम्सपासून स्वतंत्रपणे डेटा संग्रहित करणे उचित आहे, जेणेकरून ते विशिष्ट नियमांनुसार एकमेकांशी जोडलेले आणि व्यवस्थित केले जातील. परंतु डेटा कसा संग्रहित करायचा आणि तो कोणत्या नियमांनुसार आयोजित केला पाहिजे हा प्रश्न खुला राहिला. बरेच मार्ग आहेत (तसे, त्यांना डेटा प्रतिनिधित्व किंवा डेटा स्टोरेज मॉडेल म्हणतात). सर्वात लोकप्रिय ऑब्जेक्ट आणि रिलेशनल डेटा मॉडेल आहेत.
रिलेशनल मॉडेलचे लेखक ई. कॉड मानले जातात, ज्यांनी डेटा प्रक्रियेसाठी सेट सिद्धांत (युनियन, छेदनबिंदू, फरक, कार्टेशियन उत्पादन) च्या उपकरणाचा वापर करण्याचा प्रस्ताव मांडला होता आणि दाखवले की डेटाचे कोणतेही प्रतिनिधित्व कमी केले जाते. एका विशिष्ट प्रकारच्या द्विमितीय सारण्यांचा संच, गणितात संबंध म्हणून ओळखला जातो.
अशाप्रकारे, रिलेशनल डेटाबेस हा एकमेकांशी संबंधित सारण्यांचा (नक्की वरीलप्रमाणेच) संच असतो. सारणीतील एक पंक्ती वास्तविक-जगातील अस्तित्वाशी संबंधित आहे (वरील उदाहरणात, एखाद्या व्यक्तीबद्दल माहिती).
रिलेशनल DBMS ची उदाहरणे: Mysql, PostgreSql. ऑब्जेक्ट मॉडेल ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंगच्या संकल्पनेवर आधारित आहे, ज्यामध्ये डेटा संबंधित संबंधांद्वारे एकमेकांशी जोडलेल्या ऑब्जेक्ट्स आणि वर्गांच्या संचाच्या रूपात दर्शविला जातो आणि लपविलेल्या (एनकॅप्स्युलेटेड) ऑब्जेक्ट्सचा वापर करून ऑब्जेक्ट्ससह कार्य केले जाते.
पद्धती
ऑब्जेक्ट डीबीएमएसची उदाहरणे: कॅशे, जेमस्टोन (सर्व्हिओ कॉर्पोरेशनकडून), ओएनटीओएस (ओएनटीओएस).
अलीकडे, डीबीएमएस उत्पादक या दोन पद्धती एकत्र करण्याचा प्रयत्न करत आहेत आणि डेटा प्रतिनिधित्वासाठी ऑब्जेक्ट-रिलेशनल मॉडेलचे समर्थन करत आहेत. अशा DBMS ची उदाहरणे आहेत IBM DB2 for Common Servers, Oracle8.
आम्ही Mysql सह काम करणार असल्याने, आम्ही फक्त रिलेशनल डेटाबेससह काम करण्याच्या पैलूंवर चर्चा करू. या क्षेत्रात आमच्याकडे आणखी दोन महत्त्वाच्या संकल्पना शिल्लक आहेत: की आणि इंडेक्सिंग, त्यानंतर आम्ही SQL क्वेरी भाषा शिकणे सुरू करू शकतो.
प्राइमरी की (PK) हा फील्डचा किमान संच आहे जो टेबलमधील रेकॉर्ड अद्वितीयपणे ओळखतो. याचा अर्थ असा आहे की प्राथमिक की, सर्व प्रथम, सारणी फील्डचा संच आहे, दुसरे म्हणजे, या फील्डच्या मूल्यांच्या प्रत्येक संचाने टेबलमध्ये एक रेकॉर्ड (पंक्ती) परिभाषित करणे आवश्यक आहे आणि तिसरे म्हणजे, फील्डचा हा संच असणे आवश्यक आहे. समान मालमत्ता असलेल्या सर्वांची किमान.
कारण प्राथमिक की फक्त एक अद्वितीय रेकॉर्ड ओळखते, कोणत्याही दोन टेबल रेकॉर्डमध्ये समान प्राथमिक की मूल्य असू शकत नाही.
उदाहरणार्थ, आमच्या सारणीमध्ये (वर पहा), पूर्ण नाव आणि पत्ता एखाद्या व्यक्तीबद्दलचा रेकॉर्ड अद्वितीयपणे हायलाइट करणे शक्य करते. सर्वसाधारणपणे बोलणे, समस्येचे निराकरण करण्याशी संबंध न ठेवता, असे ज्ञान आपल्याला एकाच पत्त्यावर वेगवेगळ्या शहरांमध्ये राहणा-या नावांमुळे एकच व्यक्ती अचूकपणे दर्शवू देत नाही. हे सर्व आपण स्वतःसाठी सेट केलेल्या सीमांबद्दल आहे. शहराचा उल्लेख न करता पूर्ण नाव, फोन नंबर आणि पत्ता जाणून घेणे पुरेसे आहे असे आम्हाला वाटत असल्यास, सर्वकाही ठीक आहे, नंतर पूर्ण नाव आणि पत्ता फील्ड प्राथमिक की तयार करू शकतात. कोणत्याही परिस्थितीत, प्राथमिक की तयार करण्याची समस्या डेटाबेस डिझाइन करणाऱ्याच्या खांद्यावर येते (डेटा स्टोरेज संरचना विकसित करते). या समस्येचे निराकरण एकतर वैशिष्ट्यांची निवड असू शकते जी नैसर्गिकरित्या टेबलमधील रेकॉर्ड परिभाषित करते (तथाकथित तार्किक, किंवा नैसर्गिक, पीके सेट करणे), किंवा टेबलमधील रेकॉर्ड अद्वितीयपणे ओळखण्यासाठी विशेषतः डिझाइन केलेले अतिरिक्त फील्ड तयार करणे. (तथाकथित सरोगेट, किंवा कृत्रिम, पीके सेट करणे).
तार्किक प्राथमिक कीचे उदाहरण म्हणजे रहिवाशांच्या पासपोर्ट डेटाच्या डेटाबेसमधील पासपोर्ट क्रमांक किंवा टेलिफोन बुकमधील पूर्ण नाव आणि पत्ता (वरील सारणी). सरोगेट प्राइमरी की सेट करण्यासाठी, आम्ही आमच्या टेबलमध्ये आयडी (आयडेंटिफायर) फील्ड जोडू शकतो, ज्याचे मूल्य टेबलच्या प्रत्येक पंक्तीसाठी एक पूर्णांक असेल. जर नैसर्गिक प्राथमिक की फील्डचा एक मोठा संच असेल किंवा तिचा निष्कर्ष क्षुल्लक नसेल तर अशा सरोगेट की वापरणे अर्थपूर्ण आहे.
रेकॉर्ड अद्वितीयपणे ओळखण्याव्यतिरिक्त, प्राथमिक की इतर सारण्यांसह संबंध व्यवस्थित करण्यासाठी वापरल्या जातात.
उदाहरणार्थ, आमच्याकडे तीन तक्ते आहेत: एकात ऐतिहासिक व्यक्तींबद्दल (व्यक्ती) माहिती आहे, एक त्यांच्या आविष्कारांची माहिती (कलाकृती) आणि एकामध्ये व्यक्ती आणि कलाकृती (प्रतिमा) (चित्र 10.1) या दोन्हींच्या प्रतिमा आहेत.
या सर्व टेबलमधील प्राथमिक की म्हणजे id फील्ड. आर्टिफॅक्ट्स टेबलमध्ये लेखक फील्ड आहे, जे व्यक्ती टेबलमध्ये आविष्काराच्या लेखकाला नियुक्त केलेल्या अभिज्ञापकाची नोंद करते. या फील्डमधील प्रत्येक मूल्य व्यक्ती सारणीच्या प्राथमिक कीसाठी परदेशी की आहे. याव्यतिरिक्त, व्यक्ती आणि कलाकृती सारण्यांमध्ये एक फोटो फील्ड आहे जे प्रतिमा सारणीमधील प्रतिमेचा संदर्भ देते. ही फील्ड प्रतिमा सारणीच्या प्राथमिक कीच्या परदेशी की देखील आहेत आणि व्यक्ती-प्रतिमा आणि कलाकृती-प्रतिमा यांच्यात एक-टू-वन तार्किक संबंध स्थापित करतात. म्हणजेच, जर व्यक्ती सारणीमधील विदेशी की फोटोचे मूल्य 10 असेल, तर याचा अर्थ या व्यक्तीच्या फोटोला प्रतिमा सारणीमध्ये id=10 आहे. अशा प्रकारे, डेटाबेस टेबल्स (पालक आणि मूल) यांच्यातील संबंध व्यवस्थित करण्यासाठी आणि संदर्भात्मक अखंडतेची मर्यादा राखण्यासाठी परदेशी की वापरल्या जातात.
हे करण्यासाठी (क्वेरी कार्यप्रदर्शन ऑप्टिमाइझ करण्यासाठी), काही टेबल फील्ड अनुक्रमित आहेत. अनुक्रमणिका वापरणे एका स्तंभात निर्दिष्ट मूल्यासह पंक्ती द्रुतपणे शोधण्यासाठी उपयुक्त आहे. निर्देशांकाशिवाय, जुळणाऱ्या पंक्ती सापडत नाही तोपर्यंत, पहिल्या रेकॉर्डपासून सुरू होऊन, संपूर्ण सारणीतून सारणी वाचली जाते. टेबल जितके मोठे असेल तितके ओव्हरहेड मोठे. सारणीमध्ये प्रश्नातील स्तंभांवर अनुक्रमणिका असल्यास, डेटाबेस सर्व डेटा स्कॅन न करता डेटा फाइलच्या मध्यभागी शोध स्थान पटकन शोधू शकतो. हे घडते कारण डेटाबेस अनुक्रमित फील्ड मेमरीमध्ये जवळ ठेवतो जेणेकरून त्यांची मूल्ये अधिक द्रुतपणे शोधता येतील. 1000 पंक्ती असलेल्या सारणीसाठी, हे सर्व नोंदी अनुक्रमे पुनरावृत्ती करण्याच्या तुलनेत किमान 100 पट जलद असेल. तथापि, ज्या बाबतीत जवळजवळ सर्व 1000 पंक्तींमध्ये प्रवेश करणे आवश्यक आहे, तेथे अनुक्रमिक वाचन जलद होईल कारण कोणत्याही डिस्क शोधांची आवश्यकता नाही. तर कधी कधी निर्देशांक फक्त एक अडथळा असतात. उदाहरणार्थ, जर टेबलमध्ये मोठ्या प्रमाणात डेटा कॉपी केला असेल तर कोणतेही निर्देशांक न ठेवणे चांगले. तथापि, काही प्रकरणांमध्ये एकाच वेळी अनेक अनुक्रमणिका वापरणे आवश्यक आहे (उदाहरणार्थ, वारंवार वापरल्या जाणाऱ्या सारण्यांवरील प्रश्नांवर प्रक्रिया करण्यासाठी).
जर आपण Mysql बद्दल बोललो, तर तीन प्रकारचे अनुक्रमणिका आहेत: PRIMARY, UNIQUE आणि INDEX, आणि key (KEY) हा शब्द index (INDEX) या शब्दासाठी समानार्थी म्हणून वापरला जातो. सर्व निर्देशांक मेमरीमध्ये बी-ट्री म्हणून संग्रहित केले जातात.
प्राथमिक - एक अद्वितीय अनुक्रमणिका (की) ज्याद्वारे अनुक्रमित केलेल्या सर्व फील्ड्समध्ये रिक्त मूल्य असू शकत नाही (म्हणजे ते शून्य नाहीत). टेबलमध्ये फक्त एक प्राथमिक निर्देशांक असू शकतो, परंतु त्यात अनेक फील्ड असू शकतात.
युनिक - एक की (इंडेक्स) जी फील्ड निर्दिष्ट करते ज्यात फक्त अद्वितीय मूल्ये असू शकतात.
INDEX एक नियमित निर्देशांक आहे (आम्ही वर वर्णन केल्याप्रमाणे). Mysql मध्ये, तुम्ही स्ट्रिंगच्या सुरुवातीपासून दिलेल्या वर्णांच्या संख्येनुसार स्ट्रिंग फील्ड देखील अनुक्रमित करू शकता.
तुम्ही Mysql सह केवळ मजकूर मोडमध्येच नाही तर ग्राफिकल मोडमध्येही काम करू शकता. या DBMS सह कार्य करण्यासाठी एक अतिशय लोकप्रिय व्हिज्युअल इंटरफेस आहे (तसे, PHP मध्ये लिहिलेले आहे). त्याला PhpMyAdmin म्हणतात. या इंटरफेसमुळे Mysql मधील डेटाबेससह काम करणे खूप सोपे होते.
PhpMyAdmin तुम्हाला ब्राउझरचे सर्व फायदे वापरण्याची परवानगी देतो, जर इमेज स्क्रीनवर बसत नसेल तर स्क्रोल करणे. PhpMyAdmin मध्ये डेटासह काम करण्याची अनेक मूलभूत SQL फंक्शन्स अंतर्ज्ञानी इंटरफेस आणि इंटरनेटवरील खालील लिंक्सची आठवण करून देणाऱ्या क्रियांपर्यंत कमी केली जातात. परंतु, तरीही, मजकूर मोडमध्ये कार्य करणे योग्य आहे.
SQL भाषेच्या तपशीलवार अभ्यासाकडे जाण्यापूर्वी, Mysql स्थापित करणे आणि कामाची तयारी करण्याबद्दल काही शब्द. जर तुमचा सर्व्हर प्रशासित करण्याचा हेतू नसेल, तर खाली दिलेली माहिती तुम्हाला फक्त सामान्य विकासासाठी उपयुक्त ठरेल. म्हणून, Mysql स्थापित करणे खूप सोपे आहे - स्वयंचलितपणे, दोन वेळा ओके क्लिक करा आणि ते झाले. यानंतर, तुम्ही Mysql.exe, Mysqld.exe इत्यादी फाइल्स असलेल्या डिरेक्टरीमध्ये जाऊ शकता. (आमच्यासाठी Windows XP अंतर्गत हे c:\Mysql\bin आहे) शेवटची फाइल Mysql सर्व्हर सुरू करते. काही प्रणालींवर, सर्व्हर सेवा म्हणून चालतो. सर्व्हर सुरू केल्यानंतर, तुम्ही Mysql.exe प्रोग्राम चालवून Mysql क्लायंट सुरू केले पाहिजे. ते इथे पासवर्डही विचारणार नाहीत. शिवाय, तुम्ही shell> Mysql.exe -u रूट किंवा shell>Mysql -u रूट Mysql टाइप केल्यास तुम्हाला संपूर्ण Mysql सर्व्हर प्रशासक अधिकार मिळतील. तसे, Mysql.exe फाईल्स असलेल्या निर्देशिकेत असताना तुम्हाला या कमांड्स कार्यान्वित करणे आवश्यक आहे.
सुरुवातीला, कमांडच्या तपशीलात न जाता, या दोन उणीवा दुरुस्त करूया (प्रशासकाकडे पासवर्ड नाही आणि निनावी वापरकर्त्यांसाठी लॉग इन करण्याची क्षमता):
Mysql वापरकर्त्यांबद्दलचा सर्व डेटा वापरकर्ता टेबलमध्ये एका विशेष Mysql डेटाबेसमध्ये संग्रहित करते, ज्यावर फक्त सर्व्हर प्रशासकाद्वारे प्रवेश केला जाऊ शकतो. म्हणून, कोणताही पासवर्ड बदलण्यासाठी, तुम्हाला हे सारणी बदलणे आवश्यक आहे. पासवर्ड PASSWORD फंक्शन वापरून सेट केला जातो, जो प्रविष्ट केलेला डेटा एन्कोड करतो. प्रशासक संकेतशब्द बदलण्याव्यतिरिक्त, तुम्हाला लॉगिन (DELETE कमांड) नसलेले सर्व वापरकर्ते हटविणे देखील आवश्यक आहे. फ्लश प्रिव्हिलेजेस कमांड सिस्टम डेटाबेस (Mysql) मध्ये केलेले बदल प्रभावी होण्यास भाग पाडते.
आता एक डेटाबेस तयार करू ज्यावर आपण कार्य करू (आम्ही अजूनही सर्व्हर प्रशासक म्हणून काम करत आहोत):
Mysql>डेटाबेस बुक तयार करा;
तुम्ही बघू शकता, Mysql मधील सर्व कमांड अर्धविरामाने संपतात. आपण हे चिन्ह ठेवण्यास विसरल्यास, ते पूर्ण होईपर्यंत ते ठेवण्यासाठी आमंत्रण दिले जाते:
Mysql> टेबल दाखवा
->
->
आता शेवटची पायरी म्हणजे एक साधा वापरकर्ता तयार करणे, त्याला तयार केलेल्या डेटाबेसमध्ये प्रवेश देणे आणि कार्य सुरू करणे.
Mysql> पुस्तकावर सर्व विशेषाधिकार द्या.* nina@localhost ला
"123" द्वारे ओळखले;
GRANT कमांड वापरकर्त्याला नीना देते, ज्याने त्याच मशीनवरून सर्व्हरवर लॉग इन केले (लोकलहोस्टवरून) आणि पासवर्ड "123" द्वारे ओळखले जाते (या प्रकरणात, सर्व) पुस्तक डेटाबेसच्या सर्व टेबलवर. आता आम्ही लॉग आउट करू शकतो आणि योग्य पासवर्डसह वापरकर्ता निना म्हणून लॉग इन करू शकतो:
shell>Mysql -u nina -p
पासवर्ड टाका: ***
Mysql मॉनिटरवर आपले स्वागत आहे!...
Mysql>
जर तुम्ही दुसऱ्याच्या सर्व्हरवर डेटाबेस वापरणार असाल, तर त्याचा प्रशासक तुमच्यासाठी वर वर्णन केलेल्या सर्व पायऱ्या करेल, म्हणजे. सर्वकाही कॉन्फिगर करेल आणि वापरकर्ता आणि डेटाबेस तयार करेल. पुढील प्रकरण SQL भाषा आदेशांचे वर्णन करते जे Mysql DBMS मध्ये संग्रहित डेटासह कार्य करण्यासाठी उपयुक्त आहेत.
चला हे कार्य खालील उपकार्यांमध्ये विभाजित करूया:
चला या सर्व कार्यांचा क्रमाने विचार करूया.
चला Mysql_connect फंक्शन वापरू.
Mysql_connect वाक्यरचना
Mysql_connect संसाधन ([स्ट्रिंग सर्व्हर
[, स्ट्रिंग वापरकर्तानाव [, स्ट्रिंग पासवर्ड
[, boolean new_link
[, integer client_flags]]]]])
हे फंक्शन Mysql सर्व्हरशी कनेक्शन स्थापित करते आणि या कनेक्शनला पॉइंटर देते किंवा अयशस्वी झाल्यास FALSE.
गहाळ पॅरामीटर्स खालील डीफॉल्ट मूल्यांवर सेट केले आहेत:
सर्व्हर = "लोकलहोस्ट:3306"
वापरकर्तानाव = सर्व्हर प्रक्रिया मालकाचे वापरकर्तानाव
पासवर्ड = रिक्त पासवर्ड
समान पॅरामीटर्ससह फंक्शनला दोनदा कॉल केल्यास, नवीन कनेक्शन स्थापित केले जात नाही, परंतु जुन्या कनेक्शनचा संदर्भ परत केला जातो.
हे टाळण्यासाठी, new_link पॅरामीटर वापरा, जे कोणत्याही परिस्थितीत आणखी एक कनेक्शन उघडण्यास भाग पाडते.
client_flags पॅरामीटर हे खालील स्थिरांकांचे संयोजन आहे:
MYSQL_CLIENT_COMPRESS (कंप्रेशन प्रोटोकॉल वापरा),
MYSQL_CLIENT_IGNORE_SPACE (तुम्हाला फंक्शनच्या नावांनंतर स्पेस घालण्याची परवानगी देते), MYSQL_CLIENT_INTERACTIVE (इंटरॅक्टिव्ह_टाइमआउट सेकंद प्रतीक्षा करा - प्रतीक्षा_टाइमआउट ऐवजी - कनेक्शन बंद होईपर्यंत).
नवीन_लिंक पॅरामीटर PHP 4.2.0 मध्ये सादर केले गेले आणि client_flags पॅरामीटर PHP 4.3.0 मध्ये सादर केले गेले.
Mysql_close() फंक्शन वापरून आधी बंद केल्याशिवाय, स्क्रिप्ट अंमलात आणते तेव्हा सर्व्हरशी कनेक्शन बंद होते.
म्हणून, आम्ही पासवर्ड 123 सह वापरकर्ता निनासाठी स्थानिक सर्व्हरवरील डेटाबेसशी कनेक्शन स्थापित करतो:
$conn = Mysql_connect (
किंवा मरणे ( "स्थापित करण्यात अक्षम
कनेक्शन: ". mysql_error());
प्रतिध्वनी "कनेक्शन स्थापित केले";
Mysql_close($conn);
?>
Mysql_connect क्रिया कमांडच्या समतुल्य आहे
shell>Mysql -u nina -p123
Mysql>पुस्तक वापरा;
Mysql_select_db वाक्यरचना:
बुलियन
Mysql_select_db(स्ट्रिंग डेटाबेस_नाव[, संसाधन लिंक_आयडेंटिफायर])
डेटाबेस निवड यशस्वी आणि FALSE असल्यास हे फंक्शन TRUE मिळवते
$conn = Mysql_connect (
"लोकलहोस्ट", "निना", "123")
किंवा मरणे ( "स्थापित करण्यात अक्षम
कनेक्शन: ". mysql_error());
प्रतिध्वनी "कनेक्शन स्थापित केले";
Mysql_select_db("पुस्तक");
?>
संसाधन Mysql_list_fields (
स्ट्रिंग डेटाबेस_नाव,
स्ट्रिंग टेबल_नाव
[, संसाधन लिंक_आयडेंटिफायर])
हे फंक्शन डेटाबेस database_name मधील टेबल table_name मधील फील्डची सूची देते. असे दिसून आले की आम्हाला डेटाबेस निवडण्याची गरज नाही, परंतु हे नंतर उपयोगी पडेल. तुम्ही बघू शकता, या फंक्शनचा परिणाम म्हणजे रिसोर्स टाईप व्हेरिएबल. म्हणजेच आपल्याला नेमके हेच मिळवायचे होते. हा एक दुवा आहे ज्याचा उपयोग टेबल फील्ड, त्यांची नावे, प्रकार आणि ध्वजांसह माहिती मिळवण्यासाठी केला जाऊ शकतो.
Mysql_field_name फंक्शन क्वेरीच्या परिणामी फील्डचे नाव परत करते. Mysql_field_len फंक्शन फील्डची लांबी मिळवते. Mysql_field_type फंक्शन फील्ड प्रकार परत करते, आणि Mysql_field_flags फंक्शन फील्ड फ्लॅग्सची स्पेस-विभक्त सूची देते. फील्ड प्रकार int, real, string, blob इत्यादी असू शकतात. ध्वज नाही_नल, प्राथमिक_की, अद्वितीय_की, ब्लॉब, असू शकतात
स्वयं_वाढ इ.
या सर्व आज्ञांचे वाक्यरचना समान आहे:
स्ट्रिंग Mysql_field_name(परिणाम संसाधन, int field_offset)
स्ट्रिंग Mysql_field_type(परिणाम संसाधन, int field_offset)
स्ट्रिंग Mysql_field_flags(परिणाम संसाधन, int field_offset)
स्ट्रिंग Mysql_field_len (परिणाम संसाधन, पूर्णांक फील्ड_ऑफसेट)
येथे परिणाम क्वेरी परिणामाचा अभिज्ञापक आहे (उदाहरणार्थ, Mysql_list_fields किंवा Mysql_query फंक्शन्सद्वारे पाठविलेली क्वेरी (यावर नंतर अधिक)), आणि field_offset ही निकालातील फील्डची क्रमिक संख्या आहे.
सर्वसाधारणपणे सांगायचे तर, Mysql_list_fields किंवा Mysql_query रिटर्न सारखी कोणती फंक्शन्स एक टेबल आहे, किंवा अधिक तंतोतंत, तो एक पॉइंटर आहे. या सारणीमधून विशिष्ट मूल्ये मिळविण्यासाठी, आपल्याला विशेष कार्ये वापरण्याची आवश्यकता आहे जी हे सारणी पंक्तीनुसार वाचतात. अशा फंक्शन्समध्ये Mysql_field_name इ. क्वेरी परिणाम सारणीतील सर्व पंक्तींमध्ये पुनरावृत्ती करण्यासाठी, तुम्हाला या सारणीतील पंक्तींची संख्या माहित असणे आवश्यक आहे. Mysql_num_rows(परिणाम संसाधन) ही कमांड निकाल सेटमधील पंक्तींची संख्या दर्शवते.
परिणाम
आता आर्टिफॅक्ट्स टेबलमधील फील्डची यादी मिळवण्याचा प्रयत्न करूया (प्रदर्शनांचा संग्रह).
$conn = Mysql_connect (
"लोकलहोस्ट", "निना", "123")
किंवा मरणे ( "स्थापित करण्यात अक्षम
कनेक्शन: ". mysql_error());
प्रतिध्वनी "कनेक्शन स्थापित केले";
Mysql_select_db("पुस्तक");
$list_f = Mysql_list_fields (
"पुस्तक" , "कलाकृती" , $conn );
$n = Mysql_num_fields($list_f);
साठी($i = 0; $i<
$n
;
$i
++){
$flags_str = Mysql_field_flags (
$list_f , $i );
प्रतिध्वनी "
फील्डचे नाव: " . $name_f ;
प्रतिध्वनी "
फील्ड प्रकार: " . $type ;
प्रतिध्वनी "
फील्ड लांबी: " . $len ;
प्रतिध्वनी "
फील्ड फ्लॅग स्ट्रिंग: ".
$flags_str . "
परिणाम असे काहीतरी असावे (जर टेबलमध्ये फक्त दोन फील्ड असतील तर):
फील्डचे नाव: आयडी
फील्ड प्रकार: int
फील्ड लांबी: 11
फील्ड फ्लॅग स्ट्रिंग:
not_null प्राथमिक_की स्वयं_वाढ
फील्डचे नाव: शीर्षक
फील्ड प्रकार: स्ट्रिंग
फील्ड लांबी: 255
फील्ड फ्लॅग स्ट्रिंग:
html फॉर्ममध्ये फील्डची सूची प्रदर्शित करणे
आता मागील उदाहरण थोडे दुरुस्त करू. आम्ही फील्डची माहिती फक्त प्रदर्शित करणार नाही तर ती योग्य html फॉर्म घटकामध्ये प्रदर्शित करू. त्यामुळे, BLOB प्रकारातील घटक textarea मध्ये रूपांतरित केले जातील (लक्षात ठेवा की वर्णन फील्ड, जे आम्ही TEXT प्रकाराने तयार केले आहे, ते BLOB प्रकार असलेले प्रदर्शित केले आहे), संख्या आणि स्ट्रिंग मजकूर इनपुट लाइन म्हणून प्रदर्शित केले जातील. , आणि ज्या घटकामध्ये स्वयं-वाढीचे लेबल आहे ते अजिबात प्रदर्शित केले जाणार नाही, कारण त्याचे मूल्य स्वयंचलितपणे सेट केले जाते.
ध्वजांच्या सूचीमधून auto_increment ध्वज निवडणे वगळता हे सर्व अगदी सोप्या पद्धतीने सोडवले जाऊ शकते. हे करण्यासाठी तुम्हाला explode फंक्शन वापरावे लागेल.
एक्सप्लोड सिंटॅक्स:
ॲरे एक्सप्लोड (स्ट्रिंग सेपरेटर, स्ट्रिंग स्ट्रिंग [, इंट लिमिट ])
हे फंक्शन सेपरेटर वापरून स्ट्रिंगला भागांमध्ये विभाजित करते आणि परिणामी स्ट्रिंगचा ॲरे मिळवते.
आमच्या बाबतीत, आम्हाला स्पेस " विभाजक म्हणून आणि स्प्लिटिंगसाठी स्त्रोत स्ट्रिंग म्हणून फील्ड फ्लॅग्सची स्ट्रिंग घेणे आवश्यक आहे.
तर, आर्टिफॅक्ट्स टेबलमध्ये डेटा प्रविष्ट करण्यासाठी एक फॉर्म तयार करूया:
$conn = Mysql_connect ("localhost" , "nina" , "123");
// कनेक्शन स्थापित करा
$database = "पुस्तक" ;
$table_name = "कलाकृती" ;
Mysql_select_db($database); // साठी डेटाबेस निवडा
// काम
// परिणामातील पंक्तींची संख्या
// मागील विनंती (म्हणजे एकूण किती
// आर्टिफॅक्ट टेबलमधील फील्ड)
प्रतिध्वनी ";
// डेटा एंट्रीसाठी एक फॉर्म तयार करा
प्रतिध्वनी "
"
;
मध्ये नवीन पंक्ती जोडा
$टेबल_नाव
प्रतिध्वनी ""
;
"
;
// प्रत्येक फील्डसाठी आम्हाला त्याचे नाव, प्रकार, लांबी आणि ध्वज मिळतात
साठी($i = 0; $i<
$n
;
$i
++){
$type = Mysql_field_type($list_f, $i);
$name_f = Mysql_field_name($list_f, $i);
$len = Mysql_field_len($list_f, $i);
$flags_str = Mysql_field_flags($list_f, $i);
// ध्वजांच्या स्ट्रिंगमधून ॲरे बनवा,
// जेथे प्रत्येक ॲरे घटक फील्ड ध्वज आहे
$flags = explode (" ", $flags_str);
foreach ($f म्हणून $ध्वज )(
जर ($f == "auto_increment" ) $key = $name_f ;
// स्वयंवृद्धी नाव लक्षात ठेवा
}
/* मध्ये प्रत्येक नॉन-ऑटोइनक्रिमेंट फील्डसाठी
त्याच्या प्रकारावर अवलंबून, योग्य फॉर्म घटक प्रदर्शित करा */
जर ($की<>$name_f )(
प्रतिध्वनी " "
; "
;
"
. $name_f . "
स्विच ($प्रकार)(
केस "स्ट्रिंग" :
$w = $len / 5 ;
प्रतिध्वनी "आकार = $w > "
;
खंडित;
केस "इंट" :
$w = $len / 4 ;
प्रतिध्वनी "आकार = $w > "
;
खंडित;
केस "ब्लॉब" :
प्रतिध्वनी ""
;
खंडित;
}
}
प्रतिध्वनी "
}
प्रतिध्वनी "
प्रतिध्वनी ""
;
प्रतिध्वनी ""
;
?>
कोणतेही ओपन कनेक्शन नसल्यास, फंक्शन डीबीएमएसशी कनेक्ट करण्याचा प्रयत्न करते, मायएसक्यूएल_कनेक्ट() फंक्शन प्रमाणे पॅरामीटर्सशिवाय. क्वेरी परिणाम बफर केला आहे.
टीप: क्वेरी स्ट्रिंग अर्धविरामाने संपू नये.
सिलेक्ट, दाखवा, स्पष्ट करा, फक्त क्वेरीचे वर्णन करा, Mysql_query() क्वेरीच्या निकालासाठी पॉइंटर परत करते किंवा क्वेरी कार्यान्वित न केल्यास FALSE. अन्यथा, क्वेरी यशस्वी झाल्यास Mysql_query() TRUE आणि अयशस्वी झाल्यास FALSE देते. FALSE व्यतिरिक्त एक मूल्य सूचित करते की विनंती यशस्वीरित्या पूर्ण झाली. ते प्रभावित किंवा परत आलेल्या पंक्तींची संख्या दर्शवत नाही. हे शक्य आहे की यशस्वी क्वेरी एका पंक्तीवर परिणाम करणार नाही. Mysql_query() ही एक त्रुटी मानली जाते आणि वापरकर्त्याला क्वेरीमध्ये निर्दिष्ट केलेल्या सारणीसह कार्य करण्याचे पुरेसे अधिकार नसल्यास ते FALSE परत करेल.
त्यामुळे आता डेटाबेसमध्ये पंक्ती घालण्यासाठी क्वेरी कशी पाठवायची हे आपल्याला माहीत आहे.
$list_f = Mysql_list_fields($database, $table_name);
// डेटाबेसमधील फील्डची यादी मिळवा
$n = Mysql_num_fields($list_f); // परिणामातील पंक्तींची संख्या
// मागील विनंती
// सर्व टेबल फील्डसाठी एकाच वेळी एक क्वेरी तयार करा
$sql = "$table_name SET मध्ये घाला";
// तयार करणे सुरू करा
// क्वेरी, टेबलच्या सर्व फील्डमधून पुनरावृत्ती करा
साठी($i = 0; $i<
$n
;
$i
++){
$name_f = Mysql_field_name($list_f, $i); // फील्ड नावाची गणना करा
$value = $_POST [ $name_f ]; // फील्ड मूल्याची गणना करा
$j = $i + 1 ;
$sql = $sql . $name_f . " = "$value"" ; // जोडू
// string $sql pair name=value
जर ($j<>$n ) $sql = $sql . ", " ; // फील्ड नसल्यास
// सूचीमध्ये शेवटचे, नंतर स्वल्पविराम लावा
}
// डेटाबेसवर काही लिहिण्यापूर्वी,
// आपण पाहू शकता की कोणत्या प्रकारची विनंती प्राप्त झाली आहे
// echo $sql;
$result = Mysql_query ($sql, $conn); // विनंती पाठवा
// विनंती यशस्वीरित्या पूर्ण झाली की नाही असा संदेश प्रदर्शित करा
जर (! $result) प्रतिध्वनी "जोडू शकत नाही ($table_name)" ;
अन्यथा प्रतिध्वनी "यश!
"
;
?>
सूची 11.0.2. insert.php
तर, आम्ही वेब इंटरफेस वापरून डेटा जोडण्याची समस्या सोडवली. तथापि, येथे एक सूक्ष्मता आहे. या समस्येचे निराकरण करताना, आम्ही हे तथ्य विचारात घेतले नाही की काही फील्डची मूल्ये (लेखक, फोटो) इतर सारण्यांमधून (व्यक्ती, प्रतिमा) घेणे आवश्यक आहे. Mysql विदेशी की सह कार्य करत नसल्यामुळे, हा मुद्दा सिस्टम विकसकांच्या विवेकावर राहतो, म्हणजे. आपल्या विवेकावर. अशा फील्डमध्ये योग्य मूल्ये प्रविष्ट करणे शक्य होईल अशा प्रकारे प्रोग्राम जोडणे आवश्यक आहे. परंतु आम्ही असे करणार नाही, कारण व्याख्यानाचा उद्देश वाचकांना तंत्रज्ञानाच्या घटकांशी ओळख करून देणे आहे, आणि कार्यरत प्रणाली तयार करणे नाही. याव्यतिरिक्त, या समस्येचे निराकरण करण्यासाठी वाचकाचे ज्ञान पुरेसे आहे. आम्ही दुसऱ्या कार्याकडे वळू - Mysql DBMS डेटाबेसमध्ये संग्रहित डेटा प्रदर्शित करणे.
» MySQL का वापरायचे?
MySQL अतिशय जलद, विश्वासार्ह आणि वापरण्यास सोपा आहे. MySQL मध्ये वैशिष्ट्यांचा एक अतिशय व्यावहारिक संच देखील आहे, जो अंतिम वापरकर्त्यांच्या अगदी जवळच्या सहकार्याने विकसित केला आहे. MySQL हे मूळतः विद्यमान सोल्यूशन्सपेक्षा खूप मोठे डेटाबेस हाताळण्यासाठी डिझाइन केलेले होते आणि अत्यंत मागणी असलेल्या औद्योगिक अनुप्रयोगांमध्ये यशस्वीरित्या वापरले गेले आहे.
चालू असलेल्या विकासासह, MySQL आज समृद्ध आणि अतिशय उपयुक्त वैशिष्ट्यांचा संच प्रदान करते. साधेपणा, वेग आणि विश्वासार्हता MySQL ला इंटरनेटवरून डेटाबेसमध्ये प्रवेश करण्यासाठी अतिशय योग्य बनवते. खरोखर प्रचंड प्रमाणात डेटाचे समर्थन करणे खूप महत्वाचे आहे. 60,000 सारण्यांसह MySQL वापरण्याचे एक ज्ञात प्रकरण आहे, एकूण सुमारे 5000000000 पंक्ती आहेत.
याचा अर्थ असा की MySQL मध्ये एक SQL सर्व्हर असतो जो विविध फंक्शन्सला सपोर्ट करतो (खरेतर, तो सर्व डेटाबेस कार्य करतो), अनेक भिन्न क्लायंट प्रोग्राम्स (ते फक्त वापरकर्ता आणि सर्व्हरमधील इंटरफेस प्रदान करतात), प्रशासकीय साधने आणि अनेक प्रोग्रामिंग इंटरफेस . क्लायंट त्यांच्या स्वतःच्या नेटवर्क प्रोटोकॉलचा वापर करून सर्व्हरशी संवाद साधतात.
ही योजना मोठ्या संख्येने वापरकर्त्यांना एकाच वेळी सर्व्हरसह कार्य करण्यास अनुमती देते. यासह, एकमेकांमध्ये हस्तक्षेप न करता समान डेटावर संयुक्तपणे प्रक्रिया करणे. या परस्परसंवादाची पुढील प्रकरणांमध्ये तपशीलवार चर्चा केली जाईल.
सहसा क्लायंट आणि सर्व्हर वेगवेगळ्या संगणकांवर वापरले जातात, परंतु पॅकेजचे दोन्ही भाग एकाच संगणकावर स्थापित करणे स्वीकार्य आहे. अगदी एकाच संगणकामध्ये, क्लायंट आणि सर्व्हरमध्ये संवाद साधण्यासाठी नेटवर्कचा वापर केला जातो. तसे, हे लक्षात घेतले पाहिजे की क्लायंट आणि सर्व्हर वेगवेगळ्या ऑपरेटिंग सिस्टम अंतर्गत चालवू शकतात, यामुळे कोणत्याही गोष्टीत व्यत्यय येत नाही. MySQL आधीच डझनहून अधिक ऑपरेटिंग सिस्टमवर उपलब्ध आहे.
याचा अर्थ असा की पॅकेज सहजपणे अनेक प्रोसेसर वापरू शकते, जर असेल तर. बऱ्याच सर्व्हर सिस्टममध्ये आधीच अनेक प्रोसेसर स्थापित केलेले आहेत. अशा प्रणालींवर, MySQL समांतरपणे एकाच वेळी (प्रोसेसरसाठी एक) अनेक डेटाबेस क्वेरी काटेकोरपणे कार्यान्वित करू शकते.
याचा अर्थ असा आहे की प्रोग्रामिंगमध्ये पारंगत असलेल्या कोणत्याही व्यक्तीद्वारे आपल्या गरजेनुसार पॅकेजमध्ये सहजपणे बदल केले जाऊ शकतात. पॅकेजमध्ये महत्त्वाची दुरुस्ती लिहिल्यानंतर, असे विशेषज्ञ पुढील आवृत्तीमध्ये संभाव्य समावेशासाठी मुख्य पॅकेज साइटवर पाठवू शकतात. या विकास योजनेमुळे MySQL खूप लवकर विकसित होते आणि अंतिम वापरकर्त्यांच्या गरजा लक्षात घेते आणि सर्व त्रुटी कमीत कमी वेळेत दूर केल्या जातात. ही मालमत्ता कदाचित पॅकेजच्या उच्च लोकप्रियतेचे पहिले कारण होते: योग्य पात्रतेसह, ते आपल्या गरजेनुसार तयार केले जाऊ शकते.
MySQL गैर-व्यावसायिक वापरासाठी आहे. तुम्ही मंच, अतिथी पुस्तक प्रणाली किंवा ब्लॉग आयोजित करण्यासाठी पॅकेज वापरत असल्यास, तुम्हाला कोणत्याही परवान्यांसाठी पैसे द्यावे लागणार नाहीत. आपल्याला फक्त त्याच्या वेबसाइटवरून पॅकेज डाउनलोड करण्याची आणि आपल्या सर्व्हरवर स्थापित करण्याची आवश्यकता आहे. परंतु आपल्याला तांत्रिक समर्थनाची आवश्यकता असल्यास, आपल्याला त्यासाठी पैसे द्यावे लागतील. टीप:फी विशेषतः तांत्रिक समर्थनासाठी आकारली जाते आणि प्रोग्राम वापरण्यासाठी नाही. या मालमत्तेनेच हा DBMS इतका लोकप्रिय बनवला आहे.
आता आम्ही पुढील सादरीकरणात आवश्यक असलेल्या पूर्णपणे आवश्यक शब्दावली तसेच डेटाबेस ऑपरेशनच्या मूलभूत तत्त्वांचा अधिक तपशीलवार विचार करू, जेणेकरुन आपण काय हाताळत आहात याची आपल्याला किमान कल्पना असेल. पहिल्या दृष्टीक्षेपात, अटींची यादी मोठी आहे, परंतु त्या सर्वांची आवश्यकता असेल.
सर्व डेटा सारण्यांच्या स्वरूपात संग्रहित केला जात असल्याने, आपण टेबलचा प्रकार आणि संबंधित शब्दावली स्पष्टपणे परिभाषित केली पाहिजे. टेबलसमावेश आहे पेशी, ज्यापैकी प्रत्येक काही डेटा संचयित करू शकतो. जर सेल सध्या कोणताही डेटा संचयित करत नसेल तर त्याला रिक्त म्हणतात.
टेबलमध्ये उभ्या असतात स्तंभआणि क्षैतिज पंक्ती ज्यामध्ये सेल गटबद्ध केले आहेत. टेबल काटेकोरपणे आयताकृती, म्हणजे, सर्व पंक्तींमध्ये सेलची संख्या समान आहे आणि सर्व स्तंभांमध्ये समान पंक्ती आहेत.
टेबलमधील प्रत्येक पंक्तीला म्हणतात मुद्रित करणे. रेकॉर्डमधील प्रत्येक सेलचे नाव आहे रेकॉर्ड फील्ड. फील्ड विविध प्रकारचे डेटा संचयित करू शकतात, त्यांच्यासह कार्य करणे सोपे करण्यासाठी, संकल्पना प्रकार. प्रत्येक सेलचा स्वतःचा प्रकार असतो आणि तो फक्त संबंधित प्रकाराचा डेटा संचयित करू शकतो, जो सिस्टमसह कार्य करताना समजून घेणे आवश्यक आहे.
MySQL मध्ये, डेटा प्रकार टेबलमधील स्तंभाला नियुक्त केला जातो आणि त्या स्तंभातील सर्व सेलवर लागू होतो. म्हणजेच, जर पहिल्या स्तंभाला विशिष्ट प्रकार नियुक्त केला असेल (उदाहरणार्थ, char), याचा अर्थ असा की या सारणीतील कोणत्याही रेकॉर्डचे पहिले फील्ड नेहमी char प्रकारचे असेल आणि दुसरे कोणतेही नसेल.
हे खूप महत्वाचे आहे! बऱ्याच वेळा तुम्ही स्तंभांसह कार्य करत असाल कारण ते डेटा प्रकार आणि सारणीची रचना परिभाषित करतात. सारणीतील पंक्ती क्रमांकित नाहीत; ते केवळ डेटासह कार्य करण्याच्या सोयीसाठी अस्तित्वात आहेत. बऱ्याच प्रकरणांमध्ये, आपण टेबलमधील रेकॉर्डच्या संख्येची अजिबात काळजी करू नये. तुम्ही डेटासह कार्य करता आणि त्याची रचना स्तंभांच्या प्रकार आणि क्रमानुसार निर्धारित केली जाते. रेकॉर्डची संख्या केवळ सर्व्हरसाठी महत्त्वाची आहे.
डेटाबेसमध्ये अनेक भिन्न सारण्या असू शकतात. त्यांची अचूक संख्या प्रामुख्याने संगणकाच्या मेमरीद्वारे मर्यादित आहे. सर्व्हर अनेक डेटाबेस संचयित करू शकतो. हे लक्षात घ्यावे की तुम्ही एकाच क्वेरीमध्ये वेगवेगळ्या डेटाबेसमधील टेबल्स मिक्स करू शकता.
टेबल देखील आहे प्रकारआणि विशेषता. या सारणीसह कार्य करताना उपलब्ध क्षमतांचा संच तसेच सर्व्हरद्वारे त्याच्या प्रक्रियेचे तर्क यावर अवलंबून असते. याबद्दल नंतर तपशीलवार चर्चा केली जाईल.
आता फील्डमधील डेटाबद्दल बोलूया. काही डेटासह काहीतरी करण्यासाठी, आपल्याला प्रथम ते शोधण्याची आवश्यकता आहे. यासाठी SQL भाषा वापरली जाते. त्यावर क्वेरी लिहिल्या जातात, ज्या प्रक्रियेदरम्यान सर्व्हर डेटाबेस टेबल्स स्कॅन करतो, विनंतीमध्ये निर्दिष्ट केलेल्या निकषांवर आधारित आवश्यक डेटा शोधतो आणि त्यासह काहीतरी करतो (विनंतीवर नेमके काय अवलंबून असते).
रेकॉर्ड शोधण्यासाठी वापरल्या जाणाऱ्या डेटाला म्हणतात की. रेकॉर्डमध्ये अनेक फील्ड असल्यास, आपण ते वेगवेगळ्या की वापरून शोधू शकता, प्रत्येकाच्या स्वतःच्या फील्डसाठी. ज्या किल्लीद्वारे रेकॉर्ड शोधले जाण्याची शक्यता असते त्याला म्हणतात प्राथमिक कळ(प्राथमिक कळ). की केवळ एका फील्डशीच नाही तर एकाच वेळी अनेकांशी संबंधित असू शकते.
एक की वापरून एक किंवा अधिक रेकॉर्ड शोधता येतात. विशिष्ट की वापरून फक्त एकच विशिष्ट रेकॉर्ड सापडल्यास, अशा की म्हणतात अद्वितीय(अद्वितीय). सारणीमधील अनेक भिन्न रेकॉर्ड शोधण्यासाठी योग्य असलेली की, नॉन-युनिक म्हणतात.
पुढील संकल्पना आहे निर्देशांक. कल्पना करा की डेटाबेस सर्व्हर कसा कार्य करतो. विनंती प्राप्त झाल्यानंतर, ते संबंधित डेटा शोधण्यासाठी टेबल स्कॅन करण्यास सुरवात करते. स्कॅन क्रमाक्रमाने केले जाते, एका ओळीने. सर्व डेटा संकलित केला आहे याची खात्री करण्यासाठी, सर्व्हरने सारणीतील सर्व पंक्ती पाहणे आवश्यक आहे (किंवा सारण्या, जर एकाच वेळी अनेक टेबलांवर शोध घेतला गेला असेल).
पण हे सांगणे सोपे आहे: पहा. टेबलमध्ये दहा हजार नोंदी असतील तर? लाख असेल तर? सर्व्हर नक्कीच बघेल, पण त्याला किती वेळ लागेल? खूपच जास्त. आणि आपल्याला शक्य तितक्या लवकर उत्तर मिळणे आवश्यक आहे.
येथेच निर्देशांक बचावासाठी येतात. निर्देशांकसामग्रीच्या सारणीसारखे काहीतरी आहे ज्यामध्ये विशिष्ट डेटा दिसून येतो. त्याची तुलना इंटरनेटवर शोधण्याशी केली जाऊ शकते, जिथे शोध इंजिन कोणत्या पृष्ठांवर विशिष्ट शब्द आहेत याबद्दल डेटा संग्रहित करतात. MySQL मधील इंडेक्स समान गोष्ट करतात. अनुक्रमणिका विशेषतः तयार केली जाणे आवश्यक आहे, ते स्वतः तयार केलेले नाही (ते कसे तयार करावे याबद्दल नंतर चर्चा केली जाईल).
निर्देशांक तयार करण्याच्या प्रक्रियेस बराच वेळ लागतो, परंतु त्याच्या निर्मितीनंतर, सर्व्हर यापुढे डेटाच्या शोधात संपूर्ण सारणी स्कॅन करत नाही: तो निर्देशांक वापरून डेटा शोधतो, जेथे टेबलमध्ये आढळलेल्या प्रत्येक मूल्यासाठी ते सूचित केले जाते. टेबलच्या कोणत्या सेलमध्ये आवश्यक डेटा मिळू शकतो. हे लक्षणीयरीत्या कामाला गती देते (दहापट वेळा).
भिन्न क्वेरी भिन्न डेटा शोधतात. टेबलवर एक नाही तर अनेक भिन्न अनुक्रमणिका असणे आवश्यक असते, जेणेकरून विविध प्रकारच्या क्वेरी प्रत्येक त्यांच्या स्वतःच्या अनुक्रमणिकेसह कार्य करतात, चांगल्या प्रकारे तयार केल्या जातात आणि विशेषतः या प्रकारच्या क्वेरीसाठी योग्य असतात. उदाहरणार्थ, फोन बुकची कल्पना करा. ग्राहकाचे आडनाव शोधताना, निर्देशांकाने कोणत्या रेकॉर्डमध्ये विशिष्ट आडनाव शोधायचे हे सूचित केले पाहिजे. परंतु जर शोध नावाने केला गेला असेल तर अनुक्रमणिका आडनावाने नव्हे तर सदस्यांच्या नावाने तयार केली पाहिजे.
असे दिसून येते की काहीवेळा आपल्याकडे प्रत्येक सारणीसाठी अनेक भिन्न अनुक्रमणिका असणे आवश्यक आहे. MySQL मध्ये तुमच्याकडे प्रति टेबल 32 इंडेक्स असू शकतात. कमाल निर्देशांक लांबी(म्हणजे, निर्देशांकातील प्रत्येक नोंदीची लांबी) 500 बाइट्स पर्यंत आहे. इंडेक्समध्ये एकाच वेळी अनेक कॉलममधील डेटा समाविष्ट केला जाऊ शकतो (सध्याच्या MySQL अंमलबजावणीमध्ये, प्रत्येक इंडेक्समधील कॉलमची कमाल संख्या 15 आहे).
रेकॉर्डच्या फील्डमधील डेटावर निर्देशांक तयार केले जातात आणि प्रत्येक फील्ड एक की मानली जाऊ शकते, असे म्हटले जाते इंडेक्स कळांद्वारे तयार केला जातो. प्राथमिक की वर तयार केलेली अनुक्रमणिका सर्वाधिक संभाव्यतेसह शोधांमध्ये वापरली जाईल आणि त्याला म्हणतात प्राथमिक निर्देशांक.
सर्व स्तंभ आहेत मुलभूत मुल्य. याचा अर्थ असा की फील्डला स्पष्टपणे मूल्य दिलेले नसल्यास, ते प्रत्येक स्तंभ प्रकारासाठी विशिष्ट डीफॉल्ट मूल्यावर स्वयंचलितपणे सेट केले जाईल. स्तंभ तयार करताना डीफॉल्ट मूल्य बदलले जाऊ शकते.
टेबलमधील प्रत्येक स्तंभात आहे अद्वितीय नाव. टेबल्स आणि डेटाबेसला देखील नावे आहेत. अनेक प्रकरणांमध्ये, ज्याची खाली चर्चा केली जाईल, एका स्तंभाला अनेक नावे असणे आवश्यक आहे. या प्रकरणात, जेव्हा स्तंभ तयार केला गेला तेव्हा त्याला नियुक्त केलेले नाव मानले जाते; टेबलच्या नावांसाठी उपनावे देखील आहेत.
स्तंभ हे सारण्यांसह तयार केले जाणे आवश्यक नाही. स्तंभ जोडून किंवा काढून टाकून किंवा त्यांचे प्रकार बदलून आवश्यकतेनुसार सारणी बदलली जाऊ शकते. एसक्यूएल स्टेटमेंट्समध्ये, तुम्ही सिंटॅक्स वापरून वेगवेगळ्या डेटाबेसमधून टेबल्स ऍक्सेस करू शकता डेटाबेस_नाव.टेबल_नाव. हे लांब नाव आपल्याला टेबलची अनन्य ओळख करण्यास अनुमती देते आणि म्हणतात पूर्णपणे पात्र टेबल नाव.
तुम्ही वाक्यरचना निर्दिष्ट करून कोणत्याही टेबलमधील स्तंभाचा संदर्भ घेऊ शकता डेटाबेस_नाव.टेबल_नाव.स्तंभ_नाव. हे डिझाईन तुम्हाला स्तंभाला अनन्यपणे ओळखण्याची परवानगी देते आणि त्याला पूर्ण म्हणतात स्तंभाचे नाव.
नाव आणि प्रकाराव्यतिरिक्त, स्तंभांमध्ये पर्यायी देखील असू शकतात विशेषता, जे सर्व्हर विशिष्ट स्तंभावर नेमकी कशी प्रक्रिया करते हे निर्धारित करते, सर्व्हर या स्तंभासह कसे कार्य करते याचे तर्क बदलते. स्तंभाला विशेषता नियुक्त करणे हे सारणीतील प्रत्येक रेकॉर्डमधील स्तंभाच्या संबंधित फील्डमध्ये विशेषता नियुक्त करण्यासारखे आहे. लक्षात घ्या की समान प्रकारचे स्तंभ, परंतु भिन्न गुणधर्मांसह, वेगवेगळ्या प्रकारे प्रक्रिया केली जातात.
DBMS सह काम करताना, काही डेटाबेस नेहमी विचारात घेतले जातात सक्रियकिंवा वर्तमान. एक निश्चित आहे सक्रिय टेबल. सध्याच्या डेटाबेसमधील सक्रिय सारणीसह सर्व क्रिया केल्या जातील, जोपर्यंत तुम्ही स्पष्टपणे अन्यथा सूचित करत नाही.
सक्रिय सारणीमधील स्तंभामध्ये प्रवेश करताना, तुम्ही स्तंभाचे पूर्ण नाव (डेटाबेस आणि सारणी दर्शविणारे) ऐवजी फक्त नाव निर्दिष्ट करू शकता. हे वर्तमान डेटाबेसच्या सक्रिय सारणीच्या नावासह स्वयंचलितपणे पूरक केले जाईल, जे इनपुट प्रक्रियेस लक्षणीय गती देते. तसेच, जर तुम्ही वर्तमान डेटाबेसमधील दुसऱ्या सारणीवरून स्तंभात प्रवेश करत असाल, तर तुम्ही त्याचे नाव म्हणून निर्दिष्ट करू शकता टेबल_नाव.स्तंभ_नाव, भाग वगळणे डेटाबेस_नाव.ते वर्तमान डेटाबेसवर सेट केले जाईल.
पुढील चर्चेत तुम्हाला प्रवाहाची संकल्पना कळेल. प्रवाहहे डेटाबेस सर्व्हरशी तुमचे कनेक्शन दर्शवते. तुम्ही एंटर केलेल्या सर्व कमांड्स फक्त या थ्रेडवर लागू होतात. कृपया लक्षात घ्या की जर तुम्ही एकाच डेटाबेसमध्ये अनेक भिन्न कनेक्शन्स तयार केली असतील (उदाहरणार्थ, क्लायंटच्या अनेक प्रती उघडून), तर प्रत्येक कनेक्शन पूर्णपणे स्वतंत्र थ्रेड असेल, कोणत्याही प्रकारे इतरांवर अवलंबून नाही. वापरकर्ता आणि थ्रेडमधील हा मोठा फरक आहे: एका वापरकर्त्याला अनेक स्वतंत्र थ्रेड्सद्वारे दर्शविले जाऊ शकते. यातून कोणते नुकसान होऊ शकते ते आम्ही नंतर दाखवू.
वाइल्डकार्ड्सकिंवा वाइल्डकार्डचिन्हांचे प्रतिनिधित्व करा जे इतर चिन्हांच्या विशिष्ट संख्येशी संबंधित असू शकतात. उदाहरणार्थ, Windows मध्ये काम करताना, तुम्हाला बहुधा तारांकित (*) वर्ण आढळला असेल, जो कोणत्याही अनियंत्रित वर्णांची स्ट्रिंग दर्शवतो. फाइल्सच्या गटांसह काम करताना ही पद्धत मोठ्या प्रमाणावर वापरली जाते. हे वाइल्डकार्ड आहे.
नियमित अभिव्यक्तीवर्णांच्या विशिष्ट क्रमांचे प्रतिनिधित्व करा, त्यापैकी काही किंवा सर्व वाइल्डकार्ड आहेत. उदाहरणार्थ, Windows मध्ये काम करत असताना, तुम्हाला बहुधा *.doc (वर्तमान निर्देशिकेतील डॉक विस्तारासह सर्व फाइल्सशी जुळते) किंवा *.* (डिरेक्टरीमधील सर्व फाइल्सशी जुळते) सारख्या नोटेशन्स आढळतील. हे नियमित अभिव्यक्ती आहेत, फक्त त्यांना विंडोजमध्ये वेगळ्या पद्धतीने म्हटले जाते. जसे आपण पाहू शकता, त्यांच्याबद्दल काहीही क्लिष्ट नाही. MySQL मध्ये, तुम्हाला एकापेक्षा जास्त वेळा असे अभिव्यक्ती आढळतील (जरी थोडे अधिक क्लिष्ट). त्यांच्या मदतीनेच माहिती शोधण्याचे निकष लावले जातात.
आता या गुंतागुंतीच्या समस्येबद्दल विचार करूया: सर्व्हर अनेक वापरकर्त्यांना एकाच डेटाबेसवर (अगदी एकाच टेबलवर) एकाच वेळी काम करण्याची परवानगी देतो. पण डेटा अखंडता कशी सुनिश्चित करावी? जर एका वापरकर्त्याने काही डेटा लिहिला आणि त्याच वेळी दुसऱ्याने हा विशिष्ट डेटा बदलण्याचा प्रयत्न केला तर ते संपूर्ण डेटाबेस नष्ट करतील. हे कसे टाळायचे?
विभाजन सेट करण्याचे दोन मार्ग आहेत, आणि MySQL दोन्ही वापरते, जरी वेगवेगळ्या प्रकारच्या टेबलांवर. पहिला आहे व्यवहार मॉडेल, दुसरा अणु बदल.
व्यवहारएका विशिष्ट डेटाबेस ऑपरेशनला संदर्भित करते जे अनेक स्वतंत्र ऑपरेशन्समध्ये विभागले जाऊ शकत नाही. वर सूचीबद्ध केलेल्या दोन संकल्पनांचे संपूर्ण वर्णन अतिशय क्लिष्ट आहे आणि या पुस्तकात ते अनावश्यक वाटत नाही, म्हणून आम्ही त्यांचा केवळ वापरकर्त्याच्या दृष्टिकोनातून विचार करू.
तर व्यवहारासह कार्य कसे दिसते? सर्व्हर अशा प्रकारे सादर करतो: प्रथम, टेबलमध्ये नेमके काय बदलले जातील हे निर्धारित केले जाते, नंतर एक खूण केली जाते की या पेशी काही प्रकारे बदलत आहेत, नंतर बदल प्रत्यक्षात केले जातात आणि नंतर एक खूण केली जाते की सुधारणा पूर्ण झाली आहे. त्याच वेळी, बदल केले जात असताना, सारणी एकतर जुना डेटा परत करते किंवा काहीही परत करत नाही, परंतु कोणत्याही परिस्थितीत दोन वापरकर्त्यांना एकाच डेटामध्ये एकाच वेळी बदल करण्याची परवानगी देत नाही. प्रथम, पहिला बदल पूर्ण करतो, नंतर पुढचा कार्यभार घेतो.
व्यवहार आणि अणु बदल यातील फरक, सर्व वैज्ञानिक सिद्धांत बाजूला ठेवून, अंतिम वापरकर्त्यासाठी असा आहे की व्यवहार मॉडेलच्या बाबतीत, वापरकर्ता, टेबलमधील काही डेटा बदलणारी क्वेरी कार्यान्वित केल्यानंतर, त्याला नेमके कसे हवे आहे हे ठरवू शकतो. व्यवहार पूर्ण करण्यासाठी: पाहिजे की नाही बदल जतन करा (किट करा)किंवा त्यांना नकार द्या (कॉल करा रिवाइंड, रोलबॅक), त्याद्वारे क्वेरी कॉल करण्यापूर्वी टेबल ज्या स्थितीत होता त्या स्थितीत परत करते. हे नोंद घ्यावे की सर्व बदल (AUTO_COMMIT) स्वयंचलितपणे जतन करण्यासाठी एक मोड आहे. अणु मॉडेलमध्ये, बदल पूर्ववत केले जाऊ शकत नाहीत: ते ताबडतोब टेबलमध्ये प्रविष्ट केले जातात. सध्या सुरू असलेल्या व्यवहाराला सक्रिय म्हणतात.
MySQL स्वतःचे टेबल फॉरमॅट बाय डीफॉल्ट वापरते: MyISAM. पूर्वी, मालकीचे ISAM स्वरूप देखील वापरले जात होते, परंतु ते आता अप्रचलित घोषित केले गेले आहे आणि केवळ जुन्या वापरकर्त्यांसह सुसंगततेसाठी समर्थित आहे. तुमच्याकडे या फॉरमॅटमध्ये टेबल्स असल्यास, आम्ही त्यांना नवीन MyISAM फॉरमॅटमध्ये रूपांतरित करण्याची जोरदार शिफारस करतो. हे अधिक विश्वासार्ह आणि जलद कार्य करते.
आम्ही सपोर्टेड टेबल फॉरमॅट्सबद्दल बोलत असल्याने, आम्ही लगेच स्पष्ट केले पाहिजे की MySQL अनेक वेगवेगळ्या फॉरमॅटला सपोर्ट करते. काही व्यवहाराच्या आधारावर काम करतात, तर काही अणु बदलांवर, जेणेकरुन अंतिम वापरकर्त्याला नेहमी काय वापरायचे याची निवड असते. हे लक्षात घेतले पाहिजे की व्यवहार मॉडेल अणूपेक्षा अंमलात आणण्यासाठी अधिक जटिल आहे आणि म्हणूनच MySQL मधील व्यवहारांसाठी समर्थन खूप नंतर दिसून आले. MySQL फॉरमॅट्स (MyISAM आणि ISAM) अणु बदल वापरतात, परंतु ते त्यांना इतक्या चांगल्या प्रकारे अंमलात आणतात की विश्वासार्हतेच्या दृष्टीने ते व्यवहाराच्या प्रवेश मॉडेलपेक्षा कोणत्याही प्रकारे कमी नाहीत. तक्ता 1.1. MySQL द्वारे समर्थित टेबल प्रकार त्यांच्या संक्षिप्त वर्णनांसह सूचीबद्ध करते.
तक्ता 1.1. MySQL समर्थित सारणी प्रकारांचे संक्षिप्त वर्णन.
कृपया लक्षात घ्या की सर्व सर्व्हर आवृत्त्या सूचीबद्ध केलेल्या सर्व सारण्यांना समर्थन देत नाहीत! ISAM आणि MyISAM प्रकार नेहमी समर्थित आहेत, परंतु बाकीच्यांसाठी पर्याय आहेत. त्यामुळे तुम्हाला नक्की काय हवे आहे हे पाहण्यासाठी http://www.mysql.com वर एक नजर टाका.
डंप हे डेटाबेसचे मध्यवर्ती प्रतिनिधित्व आहे. शिवाय, हे सहसा निर्दिष्ट केले जाते की कोणते डेटा प्रतिनिधित्व आहे. उदाहरणार्थ, मजकूर फाइलवर डंप कराम्हणजे संपूर्ण डेटाबेस मजकूर फाइल म्हणून रूपांतरित आणि जतन केला जातो.
याची गरज का आहे? डंप बॅकअपसाठी तसेच विविध सर्व्हर दरम्यान डेटा हस्तांतरित करण्यासाठी खूप सोयीस्कर आहेत. त्याच सर्व्हरमध्ये डंप लागू करणे आवश्यक असू शकते.
तक्ता 1.1 विविध प्रकारचे तक्ते दाखवते. त्यांच्यापैकी प्रत्येकाचे स्वतःचे अंतर्गत डेटा स्टोरेज स्वरूप आहे. एकमेकांना रूपांतरित करण्याचा सर्वात सोपा मार्ग डंपमध्ये येतो.
MySQL सर्व प्लॅटफॉर्मवर प्रशासित करण्यासाठी सर्वात सोपा डेटाबेस आहे. याव्यतिरिक्त, या डेटाबेसला संसाधनांची आवश्यकता नाही, म्हणून ते अगदी थोड्या प्रमाणात RAM आणि हार्ड डिस्कसह वैयक्तिक संगणकांवर देखील वापरले जाऊ शकते. यामुळे, PHP विकासकांनी सर्व प्रकारच्या क्लायंट संगणकांवर, अगदी लॅपटॉपवर संपूर्ण स्थानिक वेब विकास वातावरण तयार करण्यासाठी MySQL चा वापर केला आहे.
PHP वातावरणात काम करणारा कोणताही विकासक काही इतर डेटाबेसपेक्षा स्वतंत्रपणे MySQL डेटाबेस प्रशासित करण्यास सक्षम असतो. प्रशासनाचे कार्य अधिक सुलभ करण्यासाठी, तुम्ही असंख्य साधनांचा लाभ घेऊ शकता जे केवळ MySQL डेटाबेसमध्येच प्रदान केले जात नाहीत तर तृतीय-पक्ष विकासकांकडून देखील मिळवता येतात.
या टप्प्यावर तुम्हाला ज्या मुख्य संकल्पना परिचित झाल्या पाहिजेत त्या आहेत:
हे लक्षात घेतले पाहिजे की मी रिलेशनल डेटाबेसेसवर शैक्षणिक साहित्यात वापरल्या जाणाऱ्या अचूक शब्दावलीचे पुनरुत्पादन करण्याचा प्रयत्न करत नाही, तर तुम्हाला मूलभूत संकल्पना त्वरीत समजून घेण्यासाठी आणि डेटाबेससह कार्य करण्यास प्रारंभ करण्यासाठी सोप्या, सामान्य व्याख्या प्रदान करण्याचा प्रयत्न करीत आहे.
MySQL सह कार्य करण्याचे तीन मुख्य मार्ग आहेत: कमांड लाइन वापरणे, phpMyAdmin सारखे वेब इंटरफेस वापरणे आणि PHP सारखी प्रोग्रामिंग भाषा वापरणे. यातील तिसऱ्या पद्धतींबद्दल पुढील लेखांमध्ये चर्चा केली जाईल, परंतु आता पहिल्या दोन पद्धती पाहू.
जर तुम्ही लेखातील सूचनांनुसार ओपनसर्व्हर डब्ल्यूएएमपी सर्व्हर स्थापित केला असेल, तर तुम्ही खालील निर्देशिकेतून MySQL एक्झिक्युटेबल प्रोग्राममध्ये प्रवेश करू शकता:
सुरवातीपासून MySQL कोर्स.
MySQL-5.7-x64 ऐवजी तुम्हाला "Modules" टॅबमधील OpenServer सेटिंग्जमध्ये निर्दिष्ट केलेली आवृत्ती बदलण्याची आवश्यकता आहे.
तुम्हाला कमांड प्रॉम्प्ट प्रोग्राम उघडण्याची आणि या निर्देशिकेवर जाण्याची आवश्यकता आहे. हे cd PATH_TO_NEEDED_FOLDER कमांड वापरून केले जाते:
MySQL कोर्स सुरवातीपासून खरेदी केल्यानंतरच कोड उपलब्ध होतो.
यानंतर, तुम्हाला या निर्देशिकेत mysql.exe प्रोग्राम चालवावा लागेल, त्याचे विशेष पॅरामीटर पास करा. हे करण्यासाठी, तुम्हाला आता कमांड लाइनवर कमांड चालवावी लागेल:
MySQL कोर्स सुरवातीपासून खरेदी केल्यानंतरच कोड उपलब्ध होतो.
परिणामी, MySQL क्लायंट सुरू होईल. हे MySQL सर्व्हरशी जोडलेले आहे, जे OpenServer सुरू झाल्यावर लॉन्च झाले होते.
यामुळे इच्छित परिणाम न मिळाल्यास आणि तुम्हाला MySQL सर्व्हरला "लोकलहोस्ट" वर MySQL सर्व्हरशी कनेक्ट करण्याबद्दल त्रुटी संदेश प्राप्त झाला, तर OpenServer चालू असल्याची खात्री करा आणि MySQL मॉड्यूलमध्ये निर्दिष्ट केले आहे.
-u पॅरामीटर म्हणजे वापरकर्ता. म्हणजेच, हा वापरकर्ता निर्दिष्ट करण्यासाठी एक चेकबॉक्स आहे ज्या अंतर्गत आपल्याला सर्व्हरशी कनेक्ट करण्याची आवश्यकता आहे. रूट हा MySQL मधील सर्वात महत्वाचा वापरकर्ता आहे. जेव्हा सर्व्हर स्थापित केला जातो तेव्हा ते तयार केले जाते आणि डीफॉल्टनुसार त्यास पासवर्ड नसतो.
पण आपल्या टर्मिनलवर परत जाऊया. या कन्सोल क्लायंटद्वारे आम्ही सर्व्हरला विविध कमांड पाठवू शकतो. या सर्व्हरवर तयार केलेल्या सर्व डेटाबेसेसची सूची असलेली कमांड चालवू या.
MySQL कोर्स सुरवातीपासून खरेदी केल्यानंतरच कोड उपलब्ध होतो.
प्रतिसादात, आम्हाला डेटाबेसची सुंदर रचना केलेली सूची प्राप्त होईल. तुमच्याकडे ते माझ्यापेक्षा कमी असतील, कारण मी त्यांना आधीच जोडले आहे.
डेटाबेस आणि टेबल्स व्यवस्थापित करण्यासाठी phpMyAdmin प्रोग्राम वापरणे खूप सोपे आणि जलद होईल. तुमच्या ब्राउझरच्या ॲड्रेस बारमध्ये खालील ओळ एंटर करण्यापूर्वी, तुम्हाला खात्री करणे आवश्यक आहे की OpenServer प्रोग्राम आधीपासूनच चालू आहे आणि म्हणूनच, MySQL डेटाबेस वापरासाठी तयार आहे:
सिस्टममध्ये लॉग इन करण्यासाठी अशा सुंदर विंडोद्वारे आपले स्वागत केले जाईल.
कन्सोल ऍप्लिकेशनच्या बाबतीत, रूट वापरकर्ता निर्दिष्ट करा आणि पासवर्ड रिक्त सोडा. "लॉगिन" वर क्लिक करा.
यानंतर, तुम्हाला बऱ्यापैकी अनुकूल इंटरफेससह डेटाबेस कंट्रोल पॅनेलवर नेले जाईल. डावीकडे तुम्हाला डेटाबेसची तीच यादी दिसेल जी तुम्हाला कन्सोल आवृत्तीमध्ये प्राप्त झाली आहे. तुम्ही त्यांना पोक करू शकता आणि आत काय आहे ते पाहू शकता.
आता SQL टॅबवर क्लिक करू आणि विंडोवर जाऊ जिथे तुम्ही थेट MySQL DBMS वर क्वेरी लिहू शकता, जसे की ते कन्सोलमध्ये असेल:
उघडणाऱ्या विंडोमध्ये, समान क्वेरी प्रविष्ट करा:
MySQL कोर्स सुरवातीपासून खरेदी केल्यानंतरच कोड उपलब्ध होतो.
आम्ही "फॉरवर्ड" बटण दाबतो आणि कन्सोल ऍप्लिकेशनच्या बाबतीत समान परिणाम पाहतो.
एसक्यूएल भाषा विकसित करणाऱ्या अँड्र्यू टेलरच्या मते, भाषेचे नाव स्ट्रक्चर्ड क्वेरी लँग्वेज (किंवा तत्सम काहीही) साठी कमी नाही, जरी अनेकांचा असा विश्वास आहे. मागील DBM-शैली डेटाबेस संस्थेच्या मानकापेक्षा डेटा संचयित करण्याच्या कठोर आणि अधिक सामान्य पद्धतीसाठी SQL हा आधार आहे, जो फ्लॅट फाइल्सच्या वापरावर आधारित होता.
SQL भाषा मानकांनुसार परिभाषित केली जाते ANSI(अमेरिकन राष्ट्रीय मानक संस्था) आणि ECMA(युरोपियन कॉम्प्युटर मॅन्युफॅक्चरर्स असोसिएशन); या दोन्ही मानकीकरण संस्था आंतरराष्ट्रीय स्तरावर मान्यताप्राप्त आहेत, परंतु हे लक्षात घेतले पाहिजे की एसक्यूएल मानकांच्या सामान्य शिफारसींमध्ये, एकीकडे, व्यावसायिक कंपन्यांच्या सॉफ्टवेअर उत्पादनांमध्ये लक्षणीय फरक आहेत. दुसरीकडे, ओपन सोर्ससह डेटाबेस विकसित करताना, गेल्या काही वर्षांत तथाकथित ऑब्जेक्ट-रिलेशनल डेटाबेस, तसेच वेब मार्केटसाठी विशेषत: डिझाइन केलेले एसक्यूएल सॉफ्टवेअर उत्पादनांचा वेगवान विकास झाला आहे PHP प्रणालीच्या संयोजनात वापरल्या जाणाऱ्या डेटाबेसची संख्या खूप मोठी आहे, म्हणून सर्वात योग्य डेटाबेस निवडताना काही तत्त्वे पाळली पाहिजेत.
मूळ तत्व हे आहे की आपण प्रथम आपल्या स्वत: च्या विकासाच्या गरजा विचारात घेतल्या पाहिजेत किंवा किमान आपल्याला कोणते ध्येय साध्य करायचे आहे हे माहित असणे आवश्यक आहे. तुम्ही इतर शिफारशी वाचण्याचा प्रयत्न केल्यास, तुम्हाला अशा युक्तिवादांसह अनेक खात्रीशीर संदेश मिळतील जे तुम्ही काही प्रगत डेटाबेस टूल्सशिवाय (जसे की ट्रिगर किंवा संग्रहित प्रक्रिया) आणि कोणत्याही SQL-सक्षम सॉफ्टवेअर उत्पादनाशिवाय अक्षरशः “करू शकत नाही”. ही साधने नसताना एसक्यूएल उत्पादन म्हणण्याचा अधिकार क्वचितच पात्र आहे. मिठाच्या दाण्याने हे निर्णय घ्या. महत्त्वाच्या क्रमाने, आवश्यक वैशिष्ट्यांची यादी स्वतः तयार करणे आणि नंतर आपल्या गरजेनुसार सर्वोत्तम सॉफ्टवेअर उत्पादन शोधणे अधिक चांगले आहे.
परंतु वरील असूनही, एसक्यूएल भाषा समर्थन बहुतेक मानकांचे पालन करते. म्हणून, प्रोग्राम्स विशेषत: काही एसक्यूएल स्टेटमेंट्स वारंवार वापरतात, अंमलबजावणी करण्यासाठी कोणते विशिष्ट सॉफ्टवेअर उत्पादन निवडले आहे याची पर्वा न करता.
मूलत:, SQL डेटाबेसमध्ये एक अतिशय सोपी तार्किक रचना असते. कोणत्याही दिलेल्या SQL सॉफ्टवेअर इन्स्टॉलेशनमध्ये सामान्यत: एकाधिक डेटाबेस असू शकतात. उदाहरणार्थ, एक डेटाबेस ग्राहकांबद्दल डेटा संचयित करण्यासाठी वापरला जाऊ शकतो आणि दुसऱ्यामध्ये उत्पादनांबद्दल डेटा असू शकतो. (एक विशिष्ट गुंतागुंत उद्भवते कारण एसक्यूएल सर्व्हर स्वतः आणि ते सपोर्ट करत असलेल्या सारण्यांचा संग्रह सामान्यतः सामान्य शब्द डेटाबेसद्वारे संदर्भित केला जातो.) प्रत्येक डेटाबेसमध्ये अनेक सारण्या असतात, प्रत्येक टेबलमध्ये काळजीपूर्वक परिभाषित स्तंभ असतात आणि टेबलमधील प्रत्येक स्थान असू शकते. टेबलमध्ये प्रविष्ट केलेला रेकॉर्ड किंवा पंक्ती म्हणून विचार केला जातो.
कोणताही SQL सर्व्हर चार तथाकथित डेटा मॅनिप्युलेशन स्टेटमेंटला सपोर्ट करतो आणि सर्वसाधारणपणे ही स्टेटमेंट रिलेशनल डेटाबेसवर केलेल्या बहुतांश ऑपरेशन्सला अधोरेखित करते. ही चार मूलभूत डेटाबेस स्टेटमेंट्स SELECT, INSERT, UPDATE आणि DELETE आहेत. एसक्यूएल स्टेटमेंट्स, ज्यांना कमांड्स देखील म्हणतात, अतिशय सोयीस्कर आहेत आणि आपल्याला डेटाबेसमध्ये जवळजवळ सर्व आवश्यक क्रिया करण्यास अनुमती देतात.
या चार एसक्यूएल स्टेटमेंट्सचे एक महत्त्वाचे वैशिष्ट्य म्हणजे ते केवळ डेटाबेसमध्ये संग्रहित मूल्यांमध्ये फेरफार करतात, परंतु डेटाबेसच्या संरचनेवर परिणाम करत नाहीत. दुसऱ्या शब्दांत, या ऑपरेटर्सवर आधारित कमांड्स वापरल्या जाऊ शकतात, उदाहरणार्थ, डेटाबेस तयार करण्याऐवजी डेटा प्रविष्ट करण्यासाठी; अशा आदेशांचा वापर करून, आपण डेटाबेसमधून डेटाचा कोणताही भाग काढू शकता, परंतु "शेल" स्वतःच अखंड राहील, म्हणून, विशेषतः, आपण त्याच सर्व्हरवर चालणाऱ्या दुसऱ्या डेटाबेसला विद्यमान डेटाबेसचे नाव नियुक्त करू शकत नाही. स्तंभ जोडण्यासाठी किंवा काढण्यासाठी, ट्रेस न ठेवता संपूर्ण डेटाबेस नष्ट करण्यासाठी किंवा नवीन डेटाबेस तयार करण्यासाठी, तुम्ही DROP, ALTER आणि CREATE सारख्या इतर आज्ञा वापरल्या पाहिजेत.
MySQL कमांडच्या पुढील लेखात आपण या सर्व ऑपरेटर्सचा तपशीलवार विचार करू.