2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
SQL भाषा चतुर्षु वर्गेषु विभक्ता अस्ति : आँकडाप्रश्नभाषा DQL, आँकडा हेरफेरभाषा DML, आँकडा परिभाषा भाषा DDL, आँकडा नियन्त्रणभाषा DCL च ।
1. डाटा क्वेरी भाषा DQL
आँकडाप्रश्नभाषायाः मूलभूतसंरचना DQL SELECT खण्डेन, FROM खण्डेन, WHERE खण्डेन च निर्मितः प्रश्नखण्डः अस्ति: SELECT <क्षेत्रनामसारणी> FROM <सारणी अथवा दृश्यनाम> WHERE <प्रश्नशर्ताः>
2. डाटा हेरफेर भाषा DML
दत्तांश-हेरफेर-भाषायाः DML इत्यस्य मुख्यतया त्रीणि रूपाणि सन्ति-
१) निवेशनम् : INSERT
२) अद्यतनम् : UPDATE
३) विलोपनम् : DELETE
3. दत्तांशपरिभाषा भाषा DDL
दत्तांशपरिभाषाभाषा DDL इत्यस्य उपयोगः दत्तांशकोशे विविधवस्तूनि निर्मातुं भवति ----- सारणीः, दृश्यानि, अनुक्रमणिकाः, पर्यायवाची, समूहाः इत्यादयः, यथा: CREATE TABLE / VIEW / INDEX / SYN / CLUSTER | . DDL संचालनं अन्तर्निहितरूपेण प्रस्तुतं भवति! रोलबैक् कर्तुं न शक्यते
4. आँकडा नियन्त्रण भाषा DCL
दत्तांशनियन्त्रणभाषा DCL इत्यस्य उपयोगः दत्तांशकोशं प्राप्तुं, दत्तांशकोशस्य हेरफेरव्यवहारस्य समयं प्रभावं च नियन्त्रयितुं, दत्तांशकोशस्य निरीक्षणार्थं च केचन विशेषाधिकाराः प्रदातुं वा निरस्तं कर्तुं वा भवति इव:
1) अनुदान : प्राधिकरण।
२) ROLLBACK [WORK] TO [SAVEPOINT]: पुनः एकं निश्चितं बिन्दुं प्रति रोल कुर्वन्तु। Rollback---ROLLBACK rollback आदेशः दत्तांशकोशस्थितिं अन्तिमप्रस्तूयमानस्थितौ प्रत्यागच्छति । अस्य प्रारूपम् अस्ति: SQL>ROLLBACK;
3) COMMIT [WORK]: प्रस्तुतं कुर्वन्तु। दत्तांशकोशनिवेशनस्य, लोपस्य, परिवर्तनस्य च कार्येषु व्यवहारः तदा एव सम्पन्नः भवति यदा सः दत्तांशकोषे प्रस्तौति । व्यवहारस्य प्रतिबद्धतायाः पूर्वं केवलं दत्तांशकोशं संचालितस्य व्यक्तिस्य एव अधिकारः भवति यत् अन्ये केवलं अन्तिमप्रतिबद्धतायाः समाप्तेः अनन्तरमेव द्रष्टुं शक्नुवन्ति ।
दत्तांशकोशप्राधिकरण आदेशः : १.
उपयोक्त्रे सारणीनाम (अथवा स्तम्भनाम) इत्यत्र GRANT<permission> इति
सम्यक् उत्तरविकल्पः B: सम्मिलितं,चयनं: अनुमतिसारणीनाम: उपयोक्तृप्रयोक्ता: nkw
पूरकज्ञानबिन्दु-पुनःप्रयोगस्य अनुमतिः
REVOKE <permission> on table name (अथवा स्तम्भनाम) FROM user
अहं मन्ये सर्वे explain इति कथनेन परिचिताः सन्ति, यत् निष्पादनयोजनां द्रष्टुं कथनरूपेण उपयुज्यते । explain इत्यस्य उपयोगः प्रायः SQL अनुकूलनविश्लेषणे भवति ।
अत्र ज्ञातव्यं यत् explain वस्तुतः कथनं न निष्पादयति, अपितु केवलं निष्पादनयोजनां प्रदर्शयति ।
अहं का सूचनां द्रष्टुं शक्नोमि ?
- EXPLAIN SELECT select具体语句
- 如:
- EXPLAIN SELECT * FROM userpro
सूची | वर्णेतु | पुनः पूरयतु |
id | प्रत्येकं SELECT कीवर्डं id इत्यनेन सह सङ्गच्छते | |
चयन_प्रकार | SELECT कीवर्डस्य अनुरूपः प्रश्नप्रकारः | |
पीठिका | सारणीनाम | |
विभाजनम् | विभाजनसूचनायाः मेलनं | |
प्रकारः | एकस्य सारणीयाः कृते अभिगमविधिः | |
सम्भव_कुंजी | सम्भाव्य अनुक्रमणिका | |
कुंजी | वास्तविक अनुक्रमणिका प्रयुक्त | |
कील_लेन | प्रयुक्ता वास्तविकसूचकाङ्कदीर्घता | |
ref | अनुक्रमणिकास्तम्भसमतुल्यताप्रश्नस्य उपयोगं कुर्वन्, समतुल्यतायै अनुक्रमणिकास्तम्भेन सह सङ्गता वस्तुसूचना । | |
पङ्क्तयः | पठनीयानां अभिलेखानां अनुमानितसंख्या | |
छानितम् | अन्वेषणमापदण्डेन छाननेन अनन्तरं अवशिष्टानां अभिलेखानां प्रतिशतम् |
|
अतिरिक्त | अतिरिक्त सूचना |
1,id
प्रत्येकं SELECT कीवर्डं id इत्यनेन सह सङ्गच्छते
id मूल्यं यत्किमपि बृहत् भवति तत्किमपि अधिकं प्राथमिकता भवति, प्रथमं निष्पादितं भविष्यति च ।
यदि IDs समानाः सन्ति तर्हि ते समूहरूपेण गणयित्वा उपरितः अधः क्रमेण निष्पादयितुं शक्यन्ते ।
प्रत्येकं ID सङ्ख्या स्वतन्त्रं प्रश्नं प्रतिनिधियति ।
2,चयन_प्रकार
कोटी | दृष्टान्तरूपेण दर्शयतु |
सरलं | एकः सारणीप्रश्नः, उपप्रश्नः अथवा UNION प्रश्नः नास्ति । |
प्राथमिक | प्रश्ने बाह्यतमं SELECT कथनम् । |
SUBQUERY इति | WHERE खण्डे उपप्रश्नः उपयुज्यते । |
व्युत्पन्नम् | FROM खण्डे निहितानाम् उपप्रश्नानां कृते, MySQL तत् DERIVED (व्युत्पन्नम्) इति चिह्नितं करिष्यति तथा च बाह्यप्रश्नेन उपयोगाय तस्य परिणामसमूहस्य अस्थायीसारणीं जनयिष्यति |
UNION | UNION प्रश्ने द्वितीयं तदनन्तरं च प्रश्नकथनम् । |
UNION RESULT | UNION प्रश्नस्य परिणामसमूहः । |
आश्रित उपप्रश्ना | उपप्रश्नस्य परिणामः बाह्यप्रश्नस्य मूल्ये निर्भरं भवति, तथा च बाह्यप्रश्नस्य प्रत्येकपङ्क्तौ उपप्रश्नः एकवारं निष्पादितः भवति । |
आश्रित संघ | UNION प्रश्नस्य द्वितीयं तदनन्तरं च प्रश्नवाक्यं, परिणामाः च बाह्यप्रश्नस्य मूल्ये निर्भरं भवन्ति |
अदम्य उपप्रश्ना | उपप्रश्नं संग्रहणं कर्तुं न शक्यते, प्रत्येकं सन्दर्भं कृत्वा निष्पादितं भविष्यति । |
3. सारणीस्तम्भः सारणीयाः सारणीनाम प्रतिनिधियति (कदाचित् वास्तविकं सारणीनाम न, संक्षिप्तनाम भवितुम् अर्हति)।
4. विभाजनानि (वैकल्पिकम्) .
5. प्रकार ☆
सामान्यप्रकाराः यथा
प्रकारः | दृष्टान्तरूपेण दर्शयतु |
व्यवस्था | सारणीयां एकः एव पङ्क्तिः भवति, प्रायः SELECT ... FROM DUAL प्रश्न अनुकूलनम्। |
const | प्रश्नः अनुक्रमणिकाद्वारा एकवारं प्राप्यते, केवलं एकपङ्क्तिः परिणामैः (नित्यसारणी) । |
eq_ref | अन्यस्मात् सारणीतः पङ्क्तिं अन्वेष्टुं अद्वितीयं अनुक्रमणिका अथवा प्राथमिककुंजी उपयुज्यताम् । |
ref | अन्यस्मात् सारणीतः एकां वा अधिकपङ्क्तिं अन्वेष्टुं अविशिष्टसूचकाङ्कस्य उपयोगं कुर्वन्तु । |
पङ्क्तिः | अनुक्रमणिकायाः उपयोगेन पङ्क्तिपरिधिं प्रत्यागच्छतु । |
अनुक्रमणिका | सम्पूर्णं सारणीं स्कैनिङ्गं न कृत्वा पङ्क्तयः अन्वेष्टुं अनुक्रमणिकां सम्पूर्णतया स्कैन करोति । |
सर्वे | पूर्णसारणीस्कैन् सारणीयां प्रत्येकं पङ्क्तिं परीक्षते । |
सामान्यतया सर्वान् परिहरितुं प्रयतध्वम्
6, कील तथा सम्भव_कील
कुंजी:
key
क्षेत्रं प्रश्नेन प्रयुक्तं वास्तविकं अनुक्रमणिकां दर्शयति ।यदि अस्य क्षेत्रस्य मूल्यं भवतिNULL
, कोऽपि अनुक्रमणिका न प्रयुक्ता इति सूचयति । यदि अस्य क्षेत्रस्य मूल्यं भवति तर्हि MySQL इत्यनेन प्रश्नस्य निष्पादनार्थं निर्दिष्टसूचकाङ्कस्य उपयोगः कृतः इति अर्थः ।सम्भव_कुंजी:
possible_keys
Field इत्यनेन MySQL इत्यनेन उपयोक्तुं शक्यमाणानां अनुक्रमणिकानां सूची प्रदर्श्यते । एते अनुक्रमणिकाः एतादृशाः अनुक्रमणिकाः सन्ति ये प्रश्नेषु विचारणीयाः भवेयुः, परन्तु वास्तविकरूपेण न प्रयुक्ताः भवेयुः । सामान्यतः,possible_keys
इत्यस्मिन् सूचीकृताः अनुक्रमणिकाः प्रश्नस्थितीनां, सारणीसंरचनायाः च आधारेण निर्धारिताः भवन्ति ।यदि key
क्षेत्रस्य अनुक्रमणिकानाम भवति, तथा चpossible_keys
अनेकाः अनुक्रमणिकानामानि , MySQL इत्यनेन चयनितम् इति सूचयतिkey
यस्मिन् अनुक्रमणिकायां क्षेत्रं सूचीकृतं तत् प्रश्नं कर्तुं उपयुज्यते, अन्ये अनुक्रमणिकाः तु सूचीकृताः भवन्तिpossible_keys
मध्यमः अवदत् यत् एतस्य विषये अपि विचारः कर्तुं शक्यते, परन्तु अन्ततः तस्य उपयोगः न कृतः।
यदि key
क्षेत्राणि सन्तिNULL
,तथा possible_keys
अनेकाः अनुक्रमणिकानामानि , मध्ये सूचीबद्धानि सन्ति, यत् सूचयति यत् MySQL प्रश्नस्य निष्पादनकाले किमपि अनुक्रमणिकां न उपयुङ्क्ते, यस्य परिणामः पूर्णसारणी-स्कैन् अथवा अन्ये अ-सूचकाङ्क-अनुकूलित-प्रवेश-विधयः भवितुम् अर्हन्ति
७,की_लेन्
key_len
अनुक्रमणिकाकुंजीयाः दीर्घतां वर्णयति क्षेत्रम् अस्ति । यदा MySQL प्रश्नान् निष्पादयितुं विशिष्टसूचकाङ्कस्य उपयोगं करोति तदा एतत् अनुक्रमणिकाप्रयोगं अनुक्रमणिकाकुंजीदीर्घतां च सूचयति ।
एकस्तम्भ अनुक्रमणिका:
INT
),किन्तु key_len
मूल्यं स्तम्भस्य दीर्घता अस्ति ।VARCHAR
),किन्तु key_len
इत्यस्य मूल्यं क्षेत्रस्य अधिकतमदीर्घता अस्ति ।समष्टि अनुक्रमणिका:
key_len
अनुक्रमणिकायां सर्वेषां स्तम्भानां कुलदीर्घतां प्रतिनिधियति ।संयुक्त अनुक्रमणिका:
key_len
संयुक्तसूचकाङ्के सर्वेषां स्तम्भानां कुलदीर्घता अस्ति ।अनुक्रमणिका उपसर्गः:
key_len
प्रयुक्तस्य सूचकाङ्कभागस्य वास्तविकदीर्घता दर्शिता भविष्यति ।८,सन्दर्भः
ref
इदं क्षेत्रं यत् सारणीनां मध्ये संयोजनस्थितीनां वर्णनं करोति अथवा अन्वेषणार्थं अविशिष्टसूचकाङ्कस्य उपयोगं करोति । एतत् सूचयति यत् कानि join conditions अथवा MySQL query इत्यस्य निष्पादनकाले सारणीं प्राप्तुं काः indexes इत्यस्य उपयोगं करोति ।
९,पङ्क्तयः
rows
प्रश्नस्य निष्पादनकाले अभिगमितानां परीक्षितानां वा पङ्क्तयः संख्यायाः अनुमानः अस्ति ।
SELECT
पृच्छतु, २.rows
प्रत्यागन्तुं पङ्क्तयः अनुमानितसङ्ख्यां प्रतिनिधियति ।JOIN
) उपप्रश्नं वा, २.rows
join operation इत्यस्य समये अभिगतानां पङ्क्तयः संख्यां प्रतिनिधितुं शक्नोति ।rows
स्कैन् कृतानां पङ्क्तयः संख्यां प्रतिनिधितुं शक्नोति ।१०,छनितम्
WHERE-स्थितीनां, अनुक्रमणिका-स्थितीनां च आधारेण फ़िल्टर-कृतानां पङ्क्तयः प्रतिशतं प्रतिनिधियति । filtered अनुकूलकेन अनुमानितं प्रश्नानुकूलनप्रभावं प्रतिबिम्बयति ।
कदा filtered
यदा 100% समीपे भवति तदा तस्य अर्थः अस्ति यत् प्रश्नशर्तैः प्रभावीरूपेण अधिकांशपङ्क्तयः छानिताः ये शर्ताः न पूरयन्ति, यत् प्रायः उत्तमः अनुकूलनसूचकः भवति
प्रत्युत यदि filtered
न्यूनमूल्यं सूचयितुं शक्नोति यत् प्रश्नस्थितयः पर्याप्तं सटीकाः न सन्ति अथवा अनुकूलकः दत्तांशं छानयितुं अनुक्रमणिकायाः प्रभावीरूपेण उपयोगं न करोति इति ।
११,अतिरिक्त
अतिरिक्तसूचनाक्षेत्राणि
अत्र केचन सामान्याः सन्ति Extra
क्षेत्राणि तेषां अर्थाः च : १.
अनुक्रमणिका का प्रयोग:
कुत्र इति प्रयोगः:
अस्थायी प्रयोग:
filesort इत्यस्य उपयोगेन:
प्रत्येकस्य अभिलेखस्य कृते परिधिः परीक्षिता (सूचकाङ्कनक्शा: ...):
range
प्रश्नप्रकारे ।NULL कीलस्य उपरि पूर्णं स्कैन् कुर्वन्तु:
व्ययवच्छिन्नम्:
join buffer (Block Nested Loop) इत्यस्य उपयोगः:
असम्भवं कुत्र:
न कोऽपि सारणीः प्रयुक्ताः:
SELECT NOW()
。- CREATE TABLE s1 (
- id INT AUTO_INCREMENT,
- key1 VARCHAR(100),
- key2 INT,
- key3 VARCHAR(100),
- key_part1 VARCHAR(100),
- key_part2 VARCHAR(100),
- key_part3 VARCHAR(100),
- common_field VARCHAR(100),
- PRIMARY KEY (id),
- INDEX idx_key1 (key1),
- UNIQUE INDEX idx_key2 (key2),
- INDEX idx_key3 (key3),
- INDEX idx_key_part(key_part1, key_part2, key_part3)
- ) ENGINE=INNODB CHARSET=utf8;
- CREATE TABLE s2 (
- id INT AUTO_INCREMENT,
- key1 VARCHAR(100),
- key2 INT,
- key3 VARCHAR(100),
- key_part1 VARCHAR(100),
- key_part2 VARCHAR(100),
- key_part3 VARCHAR(100),
- common_field VARCHAR(100),
- PRIMARY KEY (id),
- INDEX idx_key1 (key1),
- UNIQUE INDEX idx_key2 (key2),
- INDEX idx_key3 (key3),
- INDEX idx_key_part(key_part1, key_part2, key_part3)
- ) ENGINE=INNODB CHARSET=utf8;
दत्तांशः स्वयमेव सज्जीकृतः भवति।
एकल सारणी प्रश्न
EXPLAIN SELECT * FROM `s1`;
प्रश्नं सम्मिलितं कुर्वन्तु
EXPLAIN SELECT * FROM `s1` INNER JOIN `s2`;
उपप्रश्नम्
- EXPLAIN SELECT * FROM s1 WHERE key1 IN (SELECT key2 FROM s2 WHERE common_field
- = 'a');
- #Union 去重
- EXPLAIN SELECT * FROM `s1` UNION SELECT * FROM `s2`;
- #Union 全查
- EXPLAIN SELECT * FROM `s1` UNION ALL SELECT * FROM `s2`;
अन्तिमः सोपानः द्विगुणीकरणम् अस्ति, अतः अस्थायी सारणी उपयुज्यते । तथापि UNION ALL सर्वेषां कृते प्रश्नः अस्ति, अस्थायी सारणीप्रश्नसन्देशः अपि न दृश्यते ।
const (एकवारं अनुक्रमणिकां अन्वेष्टुम्, केवलं परिणामानां एकः पङ्क्तिः)
EXPLAIN SELECT * FROM s1 WHERE id = 10002;
eq_ref (अद्वितीयं अनुक्रमणिकां वा प्राथमिककुंजीं वा उपयुज्य अन्यस्मात् सारणीतः पङ्क्तिं ज्ञातव्यम्)
EXPLAIN SELECT * FROM s1 INNER JOIN s2 ON s1.id = s2.id;
ref (अन्यसारणीतः एकां वा अधिकपङ्क्तिं अन्वेष्टुं अविशिष्टसूचकाङ्कस्य उपयोगं कुर्वन्तु)
EXPLAIN SELECT * FROM s1 WHERE key1 = 'a';
range (सूचकाङ्कस्य उपयोगेन पङ्क्तिपरिधिं प्रत्यागच्छति)
EXPLAIN SELECT * FROM s1 WHERE key1 IN ('a', 'b', 'c');
index (पङ्क्तयः अन्वेष्टुं अनुक्रमणिकां सम्पूर्णतया स्कैन् कुर्वन्तु)
EXPLAIN SELECT key_part2 FROM s1 WHERE key_part3 = 'a';
फ़िल्टर दशमलव समय
EXPLAIN SELECT * FROM s1 WHERE key1 > 'za' AND common_field = 'la'