சிக்கலான தரவு மீட்டெடுப்பிற்கான SQL ஐ மேம்படுத்துதல்
SQL என்பது பரந்த அளவிலான தரவைக் கையாளும் ஒரு சக்திவாய்ந்த கருவியாகும், ஆனால் சில நேரங்களில் வினவல்கள் எதிர்பார்த்தபடி செயல்படாது. எடுத்துக்காட்டாக, குறிப்பிட்ட உருப்படிகளைப் பெறுவதற்கான நிபந்தனை வினவல்களைக் கையாளும் போது, விடுபட்ட உள்ளீடுகள் கவனமாகக் கையாள வேண்டிய சவால்களை உருவாக்கலாம். 🧑💻
வாடிக்கையாளருக்கான தரவை இழுக்க வினவலை இயக்குவதை கற்பனை செய்து பாருங்கள், நீங்கள் குறிப்பிட்ட உருப்படி குறியீடுகளை எதிர்பார்க்கிறீர்கள், ஆனால் அவை முடிவுகளில் தோன்றாது. தரவு வேறொரு சூழலில் இருந்தால் என்ன செய்வது, அதை நீங்கள் ஒரு பின்னடைவாகப் பெற வேண்டுமா? இதற்கு ஒரு அடுக்கு வினவல் உத்தி தேவைப்படுகிறது, SQL இன் வலுவான திறன்களை மேம்படுத்துகிறது.
'BR23456' போன்ற உருப்படிக் குறியீடுகள் நீக்கப்படலாம் அல்லது முதன்மை வாடிக்கையாளருக்கு கிடைக்காமல் போகும் சூழ்நிலையில், வெவ்வேறு அளவுருக்களின் கீழ் அவற்றை மீட்டெடுக்க உங்களுக்கு ஒரு தனி வழிமுறை தேவை. ஒரு விரிவான தரவு வெளியீட்டை உறுதிசெய்து, அத்தகைய சிக்கல்களை எவ்வாறு தீர்ப்பது என்பதை இந்த எடுத்துக்காட்டு ஆராய்கிறது.
ஒரு படிப்படியான முறிவு மூலம், செயல்திறனைப் பராமரிக்கும் போது மாற்று வாடிக்கையாளர் சூழல்களில் இருந்து விடுபட்ட பொருட்களை இழுக்கும் SQL வினவலை எவ்வாறு உருவாக்குவது என்பதை நாங்கள் விவாதிப்போம். எடுத்துக்காட்டுகள் மற்றும் நுட்பங்கள், நிஜ உலகப் பயன்பாடுகளுக்கான நடைமுறை நுண்ணறிவைக் கொடுத்து, மாறும் நிலைமைகளைக் கையாளுவதில் நீங்கள் தேர்ச்சி பெற உதவும். 🚀
| கட்டளை | பயன்பாட்டின் உதாரணம் |
|---|---|
| WITH | இடைநிலை வினவல் முடிவுகளை மீண்டும் பயன்படுத்த அனுமதிப்பதன் மூலம் சிக்கலான வினவல்களை எளிமைப்படுத்த பொதுவான அட்டவணை வெளிப்பாடு (CTE) வரையறுக்கிறது. எடுத்துக்காட்டு: MainQuery AS உடன் (தேர்வு...) |
| STRING_SPLIT | பிரிக்கப்பட்ட சரத்தை மதிப்புகளின் அட்டவணையாகப் பிரிக்கிறது, இது பெரும்பாலும் தரவை மாறும் வகையில் வடிகட்ட பயன்படுகிறது. உதாரணம்: STRING_SPLIT இலிருந்து மதிப்பைத் தேர்ந்தெடு(@ItemCodes, ',') |
| IS | மதிப்புகளை குறிப்பிட்ட மாற்று மதிப்புடன் மாற்றுகிறது. இயல்புநிலை மதிப்புகளை அமைக்க பயனுள்ளதாக இருக்கும். எடுத்துக்காட்டு: IS(விலை, 0) |
| TOP 1 | மிகவும் பொருத்தமான பதிவைப் பெறுவதற்கு பெரும்பாலும் ஆர்டர் மூலம் இணைக்கப்பட்ட முடிவை ஒற்றை வரிசையாகக் கட்டுப்படுத்துகிறது. எடுத்துக்காட்டு: தொடக்கத்_தேதி DESC இன் படி விலை நிர்ணயம் செய்வதிலிருந்து முதல் 1 விலையைத் தேர்ந்தெடுக்கவும் |
| CASE | Implements conditional logic within queries, allowing different outputs based on specific conditions. Example: CASE WHEN alvl >வினவல்களுக்குள் நிபந்தனை தர்க்கத்தை செயல்படுத்துகிறது, குறிப்பிட்ட நிபந்தனைகளின் அடிப்படையில் வெவ்வேறு வெளியீடுகளை அனுமதிக்கிறது. எடுத்துக்காட்டு: CASE WHEN alvl > 0 பின்னர் 'நிலை 1' |
| NOT EXISTS | ஒரு துணை வினவலில் வரிசைகள் இல்லாததைச் சரிபார்த்தல், ஃபால்பேக் லாஜிக்கைக் கையாளப் பயன்படும். எடுத்துக்காட்டு: இல்லாவிட்டால் (விலையிலிருந்து 1ஐத் தேர்ந்தெடு எங்கே உருப்படிக் குறியீடு = 'BR23456') |
| DECLARE | ஒரு SQL ஸ்கிரிப்ட்டில் உள்ள மாறிகளை வரையறுக்கிறது, இது தற்காலிக தரவு அல்லது அளவுருக்களை சேமிக்க பயன்படுகிறது. எடுத்துக்காட்டு: DECLARE @FallbackItem NVARCHAR(50) = 'BR23456' |
| SET NOCOUNT ON | வினவினால் பாதிக்கப்பட்ட வரிசைகளின் எண்ணிக்கையைக் குறிக்கும் செய்தியை முடக்குகிறது. இது சேமிக்கப்பட்ட நடைமுறைகளில் செயல்திறனை மேம்படுத்துகிறது. உதாரணம்: SET NOCOUNT ON |
| UNION ALL | நகல் வரிசைகள் உட்பட பல வினவல்களின் முடிவுகளை ஒரே முடிவு தொகுப்பாக இணைக்கிறது. எடுத்துக்காட்டு: வினவல்1 யூனியனில் இருந்து தேர்ந்தெடு * அனைத்து தேர்வு * வினவல்2 இலிருந்து |
| ORDER BY | குறிப்பிட்ட நெடுவரிசைகளின் அடிப்படையில் வினவல் முடிவுகளை வரிசைப்படுத்துகிறது. எடுத்துக்காட்டு: DESC தொடக்க_தேதியின்படி ஆர்டர் செய்யவும் |
SQL வினவல்களில் காணாமல் போன பொருட்களை மாறும் வகையில் கையாளுதல்
மேலே உள்ள ஸ்கிரிப்ட்களில், தரவு மீட்டெடுப்பில் உள்ள பொதுவான சிக்கலைத் தீர்ப்பதே முக்கிய குறிக்கோள்: வினவல் முடிவுகளில் சில உருப்படிகள் விடுபட்டிருக்கக்கூடிய நிகழ்வுகளைக் கையாளுதல். முதன்மை ஸ்கிரிப்ட் பொதுவான அட்டவணை வெளிப்பாடுகள் (CTEகள்), CASE அறிக்கைகளுடன் நிபந்தனை தர்க்கம் மற்றும் ஃபால்பேக் பொறிமுறைகள் போன்ற SQL நுட்பங்களின் கலவையைப் பயன்படுத்துகிறது. இல்லை. இந்த அம்சங்களை அடுக்கி வைப்பதன் மூலம், வாடிக்கையாளரின் பட்டியலிலிருந்து உருப்படிக் குறியீடு விடுபட்டிருந்தால், அது மாற்றுச் சூழலில் இருந்து ஒரு ஃபால்பேக் பதிவை மாறும் வகையில் மீட்டெடுக்கிறது என்பதை வினவல் உறுதி செய்கிறது.
தீர்வின் ஒரு முக்கியமான பகுதி a இன் பயன்பாடு ஆகும் உடன் பொதுவான அட்டவணை வெளிப்பாடு (CTE) என்றும் அறியப்படும், மீண்டும் பயன்படுத்தக்கூடிய இடைநிலை வினவலை வரையறுப்பதற்கான விதி. இது SQL ஐப் படிக்கவும் பராமரிக்கவும் எளிதாக்குகிறது, ஏனெனில் இது முக்கிய தர்க்கத்தை ஃபால்பேக் தர்க்கத்திலிருந்து பிரிக்கிறது. உதாரணமாக, CTE இல், வாடிக்கையாளர் "சோதனை"க்கான பதிவுகளைப் பெறுகிறோம் மற்றும் குறிப்பிட்ட பட்டியலில் உள்ள உருப்படிக் குறியீடுகளைச் சரிபார்க்கிறோம். 'BR23456' போன்ற உருப்படிக் குறியீடு விடுபட்டால், குறிப்பிட்ட நிபந்தனைகளுடன் 'lvlholder' வாடிக்கையாளரிடமிருந்து தேவையான தரவை வழங்க, ஃபால்பேக் வினவல் நடவடிக்கை எடுக்கிறது. இது தரவு நிலைத்தன்மையையும் முழுமையையும் உறுதி செய்கிறது. 🛠️
மற்றொரு முக்கியமான அம்சம் a ஐப் பயன்படுத்தி செயல்படுத்தப்படும் ஃபால்பேக் பொறிமுறையாகும் இல்லை நிபந்தனை. முதன்மை வினவல் முடிவுகளில் இலக்கு உருப்படி குறியீடு உள்ளதா என்பதை இது சரிபார்க்கிறது. இல்லையெனில், ஸ்கிரிப்ட் ஒரு மாற்று வாடிக்கையாளர் அல்லது நிலை (blvl = 8) போன்ற மற்றொரு மூலத்திலிருந்து விடுபட்ட உருப்படியின் விவரங்களைப் பெறுகிறது. சரக்கு மேலாண்மை அல்லது டைனமிக் விலை நிர்ணய முறைகள் போன்ற தரவு முழுமை முக்கியமானதாக இருக்கும் அமைப்புகளுக்கு இந்த வழிமுறை முக்கியமானது. ஃபால்பேக் லாஜிக்கைப் பயன்படுத்துவதன் மூலம், முதன்மைத் தரவு முழுமையடையாமல் இருந்தாலும், பயனர் அர்த்தமுள்ள முடிவுகளைப் பெறுவதை உறுதிசெய்கிறோம்.
ஃபால்பேக் வினவலுடன் கூடுதலாக, ஸ்கிரிப்ட்டின் சேமிக்கப்பட்ட செயல்முறை பதிப்பு மட்டுப்படுத்தல் மற்றும் மறுபயன்பாட்டை சேர்க்கிறது. வாடிக்கையாளர் பெயர் மற்றும் உருப்படிக் குறியீடுகள் போன்ற முக்கிய மதிப்புகளை அளவுருவாக்குவதன் மூலம், சேமிக்கப்பட்ட செயல்முறை பல சூழல்களில் மீண்டும் பயன்படுத்தப்படலாம். இந்த அணுகுமுறை செயல்திறன் மற்றும் பாதுகாப்பை மேம்படுத்துகிறது, ஏனெனில் இது ஹார்ட்கோடிங்கை குறைக்கிறது மற்றும் உள்ளீடு சரிபார்ப்பை செயல்படுத்துகிறது. எடுத்துக்காட்டாக, ஒரு விற்பனை ஆய்வாளர் இந்த நடைமுறையைப் பயன்படுத்தி பல வாடிக்கையாளர்களுக்கான விலைத் தரவைப் பெறலாம். 🚀
இறுதியாக, தீர்வு வினவல் செயல்திறனை மேம்படுத்த SQL சிறந்த நடைமுறைகளைப் பயன்படுத்துகிறது முதல் 1 மற்றும் ஆர்டர் மூலம் முடிவுகளை வரம்பிடவும் மற்றும் மிகவும் தொடர்புடைய தரவு பெறப்படுவதை உறுதி செய்யவும். பெரிய தரவுத்தொகுப்புகள் திறமையாக செயலாக்கப்பட வேண்டிய சூழ்நிலைகளில் இந்த முறைகள் மிகவும் பயனுள்ளதாக இருக்கும். நீங்கள் டாஷ்போர்டை உருவாக்கினாலும் அல்லது அறிக்கையை உருவாக்கினாலும், அத்தகைய மேம்படுத்தல்கள் பதிலளிப்பு நேரத்தையும் பயனர் அனுபவத்தையும் கணிசமாக மேம்படுத்தும்.
விடுபட்ட தரவுக்கான டைனமிக் SQL வினவல் கையாளுதல்
SQL தரவுத்தள நிர்வாகத்திற்கான பின்-இறுதி ஸ்கிரிப்ட், காணாமல் போன பொருட்களை ஃபால்பேக் லாஜிக் மூலம் மாறும் வகையில் கையாளுகிறது.
-- Approach 1: Using a UNION query to handle missing items dynamicallyWITH MainQuery AS (SELECTp.[itemcode],p.[uom],p.[trtype],p.[alvl],p.[blvl],CASEWHEN p.[alvl] > 0 THEN (SELECT TOP 1 x.start_dateFROM pricing xWHERE x.itemcode = p.itemcodeAND x.blvl = p.alvlAND x.customer = 'lvlholder'ORDER BY x.start_date DESC)WHEN p.[trtype] = '' THEN (SELECT TOP 1 x.start_dateFROM pricing xWHERE x.itemcode = p.itemcodeAND x.blvl = 8AND x.customer = 'lvlholder'ORDER BY x.start_date DESC)ELSE p.[start_date]END AS start_date,CASEWHEN p.[trtype] = 'Quot' THEN p.[price]WHEN p.[alvl] > 0 THEN (SELECT TOP 1 x.priceFROM pricing xWHERE x.itemcode = p.itemcodeAND x.blvl = p.alvlAND x.customer = 'lvlholder'ORDER BY x.start_date DESC)WHEN p.[trtype] = '' THEN (SELECT TOP 1 x.priceFROM pricing xWHERE x.itemcode = p.itemcodeAND x.blvl = 8AND x.customer = 'lvlholder'ORDER BY x.start_date DESC)ELSE 0END AS LevelResult,p.priceFROM pricing pWHERE p.[Customer] = 'test'AND p.[itemcode] IN ('ABC1234', 'X123456', 'BR23456', 'CX23456'))SELECT * FROM MainQueryUNION ALLSELECT'BR23456' AS [itemcode],'PC' AS [uom],'' AS [trtype],0 AS [alvl],8 AS [blvl],'2024-01-01' AS start_date,15.56 AS LevelResult,0 AS priceWHERE NOT EXISTS (SELECT 1FROM MainQuery mqWHERE mq.[itemcode] = 'BR23456');
மாற்று அணுகுமுறை: மறுபயன்பாட்டிற்கான மட்டுப்படுத்தப்பட்ட சேமிக்கப்பட்ட செயல்முறை
உள்ளீட்டு அளவுருக்கள் மற்றும் ஃபால்பேக் லாஜிக் மூலம் விடுபட்ட பொருட்களைக் கையாள்வதற்கான SQL சேமிக்கப்பட்ட செயல்முறை.
CREATE PROCEDURE FetchItemDetails@Customer NVARCHAR(50),@ItemCodes NVARCHAR(MAX)ASBEGINSET NOCOUNT ON;DECLARE @FallbackItem NVARCHAR(50) = 'BR23456';DECLARE @FallbackCustomer NVARCHAR(50) = 'lvlholder';DECLARE @FallbackBlvl INT = 8;-- Main QuerySELECTp.[itemcode],p.[uom],p.[trtype],p.[alvl],p.[blvl],IS((SELECT TOP 1 x.start_dateFROM pricing xWHERE x.itemcode = p.itemcodeAND x.blvl = p.alvlAND x.customer = @FallbackCustomerORDER BY x.start_date DESC), p.[start_date]) AS start_date,IS((SELECT TOP 1 x.priceFROM pricing xWHERE x.itemcode = p.itemcodeAND x.blvl = p.alvlAND x.customer = @FallbackCustomerORDER BY x.start_date DESC), p.price) AS LevelResultFROM pricing pWHERE p.[Customer] = @CustomerAND p.[itemcode] IN (SELECT value FROM STRING_SPLIT(@ItemCodes, ','));-- FallbackIF NOT EXISTS (SELECT 1 FROM pricing WHERE [itemcode] = @FallbackItem)BEGININSERT INTO pricing ([itemcode], [uom], [trtype], [blvl], [price], [start_date])VALUES (@FallbackItem, 'PC', '', @FallbackBlvl, 15.56, '2024-01-01');ENDEND
தரவு முழுமைக்கான மீள்தன்மை SQL வினவல்களை உருவாக்குதல்
SQL வினவல் வடிவமைப்பில் விவாதிக்கப்படாத ஒரு முக்கிய அம்சம், *வெளிப்புற இணைப்புகளின்* பங்கு மற்றும் விடுபட்ட தரவைக் கையாளும் திறன். உள் இணைப்புகளைப் போலன்றி, தொடர்புடைய அட்டவணையில் தொடர்புடைய தரவு எதுவும் இல்லாவிட்டாலும், ஒரு அட்டவணையில் இருந்து அனைத்து வரிசைகளையும் சேர்க்க வெளிப்புற இணைப்புகள் உங்களை அனுமதிக்கின்றன. சில உருப்படிகள் இல்லாத வாடிக்கையாளர்களின் பட்டியலிலிருந்து தரவை மீட்டெடுப்பது போன்ற சூழ்நிலைகளில் பணிபுரியும் போது இது மிகவும் பயனுள்ளதாக இருக்கும். உதாரணமாக, ஒரு பயன்படுத்தி இடதுபுறம் சேரவும், பிரதான அட்டவணையில் உள்ள அனைத்து உருப்படிகளும் தக்கவைக்கப்படுவதை நீங்கள் உறுதிசெய்யலாம், மேலும் தொடர்புடைய அட்டவணையில் இருந்து விடுபட்ட தரவு பூஜ்யங்கள் அல்லது இயல்புநிலை மதிப்புகளால் நிரப்பப்பட்டுள்ளது.
கூடுதலாக, சேமிக்கப்பட்ட செயல்முறைகள் போன்ற கருவிகளைப் பயன்படுத்தி டைனமிக் வினவல்களை மேம்படுத்துவது SQL ஸ்கிரிப்ட்களை மேலும் மேம்படுத்தலாம். இயக்க நேர அளவுருக்களின் அடிப்படையில் வினவல்களை மாற்றியமைக்க டைனமிக் SQL நெகிழ்வுத்தன்மையை செயல்படுத்துகிறது. எடுத்துக்காட்டாக, உருப்படி குறியீடுகளின் பட்டியல் அல்லது வாடிக்கையாளர் பெயருக்கான உள்ளீட்டு அளவுருக்களுடன் சேமிக்கப்பட்ட நடைமுறைகளைப் பயன்படுத்தலாம், சூழ்நிலைக்கேற்ப வினவல்களை மாறும் வகையில் உருவாக்கலாம். இந்த அணுகுமுறை பல குத்தகைதாரர் அமைப்புகளில் குறிப்பாக உதவியாக இருக்கும், அங்கு வெவ்வேறு வாடிக்கையாளர்களுக்கு மாறுபட்ட பின்வாங்கும் நிலைமைகள் அல்லது தேவைகள் இருக்கலாம். 🧑💻
இறுதியாக, மீள்தன்மை SQL வினவல்களை உருவாக்கும் போது பிழை கையாளுதல் ஒரு முக்கியமான அம்சமாகும். டிரை-கேட்ச் பிளாக்குகளை (அல்லது அவற்றின் SQL சமமானவை, ரிட்டர்ன் குறியீடுகளைப் பயன்படுத்தி கட்டமைக்கப்பட்ட பிழையைக் கையாளுதல் போன்றவை) இணைப்பது, எதிர்பாராத சிக்கல்களான டேபிள்கள் அல்லது தவறான நெடுவரிசைக் குறிப்புகள் போன்றவை பயன்பாட்டு ஓட்டத்தை சீர்குலைக்காமல் இருப்பதை உறுதி செய்கிறது. வெளிப்புற இணைப்புகள், டைனமிக் SQL மற்றும் வலுவான பிழை கையாளுதல் போன்ற முறைகளை இணைப்பதன் மூலம், சிக்கலான சூழ்நிலைகளில் நிலையான செயல்திறன் மற்றும் நம்பகத்தன்மையை உறுதிசெய்து, உங்கள் வினவல்கள் மிகவும் மாற்றியமைக்கக்கூடியதாகவும் தோல்வியடையாததாகவும் மாறும். 🚀
SQL வினவல்கள் பற்றி பொதுவாகக் கேட்கப்படும் கேள்விகள்
- அ என்பது என்ன LEFT JOIN மற்றும் எப்போது பயன்படுத்த வேண்டும்?
- ஏ LEFT JOIN வலது அட்டவணையில் பொருத்தம் இல்லாவிட்டாலும், இடது அட்டவணையில் இருந்து அனைத்து வரிசைகளையும் சேர்க்கப் பயன்படுகிறது. அறிக்கைகள் அல்லது தரவு பகுப்பாய்வில் தரவு முழுமையைப் பாதுகாக்க இது பயனுள்ளதாக இருக்கும்.
- எப்படி செய்கிறது IS வினவல் முடிவுகளை மேம்படுத்தவா?
- தி IS செயல்பாடு பூஜ்ய மதிப்புகளை ஒரு குறிப்பிட்ட மதிப்புடன் மாற்றுகிறது, தரவு ஒருமைப்பாட்டை உறுதி செய்கிறது மற்றும் கணக்கீடுகளில் பூஜ்யம் தொடர்பான பிழைகளைத் தடுக்கிறது.
- என்ன வித்தியாசம் INNER JOIN மற்றும் OUTER JOIN?
- INNER JOIN அட்டவணைகளுக்கு இடையில் பொருந்தக்கூடிய வரிசைகளை மட்டுமே மீட்டெடுக்கிறது OUTER JOIN வகையைப் பொறுத்து (இடது, வலது அல்லது முழு) பொருந்தாத வரிசைகளை உள்ளடக்கியது.
- டைனமிக் வினவல்களுக்கு சேமிக்கப்பட்ட நடைமுறைகளைப் பயன்படுத்த முடியுமா?
- ஆம், சேமிக்கப்பட்ட செயல்முறைகள் நெகிழ்வுத்தன்மை மற்றும் மட்டுத்தன்மையை வழங்கும் SQL வினவல்களை மாறும் வகையில் உருவாக்க மற்றும் செயல்படுத்த உள்ளீட்டு அளவுருக்கள் மூலம் வடிவமைக்கப்படலாம்.
- பிழை கையாளுதல் வினவல் நம்பகத்தன்மையை எவ்வாறு மேம்படுத்தலாம்?
- SQL இல் கையாளுதல் போன்ற பிழை TRY-CATCH தடுக்கிறது, எதிர்பாராத சிக்கல்கள் செயல்பாட்டின் ஓட்டத்தை சீர்குலைக்காமல் இருப்பதை உறுதிசெய்து, பயன்பாட்டை மேலும் வலிமையாக்குகிறது.
விடுபட்ட தரவுக்கான மாஸ்டரிங் டைனமிக் SQL
டைனமிக் SQL வினவல்கள் குறிப்பிட்ட தரவு இல்லாத சூழ்நிலைகளைக் கையாள ஒரு வலுவான வழியை வழங்குகிறது. ஃபால்பேக் பொறிமுறைகள் போன்ற நுட்பங்கள் முக்கியமான தரவுப் புள்ளிகள் இழக்கப்படுவதை உறுதிசெய்கிறது, சில்லறை அல்லது தளவாடங்கள் போன்ற தரவு உணர்திறன் தொழில்களுக்கு அவை இன்றியமையாததாக ஆக்குகிறது. மேம்பட்ட SQL அம்சங்களை இணைப்பதன் மூலம், பயனர்கள் செயல்திறன் மற்றும் நம்பகத்தன்மையை மேம்படுத்த முடியும்.
போன்ற அம்சங்களைப் புரிந்துகொண்டு பயன்படுத்துதல் IS மற்றும் டைனமிக் ஃபால்பேக் லாஜிக் பல்வேறு சவால்களுக்கு ஏற்ப தீர்வுகளை உருவாக்க டெவலப்பர்களுக்கு அதிகாரம் அளிக்கிறது. விலை நிர்ணய மாதிரிகள் முதல் விரிவான அறிக்கையிடல் அமைப்புகள் வரை, இந்த முறைகள் செயல்பாடுகளை சீராக்கும்போது சீரான மற்றும் துல்லியமான முடிவுகளை உறுதி செய்கின்றன. 💡
SQL வினவல் உகப்பாக்கத்திற்கான நம்பகமான குறிப்புகள்
- SQL வினவல் அமைப்பு மற்றும் சிறந்த நடைமுறைகள் மூலம் பெறப்பட்டது SQL பயிற்சி .
- டைனமிக் வினவல் நுட்பங்கள் மற்றும் ஃபால்பேக் லாஜிக் குறிப்பிடப்பட்டது மைக்ரோசாப்ட் SQL சர்வர் ஆவணம் .
- மேம்பட்ட SQL கட்டளைகளின் கருத்துக்கள் பெறப்பட்டது GeeksforGeeks SQL வழிகாட்டி .
- மாதிரி தரவு மற்றும் பயன்பாட்டு காட்சிகள் மூலம் ஈர்க்கப்பட்டது DataCamp SQL வளங்கள் .