Skema SQL
Tab Schema SQL menampilkan DDL diagram untuk database yang dipilih: SQL yang membuat tabelnya beserta kunci, indeks, dan kunci asingnya.
Beralih ke tab Schema SQL di bilah alat, atau pilih Schema SQL di bawah Tab di Pencarian Cepat. Memilih Schema SQL dari submenu Export juga membukanya, siap untuk disimpan — lihat Menyimpan atau menyalin SQL.
SQL berada di sebelah kiri, dan di sebelah kanannya panel opsi berjudul Schema SQL memuat pilihan yang membentuknya — lihat Panel opsi. Dalam bahasa tampilan kanan ke kiri pun, SQL tetap berada di sebelah kiri dan dibaca dari kiri ke kanan.
Panel terbuka dengan sendirinya kecuali jika editor lebih sempit dari 640 px saat tab pertama kali dibuka. Hide options di header panel menciutkannya, dan Show options di kanan atas kode menampilkannya kembali. Setelah itu panel tetap terbuka atau terciut seperti yang Anda tinggalkan, meskipun berpindah tab, selama editor terbuka. Panel ini menciut dan terbuka secara terpisah dari panel tab Generator Kode, dan tidak pernah disimpan di file.

Klik kanan SQL untuk membuka menu konteksnya:
DatabasedanBracket, masing-masing berupa submenu yang mencentang nilai saat ini.StatementsdanHeader, masing-masing berupa submenu yang mencentang pilihan yang berlaku. Pilihan yang tidak dimiliki database disertai catatan redup sepertinot in Oracledan tidak melakukan apa pun.Options panel, dicentang selama panel ditampilkan, yang menciutkan atau membuka panel.Save file
Selama tab ini terbuka, Pencarian Cepat menawarkan Database dan Bracket; Schema SQL: Statements dan Schema SQL: Header, yang hanya mencantumkan pilihan yang dimiliki database; serta Schema SQL: Options panel, yang menciutkan atau membuka panel.
Menu konteks maupun Pencarian Cepat tidak menawarkan Write logical names into empty comments, yang hanya ada di panel opsi — lihat Nama logis sebagai komentar.
SQL ditulis saat tab dibuka, dan ditulis lagi setiap kali salah satu pilihan panel, nama database, atau skrip berubah. Perubahan yang dilakukan pada tabel selama tab terbuka, seperti perubahan dari kolaborator atau agen pemrograman, baru terlihat setelah Anda meninggalkan tab lalu kembali, atau setelah salah satu hal tersebut berubah.
Properti Tabel memiliki tab Schema SQL sendiri, yang menampilkan DDL satu tabel. Tab tersebut selalu menulis pernyataan CREATE biasa tanpa pembuka atau skrip, tidak pernah menulis nama logis ke dalam komentar kosong, tidak memiliki panel opsi, dan menu konteksnya hanya menawarkan Database dan Bracket.
Panel opsi
Panel memuat tiga kelompok, masing-masing di bawah sebuah keterangan:
Saved in the document:DatabasedanBracket— lihat Database dan tanda kutip. Editor hanya baca memberi keteranganThis window onlypada keduanya — lihat Editor hanya baca.This window only:Statements,Header,Write logical names into empty comments, dan, selama diagram memiliki grup tabel,Tables— lihat Pernyataan, Pembuka, Nama logis sebagai komentar, dan Tabel.Saved in the document · written as is for every database: skripBefore tablesdanAfter tables— lihat Skrip sebelum dan setelah tabel.
Save file dan Copy berada di bagian bawahnya — lihat Menyimpan atau menyalin SQL.
Pilihan di bawah This window only terikat pada jendela editor tempat Anda membuatnya. Pilihan tersebut tidak disimpan di dokumen, tidak dibagikan dengan kolaborator, dan tidak dicatat untuk pembatalan, serta kembali ke nilai awal saat editor ditutup atau dimuat ulang; berpindah tab tetap mempertahankannya.
Statements dimulai pada If not exists, Header pada CREATE + USE, dan Write logical names into empty comments dalam keadaan nonaktif. SQL yang dibaca halaman yang menyematkan editor dengan getSchemaSQL(), dan SQL yang dibaca agen pemrograman, justru dimulai pada Create tanpa pembuka, dan tidak menulis nama logis kecuali jika diminta.
Pilihan yang tidak dimiliki database yang dipilih tetap ada di panel, diredupkan, dengan tooltip Not in <database>, seperti Not in Oracle, dan menekannya tidak melakukan apa pun.
SQL kemudian menggunakan bentuk terdekat yang dimiliki database, dan tombol bentuk tersebut tampil tertekan: If not exists beralih ke Create, CREATE + USE ke USE, atau ke None jika database juga tidak memiliki USE, dan USE ke None. Pilihan Anda tetap dipertahankan, sehingga beralih ke database yang memilikinya mengembalikan pilihan tersebut.
Database dan tanda kutip
Database adalah database diagram, pengaturan yang sama dengan Database di menu konteks kanvas dan database di Generator Kode — lihat Database. Pengaturan ini mencantumkan Databricks, MSSQL, MariaDB, MySQL, Oracle, PostgreSQL, Snowflake, dan SQLite, dimulai pada MySQL, dan disimpan di file seperti perubahan lainnya.
Bracket mengatur tanda kutip yang mengapit nama tabel, kolom, constraint, dan indeks: SingleQuote, DoubleQuote, Backtick, atau None untuk tanpa tanda kutip sama sekali, yang merupakan nilai default. Pengaturan ini sama dengan yang ada di Generator Kode — lihat Tanda kutip.
Snowflake, yang mengapit nama hanya dengan tanda kutip ganda, menggunakannya pada pilihan apa pun selain None, dan Databricks selalu mengapit nama dengan backtick.
Bracket disimpan di file hanya selama penguncian Bracket Type di tab Pengaturan nonaktif, dan diagram baru memiliki semua penguncian dalam keadaan aktif. Selama penguncian aktif, perubahan menulis ulang SQL di editor Anda saja: editor lain yang terbuka pada diagram mempertahankan tanda kutipnya sendiri, dan file mempertahankan nilai terkunci, sehingga diagram dibuka kembali dengan nilai tersebut — lihat Penguncian.
Selama database adalah Oracle dan SQL memuat nama yang lebih panjang dari 30 byte, yang ditolak oleh Oracle 12.1 dan versi yang lebih lama, sebuah catatan di bawah kedua daftar menyebutkan masing-masing nama tersebut: Oracle 12.2+ for names over 30 bytes: <names>. Catatan ini memeriksa nama tabel, kolom, skema, kunci, indeks, sequence, dan trigger. SQL itu sendiri tidak berubah.
Pernyataan
Statements menentukan cara tabel dibuat:
Createmenulis pernyataanCREATEbiasa.If not existsmelewati tabel dan indeks yang sudah ada. MySQL, MariaDB, PostgreSQL, SQLite, dan Databricks memilikinya; MSSQL, Oracle, dan Snowflake menulisCreatesebagai gantinya.- MySQL menulis setiap tabel sebagai
CREATE TABLE IF NOT EXISTSdengan constraint unik, indeks, dan kunci asingnya di dalamnya, dan menempatkan seluruh rangkaian pernyataan di antaraSET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;danSET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;. - MariaDB menempatkan
IF NOT EXISTSpada setiap pernyataan:CREATE TABLE, setiap constraintUNIQUEdanFOREIGN KEY, serta setiapCREATE INDEX. - PostgreSQL menulis
CREATE TABLE IF NOT EXISTSdanCREATE INDEX IF NOT EXISTS, serta menghapus setiap kunci asing denganDROP CONSTRAINT IF EXISTSsebelum menambahkannya kembali. - SQLite menulis
CREATE TABLE IF NOT EXISTSdanCREATE INDEX IF NOT EXISTS. - Databricks menulis
CREATE TABLE IF NOT EXISTS, dan menghapus setiap kunci asing denganDROP CONSTRAINT IF EXISTSsebelum menambahkannya kembali.
- MySQL menulis setiap tabel sebagai
Drop & re-createmenghapus setiap tabel yang ditulisnya sebelum membuatnya kembali, kecuali di Snowflake. Setiap database memilikinya:- MySQL dan MariaDB menulis
DROP TABLE IF EXISTSuntuk setiap tabel, di antara dua baris yang sama yang menonaktifkan pemeriksaan kunci asing lalu mengaktifkannya kembali. - PostgreSQL menulis satu
DROP TABLE IF EXISTSyang menyebutkan setiap tabel, yang gagal jika sebuah tabel di luar daftar merujuk salah satunya. Di bawah pembukaCREATE + USE, tabel yang namanya tidak menyebutkan skema dihapus dari skema tersebut, misalnyashop.member. - MSSQL menulis satu transaksi, yang membutuhkan SQL Server 2016 atau yang lebih baru, seperti yang tertera pada tooltip tombolnya,
SQL Server 2016+. Transaksi ini menghapus kunci asing yang dimiliki tabel yang ditulis, lalu tabelnya dengan satuDROP TABLE IF EXISTS, dan melakukan rollback jika terjadi kesalahan. Kunci asing yang dimiliki tabel di luar daftar tetap menghalangi penghapusan. - SQLite menulis
PRAGMA foreign_keys=OFF;, yang tetap nonaktif untuk koneksi tersebut, laluDROP TABLE IF EXISTSuntuk setiap tabel. - Oracle menulis
DROP TABLE … CASCADE CONSTRAINTSuntuk setiap tabel danDROP SEQUENCEuntuk setiap sequence kenaikan otomatis, masing-masing dalam blok PL/SQL yang diakhiri baris/dan mengabaikan kesalahan yang muncul karena tabel atau sequence tidak ada. - Databricks menulis
DROP TABLE IF EXISTSuntuk setiap tabel. - Snowflake tidak menghapus apa pun dan menulis
CREATE OR REPLACE TABLEsebagai gantinya.
- MySQL dan MariaDB menulis
Selama Drop & re-create berlaku, sebuah peringatan di panel menyebutkan tabel yang dihapusnya: Drops <tables> before creating them. Their rows are lost., atau di Snowflake Replaces <tables>. Their rows are lost.
Paling banyak lima tabel disebutkan secara lengkap. Jika lebih dari lima, peringatan menyebutkan empat tabel pertama dan menghitung sisanya, misalnya a, b, c, d, and 3 more tables.
Pembuka
Header membuka SQL dengan pernyataan yang membuat atau memilih database, atau skema, tempat SQL tersebut dijalankan. Namanya adalah nama database diagram, yang diketik di kotak database name pada bilah alat, dan diapit dengan karakter Bracket.
- MySQL dan MariaDB:
USEmenulisUSE shop;, danCREATE + USEmenulisCREATE DATABASE IF NOT EXISTS shop;sebelumnya. - MSSQL:
USEmenulisUSE shopdanGO, danCREATE + USEmenulisIF DB_ID(N'shop') IS NULL CREATE DATABASE shopdanGOsebelumnya. - PostgreSQL hanya memiliki
CREATE + USE, yang menulisCREATE SCHEMA IF NOT EXISTS shop;danSET search_path TO shop, public;. - Oracle hanya memiliki
USE, yang menulisALTER SESSION SET CURRENT_SCHEMA = shop;.CREATE + USEberalih keUSE, sehingga inilah baris yang ditulis Oracle di bawah pembuka default tab ini. - Snowflake dan Databricks:
USEmenulisUSE SCHEMA shop;, danCREATE + USEmenulisCREATE SCHEMA IF NOT EXISTS shop;sebelumnya. - SQLite tidak memiliki keduanya, dan tidak menulis pembuka.
Jika database memiliki USE atau CREATE + USE, tooltip tombolnya menyebutkan apa yang ditulisnya di sana, misalnya CREATE SCHEMA + SET search_path di PostgreSQL.
Pembuka hanya ditulis selama nama database merupakan pengenal biasa: huruf ASCII (A–Z, a–z) atau _, diikuti huruf ASCII, angka, atau _.
Dengan nama lain apa pun, termasuk nama kosong, pembuka tidak ditulis, dan DROP TABLE milik PostgreSQL kemudian tidak menyebutkan skema. Selama pembuka selain None berlaku, sebuah catatan di bawah Header menyatakannya: Database name "<name>" is not a valid identifier.
Nama database diagram baru kosong, sehingga sebelum Anda menamainya, panel menampilkan Database name "" is not a valid identifier.
Nama logis sebagai komentar
Write logical names into empty comments, sakelar di bawah This window only, menulis nama logis tabel atau kolom ke dalam DDL jika komentarnya kosong, di setiap database.

- Komentar yang berisi teks selalu diutamakan: nama logis tidak pernah menggantikannya dan tidak pernah ditambahkan ke dalamnya.
- Komentar yang hanya berisi karakter spasi dianggap kosong, sehingga nama logis ditulis di tempatnya. Nama logis yang kosong atau hanya berisi karakter spasi tidak menulis apa pun, dan tabel atau kolom itu tetap tidak mendapatkan komentar.
- Nama logis ditulis di tempat dan dalam bentuk yang digunakan database untuk menulis komentar, dengan tanda kutipnya di-escape dengan cara yang sama — lihat Komentar.
Di MySQL, misalnya, kolom id dengan nama logis Member ID dan tanpa komentar ditulis dengan COMMENT 'Member ID', sedangkan kolom email dengan nama logis Email dan komentar Sign-in address mempertahankan COMMENT 'Sign-in address'.
Seperti Statements dan Header, sakelar ini terikat pada jendela dan dimulai dalam keadaan nonaktif — lihat Panel opsi.
Impor tidak pernah membaca kembali komentar semacam itu sebagai nama logis — lihat Komentar.
Tabel
Selama diagram memiliki setidaknya satu grup tabel, baik ditampilkan maupun disembunyikan, Tables muncul di bawah This window only dengan kotak centang untuk setiap pilihan:
All, yang mencentang atau menghapus centang semua kotak. Kotak ini menampilkan status campuran selama hanya sebagian yang dicentang.- Satu kotak per grup tabel, sesuai urutan grup di diagram, berlabel nama grup, atau
unnameduntuk grup tanpa nama, setelah titik berwarna grup tersebut jika grup memiliki warna. No group, untuk tabel yang tidak berada di grup mana pun.
Dengan semua kotak dicentang, tab menulis seluruh diagram.
Dengan hanya sebagian yang dicentang, tab menulis tabel dari kotak yang dicentang beserta indeksnya dan kunci asing yang dimilikinya, termasuk kunci asing yang merujuk tabel yang tidak disertakan. Skrip sebelum dan setelah tabel tetap ditulis, dan Drop & re-create, peringatannya, serta catatan Oracle tentang nama panjang hanya mencakup tabel-tabel tersebut.
Tanpa kotak yang dicentang, tab tidak menulis apa pun, dan petunjuk di atas kode bertuliskan No tables chosen. Check some under Tables. Save file kemudian menyimpan file kosong, dan Copy menyalin teks kosong.
Seperti Statements dan Header, pilihan ini terikat pada jendela — lihat Panel opsi.
Grup yang ditambahkan kemudian hanya dimulai dalam keadaan dicentang jika semua kotak dicentang pada saat itu. Menghapus grup menghilangkan kotaknya, dan menghapus grup terakhir mencentang semuanya kembali.
Pilihan ini hanya berlaku untuk tab ini. Tab Schema SQL di Properti Tabel dan getSchemaSQL() tidak terpengaruh olehnya.
Skrip sebelum dan setelah tabel
Before tables dan After tables memuat SQL Anda sendiri, misalnya pernyataan CREATE EXTENSION atau SET sebelum tabel, atau pemberian hak akses, view, dan data awal setelahnya.
Keduanya disimpan di dokumen, satu pasang untuk seluruh diagram apa pun databasenya. Masing-masing ditulis ke dalam SQL persis seperti yang Anda ketik, tanpa pernah diperiksa: skrip sebelum tabel diletakkan setelah pembuka dan sebelum pernyataan DROP serta tabel, dan skrip setelah tabel di bagian paling akhir.
Pemisah baris ditulis sebagai LF, dan baris kosong sebelum skrip serta karakter spasi setelahnya dibuang.
Di MSSQL, baris GO ditambahkan setelah skrip yang baris terakhirnya bukan GO (atau GO dengan hitungan), seperti yang disebutkan baris di bawah kedua kotak. Di Oracle, akhiri sendiri blok PL/SQL dengan baris /-nya.
Kedua kotak menyorot sintaksis SQL dan membesar mengikuti teksnya.
Perubahan diterapkan saat Anda meninggalkan kotak, dengan mengeklik di tempat lain atau berpindah tab, dan baru saat itulah SQL di sebelahnya dan dokumen berubah. Kotak yang hanya Anda klik tidak mengubah apa pun.
Perubahan skrip mengubah diagram seperti perubahan lainnya: disimpan di file, terlihat oleh kolaborator, dan setiap perubahan yang diterapkan merupakan satu langkah dalam riwayat pembatalan, yang Anda batalkan dari tab ERD.
Selama Anda mengetik di kotak, pintasan milik editor diserahkan kepada kotak tersebut, sehingga Ctrl + Z (Windows/Linux) atau ⌘ + Z (Mac) membatalkan ketikan Anda di sana, dan menyalin, memotong, serta menempel bekerja pada teks, bukan pada diagram.
Pencarian Cepat dan pencarian Penjelajah tetap dapat dibuka melalui pintasannya, Ctrl + K dan Ctrl + F (Windows/Linux) atau ⌘ + K dan ⌘ + F (Mac). Karena Ctrl + F atau ⌘ + F beralih ke tab ERD, pintasan ini menerapkan perubahan Anda, seperti halnya setiap perpindahan tab.
Kotak yang tidak memiliki fokus keyboard mengikuti perubahan yang dibuat kolaborator atau agen pemrograman pada skripnya. Kotak yang sedang Anda gunakan menampilkan perubahan itu saat Anda meninggalkannya tanpa mengetik apa pun. Jika Anda mengetik, teks Anda diterapkan saat Anda meninggalkannya dan menggantikan teks mereka.
Menyimpan atau menyalin SQL
Save file, di bagian bawah panel atau di menu konteks, menyimpan persis SQL yang ditampilkan tab, dengan database, tanda kutip, pernyataan, pembuka, komentar nama logis, tabel, dan skrip saat ini, sebagai <database name>-<timestamp>.sql. File tersebut dinamai dan disimpan seperti setiap ekspor lainnya — lihat Mengekspor.
Export ▸ Schema SQL, di menu konteks kanvas atau di Pencarian Cepat, tidak menyimpan apa pun dengan sendirinya.
Item ini beralih ke tab ini, membuka panel opsi meskipun sebelumnya terciut, dan menempatkan fokus keyboard pada Save file, sehingga menekan Enter menyimpan file.
Copy di bagian bawah panel, atau tombol salin yang muncul di kanan atas kode selama penunjuk berada di atasnya, menyalin SQL.
Notifikasi Copied! dengan tanda centang mengonfirmasinya selama dua detik. Jika browser atau host menolak akses ke papan klip, notifikasi Couldn't copy to the clipboard dengan tanda peringatan memberitahukannya sebagai gantinya, selama lima detik. Menyalin lagi menggantikan notifikasi tersebut alih-alih menambahkan notifikasi lain.
SQL juga dapat dipilih, sehingga Anda dapat mengambil sebagiannya saja.
Apa yang ditulis DDL
Aturan ini berlaku di mana pun editor menulis Skema SQL: di tab ini dan di filenya, serta di SQL yang dibaca halaman yang menyematkan editor atau agen pemrograman.
Tab Schema SQL di Properti Tabel mengikutinya untuk satu tabel yang ditampilkannya. Tab tersebut tidak menulis sequence atau trigger Oracle, dan tidak menulis kunci asing kecuali milik SQLite, yang berada di dalam CREATE TABLE-nya. Tab tersebut juga tidak menulis pernyataan komentar yang ditempatkan PostgreSQL, Oracle, dan MSSQL setelah tabel, sehingga pada ketiga database itu tab tersebut tidak menampilkan komentar.
Bagian-bagiannya muncul dalam urutan ini, dipisahkan satu baris kosong: pembuka, skrip sebelum tabel, pernyataan DROP, tabel, dan skrip setelah tabel. Tabel ditulis menurut urutan nama.
Diagram tanpa tabel dan tanpa skrip tidak menulis apa pun, bahkan saat pembuka dipilih.
Tabel dan kolom ditulis dengan nama fisiknya, apa pun yang ditampilkan Tampilan Nama. Kolom yang tertaut ke domain ditulis dengan tipe datanya sendiri, yang ditetapkan oleh domain — lihat Domain dan tipe data.
Kenaikan otomatis
Kolom yang ditandai Auto Increment ditulis sesuai cara setiap database menulisnya: AUTO_INCREMENT di MySQL dan MariaDB, IDENTITY(1,1) di MSSQL, AUTOINCREMENT di Snowflake, dan GENERATED ALWAYS AS IDENTITY di PostgreSQL dan Databricks.
Oracle mendapatkan sequence SEQ_<table> dan trigger SEQ_TRG_<table> yang mengisi kolom dari sequence tersebut. Trigger diakhiri baris /, sehingga SQL*Plus dan SQLcl menjalankannya.
Jika sebuah database tidak menerima kenaikan otomatis pada tipe kolom tersebut, klausanya dihilangkan, dan sebuah baris komentar setelah tabel menyebutkan kolom tersebut:
- PostgreSQL hanya menerimanya pada
smallint,integer, ataubigint, dengan nama mana pun dari ketiganya:INT,INTEGER,BIGINT,SMALLINT,INT2,INT4, atauINT8. Kolom bertipe lain tidak mendapatkan klausa maupun nilai default, dan komentarnya bertuliskan, misalnya,-- PostgreSQL takes IDENTITY only on smallint, integer or bigint, so member.id is written without it. - Databricks hanya menerimanya pada
BIGINTatauLONG. - SQLite hanya menerima
AUTOINCREMENTpada satu-satunya kolom kunci utama sebuah tabel yang bertipe bilangan bulat, sepertiINT,BIGINT, atauINT8, dengan atau tanpa lebar. Kolom tersebut ditulis sebagaiINTEGER, dan kuncinya sebagaiPRIMARY KEY (id AUTOINCREMENT). Kunci tunggal bertipe lain ditulis tanpanya.
Tindakan referensial
Tindakan ON DELETE dan ON UPDATE yang ditulis setiap database tercantum di ON DELETE dan ON UPDATE.
Jika Snowflake menghilangkan suatu tindakan, komentar di atas ALTER TABLE kunci asing tersebut menyebutkannya, misalnya -- Snowflake creates no foreign key with a referential action other than NO ACTION, so ON DELETE CASCADE is left out.
Nama tabel berkualifikasi skema
Dengan Bracket pada None, nama tabel yang mengandung titik, seperti sales.users, dibaca sebagai skema dan tabel, dipisahkan pada titik terakhirnya di luar kurung siku atau tanda kutip ganda.
- MySQL, MariaDB, MSSQL, Oracle, dan PostgreSQL menyusun nama otomatis yang ditulisnya hanya dari bagian tabel:
FK_users_TO_ordersdanIDX_usersdi kelima database tersebut,UQ_users_emaildi semuanya kecuali PostgreSQL, danPK_usersdi MSSQL dan Oracle, dua di antara kelimanya yang menamai kunci utama. Di kedua database tersebut,[sales].[users]dan"sales"."users"juga menghasilkanPK_users, dan[Order]menghasilkanPK_Order. - SQLite tidak menamai constraint, sehingga satu-satunya nama otomatis yang disusunnya adalah nama indeks:
CREATE INDEX sales.IDX_users ON users. - Oracle membuat indeks tabel, serta sequence dan trigger kolom kenaikan otomatis, di skema tabel tersebut:
sales.IDX_users,sales.SEQ_users, dansales.SEQ_TRG_users. - Di Oracle dan SQLite, nama indeks yang Anda beri skema sendiri tetap mempertahankan skema tersebut.
- Nama kunci asing atau indeks otomatis yang mengulang nama sebelumnya, tanpa membedakan huruf besar dan kecil, diberi angka. Dengan
sales.usersdanhr.Usersyang sama-sama dirujuk dariorders, kunci kedua menjadiFK_Users_TO_orders1.
Pada Bracket lainnya, seluruh nama tabel merupakan satu pengenal, seperti "PK_sales.users". Snowflake dan Databricks selalu mempertahankan seluruh nama.
Baris Keys pada tab Indeks menampilkan nama yang sama.
Nilai default
Nilai default kolom ditulis seperti yang Anda ketik, tetapi dalam tanda kurung jika database hanya membaca ekspresi tersebut di dalamnya. Nilai default yang sudah berada dalam tanda kurung dibiarkan apa adanya.
- MySQL membungkus apa pun selain literal atau waktu saat ini, seperti
(uuid()). MySQL juga membungkus nilai default apa pun selainNULLpada kolomBLOB,TEXT,JSON, spasial, atauLONG…, dan waktu saat ini pada kolom apa pun selainTIMESTAMPatauDATETIME. - MariaDB membungkus apa pun selain literal, waktu saat ini, pemanggilan fungsi, atau nama.
- SQLite membungkus apa pun selain literal atau nama, seperti
(datetime('now')). - PostgreSQL hanya membungkus ekspresi yang memuat kata seperti
AT TIME ZONE,AND,OR,IS,IN,LIKE,COLLATE, atau= ANYdi luar tanda kurung, seperti(now() AT TIME ZONE 'utc'). - MSSQL, Oracle, Snowflake, dan Databricks menulis setiap nilai default seperti yang diketik.
Komentar
Komentar tabel atau kolom yang tidak kosong, atau nama logis yang ditulis Write logical names into empty comments di tempatnya, ditulis sesuai cara setiap database menulis komentar:
- MySQL dan MariaDB menulisnya secara inline: kolom diakhiri dengan
COMMENT 'Member ID', dan tabel ditutup dengan) COMMENT 'Members';, termasuk dalam rangkaian pernyataanIf not existsmilik MySQL. - Snowflake menulis komentar kolom secara inline,
COMMENT 'Member ID', dan komentar tabel pada barisnya sendiri setelah tanda kurung penutup,COMMENT = 'Members';. - Databricks menulis komentar kolom secara inline, dan komentar tabel sebagai
COMMENT 'Members';setelahUSING DELTA. - PostgreSQL menulis
COMMENT ON TABLE member IS 'Members';danCOMMENT ON COLUMN member.id IS 'Member ID';tepat setelahCREATE TABLEtabel tersebut. Oracle menulis pernyataan yang sama setelah tabel, constraint uniknya, serta sequence dan trigger kenaikan otomatisnya. - MSSQL menulis satu panggilan per tabel dan per kolom, setelah tabel dan constraint uniknya, masing-masing diikuti
GO:EXECUTE sys.sp_addextendedproperty 'MS_Description', N'Members', 'schema', 'dbo', 'table', 'member', dengan tambahan'column', 'id'untuk kolom.
Teksnya berupa literal nasional,N'…', sehingga SQL Server mempertahankan teks di luar code page database, seperti bahasa Korea, alih-alih menyimpan tanda tanya.
DenganBracketpadaNone, tabel bernamasales.usersmenghasilkan skemasalesdan tabelusers, demikian pula[sales].[users]dan"sales"."users", yang kurung siku dan tanda kutip gandanya dibuang. Nama tanpa skema berada didbo. Bagian sebelum skema, seperti padashop.sales.users, menjalankan prosedur milik database tersebut,shop.sys.sp_addextendedproperty. PadaBracketlainnya, seluruh nama merupakan tabel, didbo. - SQLite tidak menyimpan komentar, sehingga SQLite menulis masing-masing sebagai baris
--di atas hal yang dideskripsikannya:-- Membersdi atasCREATE TABLE member, dan-- Member IDdi atas kolom.
Tanda kutip di dalam komentar yang dikutip ditulis ganda, seperti pada 'it''s' dan N'it''s', demikian pula tanda kutip pada nama yang diteruskan panggilan MSSQL. Databricks justru meng-escape tanda kutip dan garis miring terbalik dengan garis miring terbalik, seperti pada 'it\'s', bentuk yang dibaca setiap rilis Spark. Baris -- milik SQLite tidak dikutip, sehingga tanda kutip tetap seperti yang diketik: -- it's.
Selain itu, teks ditulis seperti yang diketik, termasuk jeda baris, kecuali pada dua database:
- Oracle menghilangkan baris kosong, dengan baris yang hanya berisi spasi atau tab dianggap kosong, karena SQL*Plus mengakhiri pernyataan pada baris kosong dan melewati sisanya. Komentar tabel berisi
Members, satu baris kosong, danActive onlyditulis sebagaiCOMMENT ON TABLE member IS 'MembersdenganActive only';di baris berikutnya. - SQLite menulis setiap rangkaian jeda baris sebagai satu spasi, karena jeda baris akan mengakhiri baris
--dan menjalankan sisanya sebagai SQL. Komentar yang sama ditulis sebagai-- Members Active only.
Cara komentar ini dibaca kembali saat impor dijelaskan di Komentar.
Editor hanya baca
Di editor readonly, tab bekerja untuk pembaca, dan tidak ada yang dilakukan di tab ini yang sampai ke dokumen:
DatabasedanBrackettetap menulis ulang SQL, tetapi hanya di jendela itu, sehingga panel juga memberi keteranganThis window onlypada keduanya. Pilihan tidak disimpan di file, dibagikan kepada kolaborator, atau dicatat untuk pembatalan, apa pun penguncian miliknya, dan perubahan kolaborator pada pengaturan yang Anda pilih membiarkan pilihan Anda tetap di layar. Tab Generator Kode menampilkan pilihan yang sama, dangetSchemaSQL()yang dipanggil tanpa database juga menulisnya. Setelah editor dapat menulis lagi, database dan tanda kutip yang Anda pilih kembali ke apa yang ditampilkan editor sebelumnya, dengan perubahan apa pun yang dibuat kolaborator sejak itu — lihat Editor hanya baca di Pengaturan.Statements,Header,Write logical names into empty comments, danTablesberfungsi seperti di mana pun, karena sudah menjadi milik jendela.- Kedua kotak skrip bersifat hanya baca: keduanya menampilkan skrip dokumen, yang tetap ditulis SQL, dan tidak menerima pengetikan.
Save filedanCopymenyimpan dan menyalin SQL yang ditampilkan tab.