# கட்டமைப்புள்ள வினவு மொழி


:* மேலும் காண்க சீக்வல் (க. வி. மொழி)  

**எஸ்.கியூ.எல்** (**கட்டமைப்பு வினவல் மொழி**) என்பது தொடர்புடைய தரவுத்தள மேலாண்மை அமைப்புகளில் (RDBMS) தரவை நிர்வகிக்க வடிவமைக்கப்பட்ட தரவுத்தள கணினி மொழி ஆகும். உண்மையில் இது தொடர்புடைய இயற்கணிதம் அடிப்படையிலானது. தரவு வினவல் மற்றும் புதுப்பிப்பு, ஸ்கீமா உருவாக்கம், மாற்றியமைத்தல் மற்றும் தரவு அணுகல் கட்டுப்பாடு உள்ளிட்டவை அதன் மையமாகும். எஸ்.கியூ.எல் என்பது எட்கர் எஃப். காட்டின் தாக்கத்தில் 1970 ஆம் ஆண்டு அறிக்கையில் அவரின் தொடர்பு மாதிரிக்கான முதல் மொழிகளில் ஒன்றாகும். "மிகப்பெரிய அளவில் பகிரப்பட்ட தரவு வங்கிகளுக்கான தரவின் ஒரு தொடர்பு மாதிரியான" இது, தொடர்பு தரவுத்தளங்களுக்காக பெரும்பாலும் பரவலாக பயன்படுத்தப்பட்ட மொழியாக உள்ளது.  

## வரலாறு
டொனால்டு டி. சேம்பர்லின் மற்றும் ரேமண்ட் எஃப். பாய்ஸ் ஆகியோரால் ஐபிஎம் நிறுவனம் மூலமாக 1970களின் தொடக்கத்தில் எஸ்.கியூ.எல் உருவாக்கப்பட்டது. இந்தப் பதிப்பானது தொடக்கத்தில் **சீக்வெல்** என்று அழைக்கப்பட்டது. இது IBM நிறுவனத்தின் அசல் தொடர்பு தரவுத்தள தயாரிப்பான சிஸ்டம் ஆரில் சேமிக்கப்பட்ட தரவை கையாளவும் பெறவும் வடிவமைக்கப்பட்டது.  

1970களில் IBM சேன் ஜோஸ் ரிசர்ஜ் லேபரட்டரியில் ஒரு குழு சிஸ்டம் ஆர் என்ற தொடர்புடைய தரவுத்தள மேலாண்மை அமைப்பை உருவாக்கியது. IBMஐச் சேர்ந்த டொனால்டு டி. சேம்பர்லின், ரேமண்ட் எஃப் பாய்ஸ் இருவரும் பின்னர் சிஸ்டர் ஆரில் சேமிக்கப்பட்டுள்ள தரவை நிர்வகிக்க **கட்டமைக்கப்பட்ட ஆங்கில வினவல் மொழியை** (SEQUEL அல்லது SEQL) உருவாக்கினர். சீக்வெல் (SEQUEL) என்ற சுருக்கப் பெயரானது எஸ்.கியூ.எல் என்று பின்னர் மாற்றப்பட்டது. ஏனெனில் "சீக்வெல்" என்பது இங்கிலாந்தைச் சார்ந்த ஹாவ்கர் சிட்டேலே விமான நிறுவனத்தின் வர்த்தகச் சின்னம் ஆகும்.  

முதல் *தொடர்புடைய தரவுத்தள மேலாண்மை அமைப்பு* (RDBMS) RDMS ஆகும். அது 1970களின் ஆரம்பத்தில் MIT இல் உருவாக்கப்பட்டது. அது 1974 ஆம் ஆண்டில் யூ.சி. பெர்க்லேயில் உருவாக்கப்பட்ட இன்கெரெஸ் (Ingres) மூலமாக விரைவில் பயன்படுத்தப்பட்டது. இன்கெரெஸானது QUEL என்ற வினவல் மொழியால் செயலாக்கப்பட்டது. பின்னர் QUEL இன் இடத்தை எஸ்.கியூ.எல் நிரப்பியது.  

விற்பனையாளர்களிடையே பிளாட்பார்ம் மாற்ற கையாளல் குறைபாட்டை அறிதல், தவற விடப்பட்ட தரவை (*காண்க Null (SQL)* ) சரியற்ற முறையில் கையாளுதல், தேவையின்றி சிக்கலாக இருத்தல், எப்போதாவது ஏற்படும் தெளிவற்ற மொழி இலக்கணம் மற்றும் பொருள்கள் உள்ளிட்டவை எஸ்.கியூ.எல்லின் பொதுவான விமர்சனங்கள் ஆகும். இது தொடர்புடைய இயற்கணிதம் போன்ற பல இயல்பு மொழிகளின் கடினத்தன்மையில் குறைபாட்டையும் கொண்டிருக்கின்றது.  

## மொழி கூறுகள்

எஸ்.கியூ.எல் மொழியானது பல்வேறு மொழிக் கூறுகளாகப் பிரிக்கப்பட்டுள்ளது, அவை பின்வருமாறு:  

- *பிரிவுகள்*, வாக்கியங்களின் கூறுகளின் அங்கம் மற்றும் வினவல்கள் போன்ற சில நிகழ்வுகளில் உள்ளன.
- *கோவைகள்*, இவை தரவின் நெடுவரிசைகள் மற்றும் வரிசைகள் ஆகியவற்றைக் கொண்ட அளவீட்டு மதிப்புகளை அல்லது அட்டவணைகளை உருவாக்க முடியும்.
- *பயனிலைகள்*, இவை எஸ்.கியூ.எல்லிற்கு மூன்று மதிப்பிடப்பட்ட தர்க்கம் (3VL) பூலியன் உண்மை மதிப்புகளை மதிப்பீடு செய்யமுடிந்த நிபந்தனைகளைக் குறிப்பிடுகின்றன. மேலும் இவை வாக்கியங்கள் அல்லது வினவல்களின் விளைவுகளைக் கட்டுப்படுத்த அல்லது நிரல் ஓட்டத்தை மாற்ற பயன்படுகின்றன.
- *வினவல்கள்*, இவை குறிப்பிட்ட திட்ட அளவைகள் அடிப்படையிலான தரவைப் பெறுகின்றன.
- *வாக்கியங்கள்*, இவை ஸ்கீமாக்கள் மற்றும் தரவு ஆகியவற்றில் ஒரேமாதிரியான விளைவைக் கொண்டிருக்கலாம் அல்லது இவை பரிமாற்றங்கள், நிரல் ஓட்டம், இணைப்புகள், அமர்வுகள் அல்லது அறுதியிடல்களை கட்டுப்படுத்தலாம்.
  - எஸ்.கியூ.எல் வாக்கியங்கள் அரைப்புள்ளியை (";") வாக்கிய முற்றாகவும் கொண்டிருக்கின்றன. இருப்பினும் இது ஒவ்வொரு தளத்திற்கும் அவசியமில்லை. இது எஸ்.கியூ.எல் இலக்கணத்தின் தரநிலைப் பகுதியாக வரையறுக்கப்படுகின்றது.
- *முக்கியமற்ற இடைவெளி*யானது பொதுவாக எஸ்.கியூ.எல் வாக்கியங்கள் மற்றும் வினவல்கள் ஆகியவற்றில் தவிர்க்கப்படுகின்றது. இது எஸ்.கியூ.எல் குறியீட்டு வடிவமைப்பை படிக்கத்தக்கவாறு எளிதாக்குகின்றது.

### வினவல்கள்
வினவல் என்பது எஸ்.கியூ.எல்லில் மிகவும் பொதுவான செயல்பாடு ஆகும். இது அறிவித்தல் <code>SELECT</code> வாக்கியத்துடன் நிகழ்த்தப்படுகின்றது. <code>SELECT</code> வாக்கியமானது தரவை ஒன்று அல்லது அதற்கு மேற்பட்ட அட்டவணைகள் அல்லது கோவைகளில் இருந்து பெறுகின்றது. தரநிலையான SELECT கூற்றுக்கள் தரவுத்தளத்தில் ஒரே மாதிரியான விளைவுகளைக் கொண்டிருப்பதில்லை. <code>SELECT</code> இன் சில தரநிலையற்ற செயலாக்கங்கள் சில தரவுத்தளங்களில் காணப்படும் <code>SELECT INTO</code> தொடரியல் போன்று ஒரே மாதிரியான விளைவுகளைக் கொண்டிருக்கலாம்.  

வினவல்கள் பயனரை தேவையான தரவை விவரிக்க அனுமதிக்கின்றது. தரவுத்தள மேலாண்மை அமைப்பை(DBMS) திட்டமிடல், ஏற்புடையதாக்கல் மற்றும் அது தேர்ந்தெடுக்கின்ற முடிவை வருவிக்கத் தேவையான இயற்பியல் ரீதியான செயல்பாடுகளை நிகழ்த்த விடுகின்றது.  

ஒரு வினவலானது <code>SELECT</code> குறிச்சொல்லை உடனடியாகப் பின்பற்றி வருகின்ற இறுதி முடிவில் சேர்க்கப்படக்கூடிய நெடுவரிசைகளின் பட்டியலைக் கொண்டுள்ளது. ஒரு நட்சத்திரக் குறியானது ("<code>*</code>") அந்த வினவலானது வினவப்பட்ட அட்டவணைகளின் அனைத்து நெடுவரிசைகளையும் கொடுக்க வேண்டும் என்பதைக் குறிக்கவும் பயன்படுத்தப்படலாம். <code>SELECT</code> என்பது எஸ்.கியூ.எல்லில் விருப்பக் குறிச்சொற்கள் மற்றும் பிரிவுகளைக் கொண்ட மிகவும் சிக்கலான கூற்றாகும், அது பின்வருவனவற்றை உள்ளடக்குகின்றது:  

- <code>FROM</code> பிரிவானது எந்த அட்டவணை(களில்) இருந்து தரவு பெறப்பட இருக்கின்றது என்பதைக் குறிக்கின்றது. <code>FROM</code> பிரிவானது இணைக்கப்படும் அட்டவணைகளுக்கான விதிகளைக் குறிப்பிட விருப்ப <code>JOIN</code> துணைப்பிரிவுகளை சேர்க்க முடியும்.
- <code>WHERE</code> பிரிவானது ஒரு ஒப்பீட்டு நிலையை கொண்டிருக்கின்றது. இது வினவலால் வரிசைகள் அளிக்கப்படுவதைக் கட்டுப்படுத்துகின்றது. <code>WHERE</code> பிரிவானது உண்மைக்கு மதிப்பிடப்படாத ஒப்பீட்டு நிலைக்கான முடிவுத் தொகுப்பிலிருந்து அனைத்து வரிசைகளையும் நீக்குகின்றது.
- <code>GROUP BY</code> பிரிவானது சிறிய வரிசைகளில் தொகுப்பில் பொதுவான மதிப்புகளைக் கொண்ட வரிசைகளைக் காண்பிக்கப் பயன்படுகின்றது. <code>GROUP BY</code> என்பது பெரும்பாலும் எஸ்.கியூ.எல் ஒருங்கிணைப்பு செயல்பாடுகளுடன் சேர்க்கையில் பயன்படுகின்றது அல்லது முடிவுத் தொகுப்பில் இருந்து பிரதி வரிசைகளை நீக்கப் பயன்படுகின்றது. <code>WHERE</code> பிரிவானது <code>GROUP BY</code> பிரிவுக்கு முன்னர் பொருத்தப்படுகின்றது.
- <code>HAVING</code> பிரிவானது <code>GROUP BY</code> பிரிவிலிருந்து வெளிவரும் முடிவு வரிசைகளை வடிகட்டப் பயன்படுத்தும் நிலையைக் கொண்டிருக்கின்றது. ஏனெனில் இது <code>GROUP BY</code> பிரிவின் முடிவுகளில் செயல்படுகின்றது. மொத்த செயல்பாடுகளை <code>HAVING</code> பிரிவு நிலையில் பயன்படுத்த முடியும்.
- <code>ORDER BY</code> பிரிவானது நெடுவரிசைகள் முடிவான தரவை வரிசைப்படுத்தப் பயன்படுகின்றது மற்றும் எந்தத் திசையில் அவை வரிசைப்படுத்தப்பட வேண்டும் (விருப்பங்களாக ஏறுவரிசை அல்லது இறங்குவரிசை உள்ளன) என்பதை அடையாளம் காணுகின்றது. <code>ORDER BY</code> பிரிவு இல்லாமல் எஸ்.கியூ.எல் வினவல் மூலமாக அளிக்கப்பட்ட வரிசைகளின் வரிசைப்படுத்தலானது வரையறுக்க முடியாததாக உள்ளது.

பின்வருவது விலையுயர்ந்த நூல்களின் பட்டியலை அளிக்கின்ற <code>SELECT</code> வினவலின் உதாரணம் ஆகும். வினவலானது *price* நெடுவரிசையானது 100.00 க்கும் அதிகமான மதிப்பைக் கொண்டுள்ள *Book* அட்டவணையிலிருந்து அனைத்து வரிசைகளையும் எடுக்கின்றது. முடிவானது *title* இன் படி ஏறுவரிசையில் வரிசைப்படுத்தப்பட்டுள்ளது. *select list* இல் நட்சத்திரக் குறியீடானது (*) *Book* அட்டவணையின் அனைத்து நெடுவரிசைகளையும் முடிவுத் தொகுப்பில் சேர்க்கப்பட வேண்டும் என்பதைக் குறிக்கின்றது.  
<source lang="sql">  
SELECT *  
FROM Book  
WHERE price > 100.00  
ORDER BY title;  
</source>  

கீழேயுள்ள உதாரணமானது பல்வேறு அட்டவணைகள், குழுப்படுத்துதல் மற்றும் ஒருங்கிணைத்தல் ஆகியவற்றின் வினவலை நூல்களின் பட்டியல் மற்றும் ஒவ்வொரு நூலுடன் தொடர்புடைய ஆசிரியர்களின் எண்ணிக்கை ஆகியவற்றை அளிப்பதன் மூலமாக விளக்குகின்றது.  

<source lang="sql">  
SELECT Book.title,  
count(*) AS Authors  
FROM Book  
JOIN Book_author ON Book.isbn = Book_author.isbn  
GROUP BY Book.title;  
</source>  

உதாரண வெளியீடானது பின்வருவனவற்றை ஒத்திருக்கலாம்:  

Title Authors  
---------------------- -------  
SQL Examples and Guide 4  
The Joy of SQL 1  
An Introduction to SQL 2  
Pitfalls of SQL 1  

நிபந்தனையின் முன்னர் *isbn* மட்டுமே இரண்டு அட்டவணைகளின் பொதுவான நெடுவரிசைப் பெயராகும். மேலும் *title* என்ற நெடுவரிசைப் பெயர் *Books* அட்டவணையில் மட்டுமே உள்ளது, மேலே உள்ள வினவலை பின்வரும் வடிவில் எழுதலாம்:  

<source lang="sql">  
SELECT title,  
count(*) AS Authors  
FROM Book  
NATURAL JOIN Book_author  
GROUP BY title;  
</source>  

இருப்பினும் பல விற்பனையாளர்கள் ஒன்று இந்த அணுகுமுறையை ஆதரிப்பதில்லை அல்லது நெடுவரிசை பெயர் மாற்றங்களைக் கோருகின்றனர்.  

எஸ்.கியூ.எல் சேமிக்கப்பட்ட மதிப்புகளில் கணிக்கப்படும் மதிப்புகளுக்கான செயற்குறிகள் மற்றும் செயல்பாடுகளைக் கொண்டுள்ளது. எஸ்.கியூ.எல் ஆனது வெளிப்படும் தரவிற்கு *select list* இல் கோவைகளின் பயன்பாட்டை அனுமதிக்கின்றது. பின்வரும் உதாரணத்தில் 100.00க்கும் அதிகமான விலையுடைய நூல்களின் பட்டியலை அளிப்பதுடன் கூடுதலாக *sales_tax* நெடுவரிசை விற்பனை வரி மதிப்பானது *விலை*யில் 6% கணக்கிடப்பட்டுள்ளது.  

<source lang="sql">  
SELECT isbn,  
title,  
price,  
price * 0.06 AS sales_tax  
FROM Book  
WHERE price > 100.00  
ORDER BY title;  
</source>  

#### Null மற்றும் மூன்று மதிப்பு தர்க்கம் (3VL)
Null என்ற கருத்தானது தொடர்பு மாதிரியில் விடுபட்ட தகவலைக் கையாள எஸ்.கியூ.எல்லில் அறிமுகப்படுத்தப்பட்டது. Null (அல்லது தெரியவில்லை) என்பதன் அறிமுகம் மூன்று மதிப்பு தர்க்கத்தின் அடிப்படையான சரி மற்றும் தவறுடன் இணைந்துள்ளது. Null என்பது எந்த மதிப்பையும் கொண்டிருக்கவில்லை (மேலும் இது எந்த தரவு களத்தின் உறுப்பினராகவும் இல்லை) ஆனால் மாறாக பிளேஸ்ஹோல்டர் அல்லது விடுபட்ட தகவலுக்கான "குறியீடாக" உள்ளது. எனவே Null உடனான ஒப்பீடுகள் எப்போதும் சரி அல்லது தவறில் முடியாது. ஆனால் எப்போதும் மூன்றாவது தர்க்க முடிவான தெரியவில்லையில் முடியும்.  

எஸ்.கியூ.எல் விடுபட்ட தகவலைக் கையாள Nullஐ பயன்படுத்துகின்றது. அது மூன்றாவது மதிப்பு தர்க்கத்தை (3VL) ஆதரிக்கின்றது. மேலும் விதிகள் கீழே காணப்படும் எஸ்.கியூ.எல் மூன்றாவது மதிப்பு தர்க்கத்தை (3VL) ஆளுகின்றன (p மற்றும் q தர்க்க நிலைகளை குறிக்கின்றன). NULL என்ற வார்த்தையானது எஸ்.கியூ.எல் ஒதுக்கப்பட்ட குறிச்சொல்லாகவும் உள்ளது. இது Null சிறப்புக் குறியீட்டை அடையாளம் காணப் பயன்படுகின்றது.  

கூடுதலாக எஸ்.கியூ.எல் இயக்கிகளானது Null உடன் எதையும் ஒப்பிடுகையில் தெரியவில்லை என்பதை அளிப்பதால் எஸ்.கியூ.எல் இரண்டு Null-குறிப்பிட்ட ஒப்பீடு நிலைகளை வழங்குகின்றது: <code>IS NULL</code> மற்றும் <code>IS NOT NULL</code> சோதனையில் தரவானது Null ஆக உள்ளதா அல்லது இல்லையா என்பதைக் கூறுகின்றது.  

எஸ்.கியூ.எல்லில் WHERE பிரிவானது சரி மதிப்பை அளிப்பவைக்கு மட்டுமே முடிவுகளை அளிக்கின்றது என்பதை நினைவில் கொள்க. அதாவது அது தவறு மதிப்புகளை உடைய முடிவுகளைத் தவிர்க்கின்றது. ஆனால் அவை தெரியவில்லை என்ற மதிப்பைக் கொண்டிருக்கின்றது.  

| p AND q | ப்பி |  |  |
| --- | --- | --- | --- |
| சரி | சரி | தவறு | தெரியவில்லை |
| p OR q | p |  |  |
| --- | --- | --- | --- |
| சரி | சரி | சரி | சரி |
| p | NOT p |  |
| --- | --- | --- |
| சரி | தவறு |  |
| தவறு | சரி |  |
| தெரியவில்லை | தெரியவில்லை | } |
| p = q | p |  |  |
| --- | --- | --- | --- |
| சரி | சரி | தவறு | தெரியவில்லை |
|}  

உலகளாவிய அளவீடு எஸ்.கியூ.எல் மூலமாக வெளிப்படையாக ஆதரிப்படவில்லை. மேலும் இல்லாததாக்கப்பட்ட புறமெய்மை நிலை அளவீடாக கண்டிப்பாக கணக்கிடப்பட வேண்டும்.  

"<row value expression> IS DISTINCT FROM <row value expression>" என்பது இரண்டு ஏற்பிகளும் சமமாக இருந்தால் அல்லது இரண்டும் NULL ஆக இருந்தால் சரியை வழங்குகின்ற ஒப்பீட்டு இயக்கிகளை இடையமைக்கப்பட்டுள்ளது. அதே போன்று IS NOT DISTINCT FROM என்பது "NOT (<row value expression> IS DISTINCT FROM <row value expression>") ஆக வரையறுக்கப்படுகின்றது.  

### தரவு கையாளல்

தரவு கையாளல் மொழி (DML) என்பது எஸ்.கியூ.எல்லின் ஒரு துணைத் தொகுப்பாகும். இது தரவைச் சேர்க்க, புதுப்பிக்க மற்றும் நீக்கப் பயன்படுத்தப்படும்:  

- <code>INSERT</code>, இருக்கின்ற அட்டவணையில் வரிசைகளை (முறையாக வரிசையாகப் பல தகவல் தொகுப்புகள்) சேர்க்கிறது, எ.கா.,:
<source lang="sql">  
INSERT INTO My_table  
(field1, field2, field3)  
VALUES  
('test', 'N', NULL);  
</source>  

- <code>UPDATE</code>, இருக்கின்ற அட்டவணை வரிசைகளின் தொகுப்பை மாற்றுகிறது, எ.கா.,:
<source lang="sql">  
UPDATE My_table  
SET field1 = 'updated value'  
WHERE field2 = 'N';  
</source>  

- <code>DELETE</code>, அட்டவணையிலிருந்து இருக்கின்ற வரிசைகளை நீக்குகிறது, எ.கா.,:
<source lang="sql">  
DELETE FROM My_table  
WHERE field2 = 'N';  
</source>  

- <code>TRUNCATE</code> ஆனது அட்டவணையிலுள்ள அனைத்து தரவையும் அதி வேகமான வழியில் நீக்குகிறது. இது பொதுவாக அதைத் தொடர்ந்துவரும் COMMIT செயல்பாட்டால் குறிக்கப்படுகிறது.
- <code>MERGE</code>, பல அட்டவணைகளிலுள்ள தரவுகளை ஒன்றுசேர்க்கப் பயன்படுகிறது. இது <code>INSERT</code> மற்றும் <code>UPDATE</code> கூறுகளை ஒன்றிணைக்கிறது. இது எஸ்.கியூ.எல்:2003 தரத்தில் வரையறுக்கப்படுகிறது. அதற்கு முன்னர் சில தரவுத்தளங்கள் இதேபோன்ற செயல்திறனை வேறுபட்ட தொடரியல் வழியாக வழங்கின. சில வேளைகளில் இது "upsert" என அழைக்கப்பட்டது.

### பரிமாற்ற கட்டுப்பாடுகள்

பரிமாற்றங்கள் இருந்தால் DML செயல்பாடுகளை ஒழுங்குபடுத்தும்:  

- <code>START TRANSACTION</code> (அல்லது <code>BEGIN WORK</code> அல்லது <code>BEGIN TRANSACTION</code>, எஸ்.கியூ.எல் கிளைமொழியைப் பொறுத்தது) ஆனது முழுவதுமாகப் பூர்த்திசெய்யப்பட்ட அல்லது ஒன்றுமே செய்யப்படாத தரவுத்தள பரிமாற்றத்தின் தொடக்கத்தைக் குறிக்கிறது.
- <code>SAVE TRANSACTION</code> (அல்லது <code>SAVEPOINT</code> ) ஆனது நடப்பு நிலையில் தரவுத்தளத்தின் நிலையை பரிமாற்றத்தில் சேமிக்கிறது.
<source lang="sql">  
CREATE TABLE tbl_1(id int);  
INSERT into tbl_1(id) value(1);  
INSERT into tbl_1(id) value(2);  
COMMIT;  
UPDATE tbl_1 SET id=200 WHERE id=1;  
SAVEPOINT id-1upd;  
UPDATE tbl_1 SET id=1000 WHERE id=2;  
ROLLBACK to id-1upd;  
SELECT id from tbl_1;  
</source>  

- <code>COMMIT</code> ஆனது அனைத்து தரவு மாற்றங்களையும் பரிமாற்றத்தில் நிரந்தரமாக செய்யும்படி செய்கிறது.
- <code>ROLLBACK</code> ஆனது கடைசியான <code>COMMIT</code> அல்லது <code>ROLLBACK</code> க்குப் பின்னர் செய்யப்படும் அனைத்து தரவு மாற்றங்களையும் முடக்கும்படி செய்யும். அந்த மாற்றங்களுக்கு முன்னர் இருந்தது போலவே தரவு நிலையைத் தொடர்ந்து அனுமதிக்கிறது.

<code>COMMIT</code> வாக்கியம் முடிந்ததும் பரிமாற்றத்தின் மாற்றங்களை மீண்டும் திரும்பப் பெறமுடியாது.  

<code>COMMIT</code> மற்றும் <code>ROLLBACK</code> ஆகியவை நடப்பு பரிமாற்றத்தை நிறுத்தி தரவுப் பூட்டுக்களை விடுவிக்கின்றன. <code>START TRANSACTION</code> அல்லது இதேபோன்ற வாக்கியம் ஒன்று இல்லாத நிலையில் SQL இன் பொருள்கள் செயலாக்கத்தைப் பொறுத்தன.  
எடுத்துக்காட்டு: *அங்கீகாரம் பெற்ற வங்கி நிதி இடமாற்ற பரிமாற்றம்.*  

<source lang="sql">  
START TRANSACTION;  
UPDATE Account SET amount=amount-200 WHERE account_number=1234;  
UPDATE Account SET amount=amount+200 WHERE account_number=2345;  
IF ERRORS=0 COMMIT;  
IF ERRORS<>0 ROLLBACK;  
</source>  

### தரவு வரையறை

தரவு வரையறை மொழியானது (DDL) அட்டவணை மற்றும் அடைவு வடிவமைப்பை நிர்வகிக்கிறது. DDL இன் பெரும்பாலான அடிப்படை உருப்படிகளாவன, <code>CREATE</code>, <code>ALTER</code>, <code>RENAME</code>, <code>DROP</code> மற்றும் <code>TRUNCATE</code> வாக்கியங்களாகும்:  

- <code>CREATE</code> ஆனது தரவுத்தளத்தில் ஒரு குறிக்கோளை (எடுத்துக்காட்டாக, ஒரு அட்டவணை) உருவாக்குகிறது.
- <code>DROP</code> ஆனது தரவுத்தளத்திலுள்ள ஒரு குறிக்கோளை மீட்டெடுக்க முடியாதவகையில் நீக்குகிறது.
- <code>ALTER</code> என்பது முன்பே உள்ள குறிக்கோளின் கட்டமைப்பைப் பல வழிகளில் மாற்றியமைக்கிறது. எடுத்துக்காட்டாக, ஏற்கனவே அட்டவணையில் ஒரு நெடுவரிசையைச் சேர்த்தல்.
எடுத்துக்காட்டு:  
<source lang="sql">  
CREATE TABLE My_table  
(  
my_field1 INT,  
my_field2 VARCHAR(50),  
my_field3 DATE NOT NULL,  
PRIMARY KEY (my_field1, my_field2)  
);  
</source>  

### தரவு வகைகள்

எஸ்.கியூ.எல் அட்டவணையிலுள்ள ஒவ்வொரு நெடுவரிசையும் அந்த நெடுவரிசை கொண்டிருக்கக்கூடிய வகை(களை)யை விபரிக்கிறது. ANSI எஸ்.கியூ.எல்லில் பின்வரும் தரவு வகைகள் உள்ளடங்கும்.  

#### எழுத்துக்குறி சரங்கள்

- <code>CHARACTER(<var>n</var>)</code> அல்லது <code>CHAR(<var>n</var>)</code> — நிலையான-அகலம் <var>n</var>-எழுத்துக்குறி சரம், தேவைக்கு ஏற்ப இடைவெளிகள் சேர்க்கப்படும்
- <code>CHARACTER VARYING(<var>n</var>)</code> அல்லது <code>VARCHAR(<var>n</var>)</code> — அதிகபட்ச அளவாக <var>n</var> எழுத்துக்குறிகளைக் கொண்ட மாறுகின்ற-அகலமுடைய சரம்
- <code>NATIONAL CHARACTER(<var>n</var>)</code> அல்லது <code>NCHAR(<var>n</var>)</code> — சர்வதேச எழுத்துக்குறி தொகுப்பை ஆதரிக்கும் நிலையான அகலமுடைய சரம்
- <code>NATIONAL CHARACTER VARYING(<var>n</var>)</code> அல்லது <code>NVARCHAR</code>(<var>n</var>) — மாறுகின்ற-அகலமுடைய <code>NCHAR</code> சரம்

#### பிட் சரங்கள்

- <code>BIT(<var>n</var>)</code> — <var>n</var> பிட்களின் அணிவரிசை
- <code>BIT VARYING(<var>n</var>)</code> — <var>n</var> பிட்கள் வரையான அணிவரிசை

#### எண்கள்

- <code>INTEGER</code> மற்றும் <code>SMALLINT</code>
- <code>FLOAT</code>, <code>REAL</code> மற்றும் <code>DOUBLE PRECISION</code>
- <code>NUMERIC(<var>துல்லியம்</var>, <var>அளவு</var>)</code> அல்லது <code>DECIMAL(<var>துல்லியம்</var>, <var>அளவு</var>)</code>

எண்களை அல்லது தேதிகளை முழு எண்ணாக்குவதற்கான செயல்பாட்டை எஸ்.கியூ.எல் வழங்குகிறது. இது <code>TRUNC</code> என்றும் (DB2, போஸ்ட்கெரேஎஸ்.கியூ.எல், ஆரக்கிள் மற்றும் மைஎஸ்.கியூ.எல் ஆகியவற்றில்) அல்லது <code>ROUND</code> என்றும் (சைபேஸ், ஆரக்கிள் மற்றும் மைக்ரோசாஃப்ட் எஸ்.கியூ.எல் சர்வர் ஆகியவற்றில்) அழைக்கப்படும்  

#### தேதியும் நேரமும்

- <code>DATE</code>
- <code>TIME</code>
- <code>TIMESTAMP</code>
- <code>INTERVAL</code>

### தேதிக் கட்டுப்பாடு

பயனர்களும் குழுக்களும் தரவுகளை அணுகுவதையும் கையாள்வதையும் தேதிக் கட்டுப்பாட்டு மொழி (DCL) அங்கீகரிக்கிறது.  
இதன் முக்கியமான இரு பிரதான வாக்கியங்களாவன:  

- <code>GRANT</code> ஆனது ஒரு பயனர் அல்லது அதிக பயனர்கள் ஒரு குறிக்கோளின் மீது செயல்பாட்டை அல்லது செயல்பாட்டுத் தொகுதியைச் செய்ய அங்கீகரிக்கிறது.
- <code>REVOKE</code> ஆனது கிராண்டை நீக்குகிறது. இது இயல்பான கிராண்டாக இருக்கக்கூடும்.

எடுத்துக்காட்டு:  
<source lang="sql">  
GRANT SELECT, UPDATE  
ON My_table  
TO some_user, another_user;  

REVOKE SELECT, UPDATE  
ON My_table  
FROM some_user, another_user;  
</source>  

### செயல்முறை நீட்டிப்புகள்

எஸ்.கியூ.எல் ஆனது பின்வரும் தனிப்பட்ட நோக்கத்துக்கென வடிவமைக்கப்பட்டது: தொடர்பான தரவுத்தளத்தில் உள்ள தரவை வினவுவதற்கு எஸ்.கியூ.எல் ஆனது C அல்லது BASIC போன்ற ஏவல் மொழியாக இல்லாமல் தொகுதி-அடிப்படையிலான அறிவித்தல் வினவல் மொழியாக இருக்கும். இருப்பினும் நிர்மாணங்களின் ஓட்ட கட்டுப்பாடு போன்ற செயல்முறை நிரலாக்க மொழி செயல்திறனைச் சேர்க்கும் நிலையான எஸ்.கியூ.எல்லிற்கான நீட்டிப்புகள் உள்ளன. அவையாவன:  

| மூலம்: | பொதுப்
பெயர் | முழுப்பெயர் |  |
| --- | --- | --- | --- |
| ANSI/ISO தரநிலை | SQL/PSM | எஸ்.கியூ.எல்/நிலையான சேமிக்கப்பட்ட தொகுதிக்கூறுகள் |  |
| இண்டர்பேஸ்/
பையர்பேர்ட் | PSQL | செயல்முறை எஸ்.கியூ.எல் |  |
| ஐபிஎம் | SQL PL | எஸ்.கியூ.எல் செயல்முறை மொழி(SQL/PSM ஐ நடைமுறைப்படுத்தும்) |  |
| மைக்ரோசாஃப்ட்
சைபேஸ் | T-SQL | பரிமாற்ற-எஸ்.கியூ.எல் |  |
| மைஎஸ்.கியூ.எல் | SQL/PSM | எஸ்.கியூ.எல்/நிலையாக சேமிக்கப்பட்ட தொகுதிக்கூறுகள்(SQL/PSM ஐ நடைமுறைப்படுத்தும்) |  |
| ஆரக்கிள் | PL/SQL | செயல்முறை மொழி/எஸ்.கியூ.எல் (Ada அடிப்படையானது) |  |
| போஸ்ட்கெரேஎஸ்.கியூ.எல் | PL/pgSQL | செயல்முறை மொழி/போஸ்ட்கெரே கட்டமைக்கப்பட்ட வினவல் மொழி (ஆரக்கிள் PL/SQL அடிப்படையானது) |  |
| போஸ்ட்கெரேஎஸ்.கியூ.எல் | PL/PSM | செயல்முறை மொழி/நிலையான சேமிக்கப்பட்ட தொகுதிக்கூறுகள்(SQL/PSM ஐ நடைமுறைப்படுத்தும்) | } |

நிலையான SQL/PSM நீட்டிப்புகள் மற்றும் சொத்துடமை உரிமை சார்ந்த எஸ்.கியூ.எல் நீட்டிப்புகளோடு செயல்முறை மற்றும் குறிக்கோள்-ரீதியான நிரலாக்கத்தன்மை ஆகியனவும் பிற மொழிகளுடன் DBMS ஒருங்கிணைவு வழியாக பல எஸ்.கியூ.எல் பணித்தளங்களில் கிடைக்கிறது. எஸ்.கியூ.எல் தரவுத்தளங்களில் ஜாவா குறியீட்டை ஆதரிப்பது என SQL/JRT நீட்டிப்புகளை (ஜாவா நிரலாக்க மொழிக்கான எஸ்.கியூ.எல் நடைமுறைகள் மற்றும் வகைகள்) எஸ்.கியூ.எல் தரநிலை வரையறுக்கிறது. எஸ்.கியூ.எல் சர்வர் 2005 ஆனது தரவுத்தளங்களிலுள்ள ஹோஸ்ட் நிர்வகித்த .NET கூட்டங்களுக்கு SQLCLR (எஸ்.கியூ.எல் சர்வர் காமன் லேங்வேஜ் ரண்டைம்) ஐப் பயன்படுத்துகிறது. அதேவேளை எஸ்.கியூ.எல் சர்வரின் முந்தைய பதிப்புகள் பிரதானமாக C இல் எழுதப்பட்ட நிர்வகிக்கப்படாத நீட்டிக்கப்பட்ட சேமிக்கப்பட்ட செயன்முறைகளைப் பயன்படுத்த வேண்டும் என வரம்பிடப்பட்டிருந்தன. மை எஸ்.கியூ.எல் மற்றும் போஸ்ட்கெரேஸ் போன்ற பிற தரவுத்தள பணித்தளங்கள் Perl, Python, Tcl, மற்றும் C போன்ற பல்வேறு மொழிகளில் செயல்பாடுகளை எழுத அனுமதிக்கும்.  

## எஸ்.கியூ.எல் பற்றிய விமர்சனங்கள்

எஸ்.கியூ.எல் என்பது தொடர்பான தரவுத்தளங்களுடன் பயன்படுத்துவதற்கான ஒரு அறிவித்தல் கணினி மொழி ஆகும். அசல் எஸ்.கியூ.எல் அம்சங்கள் பலவற்றை தொடர்பு மாதிரி மற்றும் இதன் டப்பிள் கால்குலஸ் அங்கீகாரத்தின் கருத்தானது ஊக்குவித்தது என்றாலும் அது மீறியுள்ளது. எஸ்.கியூ.எல்லிற்கான சமீபத்திய நீட்டிப்புகள் தொடர்பான பூர்த்தியை அடைந்துள்ளன. ஆனால் *த தேர்ட் மானிஃபெஸ்டோ* வில் ஆவணப்படுத்தியுள்ளதால் மீறல்களை மேலும் மோசமாக்கியுள்ளன.  

எஸ்.கியூ.எல்லின் நடைமுறை விமர்சனங்களில் உள்ளடங்குபவை:  

- நடைமுறைப்படுத்தல்கள் நிலையற்றவை, மேலும் பொதுவாக விற்பனையாளர்களிடையே இணக்கமற்றவை. குறிப்பாக தேதி மற்றும் நேர தொடரியல், சர சங்கிலி, சுழிகள் மற்றும் ஒப்பீட்டு எழுத்து உணர்தன்மை ஆகியன விற்பனையாளருக்கு விற்பனையாளர் மாறுபடுகிறது.
- கார்ட்டீசியன் இணைப்பு (சாத்தியமான அனைத்து சேர்க்கைகளையும் இணைத்தல்) செய்யப்படுவதை மொழியானது மிகவும் எளிதாக்குகிறது. இது <code>WHERE</code> பிரிவுகள் தவறாக தட்டச்சுச் செய்யப்படும்போது "கட்டுப்பாட்டை மீறிய" முடிவுகளை வழங்கும். கார்ட்டீசியன் இணைப்புகள் தெளிவான <code>CARTESIAN</code> திறவுசொல் உத்தரவாதம் அளிக்கப்படவேண்டிய தேவை ஏற்படுகின்ற நடைமுறையில் மிகவும் அரிதாகவே பயன்படுத்தப்படுகின்றன. (*எஸ்.கியூ.எல் 1992* ஆனது <code>CROSS JOIN</code> திறவுச்சொல்லை அறிமுகப்படுத்தியது. இது கார்ட்டீசியன் இணைப்பு வடிவமைக்கப்பட்டது என்று தெளிவுபடுத்த பயனரை அனுமதிக்கிறது. ஆனால் பயனிலை இல்லாத சுருக்கெழுத்து "கம்மா-இணைப்பு" இப்போதும் ஏற்றுக்கொள்ளக்கூடிய தொடரியல் ஆகும். இதனால் அதே தவறு மீண்டும் கொண்டு வருகிறது.)
- மேலும் ஒரு புதுப்பிப்பு அல்லது நீக்கத்தில் <code>WHERE</code> ஐ தவறுதலாக கட்டமைக்கவும் சாத்தியமுள்ளது. இதனால் அட்டவணையிலுள்ள தேவையான வரிசைகளை விட கூடுதலான வரிசைகள் பாதிக்கப்படுகின்றன. (தற்காலிக தீர்வு என்னவென்றால் பரிமாற்றங்களைப் பயன்படுத்தல் அல்லது வழக்கம்போல WHERE பிரிவில் முதலில் தட்டச்சு செய்து மிகுதியைப் பிறகு நிரப்புதல்.)
- செயல்பாடு ஆதிக்கமான தொடரியலானது சில இலக்கண மற்றும் தொடரியல் விதிகளை மீண்டும் பயன்படுத்துவதைக் கூடுதலாக ஏற்படுத்தும்போது, எஸ்.கியூ.எல் இலக்கணமானது COBOL-போன்ற திறவுச்சொல் அணுகுமுறையை எடுப்பதில் சிலவேளைகளில் அவசியமின்றி சிக்கலாக உள்ளது.

### விற்பனையாளர் இடையேயான வசதி

எஸ்.கியூ.எல்லின் பிரபல செயலாற்றல்கள், <code>DATE</code> அல்லது <code>TIME</code> தரவு வகைகள் போன்ற நிலையான எஸ்.கியூ.எல்லின் அடிப்படை அம்சங்களை பொதுவாக ஆதரிக்காது. இதன் விளைவாக தரவுத்தள முறைகளுக்கு இடையே மாற்றங்கள் இல்லாமல் எஸ்.கியூ.எல் குறியீட்டை அரிதாகவே இடலாம்.  

தரவுத்தள முறைகளுக்கிடையே இந்த வசதி இன்மைக்கு பல காரணங்கள் உள்ளன:  

- எஸ்.கியூ.எல் தரத்தின் சிக்கல்தன்மை மற்றும் அளவு என்பது பெரும்பாலான செயலாற்றுபவர்கள் தரம் முழுவதையும் ஆதரிப்பதில்லை.
- எவ்வாறு நடந்துகொள்வது என தீர்மானிக்க செயலாற்றல்களை அனுமதிக்கும் பல முக்கிய பகுதிகளில் (எ.கா., அட்டவணைகள், கோப்பு சேமிப்பு) தரமானது தரவுத்தள நடத்தையைக் குறிப்பதில்லை.
- சரிசெய்யும் தரவுத்தள முறை ஒன்றைக் கட்டாயம் செயல்படுத்த வேண்டும் என்ற தொடரியலை எஸ்.கியூ.எல் தரம் துல்லியமாக குறிப்பிடுகிறது. இருப்பினும் மொழிக் கட்டமைப்பு கருத்துக்களின் தரத்தின் விவரக்குறிப்பானது ஓரளவே நன்றாக வரையறுக்கப்பட்டது. எனவே பல பொருளைக் குறிக்கிறது.
- பல தரவுத்தள விற்பனையாளர்களிடம் முன்பே உள்ள விற்பனையாளர்களின் பெரிய தளங்கள் உள்ளன. இங்கே எஸ்.கியூ.எல் தரமானது விற்பனையாளரின் தரவுத்தளத்தின் முந்தைய நடத்தையுடன் முரண்படுகிறது. விற்பனையாளர் பின்னோக்கிய இணக்கத்தன்மையை முறிக்க முடியாதவராக இருக்கக்கூடும்.
- மென்பொருள் விற்பனையாளர்கள் பிற தயாரிப்புகளுடன் இணக்கமில்லாத தன்மையை உருவாக்கவே பெரும்பாலும் விரும்புகிறார்கள். ஏனெனில் தமக்கென உள்ள பயனர்களுக்கான நம்பிக்கையைத் தக்கவைக்க இது பலமான சலுகையாக இருக்கிறது (விற்பனையாளர் பூட்டு என்பதைக் காண்க).

## தரநிலையாக்கம்
1986 ஆம் ஆண்டில் அமெரிக்கன் தேசிய தரநிலைகள் நிறுவனம் (ANSI) எஸ்.கியூ.எல்லை எஸ்.கியூ.எல்-86 ஆக தனது தரநிலையை வழங்கியது. மேலும் தரநிலையாக்கத்துக்கான சர்வதேச நிறுவனம் (ISO) 1987 ஆம் ஆண்டில் ஏற்றுக்கொண்டது. எஸ்.கியூ.எல்லிற்கான அதிகாரபூர்வ உச்சரிப்பு "எஸ் கியூ எல்" என்பதாக இருக்க வேண்டுமென அசல் எஸ்.கியூ.எல் தரம் தெரிவித்தது. ஆனால் இன்றும் கூட பல ஆங்கிலம்-பேசும் தரவுத்தள நிபுணர்கள் ஏற்றுக்கொள்ளப்படாத உச்சரிப்பைப் பயன்படுத்துகிறார்கள் ("சீக்வெல்" என்ற சொல் போல). சீக்வெல் என்பது ஆரம்பகால ஐபிஎம் தரவுத்தள மொழி ஆகும். இது எஸ்.கியூ.எல் மொழிக்கு முந்தையது.  

1996 ஆம் ஆண்டு வரை தரநிலைகள் மற்றும் தொழில்நுட்பத்துக்கான தேசிய நிறுவன (NIST) தரவு மேலாண்மை தரநிலை திட்டமானது SQL DBMS ஆனது எஸ்.கியூ.எல் தரநிலையுடன் இணங்கும் என சான்றளித்தது. இப்போது தமது தயாரிப்புகளின் இணக்கநிலை குறித்து விற்பனையாளர்கள் தாமாகவே உறுதிப்படுத்துகிறார்கள்.  

கீழே காண்பிக்கப்படுவது போல எஸ்.கியூ.எல் தரநிலையானது பெருமளவு திருத்தங்களுக்கு உள்ளாகியுள்ளன:  

| 1986 | எஸ்.கியூ.எல்-86 | எஸ்.கியூ.எல்-87 | முதலில் ஆன்சியால் (ANSI) அங்கீகரிக்கப்பட்டது. |  |
| --- | --- | --- | --- | --- |
| 1989 | எஸ்.கியூ.எல்-89 | FIPS 127-1 | சிறிய திருத்தங்கள் செய்யப்பட்டு FIPS 127-1 ஆக மாற்றப்பட்டது. |  |
| 1992 | எஸ்.கியூ.எல்-92 | எஸ்.கியூ.எல்2, FIPS 127-2 | முதன்மை திருத்தம் (ISO 9075), *உள்ளீட்டு நிலை* எஸ்.கியூ.எல்-92 ஆனது FIPS 127-2 ஆக மாற்றப்பட்டது. |  |
| 1999 | எஸ்.கியூ.எல்:1999 | எஸ்.கியூ.எல்3 | சாதாரண கோவைப் பொருத்தம், சூத்திர வினவல்கள், தூண்டிகள், செயல்முறை மற்றும் ஓட்ட வாக்கியங்களின் கட்டுப்பாடு, மாறா வகைகள் மற்றும் சில குறிக்கோள் ரீதியிலான அம்சங்கள் ஆகியன சேர்க்கப்பட்டன. |  |
| 2003 | எஸ்.கியூ.எல்:2003 | &nbsp; | எக்ஸ்.எம்.எல்-தொடர்பான அம்சங்கள், *சாளர செயல்பாடுகள்*, தரநிலையாக்கப்பட்ட தொடர்கள், மற்றும் தானாக உருவாக்கப்பட்ட மதிப்புகளுடன் நெடுவரிசைகள் ஆகியன அறிமுகம் செய்யப்பட்டன(அடையாள-நெடுவரிசைகள் உள்ளடங்கலாக). |  |
| 2006 | எஸ்.கியூ.எல்:2006 | &nbsp; | எக்ஸ்.எம்.எல்லுடன் சேர்த்து எந்த வழிகளில் எஸ்.கியூ.எல்லைப் பயன்படுத்தலாம் என்பதை ISO/IEC 9075-14:2006 வரையறுக்கிறது. இது எஸ்.கியூ.எல் தரவுத்தளத்தில் எக்ஸ்.எம்.எல் தரவுகளை இறக்குமதி செய்து சேமிப்பது, தரவுத்தளத்திற்குள் இதைக் கையாள்வது மற்றும் எக்ஸ்.எம்.எல் மற்றும் மரபு ரீதியான எஸ்.கியூ.எல்-தரவு இரண்டையும் எக்ஸ்.எம்.எல் வடிவத்தில் வெளியிடுவது ஆகியவற்றுக்கான வழிகளை வரையறுக்கிறது. மேலும், பயன்பாடுகளை அவற்றின் எஸ்.கியூ.எல் குறியீடு, வைய விரி வலை கன்சார்ட்டியத்தால் (W3C) வெளியிடப்பட்ட XQuery பயன், எக்ஸ்.எம்.எல் வினவல் மொழிக்குள் ஒருங்கிணையவும், சம நேரத்தில் சாதாரண எஸ்.கியூ.எல்-தரவு மற்றும் எக்ஸ்.எம்.எல் ஆவணங்களை அணுகவும் செய்கிறது. |  |
| 2008 | எஸ்.கியூ.எல்:2008 | &nbsp; | இடஞ்சுட்டி வரையறைகளுக்கு வெளியே ORDER BY ஐ சட்டரீதியாக்குகிறது. INSTEAD OF தூண்டிகளைச் சேர்க்கிறது. TRUNCATE வாக்கியத்தைச் சேர்க்கிறது. | } |

ஆர்வமிக்க தரப்புகள் எஸ்.கியூ.எல் தரநிலைகளைகள் ஆவணங்களை ISO அல்லது ஆன்சியிடம் இருந்து வாங்கிக்கொள்ளலாம். எஸ்.கியூ.எல்:2008 இன் வரைவானது ஜிப் காப்பகமாக இலவசமாக கிடைக்கிறது.  

### தரக் கட்டமைப்பு
எஸ்.கியூ.எல் தரமானது பல பகுதிகளாகப் பிரிக்கப்பட்டுள்ளது, அவையாவன:  

எஸ்.கியூ.எல் கட்டமைப்பானது தர்க்கரீதியான கோட்பாட்டை வழங்குகிறது  

SQL/Foundation, ISO/IEC 9075, பகுதி 2 இல் வரையறைக்கப்பட்டது. இந்தப் பகுதி தரநிலையானது மொழியின் பெரும்பாலான மைய உறுப்புகளைக் கொண்டிருக்கும். இதில் கடப்பாடுடைய மற்றும் விருப்ப அம்சங்கள் இரண்டையும் கொண்டிருக்கும்.  

எஸ்.கியூ.எல்/பைண்டிங்க்ஸானது ஜாவா தவிர வேறுபட்ட ஹோஸ்ட் மொழிகளுடன் எவ்வாறு எஸ்.கியூ.எல்லைக் கட்டுண்டதாக்குவது என்பதை குறிப்பிடுகிறது.  

SQL/CLI, அல்லது **அழைப்பு-நிரல் இடைமுக** பகுதியானது ISO/IEC 9075, பகுதி 3 இல் வரையறுக்கப்பட்டுள்ளது. SQL/CLI ஆனது சாதாரண இடைமுகவாக்க கூறுகளை வரையறுக்கிறது (கட்டமைப்புகள் மற்றும் செயல்முறைகள்), வேறு நிரலாக்க மொழிகளில் எழுதப்பட்ட பயன்பாடுகளிலிருந்து எஸ்.கியூ.எல் வாக்கியங்களைச் செயல்படுத்த இதைப் பயன்படுத்த முடியும். எஸ்.கியூ.எல் வாக்கியங்கள் மற்றும் SQL/CLI செயல்முறை அழைப்புகள் ஆகியன அழைப்பு பயன்பாட்டின் மூல குறியீட்டிலிருந்து வேறுபட்டதாகவே கையாளப்படும் என்ற விதத்தில் SQL/CLI ஆனது வரையறுக்கப்படும். திறந்த தரவுத்தள இணைப்புநிலை என்பது SQL/CLI இன் நன்கறியப்பட்ட மூலக்கணமாகும். இந்தப்பகுதி தரநிலையானது **கடப்பாடுடைய** அம்சங்களை மட்டுமே கொண்டிருக்கும்.  

SQL/PSM அல்லது **நிலையான சேமிக்கப்பட்ட தொகுதிக்கூறுகள்** பகுதியானது ISO/IEC 9075, பகுதி 4 ஆல் வரையறுக்கப்படுகிறது. SQL/PSM ஆனது ஓட்ட கட்டுப்பாடு, நிபந்தைக் கையாளல், வாக்கிய நிலை சமிக்ஜைகள் மற்றும் மறுசமிக்ஜைகள், இடஞ்சுட்டிகள் மற்றும் அக மாறிகள் உள்ளடங்கலாக எஸ்.கியூ.எல்லிற்கான செயல்முறை நீட்டங்களையும் மாறிகள் மற்றும் அளவுருக்களுக்கு கோவைகளின் ஒதுக்கங்களையும் தரநிலைப்படுத்துகிறது. மேலும், நிலையான தரவுத்தள மொழி வழிவகைகளின் தீர்மான அறிவித்தல் மற்றும் பராமரிப்பை SQL/PSM மதிப்பீடு செய்கிறது (எ.கா., "சேமிக்கப்பட்ட செயல்முறைகள்"). இந்தப் பகுதி தரநிலையானது **விருப்ப** அம்சங்களை மட்டுமே கொண்டிருக்கும்.  

SQL/MED அல்லது **புற தரவுகளை நிர்வகித்தல்** பகுதியானது ISO/IEC 9075, பகுதி 9 ஆல் வரையறுக்கப்படுகிறது. SQL/MED ஆனது எஸ்.கியூ.எல்லிற்கு நீட்டிப்புகளை வழங்குகிறது. இவை வெளிப்புற தரவை நிர்வகிக்க எஸ்.கியூ.எல்லை அனுமதிப்பதற்கு வெளி-தரவு மேலுறைகள் மற்றும் தரவு இணைப்பு வகைகளை வரையறுக்கின்றன. வெளிப்புற தரவு என்பது எஸ்.கியூ.எல்-அடிப்படையான DBMS ஆல் அணுகக்கூடிய ஆனால் நிர்வகிக்க முடியாத தரவாகும். இந்தப் பகுதி தரநிலையானது **விருப்ப** அம்சங்களை மட்டுமே கொண்டிருக்கும்.  

SQL/OLB அல்லது **குறிக்கோள் மொழி கட்டமைப்புகள்** பகுதியானது ISO/IEC 9075, பகுதி 10 ஆல் வரையறுக்கப்படுகிறது. SQL/OLB ஆனது ஜாவாவில் உட்பொதிந்துள்ள எஸ்.கியூ.எல் ஆன SQLJ இன் தொடரியல் மற்றும் சிமாண்டிக்ஸை வரையறுக்கிறது. இந்த தரநிலையானது SQLJ பயன்பாடுகளின் பைனரி வசதியை உறுதிப்படுத்தும் பொறிமுறைகளையும் கூட விபரிக்கிறது, வேறுபட்ட ஜாவா தொகுதிகள் மற்றும் அவை கொண்டுள்ள பிரிவுகளைக் குறிப்பிடுகிறது. இந்தப் பகுதி தரநிலையானது **விருப்ப** அம்சங்களை மட்டுமே கொண்டிருக்கும்.  

SQL/MM (மல்டிமீடியா), இது வீடியோ, ஆடியோ மற்றும் இடநிலை தரவுகள் போன்ற பெரிய, சிக்கலான மற்றும் சிலவேளைகளில் தொடரோடுகின்ற தரவு உருப்படிகளுடன் புத்திசாலித்தனமாக எஸ்.கியூ.எல்லை தொடர்பு கொள்ள வைக்கும்.  

SQL/அமைப்பியல்கள் அல்லது **தகவல் மற்றும் வரையறை அமைப்பியல்கள்** பகுதியானது ISO/IEC 9075 பகுதி 11 ஆல் வரையறுக்கப்படுகிறது. எஸ்.கியூ.எல்/அமைப்பியல்கள் தகவல் அமைப்பியல் மற்றும் வரையறை அமைப்பியலை வரையறுக்கின்றது. எஸ்.கியூ.எல் தரவுத்தளங்கள் மற்றும் குறிக்கோள்கள் சுய-விவரித்தலைச் செய்ய பொதுவான கருவிகளின் தொகுதியை வழங்குகிறது. இந்த கருவிகளில் எஸ்.கியூ.எல் குறிக்கோள் அடையாளங்காட்டி, அமைப்பு மற்றும் ஒருமைப்பாட்டு கட்டுப்பாடுகள், பாதுகாப்பு மற்றும் அங்கீகார விவரக்குறிப்புகள், அம்சங்கள் மற்றும் ISO/IEC 9075 தொகுப்புகள், எஸ்.கியூ.எல்-அடிப்படையிலான DBMS செயலாற்றல்கள் வழங்கிய அம்சங்களின் ஆதரவு, எஸ்.கியூ.எல்-அடிப்படையிலான DBMS செயலாற்றல் தகவல் மற்றும் அளவிடல் உருப்படிகள், மற்றும் DBMS செயலாற்றல்களால் ஆதரிக்கப்படும் மதிப்புகள் ஆகியன உள்ளடங்கும். இந்தப் பகுதி தரநிலையானது **கடப்பாடுடைய மற்றும் விருப்ப** அம்சங்கள் இரண்டையும் கொண்டிருக்கும்.  

SQL/JRT அல்லது **ஜாவா நிரலாக்க மொழிக்கான எஸ்.கியூ.எல் வழிவகைகள் மற்றும் வகைகள்** பகுதியானது ISO/IEC 9075 பகுதி 13 ஆல் வரையறுக்கப்படுகிறது. SQL/JRT ஆனது நிலையான ஜாவா முறைகளை எஸ்.கியூ.எல் பயன்பாடுகளிலிருந்து வழி வகைகள் என குறிப்பிடுவதற்கான திறனைக் குறிப்பிடுகிறது. ஜாவா பிரிவுகளை எஸ்.கியூ.எல் கட்டமைக்கப்பட்ட பயனர்-வரையறுத்த வகைகளாக பயன்படுத்துவதற்கான திறனை இதுவும் எதிர்பார்க்கிறது. இந்தப் பகுதி தரநிலையானது **விருப்ப** அம்சங்களை மட்டுமே கொண்டிருக்கும்.  

SQL/XML, அல்லது **எக்ஸ்.எம்.எல்-தொடர்புடைய விவரக்குறிப்புகள்** பகுதியானது ISO/IEC 9075, பகுதி 14 ஆல் வரையறுக்கப்படுகிறது. SQL/XML ஆனது எஸ்.கியூ.எல்லுடன் இணைந்து எக்ஸ்.எம்.எல்லைப் பயன்படுத்துவதற்கான எஸ்.கியூ.எல்-அடிப்படையிலான நீட்டங்களைக் குறிப்பிடப்பட்டு எக்ஸ்.எம்.எல் தரவு வகை அறிமுகப்படுத்தப்படுகிறது. மேலும் பல வழிவகைகள், செயல்பாடுகள், மற்றும் எஸ்.கியூ.எல் தரவுத்தளத்தில் எக்ஸ்.எம்.எல்லைக் கையாளுதல் மற்றும் சேமிப்புக்கு ஆதரவளிக்கும் எக்ஸ்.எம்.எல்-இருந்து-எஸ்.கியூ.எல் தரவு வகை மேப்பிங்குகள் ஆகியவற்றையும் கூட. இந்தப் பகுதி தரநிலையானது **விருப்ப** அம்சங்களை மட்டுமே கொண்டிருக்கும்.  

## எஸ்.கியூ.எல்லிற்கான மாற்றுக்கள்

தொடர்புடைய வினவல் மொழிகளுக்கான மாற்றுக்களுக்கும், எஸ்.கியூ.எல்லிற்கான மாற்றுக்களுக்கும் இடையில் ஒரு வேறுபாட்டை உருவாக்க வேண்டும். கீழேயுள்ளவை எஸ்.கியூ.எல்லிற்காக தீர்மானிக்கப்பட்ட தொடர்புடைய மாற்றுக்களாகும். தொடர்புடையவற்றுக்கான மாற்றுக்களுக்கு வழிநடத்தும் தரவுத்தளத்தை காண்க:  

- .QL - குறிக்கோள்-ரீதியான தரவுப்பதிவு
- 4D வினவல் மொழி (4D QL)
- தரவுப்பதிவு
- ஓய்வுறு வினவல் மொழி (HQL) - ஜாவா-அடிப்படையான கருவி, இது மாற்றப்பட்ட எஸ்.கியூ.எல் ஐப் பயன்படுத்துகிறது
- ஐபிஎம் வணிக முறை 12 (IBM BS12)
- ISBL
- ஜாவா உறுதி வினவல் மொழி (JPQL) - ஜாவா EE5 இல் ஜாவா உறுதி API ஆல் பயன்படுத்தப்படும் வினவல் மொழி
- LINQ
- குறிக்கோள் வினவல் மொழி
- QBE (Query By Example) Moshè Zloof, IBM 1977 ஆம் ஆண்டில் உருவாக்கப்பட்டது
- கியுவல்U.C. பெர்க்கிலே Ingres திட்டத்தால் 1974 ஆம் ஆண்டில் அறிமுகப்படுத்தியது.
- டுட்டோரியல் D
- XQuery

## குறிப்புதவிகள்

- "எ ரிலேஷனல் மாடல் ஆஃப் டேட்டா ஃபார் லார்ஜ் ஷேர்ட் டேட்டா பாங்க்ஸ்" ஈ. எஃப். காட், கம்யூனிகேஷன்ஸ் ஆஃப் தி ACM, தொகுப்பு. 13, எண். 6, ஜூன் 1970, பக்கம்.&nbsp;377–387.
- டிஸ்கஷன்ஸ் ஆன் அலீஜ்ட் SQL ஃபாவ்ஸ் (C2 விக்கி)