پرش به محتوای اصلی

طرح‌واره SQL

زبانهٔ Schema SQL DDL نمودار را برای پایگاه دادهٔ انتخاب‌شده نشان می‌دهد: همان SQL که جدول‌های نمودار را همراه با کلیدها، شاخص‌ها و کلیدهای خارجی‌شان می‌سازد.
در نوار ابزار به زبانهٔ Schema SQL بروید، یا در جست‌وجوی سریع گزینهٔ Schema SQL را زیر Tab انتخاب کنید. انتخاب Schema SQL از زیرمنوی Export نیز این زبانه را، آماده برای ذخیره، باز می‌کند؛ ذخیره یا کپی کردن SQL را ببینید.

SQL در سمت چپ قرار دارد و در سمت راست آن، پنل گزینه‌هایی با عنوان Schema SQL انتخاب‌هایی را در خود دارد که شکل SQL را تعیین می‌کنند؛ پنل گزینه‌ها را ببینید. در یک زبان نمایش راست‌به‌چپ نیز SQL در سمت چپ می‌ماند و از چپ به راست خوانده می‌شود.
پنل خودبه‌خود باز می‌شود، مگر آنکه ویرایشگر هنگام نخستین باز شدن زبانه باریک‌تر از 640 px باشد. Hide options در سرآیند پنل آن را جمع می‌کند و Show options در گوشهٔ بالای سمت راست کد آن را برمی‌گرداند. پس از آن، پنل تا وقتی ویرایشگر باز است، در جابه‌جایی میان زبانه‌ها نیز، همان‌طور که آن را گذاشته‌اید باز یا جمع‌شده می‌ماند. پنل مستقل از پنل زبانهٔ مولد کد جمع و باز می‌شود و هرگز در فایل ذخیره نمی‌شود.

باز کردن Export > Schema SQL، تغییر دستورها به Drop & re-create و سرآیند به USE، سپس افزودن یک اسکریپت SET NAMES پیش از جدول‌ها

برای باز کردن منوی زمینهٔ SQL، روی آن راست‌کلیک کنید:

  • Database و Bracket، که هر کدام زیرمنویی است که مقدار فعلی را علامت می‌زند.
  • Statements و Header، که هر کدام زیرمنویی است که انتخاب اعمال‌شده را علامت می‌زند. انتخابی که پایگاه داده آن را ندارد، پیامی کم‌رنگ مانند not in Oracle در کنار خود دارد و کاری انجام نمی‌دهد.
  • Options panel، که تا وقتی پنل نمایش داده می‌شود علامت‌خورده است و پنل را جمع یا باز می‌کند.
  • Save file

تا وقتی این زبانه باز است، جست‌وجوی سریع این گزینه‌ها را ارائه می‌کند: Database و Bracket؛ Schema SQL: Statements و Schema SQL: Header که فقط انتخاب‌هایی را فهرست می‌کنند که پایگاه داده دارد؛ و Schema SQL: Options panel که پنل را جمع یا باز می‌کند.

SQL هنگام باز شدن زبانه نوشته می‌شود و هر بار که یکی از گزینه‌های پنل، نام پایگاه داده یا یک اسکریپت تغییر کند، دوباره نوشته می‌شود. ویرایشی که هنگام باز بودن زبانه روی جدول‌ها انجام می‌شود، مانند ویرایش یک همکار یا یک عامل کدنویسی، زمانی نمایش داده می‌شود که از زبانه بیرون بروید و برگردید، یا یکی از آن موارد تغییر کند.

ویژگی‌های جدول زبانهٔ Schema SQL مخصوص خود را دارد که DDL یک جدول را نشان می‌دهد. این زبانه همیشه دستورهای سادهٔ CREATE را بدون سرآیند یا اسکریپت می‌نویسد، پنل گزینه‌ها ندارد و منوی زمینهٔ آن فقط Database و Bracket را ارائه می‌کند.

پنل گزینه‌ها​

پنل سه دسته را در خود دارد که هر کدام زیر یک عنوان قرار دارد:

  1. Saved in the document: Database و Bracket؛ پایگاه داده و علامت نقل‌قول را ببینید.
  2. This window only: Statements، Header و، تا وقتی نمودار یک گروه جدول دارد، Tables؛ دستورها، سرآیند و جدول‌ها را ببینید.
  3. Saved in the document · written as is for every database: اسکریپت‌های Before tables و After tables؛ اسکریپت‌های پیش و پس از جدول‌ها را ببینید.

Save file و Copy در پایین پنل قرار دارند؛ ذخیره یا کپی کردن SQL را ببینید.

گزینه‌های زیر This window only به پنجرهٔ ویرایشگری تعلق دارند که در آن انجام شده‌اند. این گزینه‌ها در سند ذخیره نمی‌شوند، با همکاران به اشتراک گذاشته نمی‌شوند و برای واگرد ثبت نمی‌شوند، و با بسته شدن یا بارگذاری دوبارهٔ ویرایشگر بازنشانی می‌شوند؛ جابه‌جایی میان زبانه‌ها آن‌ها را حفظ می‌کند.
Statements با If not exists و Header با CREATE + USE آغاز می‌شود. SQL خوانده‌شده با getSchemaSQL() به‌دست صفحه‌ای که ویرایشگر را جاسازی می‌کند و SQL خوانده‌شده به‌دست یک عامل کدنویسی، به‌جای آن با Create و بدون سرآیند آغاز می‌شوند.

انتخابی که پایگاه دادهٔ انتخاب‌شده آن را ندارد، به‌صورت کم‌رنگ و با راهنمای ابزار Not in <database>، مانند Not in Oracle، در پنل باقی می‌ماند و فشردن آن کاری انجام نمی‌دهد.
در این حالت SQL از نزدیک‌ترین شکلی که پایگاه داده دارد استفاده می‌کند و دکمهٔ آن شکل به حالت فشرده نمایش داده می‌شود: If not exists به Create برمی‌گردد، CREATE + USE به USE، یا اگر پایگاه داده USE را هم نداشته باشد به None، و USE به None. انتخابتان حفظ می‌شود، بنابراین تغییر پایگاه داده به پایگاه داده‌ای که آن را دارد، آن را برمی‌گرداند.

پایگاه داده و علامت نقل‌قول​

Database پایگاه دادهٔ نمودار است و همان تنظیم Database در منوی زمینهٔ بوم و در مولد کد است؛ پایگاه‌های داده را ببینید. این تنظیم Databricks، MSSQL، MariaDB، MySQL، Oracle، PostgreSQL، Snowflake و SQLite را فهرست می‌کند، مقدار آغازین آن MySQL است و مانند هر ویرایشی در فایل ذخیره می‌شود.

Bracket علامت نقل‌قولی را تعیین می‌کند که دور نام جدول‌ها، ستون‌ها، قیدها و شاخص‌ها قرار می‌گیرد: SingleQuote، DoubleQuote، Backtick یا None که هیچ علامت نقل‌قولی نمی‌گذارد و پیش‌فرض است. این همان تنظیم مولد کد است؛ علامت نقل‌قول را ببینید.
Snowflake، که نام‌ها را فقط داخل گیومهٔ دوتایی قرار می‌دهد، با هر انتخابی به‌جز None از آن استفاده می‌کند و Databricks همیشه نام‌ها را داخل بک‌تیک قرار می‌دهد.
Bracket فقط تا وقتی قفل Bracket Type در زبانهٔ تنظیمات خاموش است در فایل ذخیره می‌شود، و در نمودار جدید همهٔ قفل‌ها روشن‌اند. تا وقتی قفل روشن است، هر تغییری SQL روی صفحه را دوباره می‌نویسد، اما فایل مقدار قفل‌شده را نگه می‌دارد و نمودار با همان مقدار دوباره باز می‌شود؛ قفل را ببینید.

تا وقتی پایگاه داده Oracle است و SQL نامی طولانی‌تر از 30 بایت دارد، که Oracle 12.1 و نسخه‌های قدیمی‌تر آن را نمی‌پذیرند، پیامی زیر دو فهرست هر یک از این نام‌ها را می‌آورد: Oracle 12.2+ for names over 30 bytes: <names>. این پیام نام جدول‌ها، ستون‌ها، طرح‌واره‌ها، کلیدها، شاخص‌ها، دنباله‌ها و تریگرها را بررسی می‌کند. خود SQL تغییر نمی‌کند.

دستورها​

Statements تعیین می‌کند جدول‌ها چگونه ساخته شوند:

  • Create دستورهای سادهٔ CREATE را می‌نویسد.
  • If not exists از جدول‌ها و شاخص‌هایی که از قبل وجود دارند می‌گذرد. MySQL، MariaDB، PostgreSQL، SQLite و Databricks این گزینه را دارند؛ MSSQL، Oracle و Snowflake به‌جای آن Create را می‌نویسند.
    • MySQL هر جدول را به‌صورت CREATE TABLE IF NOT EXISTS همراه با قیدهای یکتا، شاخص‌ها و کلیدهای خارجی‌اش درون آن می‌نویسد و کل این دسته را میان SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; و SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; قرار می‌دهد.
    • MariaDB عبارت IF NOT EXISTS را در هر دستور می‌گذارد: CREATE TABLE، هر قید UNIQUE و FOREIGN KEY و هر CREATE INDEX.
    • PostgreSQL دستورهای CREATE TABLE IF NOT EXISTS و CREATE INDEX IF NOT EXISTS را می‌نویسد و هر کلید خارجی را پیش از افزودن دوباره با DROP CONSTRAINT IF EXISTS حذف می‌کند.
    • SQLite دستورهای CREATE TABLE IF NOT EXISTS و CREATE INDEX IF NOT EXISTS را می‌نویسد.
    • Databricks دستور CREATE TABLE IF NOT EXISTS را می‌نویسد و هر کلید خارجی را پیش از افزودن دوباره با DROP CONSTRAINT IF EXISTS حذف می‌کند.
  • Drop & re-create هر جدولی را که می‌نویسد پیش از ساختن دوباره حذف می‌کند، به‌جز در Snowflake. همهٔ پایگاه‌های داده این گزینه را دارند:
    • MySQL و MariaDB برای هر جدول یک DROP TABLE IF EXISTS می‌نویسند، میان همان دو خطی که بررسی کلیدهای خارجی را خاموش و دوباره روشن می‌کنند.
    • PostgreSQL یک DROP TABLE IF EXISTS می‌نویسد که نام همهٔ جدول‌ها را می‌آورد، و اگر جدولی بیرون از این فهرست به یکی از آن‌ها ارجاع دهد، شکست می‌خورد. با سرآیند CREATE + USE، جدولی که نامش طرح‌واره‌ای مشخص نمی‌کند از همان طرح‌واره حذف می‌شود، مانند shop.member.
    • MSSQL یک تراکنش می‌نویسد که، همان‌طور که راهنمای ابزار دکمه، SQL Server 2016+، می‌گوید، به SQL Server 2016 یا بالاتر نیاز دارد. این تراکنش کلیدهای خارجی‌ای را که جدول‌های نوشته‌شده دارند حذف می‌کند، سپس جدول‌ها را با یک DROP TABLE IF EXISTS حذف می‌کند و در صورت خطا عقب‌گرد می‌کند. کلید خارجی‌ای که جدولی بیرون از فهرست دارد، همچنان مانع حذف می‌شود.
    • SQLite دستور PRAGMA foreign_keys=OFF; را، که برای آن اتصال خاموش می‌ماند، و سپس برای هر جدول یک DROP TABLE IF EXISTS می‌نویسد.
    • Oracle برای هر جدول DROP TABLE … CASCADE CONSTRAINTS و برای هر دنبالهٔ افزایش خودکار DROP SEQUENCE را می‌نویسد، هر کدام در یک بلوک PL/SQL که با خط / پایان می‌یابد و خطایی را که نبود جدول یا دنباله ایجاد می‌کند نادیده می‌گیرد.
    • Databricks برای هر جدول یک DROP TABLE IF EXISTS می‌نویسد.
    • Snowflake چیزی حذف نمی‌کند و به‌جای آن CREATE OR REPLACE TABLE را می‌نویسد.

تا وقتی Drop & re-create اعمال می‌شود، هشداری در پنل نام جدول‌هایی را که حذف می‌کند می‌آورد: Drops <tables> before creating them. Their rows are lost.، یا در Snowflake Replaces <tables>. Their rows are lost.
تا پنج جدول با نام کامل آورده می‌شوند. با بیش از پنج جدول، هشدار نام چهار جدول نخست را می‌آورد و بقیه را می‌شمارد، مانند a, b, c, d, and 3 more tables.

Header در ابتدای SQL دستورهایی می‌گذارد که پایگاه داده، یا طرح‌واره‌ای را که SQL در آن اجرا می‌شود، می‌سازند یا انتخاب می‌کنند. نام به‌کاررفته همان نام پایگاه دادهٔ نمودار است که در فیلد database name در نوار ابزار تایپ می‌شود و با نویسهٔ Bracket در علامت نقل‌قول قرار می‌گیرد.

  • MySQL و MariaDB: USE دستور USE shop; را می‌نویسد و CREATE + USE پیش از آن CREATE DATABASE IF NOT EXISTS shop; را می‌نویسد.
  • MSSQL: USE خط‌های USE shop و GO را می‌نویسد و CREATE + USE پیش از آن IF DB_ID(N'shop') IS NULL CREATE DATABASE shop و GO را می‌نویسد.
  • PostgreSQL فقط CREATE + USE را دارد که CREATE SCHEMA IF NOT EXISTS shop; و SET search_path TO shop, public; را می‌نویسد.
  • Oracle فقط USE را دارد که ALTER SESSION SET CURRENT_SCHEMA = shop; را می‌نویسد. CREATE + USE به آن برمی‌گردد، بنابراین Oracle با سرآیند پیش‌فرض زبانه همین خط را می‌نویسد.
  • Snowflake و Databricks: USE دستور USE SCHEMA shop; را می‌نویسد و CREATE + USE پیش از آن CREATE SCHEMA IF NOT EXISTS shop; را می‌نویسد.
  • SQLite هیچ‌یک را ندارد و سرآیندی نمی‌نویسد.

هر جا پایگاه داده USE یا CREATE + USE را داشته باشد، راهنمای ابزار دکمه نشان می‌دهد که آن دکمه در آنجا چه می‌نویسد، مانند CREATE SCHEMA + SET search_path در PostgreSQL.

سرآیند فقط تا وقتی نوشته می‌شود که نام پایگاه داده یک شناسهٔ ساده باشد: یک حرف ASCII (A–Z، a–z) یا _، و پس از آن حروف ASCII، رقم‌ها یا _.
با هر نام دیگری، از جمله نام خالی، سرآیندی نوشته نمی‌شود و DROP TABLE در PostgreSQL در این حالت نام هیچ طرح‌واره‌ای را نمی‌آورد. تا وقتی سرآیندی به‌جز None اعمال می‌شود، پیامی زیر Header این را اعلام می‌کند: Database name "<name>" is not a valid identifier.
نام پایگاه دادهٔ نمودار جدید خالی است، بنابراین تا وقتی آن را نام‌گذاری نکنید، پنل Database name "" is not a valid identifier. را نشان می‌دهد.

جدول‌ها​

تا وقتی نمودار دست‌کم یک گروه جدول، نمایان یا پنهان، دارد، Tables زیر This window only با یک کادر انتخاب برای هر گزینه نمایش داده می‌شود:

  • All، که همهٔ کادرها را علامت می‌زند یا علامتشان را برمی‌دارد. تا وقتی فقط برخی علامت‌خورده‌اند، این کادر حالتی مختلط نشان می‌دهد.
  • یک کادر برای هر گروه جدول، به ترتیب گروه‌ها در نمودار، با برچسب نام گروه یا unnamed برای گروهی بی‌نام، که اگر گروه رنگی داشته باشد پس از نقطه‌ای به رنگ آن می‌آید.
  • No group، برای جدول‌هایی که در هیچ گروهی نیستند.

وقتی همهٔ کادرها علامت‌خورده باشند، زبانه کل نمودار را می‌نویسد.
وقتی فقط برخی علامت‌خورده باشند، زبانه جدول‌های کادرهای علامت‌خورده را همراه با شاخص‌هایشان و کلیدهای خارجی‌ای که دارند می‌نویسد، از جمله کلیدی که به جدولی کنارگذاشته‌شده ارجاع می‌دهد. اسکریپت‌های پیش و پس از جدول‌ها همچنان نوشته می‌شوند، و Drop & re-create، هشدار آن و پیام Oracle دربارهٔ نام‌های طولانی فقط همان جدول‌ها را در بر می‌گیرند.
وقتی هیچ کادری علامت نخورده باشد، زبانه چیزی نمی‌نویسد و راهنمایی روی کد این متن را نشان می‌دهد: No tables chosen. Check some under Tables. در این حالت Save file فایلی خالی ذخیره می‌کند و Copy متنی خالی را کپی می‌کند.

این انتخاب، مانند Statements و Header، به پنجره تعلق دارد؛ پنل گزینه‌ها را ببینید.
گروهی که بعداً اضافه شود فقط در صورتی از ابتدا علامت‌خورده است که در آن لحظه همهٔ کادرها علامت‌خورده بوده باشند. با حذف یک گروه، کادر آن نیز حذف می‌شود و حذف آخرین گروه دوباره همه‌چیز را علامت می‌زند.
این انتخاب فقط بر همین زبانه اعمال می‌شود. زبانهٔ Schema SQL در ویژگی‌های جدول و getSchemaSQL() از آن تأثیر نمی‌پذیرند.

اسکریپت‌های پیش و پس از جدول‌ها​

Before tables و After tables SQL نوشتهٔ خودتان را نگه می‌دارند، مانند دستورهای CREATE EXTENSION یا SET پیش از جدول‌ها، یا مجوزها، نماها و داده‌های اولیه پس از آن‌ها.
این دو در سند ذخیره می‌شوند، یک جفت برای کل نمودار، هر پایگاه داده‌ای که باشد. هر کدام همان‌طور که تایپ کرده‌اید و بدون هیچ بررسی‌ای در SQL نوشته می‌شود: اسکریپت پیش از جدول‌ها بعد از سرآیند و قبل از دستورهای DROP و جدول‌ها، و اسکریپت پس از جدول‌ها در انتهای SQL.

نویسه‌های خط جدید به‌صورت LF نوشته می‌شوند و خط‌های خالی پیش از اسکریپت و فضای خالی پس از آن حذف می‌شوند.
در MSSQL، همان‌طور که خط زیر دو فیلد می‌گوید، پس از اسکریپتی که خط آخرش GO (یا GO همراه با یک عدد) نباشد، یک خط GO افزوده می‌شود. در Oracle، بلوک PL/SQL را خودتان با خط / آن پایان دهید.

فیلدها نحو SQL را برجسته می‌کنند و با افزایش متن بزرگ‌تر می‌شوند.
ویرایش وقتی اعمال می‌شود که از فیلد خارج شوید، با کلیک کردن در جای دیگر یا رفتن به زبانهٔ دیگر، و تنها در آن هنگام SQL کنار آن و سند تغییر می‌کنند. فیلدی که فقط درونش کلیک کرده‌اید چیزی را تغییر نمی‌دهد.
ویرایش اسکریپت مانند هر ویرایش دیگری نمودار را تغییر می‌دهد: در فایل ذخیره می‌شود، همکاران آن را می‌بینند و هر ویرایش اعمال‌شده یک گام در تاریخچهٔ واگرد است که آن را از زبانهٔ ERD واگرد می‌کنید.
تا وقتی در یک فیلد تایپ می‌کنید، میان‌برهای خود ویرایشگر به آن فیلد سپرده می‌شوند، بنابراین Ctrl + Z (Windows/Linux) یا ⌘ + Z (Mac) تایپ شما را در همان فیلد واگرد می‌کند و کپی، برش و جای‌گذاری به‌جای نمودار روی متن عمل می‌کنند.
جست‌وجوی سریع و جست‌وجوی کاوشگر همچنان با میان‌برهایشان، Ctrl + K و Ctrl + F (Windows/Linux) یا ⌘ + K و ⌘ + F (Mac)، باز می‌شوند. چون Ctrl + F یا ⌘ + F به زبانهٔ ERD می‌رود، ویرایش شما را، مانند هر جابه‌جایی دیگری میان زبانه‌ها، اعمال می‌کند.
فیلدی که فوکوس صفحه‌کلید را ندارد، تغییری را که یک همکار یا یک عامل کدنویسی در اسکریپت آن ایجاد می‌کند دنبال می‌کند. فیلدی که در آن هستید، اگر بدون تایپ کردن از آن خارج شوید، آن تغییر را نشان می‌دهد. اگر تایپ کرده باشید، متن شما هنگام خروج اعمال می‌شود و جای متن آن‌ها را می‌گیرد.

ذخیره یا کپی کردن SQL​

Save file، در پایین پنل یا در منوی زمینه، دقیقاً همان SQL را که زبانه نشان می‌دهد، با پایگاه داده، علامت نقل‌قول، دستورها، سرآیند، جدول‌ها و اسکریپت‌های فعلی‌اش، با نام <database name>-<timestamp>.sql ذخیره می‌کند. نام‌گذاری و ذخیرهٔ این فایل مانند هر صادر کردن دیگری انجام می‌شود؛ صادر کردن را ببینید.

Export ▸ Schema SQL، در منوی زمینهٔ بوم یا در جست‌وجوی سریع، به‌خودی‌خود چیزی ذخیره نمی‌کند.
این فرمان به همین زبانه می‌رود، پنل گزینه‌ها را حتی اگر جمع شده بوده باشد باز می‌کند و فوکوس صفحه‌کلید را روی Save file می‌گذارد، بنابراین فشار دادن Enter فایل را ذخیره می‌کند.

Copy در پایین پنل، یا دکمهٔ کپی که هنگام بردن نشانگر روی کد در گوشهٔ بالای سمت راست آن ظاهر می‌شود، SQL را کپی می‌کند.
اعلان Copied! با یک علامت تیک به مدت دو ثانیه کپی را تأیید می‌کند. اگر مرورگر یا میزبان دسترسی به کلیپ‌بورد را رد کند، به‌جای آن اعلان Couldn't copy to the clipboard با یک علامت هشدار این را اعلام می‌کند. کپی دوباره به‌جای افزودن اعلانی دیگر، اعلان قبلی را جایگزین می‌کند.
SQL قابل انتخاب نیز هست، بنابراین می‌توانید فقط بخشی از آن را بردارید.

آنچه DDL می‌نویسد​

این قاعده‌ها هر جا ویرایشگر طرح‌واره SQL می‌نویسد برقرارند: در این زبانه و فایل آن، و در SQL خوانده‌شده به‌دست صفحه‌ای که ویرایشگر را جاسازی می‌کند یا به‌دست یک عامل کدنویسی.
زبانهٔ Schema SQL در ویژگی‌های جدول برای تنها جدولی که نشان می‌دهد از آن‌ها پیروی می‌کند. این زبانه هیچ کلید خارجی‌ای، به‌جز کلیدهای خارجی SQLite که درون CREATE TABLE آن جای دارند، و هیچ دنباله یا تریگر Oracle نمی‌نویسد.

بخش‌ها به این ترتیب و با یک خط خالی فاصله از هم می‌آیند: سرآیند، اسکریپت پیش از جدول‌ها، دستورهای DROP، جدول‌ها و اسکریپت پس از جدول‌ها. جدول‌ها به ترتیب نام نوشته می‌شوند.
نموداری که نه جدول دارد و نه اسکریپت، حتی با انتخاب سرآیند، چیزی نمی‌نویسد.

افزایش خودکار​

ستونی که با Auto Increment مشخص شده، به همان شکلی نوشته می‌شود که هر پایگاه داده آن را می‌نویسد: AUTO_INCREMENT در MySQL و MariaDB، IDENTITY(1,1) در MSSQL، AUTOINCREMENT در Snowflake و GENERATED ALWAYS AS IDENTITY در PostgreSQL و Databricks.
در Oracle یک دنبالهٔ SEQ_<table> و یک تریگر SEQ_TRG_<table> نوشته می‌شود که ستون را از آن دنباله پر می‌کند. تریگر با خط / پایان می‌یابد، بنابراین SQL*Plus و SQLcl آن را اجرا می‌کنند.

هر جا پایگاه داده افزایش خودکار را روی نوع ستون نپذیرد، این بند کنار گذاشته می‌شود و یک خط توضیح پس از جدول نام ستون را می‌آورد:

  • PostgreSQL آن را فقط روی smallint، integer یا bigint می‌پذیرد، با هر یک از نام‌هایشان: INT، INTEGER، BIGINT، SMALLINT، INT2، INT4 یا INT8. ستونی از نوع دیگر نه این بند را می‌گیرد و نه مقدار پیش‌فرض را، و توضیح برای نمونه چنین است: -- PostgreSQL takes IDENTITY only on smallint, integer or bigint, so member.id is written without it.
  • Databricks آن را فقط روی BIGINT یا LONG می‌پذیرد.
  • SQLite عبارت AUTOINCREMENT را فقط روی تنها ستون کلید اصلی یک جدول می‌پذیرد که از نوع عدد صحیح باشد، مانند INT، BIGINT یا INT8، با پهنا یا بدون آن. آن ستون به‌صورت INTEGER و کلید به‌صورت PRIMARY KEY (id AUTOINCREMENT) نوشته می‌شود. کلید تکی از هر نوع دیگری بدون آن نوشته می‌شود.

کنش‌های ارجاعی​

اینکه هر پایگاه داده کدام کنش‌های ON DELETE و ON UPDATE را می‌نویسد، در ON DELETE و ON UPDATE فهرست شده است.
هر جا Snowflake کنشی را کنار بگذارد، توضیحی بالای ALTER TABLE آن کلید خارجی نام آن کنش را می‌آورد، مانند -- Snowflake creates no foreign key with a referential action other than NO ACTION, so ON DELETE CASCADE is left out.

نام جدول‌ها با پیشوند طرح‌واره​

با Bracket روی None، نام جدولی که نقطه دارد، مانند sales.users، به‌صورت یک طرح‌واره و یک جدول خوانده می‌شود و از آخرین نقطهٔ بیرون از کروشه‌ها یا گیومه‌های دوتایی تقسیم می‌شود.

  • MySQL، MariaDB، MSSQL، Oracle و PostgreSQL نام‌های خودکاری را که می‌نویسند فقط از بخش جدول می‌سازند: FK_users_TO_orders و IDX_users در هر پنج پایگاه داده، UQ_users_email در همه به‌جز PostgreSQL، و PK_users در MSSQL و Oracle، یعنی آن دو پایگاه داده از این پنج که برای کلید اصلی نام می‌گذارند. در این دو، [sales].[users] و "sales"."users" نیز به PK_users می‌انجامند و [Order] به PK_Order می‌انجامد.
  • SQLite برای هیچ قیدی نام نمی‌گذارد، بنابراین تنها نام خودکاری که می‌سازد نام شاخص است: CREATE INDEX sales.IDX_users ON users.
  • Oracle شاخص‌های جدول و دنباله و تریگر ستون دارای افزایش خودکار را در طرح‌وارهٔ جدول می‌سازد: sales.IDX_users، sales.SEQ_users و sales.SEQ_TRG_users.
  • در Oracle و SQLite، اگر خودتان برای نام شاخص طرح‌واره‌ای تعیین کرده باشید، آن نام طرح‌وارهٔ خود را حفظ می‌کند.
  • نام خودکار کلید خارجی یا شاخصی که، بدون توجه به بزرگی و کوچکی حروف، نامی قبلی را تکرار کند، یک عدد می‌گیرد. وقتی orders به هر دو جدول sales.users و hr.Users ارجاع دهد، کلید دوم FK_Users_TO_orders1 است.

با هر Bracket دیگری، کل نام جدول یک شناسه است، مانند "PK_sales.users". Snowflake و Databricks همیشه کل نام را نگه می‌دارند.
ردیف‌های Keys در زبانهٔ شاخص‌ها همین نام‌ها را نشان می‌دهند.

مقادیر پیش‌فرض​

مقدار پیش‌فرض ستون همان‌طور که تایپ کرده‌اید نوشته می‌شود، اما هر جا پایگاه داده آن عبارت را فقط درون پرانتز بخواند، درون پرانتز قرار می‌گیرد. مقدار پیش‌فرضی که از قبل در پرانتز باشد، همان‌طور که هست باقی می‌ماند.

  • MySQL هر چیزی به‌جز یک مقدار لفظی یا زمان فعلی را در پرانتز می‌گذارد، مانند (uuid()). همچنین هر مقدار پیش‌فرضی به‌جز NULL را روی ستون BLOB، TEXT، JSON، مکانی یا LONG…، و زمان فعلی را روی هر ستونی به‌جز TIMESTAMP یا DATETIME در پرانتز می‌گذارد.
  • MariaDB هر چیزی به‌جز مقدار لفظی، زمان فعلی، فراخوانی تابع یا نام را در پرانتز می‌گذارد.
  • SQLite هر چیزی به‌جز مقدار لفظی یا نام را در پرانتز می‌گذارد، مانند (datetime('now')).
  • PostgreSQL فقط عبارتی را در پرانتز می‌گذارد که بیرون از پرانتز واژه‌ای مانند AT TIME ZONE، AND، OR، IS، IN، LIKE، COLLATE یا = ANY داشته باشد، مانند (now() AT TIME ZONE 'utc').
  • MSSQL، Oracle، Snowflake و Databricks هر مقدار پیش‌فرض را همان‌طور که تایپ شده می‌نویسند.

ویرایشگرهای فقط خواندنی​

در ویرایشگری با readonly، زبانه مانند همیشه کار می‌کند: Database و Bracket همچنان SQL نمایش‌داده‌شده را تغییر می‌دهند، Statements، Header و Tables همچنان کار می‌کنند و Save file و Copy همچنان آن را ذخیره و کپی می‌کنند.
تنها دو فیلد اسکریپت فقط خواندنی هستند.