SQL خودش database نیست؛ زبانی برای ارتباط با database رابطهای است. این زبان رویکردی declarative دارد: بهجای توضیح مراحل انجام کار، مشخص میکند چه دادهای میخواهیم. برای کسی که با Excel آشناست، متن database را به یک workbook و هر جدول را به یک sheet تشبیه میکند؛ هر ردیف یک مورد و هر ستون یکی از ویژگیهای آن را نگه میدارد.
محور آموزش، CRUD است: ایجاد، خواندن، تغییر و حذف داده. مثالها دو جدول students و scores دارند که شناسهٔ دانشآموز، اطلاعات آنها را به هم مرتبط میکند. برای تمرین، SQLBolt و DB Browser for SQLite معرفی شدهاند. در دومی میتوان یک database ساخت و دستورها را در بخش Execute SQL اجرا کرد.
خواندن داده با SELECT شروع میشود. میتوان ستونهای موردنیاز را انتخاب کرد، با WHERE ردیفها را محدود کرد، با ORDER BY ترتیبشان را تغییر داد و با LIMIT و OFFSET تعداد نتیجهها و نقطهٔ شروع را تعیین کرد. برای نمونه، انتخاب نمرههای ریاضی، مرتبکردن نزولی آنها و ردکردن نتیجهٔ اول، دومین نمره در این ترتیب را برمیگرداند.
برای خلاصهکردن داده، aggregate functionهایی مثل SUM()، AVG() و MIN() معرفی میشوند. همراهکردن AVG() با GROUP BY امکان محاسبهٔ میانگین نمره برای هر درس را فراهم میکند. متن همچنین یادآوری میکند که در SQLite، عبارت 5/100 تقسیم عدد صحیح است و صفر میشود، اما 5.0/100 برابر 0.05 است.
برای خواندن اطلاعات دو جدول، join ستونهای مرتبط را تطبیق میدهد. JOIN فقط موارد دارای تطبیق در هر دو جدول را نگه میدارد؛ LEFT JOIN همهٔ ردیفهای جدول سمت چپ را هم نشان میدهد. بنابراین دانشآموز بدون نمره در نتیجهٔ LEFT JOIN حضور دارد، اما مقدار درس و نمرهاش NULL است. RIGHT JOIN و FULL JOIN نیز در راهنما معرفی میشوند.
در بخش نوشتن، INSERT ردیف تازه اضافه میکند، UPDATE مقدارها را تغییر میدهد و DELETE ردیفها را حذف میکند. شرط WHERE مشخص میکند تغییر یا حذف شامل کدام ردیفها شود؛ بدون آن، همهٔ ردیفها تحت تأثیر قرار میگیرند.
نکتهٔ عملی دیگر به commit مربوط است: در DB Browser for SQLite، تغییرها تا انتخاب Write Changes یا اجرای COMMIT; در فایل database ثبت نمیشوند. بستن برنامه با انتخاب Discard نیز تغییرها را برمیگرداند.



