SQL மூலம் தரவுகளைக் கையாளுதல்: ஒரு மதிப்பெண் வினாக்கள், புத்தக வினா விடைகள் மற்றும் குறிப்புகள்
ஒரு பைத்தான் நிரல், பைத்தானுடன் வரும் sqlite3 தொகுதி வழியாக SQLite தரவுதளத்துடன் தொடர்புகொள்கிறது. தரவுதளத்துடன் இணைப்பு ஏற்படுத்துதல், cursor உருவாக்குதல், அட்டவணைகளை உருவாக்குதல், பதிவுகளைச் செருகுதல், புதுப்பித்தல், நீக்குதல், fetchall, fetchone, fetchmany மூலம் விடைகளைப் பெறுதல், SQL பிரிவுகள், திரட்டுச் செயற்கூறுகள், வினவல் விடைகளை CSV கோப்பில் எழுதுதல் ஆகியவற்றை இந்தக் குறிப்புகள் வரிசையாக விளக்குகின்றன.
இந்தப் பாடத்தைப் படியுங்கள்
முந்தைய பொதுத் தேர்வுகளில் கேட்கப்பட்டவை
இந்தப் பாடத்திலிருந்து 4 வினாக்கள் 4 முந்தைய பொதுத் தேர்வுகளில் கேட்கப்பட்டன. விடையையும் விளக்கத்தையும் காண எந்த வினாவையும் திறக்கவும்.
-
மார்ச் 2026
__________ செயற்கூறு தேர்ந்தெடுக்கப்பட்ட புலத்தின் பெரிய மதிப்பைத் திருப்பி அனுப்பும்.விடையுடன் வினாத்தாளில் பார் →
-
மார்ச் 2024
SQL -ல் மிகவும் பொதுவாக பயன்படுத்தப்படும் கூற்று :விடையுடன் வினாத்தாளில் பார் →
-
மார்ச் 2023
எந்த செயற்கூறு தேர்ந்தெடுக்கப்பட்ட புலத்தின் பெரிய மதிப்பைத் திருப்பி அனுப்பும் :விடையுடன் வினாத்தாளில் பார் →
-
மே 2022
SQLite எந்த தரவுத்தள அமைப்பைச் சார்ந்தது ?விடையுடன் வினாத்தாளில் பார் →
SQL மூலம் தரவுகளைக் கையாளுதல் பற்றி
நடுத்தரம் ~120 நிமிடப் படிப்பு
பைத்தான் நிரலிலிருந்து SQL ஐப் பயன்படுத்துதல்
SQL பாடத்தில் கட்டளைகளை நேரடியாகத் தட்டச்சு செய்தீர்கள். உண்மையான நிரல்கள் பொதுவாக அதே கட்டளைகளை, மாறிகளிலிருந்தும் பட்டியல்களிலிருந்தும் எடுத்த மதிப்புகளுடன், குறியீட்டிலிருந்து அனுப்புகின்றன. இதற்காகப் பைத்தானுடன் sqlite3 தொகுதி வருகிறது. SQLite ஒரு சிறிய உறவுநிலைத் தரவுதளம்; இதற்குத் தனி சேவையகம் (server) தேவையில்லை. முழுத் தரவுதளமும் Academy.db போன்ற வட்டிலுள்ள ஒரே கோப்பு.
இந்தப் பாடத்தின் ஒவ்வொரு நிரலும் ஒரே முறையைப் பின்பற்றுகிறது. sqlite3 ஐ import செய்து, sqlite3.connect() மூலம் இணைப்பைத் திறந்து, ஒரு cursor ஐ உருவாக்கி, SQL சரங்களை cursor.execute() க்கு அனுப்ப வேண்டும். தரவு மாற்றப்பட்டிருந்தால் connection.commit() அழைக்க வேண்டும்; கடைசியில் connection.close(). இந்த முறை தெளிவானதும், மீதமுள்ளவை பைத்தான் சரங்களுக்குள் எழுதப்படும் சாதாரண SQL தான்.
இணைப்புப் படிகளை நினைவிலிருந்து எழுதவும், cursor என்றால் என்ன, fetchone க்கும் fetchmany க்கும் உள்ள வேறுபாடு, sqlite_master எதைச் சேமிக்கிறது, commit ஏன் தேவை என்பவற்றை விளக்கவும் தயாராக இருங்கள். பாடத்தின் கடைசி நிரல் பதிவுகளைப் படித்து CSV கோப்பில் சேமிக்கிறது; எனவே அலகு 13 இல் உள்ள csv.writer படிகளை மறக்காமல் வைத்திருங்கள்.
நீங்கள் கற்பவை
- பைத்தானிலிருந்து ஒரு SQLite தரவுதளத்துடன் இணைப்பதற்கான படிகளை எழுதுதல்.
- பொருத்தமான நெடுவரிசைகளுடனும் INTEGER PRIMARY KEY உடனும் ஒரு அட்டவணையை உருவாக்குதல்.
- ஒரு பைத்தான் பட்டியலில் உள்ள மதிப்புகளிலிருந்து அட்டவணையில் பதிவுகளைச் செருகுதல்.
- fetchone(), fetchmany(), fetchall() ஆகியவற்றை விளக்கிப் பயன்படுத்துதல்.
- பைத்தான் நிரலில் SQL பிரிவுகள், திரட்டுச் செயற்கூறுகள் மூலம் பதிவுகளை வடிகட்டுதல், குழுவாக்குதல், வரிசைப்படுத்துதல்.
- ஒரு வினவலின் விடையை CSV கோப்பில் சேமித்தல்.
தொடங்குவதற்கு முன்
- வினவல் அமைப்பு மொழி பாடத்தில் உள்ள SQL கட்டளைகளும் பிரிவுகளும்.
- பைத்தான் மடக்குகள், பட்டியல்கள், டூப்பிள்கள்.
- csv தொகுதி மூலம் CSV கோப்புகளைப் படித்தலும் எழுதுதலும்.
இந்த அத்தியாயத்தில் உள்ள தலைப்புகள்
SQL மூலம் தரவுகளைக் கையாளுதல் — விரிவான விளக்கம்
பைத்தானில் நிரல் மூலம் SQL செயல்பாடுகள்
இணைப்பும் cursor உம்
import sqlite3 க்குப் பிறகு, connection = sqlite3.connect("Academy.db") என்ற கூற்று தரவுதளக் கோப்பைத் திறக்கிறது; அது இல்லையென்றால் உருவாக்குகிறது. கோப்பின் பெயருக்குப் பதிலாக முழுப் பாதையையும் (path) தரலாம். அடுத்து, cursor = connection.cursor() ஒரு cursor பொருளை உருவாக்குகிறது. cursor என்பது தரவுதளத்தின் பதிவுகளின் வழியே செல்லப் பயன்படும் ஒரு கட்டுப்பாட்டு அமைப்பு. ஒவ்வொரு SQL கட்டளையும் cursor.execute() மூலம் அனுப்பப்படுகிறது; SELECT வினவல் தரும் வரிசைகளையும் cursor வைத்திருக்கிறது.
அட்டவணையை உருவாக்குதலும் பதிவுகளைச் சேர்த்தலும்
CREATE TABLE கட்டளை ஒரு சரமாக, எ.கா. sql_command இல், எழுதப்பட்டு cursor.execute() க்கு அனுப்பப்படுகிறது. பாடநூலின் Student அட்டவணையில் Rollno என்பது INTEGER PRIMARY KEY. அத்தகைய நெடுவரிசையில் NULL செருகப்பட்டால், SQLite தானாகவே அடுத்த எண்ணைத் தருகிறது; எனவே ஒவ்வொரு மாணவருக்கும் தனித்த வரிசை எண் கிடைக்கிறது. பதிவுகள் INSERT INTO கூற்றுகள் மூலம் சேர்க்கப்படுகின்றன. பல பதிவுகளைச் செருக, பாடநூல் அவற்றை ஒரு பட்டியலில் வைத்து, ஒரு மடக்குக்குள் format() மூலம் ஒவ்வொரு INSERT சரத்தையும் உருவாக்குகிறது.
பதிவுகளைப் பெறுதல்
SELECT வினவல் இயக்கப்பட்ட பிறகு, விடைகள் cursor இலிருந்து படிக்கப்படுகின்றன. fetchall() மீதமுள்ள எல்லா வரிசைகளையும் டூப்பிள்களின் பட்டியலாகத் தரும். fetchone() அடுத்த ஒரு வரிசையைத் தரும்; வரிசைகள் எதுவும் மீதமில்லையென்றால் None தரும். fetchmany(n) அடுத்த n வரிசைகளைத் தரும்; எனவே cursor.fetchmany(3) ஒரு நேரத்தில் மூன்று பதிவுகளைத் தரும். cursor.description ஒவ்வொரு நெடுவரிசையின் விவரங்களையும் வைத்திருக்கிறது; புலப் பெயர்களை அச்சிடப் பாடநூல் இதைப் பயன்படுத்துகிறது.
பிரிவுகள், செயற்குறிகள், திரட்டுச் செயற்கூறுகள்
அலகு 12 இல் உள்ள அதே SQL பிரிவுகள் இங்கும் வேலை செய்கின்றன. DISTINCT திரும்பத் திரும்ப வரும் மதிப்புகளை நீக்குகிறது. WHERE வரிசைகளை வடிகட்டுகிறது; AND, OR, NOT நிபந்தனைகளை இணைக்கின்றன. ORDER BY இயல்பாக ஏறு வரிசையிலும், DESC உடன் இறங்கு வரிசையிலும் வரிசைப்படுத்துகிறது. HAVING உடன் GROUP BY வரிசைகளைக் குழுவாக்கி, குழுக்களை வடிகட்டுகிறது. COUNT(), AVG(), SUM(), MAX(), MIN() ஆகிய திரட்டுச் செயற்கூறுகள் (aggregate functions) ஒவ்வொன்றும் ஒரு வரிசைத் தொகுப்பிலிருந்து ஒரே மதிப்பைத் தருகின்றன.
பதிவுகளைப் புதுப்பித்தலும் நீக்குதலும்
UPDATE, WHERE நிபந்தனையை நிறைவு செய்யும் வரிசைகளின் மதிப்புகளை மாற்றுகிறது; DELETE அந்த வரிசைகளை நீக்குகிறது. INSERT, UPDATE அல்லது DELETE க்குப் பிறகு, மாற்றங்களைத் தரவுதளக் கோப்பில் சேமிக்க connection.commit() அழைக்கப்பட வேண்டும். commit செய்யாமல் close() அழைத்தால் அந்த மாற்றங்கள் இழக்கப்படும். sqlite_master அட்டவணை தானாக உருவாக்கப்படுகிறது; அட்டவணைகளின் பெயர்கள் போன்ற தரவுதள வடிவமைப்பு (schema) விவரங்களை அது சேமிக்கிறது. எனவே SELECT name FROM sqlite_master WHERE type='table' எல்லா அட்டவணைகளையும் பட்டியலிடும்.
வினவல் விடைகளை CSV கோப்பில் எழுதுதல்
sqlite3 ஐ csv தொகுதியுடன் சேர்த்துப் பயன்படுத்தி, வினவல் விடைகளை CSV கோப்பாகச் சேமிக்கலாம். SELECT வினவலை இயக்கி, வரிசைகளைப் பெற்று, ஒரு கோப்பை எழுதும் முறைமையில் திறந்து, ஒரு csv.writer ஐ உருவாக்குங்கள். cursor.description இலிருந்து நெடுவரிசைப் பெயர்களைத் தலைப்பாக எழுதி, பிறகு writerows() மூலம் வரிசைகளை எழுதுங்கள். உருவாகும் கோப்பை எந்த விரிதாள் நிரலிலும் திறக்கலாம்; எனவே SQLite இல்லாமலேயே தரவைப் பார்க்கலாம்.
தவிர்க்க வேண்டிய பொதுவான தவறுகள்
- INSERT, UPDATE அல்லது DELETE க்குப் பிறகு connection.commit() ஐ மறப்பது. நிரல் பிழையின்றி இயங்கும், ஆனால் மாற்றங்கள் சேமிக்கப்படாது.
- cursor இல்லாமல் SQL ஐ இயக்க முயல்வது. connection.cursor() மூலம் ஒன்றை உருவாக்கி, ஒவ்வொரு கட்டளையையும் cursor.execute() வழியாக அனுப்புங்கள்.
- Windows பாதைகளை ஒற்றை backslash உடன் எழுதுவது, எ.கா. "c:\new\data.db"; இதில் \n புதிய வரியாக மாறிவிடும். இரட்டை backslash அல்லது forward slash பயன்படுத்துங்கள்.
- close() தரவைச் சேமிக்கிறது என்று நினைப்பது. close() இணைப்பை மட்டுமே முடிக்கிறது; மாற்றங்களைச் சேமிப்பது commit() தான்.
- fetchone() இன் விடையைச் சரிபார்க்காமல் சுட்டெண் பயன்படுத்துவது. வரிசை எதுவும் மீதமில்லையென்றால் அது None தரும், fetchall() வெற்றுப் பட்டியலைத் தரும்; எனவே [0] பயன்படுத்தும் முன் சரிபாருங்கள்.
இவற்றை பயிற்சித் தேர்வு மூலம் சோதித்துப் பாருங்கள்; பிறகு விடையுடன் கூடிய வினாக்கள் பகுதியில் விரிவான விளக்கத்தைப் படியுங்கள்.
அடிக்கடி கேட்கப்படும் கேள்விகள்
பைத்தானை ஒரு SQLite தரவுதளத்துடன் எப்படி இணைப்பது?
sqlite3 தொகுதியை import செய்து, தரவுதளக் கோப்பின் பெயர் அல்லது முழுப் பாதையுடன் sqlite3.connect() ஐ அழையுங்கள், எ.கா. sqlite3.connect("Academy.db"). இது ஒரு connection பொருளைத் தருகிறது; கோப்பு இல்லையென்றால் அது உருவாக்கப்படும்.
cursor இன் பணி என்ன?
cursor என்பது தரவுதளத்தின் பதிவுகளின் வழியே செல்லப் பயன்படும் ஒரு கட்டுப்பாட்டு அமைப்பு. பைத்தானில் ஒவ்வொரு SQL கட்டளையும் cursor.execute() மூலம் இயக்கப்படுகிறது; SELECT வினவல் தரும் வரிசைகளும் அதே cursor இலிருந்து படிக்கப்படுகின்றன.
fetchone() க்கும் fetchall() க்கும் உள்ள வேறுபாடு என்ன?
fetchone() விடையின் அடுத்த வரிசையை ஒரு டூப்பிளாகத் தரும்; வரிசைகள் எதுவும் மீதமில்லையென்றால் None தரும். fetchall() மீதமுள்ள எல்லா வரிசைகளையும் ஒன்றாக டூப்பிள்களின் பட்டியலாகத் தரும்.
commit() ஏன் தேவை?
INSERT, UPDATE, DELETE ஆகியவை நடப்புப் பரிமாற்றத்துக்குள் மட்டுமே தரவுதளத்தை மாற்றுகின்றன. connection.commit() அந்த மாற்றங்களைத் தரவுதளக் கோப்பில் சேமிக்கிறது. commit இல்லாமல் இணைப்பு மூடப்பட்டால் மாற்றங்கள் இழக்கப்படும்.
குறிப்பிட்ட எண்ணிக்கையிலான பதிவுகளை மட்டும் பெற முடியுமா?
ஆம். fetchmany(n) விடையின் அடுத்த n வரிசைகளைத் தரும். எ.கா. cursor.fetchmany(3) மூன்று பதிவுகளைத் தரும்; மீண்டும் அழைத்தால் அடுத்த மூன்று கிடைக்கும். விடை பெரியதாக இருக்கும்போது இது உதவுகிறது.
வினவல் விடைகளை CSV கோப்பில் எப்படிச் சேமிப்பது?
SELECT வினவலை இயக்கி வரிசைகளைப் பெறுங்கள். ஒரு CSV கோப்பை எழுதும் முறைமையில் திறந்து, ஒரு csv.writer ஐ உருவாக்குங்கள். cursor.description இலிருந்து எடுத்த நெடுவரிசைப் பெயர்களை எழுதி, பிறகு writerows() மூலம் வரிசைகளை எழுதுங்கள்.
sqlite_master என்றால் என்ன?
sqlite_master என்பது SQLite தானாக உருவாக்கிப் பராமரிக்கும் ஒரு அட்டவணை. ஒவ்வொரு அட்டவணை, index இன் வகை, பெயர் போன்ற தரவுதள வடிவமைப்பு விவரங்களை இது சேமிக்கிறது. SELECT name FROM sqlite_master WHERE type='table' தரவுதளத்தின் எல்லா அட்டவணைகளையும் பட்டியலிடும்.
கடைசியாகப் புதுப்பிக்கப்பட்டது 17 செப்டெம்பர் 2026