एसक्यूएल हे आमचे सर्वस्व आहे
तुम्ही आधीच अंदाज लावल्याप्रमाणे, SQL सर्व्हरला सर्व आज्ञा SQL क्वेरीद्वारे दिल्या जाऊ शकतात. सर्व काही.
हे संघ अधिकृतपणे 4 गटांमध्ये विभागलेले आहेत:
-
डेटा व्याख्या विधाने (डेटा व्याख्या भाषा, DDL ):
- CREATE डेटाबेस ऑब्जेक्ट तयार करते (डेटाबेस स्वतः, टेबल, दृश्य, वापरकर्ता इ.)
- ALTER एखादी वस्तू बदलते
- DROP एखादी वस्तू काढून टाकते
-
डेटा मॅनिप्युलेशन ऑपरेटर (डेटा मॅनिप्युलेशन लँग्वेज, डीएमएल ):
- SELECT दिलेल्या अटी पूर्ण करणारा डेटा निवडतो
- INSERT नवीन डेटा जोडते
- अद्यतन विद्यमान डेटा बदलते
- DELETE डेटा काढून टाकते
-
डेटा ऍक्सेस डेफिनेशन ऑपरेटर (डेटा कंट्रोल लँग्वेज, डीसीएल ):
- GRANT वापरकर्त्याला (समूह) ऑब्जेक्टवर विशिष्ट ऑपरेशन्स करण्यासाठी परवानग्या देते
- REVOKE पूर्वी जारी केलेल्या परवानग्या रद्द करते
- DENY एक बंदी सेट करते जी परमिटपेक्षा अग्रक्रम घेते
-
व्यवहार नियंत्रण भाषा ( टीसीएल ) विधाने :
- COMMIT व्यवहार लागू करते
- ROLLBACK वर्तमान व्यवहाराच्या संदर्भात केलेले सर्व बदल परत आणते
- SAVEPOINT एखाद्या व्यवहाराला लहान विभागांमध्ये विभाजित करतो
आणि पहिले दोन स्तर, आम्ही फक्त SELECT स्टेटमेंटच्या जातींचा अभ्यास केला. कल्पना करा की भविष्यात किती मनोरंजक गोष्टी आपली वाट पाहत आहेत.
परंतु आम्ही येथे प्रामुख्याने जावा प्रोग्रामरबद्दल तयारी करत आहोत, म्हणून आम्ही त्या परिस्थितींचा अभ्यास करू ज्या तुम्हाला कामाच्या ठिकाणी नक्कीच भेटतील.
प्रकल्पावरील सिस्टम प्रशासक बहुधा सर्व डेटाबेस तयार करेल, परंतु आपल्याला निश्चितपणे डेटामधून अनेक वेळा निवड करावी लागेल.
शिवाय, काहीवेळा तुमचा कोड डेटाबेसमध्ये सर्व डेटा लिहित नाही किंवा चुकीच्या पद्धतीने लिहित नाही, म्हणून तुम्हाला अनेकदा पेनसह त्यात चढावे लागेल आणि तेथे खरोखर काय संग्रहित आहे ते पहावे लागेल.
मागील लेक्चर्समध्ये आपण ज्या गोष्टींना स्पर्श केला त्या गोष्टी पुन्हा पाहू.
डेटाबेसमध्ये स्कीमा तयार करणे
DBMS मध्ये नवीन स्कीमा तयार करण्यासाठी, तुम्हाला कमांड चालवावी लागेल:
CREATE SCHEMA Name;
हा सर्वात सोपा पर्याय आहे. तसेच, नवीन स्कीमा तयार करताना, आपण डेटा एन्कोडिंग स्वरूप आणि इतर पॅरामीटर्स निर्दिष्ट करू शकता.
जर तुम्हाला स्कीमा हटवायचा असेल, परंतु तुम्हाला खात्री नसेल की ती अस्तित्वात आहे, तर तुम्हाला कमांड चालवावी लागेल:
DROP SCHEMA IF EXIST Name;
वेगवेगळ्या डेटाबेसच्या बॅकअप असलेल्या फाइल्समध्ये तुम्हाला या कमांड्स दिसतील, म्हणूनच मी ते इथे आणत आहे.
सध्याची योजना निवडत आहे
तुमच्या DBMS मध्ये अनेक स्कीमा असल्यास, वेगवेगळ्या स्कीमामध्ये समान सारण्या आहेत हे सहजपणे होऊ शकते. गोंधळ टाळण्यासाठी, आपण दोन गोष्टी करू शकता:
- टेबलच्या नावापुढे नेहमी स्कीमाचे नाव ठेवा
- डीफॉल्ट स्कीमा निर्दिष्ट करा
चला एक क्वेरी लिहूया जी वापरकर्ता टेबलमधून डेटा निवडेल , जी चाचणी स्कीमामध्ये आहे . हे असे काहीतरी दिसेल:
SELECT * FROM test.user;
तुम्हाला एकाच क्वेरीमध्ये वेगवेगळ्या स्कीमांमधून अनेक टेबल्समध्ये सामील होणे (सामील होणे) आवश्यक असल्यास हे फक्त अपरिहार्य आहे.
तसे, जावा भाषेत आपण बर्याचदा असेच काहीतरी करतो: जर कोडमध्ये आपल्याला वेगवेगळ्या पॅकेजेसमधून समान नावाचे वर्ग वापरायचे असतील तर, आम्ही वर्गाच्या नावापूर्वी पॅकेजचे नाव जोडतो.
दुसरा मार्ग म्हणजे डीफॉल्ट स्कीमा निर्दिष्ट करणे . जर क्वेरी टेबलचे नाव निर्दिष्ट करते परंतु स्कीमा नसल्यास, डीफॉल्ट स्कीमा वापरला जातो. हे करण्यासाठी, USE विधान वापरा :
USE name - schemes;
USE स्टेटमेंट वापरून मागील क्वेरी पुन्हा लिहू:
USE test;
SELECT * FROM user;
एक दृश्य तयार करणे
वास्तविक डेटा असलेल्या सारण्यांव्यतिरिक्त, SQL तुम्हाला आभासी सारण्यांसारखे काहीतरी संचयित करण्याची परवानगी देते, जिथे डेटा वास्तविक सारण्यांमधून काढला जातो. अशा आभासी सारण्यांना VIEW म्हणतात.
अशी सारणी वास्तविक डेटा संचयित करू शकत नाही आणि प्रत्येक वेळी त्यात प्रवेश केल्यावर ते वास्तविक सारण्यांमधून डेटा खेचते. अशा दृश्याची सामग्री SQL क्वेरी वापरून निर्दिष्ट केली जाते.
तुम्ही कोणत्याही सिलेक्ट क्वेरीमधून यासारख्या कमांडसह दृश्य तयार करू शकता:
CREATE VIEW Name AS
SELECT-request;
CREATE VIEW public_employee AS
SELECT id, name FROM employee
वरील उदाहरणामध्ये, आमच्या टेबल (VIEW) public_employee मध्ये फक्त कर्मचारी आयडी आणि त्यांची नावे असतील, परंतु त्यांच्या पगाराबद्दल माहिती नसेल. आपण वास्तविक सारण्यांप्रमाणेच अशा दृश्यांचा वापर करू शकता.
दृश्ये का आवश्यक आहेत? त्यांच्याकडे अनेक फायदे आहेत:
माहितीच्या प्रवेशाचे लवचिक नियंत्रण . तुम्ही विशिष्ट वापरकर्त्यांना फक्त VIEW मध्ये प्रवेश देऊ शकता, परंतु टेबलवर प्रवेश देण्यासाठी नाही. आणि दृश्यामध्ये, टेबलमधून फक्त सार्वजनिक माहिती काढा. याशिवाय, भविष्यात टेबलमध्ये महत्त्वाची माहिती असलेले नवीन कॉलम जोडले गेल्यास ते चुकूनही व्ह्यूमध्ये येणार नाही.
डेटा डिनोर्मलायझेशन . स्टोरेजच्या सोयीसाठी, डेटा बहुतेक वेळा शेकडो आणि हजारो टेबलांमध्ये विभागला जातो, परंतु सामान्य व्यक्तीसाठी अशा डेटासह कार्य करणे फार सोयीचे नसते - आपल्याला खूप जटिल प्रश्न लिहावे लागतील. व्ह्यूसह, तुम्ही व्हर्च्युअल टेबल्स तयार करू शकता जे एकाच टेबलमधील डझनभर वेगवेगळ्या टेबलमधून डेटा प्रदर्शित करतात.
पॉलिमॉर्फिझम आणि एन्कॅप्सुलेशन . तुम्ही तुमच्या डेटाबेसची रचना बदलू शकता. त्याच वेळी, प्रोग्रामचे वापरकर्ते जे आपल्या दृश्यांसह कार्य करतात ते अंदाज लावणार नाहीत की काहीतरी बदलले आहे. आणि व्ह्यूमध्ये प्रवेश असलेल्या प्रोग्रामचा कोड पुन्हा लिहिण्याची आवश्यकता नाही. तुम्हाला फक्त व्ह्यूशी संबंधित असलेल्या SQL स्क्रिप्टमध्ये बदल करणे आवश्यक आहे.
फक्त वाचा . दृश्य फक्त SELECT क्वेरीसह सेट केले जाऊ शकते, म्हणून दृश्यासह कार्य करणे कोणत्याही प्रकारे वास्तविक टेबलमधील डेटा बदलू शकत नाही. तसे, क्वेरी कॅशिंगच्या बाजूने हे आणखी एक प्लस आहे. पण पुढच्या वेळी त्याबद्दल अधिक.
GO TO FULL VERSION