Konten dihapus Konten ditambahkan
k Pranala luar: clean up
 
(102 revisi perantara oleh 73 pengguna tidak ditampilkan)
Baris 1:
{{rapikan|topik=teknologi informasi}}
{{untuk|nama kelompok lawak di Indonesia|SQL (lawak)}}
{{Infobox programming language
| name = SQL
| paradigm = [[Multi-paradigm programming language|Multi-paradigma]]
| year = 1974
| designer = [[Donald D. Chamberlin]]<br />[[Raymond F. Boyce]]
| developer = [[ISO]]/[[International Electrotechnical Commission|IEC]]
| latest_release_version = [[SQL:2023]]
| latest_release_date = {{Start date and age|2023|06}}<ref>{{Cite web|last=|date=Juni 2023|title=ISO/IEC 9075-2:2023|url=https://www.iso.org/standard/76584.html|website=ISO.org|language=en|access-date=31 Agustus 2023}}</ref>
| turing-complete = No
| typing = [[Static typing|Statis]], [[strong typing|kuat]]
| implementations = [[List of relational database management systems|Beragam]]
| dialects = SQL-86, SQL-89, [[SQL-92]], [[SQL:1999]], [[SQL:2003]], [[SQL:2008]], [[SQL:2011]]
| influenced_by = [[Datalog]]
| influenced = [[Agena (programming language)|Agena]], [[Common Query Language|CQL]], [[Language Integrated Query|LINQ]], [[Windows PowerShell]]<ref name=ars>{{cite web|last=Paul|first=Ryan|title=A guided tour of the Microsoft Command Shell|url=http://arstechnica.com/business/news/2005/10/msh.ars/4|publisher=Ars Technica|accessdate=10 April 2011}}</ref>
| operating_system = [[Cross-platform]]
| website = {{cite web | url = http://www.iso.org/iso/catalogue_detail.htm?csnumber=45498 | title = ISO/IEC 9075-1:2008: Information technology – Database languages – SQL – Part 1: Framework (SQL/Framework) | postscript = <!-- Bot inserted parameter. Either remove it; or change its value to "." for the cite to end in a ".", as necessary. -->{{inconsistent citations}}}}
}}
{{Infobox file format
| name = SQL
| screenshot =
| caption = Structured Query Language
| extension = .sql
| mime = application/x-sql
| uniform type =
| owner = [[ISO]]/[[International Electrotechnical Commission|IEC]]
| released = {{Start date|1986|df=yes}}
| latest release version = SQL:2008
| latest release date = {{Start date and age|2008|df=yes}}
| genre = Basis data
| standard = ISO/IEC 9075
| free = Yes
| url = <ref name="Ars Technica">{{cite web | url = http://www.iso.org/iso/catalogue_detail.htm?csnumber=45498 | title = ISO/IEC 9075-1:2008: Information technology – Database languages – SQL – Part 1: Framework (SQL/Framework) | postscript = <!-- Bot inserted parameter. Either remove it; or change its value to "." for the cite to end in a ".", as necessary. -->{{inconsistent citations}}}}</ref>
| file_ext = .sql
}}
'''SQL''' ({{IPAc-en|audio=En-us-SQL.ogg|ˌ|ɛ|s|ˌ|k|juː|ˈ|ɛ|l}} ''S-Q-L'',<ref>{{cite book|last= Beaulieu|first = Alan|title=Learning SQL|url= https://archive.org/details/learningsql0000beau_p5d6|editor=Mary E Treseler|publisher=O'Reilly|location=Sebastapol, CA, USA|date=April 2009|edition= 2nd|isbn = 978-0-596-52083-0}}</ref> {{IPAc-en|ˈ|s|iː|k|w|əl}} "sequel"; '''Structured Query Language''')<ref name="chamberlin2001">{{cite web|url=https://conservancy.umn.edu/handle/11299/107215|last=Chamberlin|first=Donald D.|title=Oral history interview with Donald D. Chamberlin|date=2001-10-03|access-date=2020-01-14|quote=We changed the original name "SEQUEL" to SQL because we got a letter from somebody’s lawyer that said the name "SEQUEL" belonged to them. We shortened it to SQL, for Structured Query Language, and the product was known as SQL/DS.}}</ref> adalah sebuah [[Bahasa pemrograman|bahasa]] yang digunakan untuk mengakses [[data]] dalam [[basis data]] [[RDBMS|relasional]]. Bahasa ini secara ''[[de facto]]'' merupakan bahasa standar yang digunakan dalam manajemen basis data relasional. Saat ini hampir semua [[server basis data]] yang ada mendukung bahasa ini untuk melakukan manajemen datanya.
 
== Sejarah ==
'''SQL''' (Structured Query Language) adalah sebuah [[Bahasa pemrograman|bahasa]] yang dipergunakan untuk mengakses [[data]] dalam [[basis data]] [[RDBMS|relasional]]. Bahasa ini secara ''[[de facto]]'' merupakan bahasa standar yang digunakan dalam manajemen basis data relasional. Saat ini hampir semua [[server basis data]] yang ada mendukung bahasa ini untuk melakukan manajemen datanya.
Sejarah SQL dimulai dari artikel seorang peneliti dari [[IBM]] bernama Jhonny Oracle yang membahas tentang ide pembuatan [[basis data]] relasional pada bulan [[Juni]] [[1970]]. Artikel ini juga membahas kemungkinan pembuatan bahasa standar untuk mengakses data dalam basis data tersebut. Bahasa tersebut kemudian diberi nama '''SEQUEL''' (<u>S</u>tructured <u>E</u>nglish <u>Que</u>ry <u>L</u>anguage).
==Sejarah==
Sejarah SQL dimulai dari artikel seorang peneliti dari [[IBM]] bernama [[EF Codd]] yang membahas tentang ide pembuatan [[basis data]] relasional pada bulan [[Juni]] [[1970]]. Artikel ini juga membahas kemungkinan pembuatan bahasa standar untuk mengakses data dalam basis data tersebut. Bahasa tersebut kemudian diberi nama '''SEQUEL''' (<u>S</u>tructured <u>E</u>nglish <u>Que</u>ry <u>L</u>anguage).
 
Setelah terbitnya artikel tersebut, [[IBM]] mengadakan proyek pembuatan basis data relasional berbasis bahasa SEQUEL. Akan tetapi, karena permasalahan hukum mengenai penamaan SEQUEL, IBM pun mengubahnya menjadi '''SQL'''. Implementasi basis data relasional dikenal dengan ''System/R''.
 
Di akhir tahun [[1970]]-an, muncul perusahaan bernama [[Oracle]] yang membuat [[server basis data]] populer yang bernama sama dengan nama perusahaannya. Dengan naiknya kepopuleran John Oracle, maka SQL juga ikut populer sehingga saat ini menjadi standar [[de facto]] bahasa dalam manajemen basis data.
 
==Standarisasi Standardisasi ==
StandarisasiStandardisasi SQL dimulai pada tahun [[1986]], ditandai dengan dikeluarkannya standar SQL oleh [[ANSI]]. Standar ini sering disebut dengan [[SQL86]].Standar tersebut kemudian diperbaiki pada tahun [[1989]] kemudian diperbaiki lagi pada tahun [[1992]]. Versi terakhir dikenal dengan [[SQL92]]. Pada tahun 1999 dikeluarkan standar baru yaitu [[SQL99]] atau disebut juga SQL99, akan tetapi kebanyakan implementasi mereferensi pada SQL92.
 
Saat ini sebenarnya tidak ada server basis data yang 100% mendukung SQL92. Hal ini disebabkan masing-masing server memiliki dialek masing-masing.
 
==Pemakaian dasar==
== Pemakaian dasar ==
Secara umum, SQL terdiri dari dua bahasa, yaitu ''[[Data Definition Language]]'' (DDL) dan ''[[Data Manipulation Language]]'' (DML). Implementasi DDL dan DML berbeda untuk tiap [[sistem manajemen basis data]] (SMBD)<ref>Troels Arvin, 2007-05-26, http://troels.arvin.dk/db/rdbms/ Comparison of different SQL implementations</ref>, namun secara umum implementasi tiap bahasa ini memiliki bentuk standar yang ditetapkan [[ANSI]]. Artikel ini akan menggunakan bentuk paling umum yang dapat digunakan pada kebanyakan SMBD.
Secara umum, SQL terdiri dari dua bahasa, yaitu ''[[Data Definition Language]]'' (DDL) dan ''[[Data Manipulation Language]]'' (DML). Implementasi DDL dan DML berbeda untuk tiap [[sistem manajemen basis data]] (SMBD),<ref>Troels Arvin, 2007-05-26, http://troels.arvin.dk/db/rdbms/ Comparison of different SQL implementations</ref> namun secara umum implementasi tiap bahasa ini memiliki bentuk standar yang ditetapkan [[ANSI]]. Artikel ini akan menggunakan bentuk paling umum yang dapat digunakan pada kebanyakan SMBD.
===Data Definition Language===
=== Data Definition Language ===
DDL digunakan untuk mendefinisikan, mengubah, serta menghapus [[basis data]] dan objek-objek yang diperlukan dalam basis data, misalnya [[tabel]], [[view]], [[user]], dan sebagainya. Secara umum, DDL yang digunakan adalah <code>CREATE</code> untuk membuat objek baru, <code>USE</code> untuk menggunakan objek, <code>ALTER</code> untuk mengubah objek yang sudah ada, dan <code>DROP</code> untuk menghapus objek. DDL biasanya digunakan oleh [[administrator]] basis data dalam pembuatan sebuah [[program|aplikasi]] basis data.
==== <code>CREATE</code> ====
<code>CREATE</code> digunakan untuk membuat basis data maupun objek-objek basis data. SQL yang umum digunakan adalah:
 
<codesyntaxhighlight lang="mysql">CREATE DATABASE nama_basis_data</codesyntaxhighlight>
 
<code>CREATE DATABASE</code> membuat sebuah basis data baru.
 
<codesyntaxhighlight lang="mysql">CREATE TABLE nama_tabel</codesyntaxhighlight>
 
<code>CREATE TABLE</code> membuat tabel baru pada basis data yang sedang aktif. Secara umum, p{| class="wikitable"
|-
 
<gallery>
! kepala1
! kepala2
|-
| baris1, kolom1
| baris1, kolom2
|-
| baris2, kolom1
| baris2, kolom2
</gallery>#REDIRECT[[<ref>Artikel</ref><ref><ref>Rujukan</ref><ref><ref>Rujukan</ref>[[Kategori:Kategori]]</ref></ref>]]
|}erintah ini memiliki bentuk
 
<code>CREATE TABLE</code> membuat tabel baru pada basis data yang sedang aktif. Secara umum, perintah ini memiliki bentuk
<syntaxhighlight lang="mysql">
CREATE TABLE [''nama_tabel'']
(
Baris 48 ⟶ 69:
...]
)
</syntaxhighlight>
 
atau
<syntaxhighlight lang="mysql">
 
CREATE TABLE [''nama_tabel'']
(
Baris 58 ⟶ 79:
[CONSTRAINT nama_field constraints]
)
</syntaxhighlight>
 
dengan:
 
Baris 70 ⟶ 91:
 
Contoh:
<syntaxhighlight lang="mysql">
 
CREATE TABLE user
(
Baris 77 ⟶ 98:
tanggal_lahir DATETIME
);
</syntaxhighlight>
 
akan membuat tabel <code>user</code> seperti berikut:
{| class="wikitable"
Baris 86 ⟶ 107:
|}
 
=== Data Manipulation Language ===
 
DML digunakan untuk memanipulasi data yang ada dalam suatu tabel. Perintah yang umum dilakukan adalah:
Baris 94 ⟶ 115:
* <code>DELETE</code> untuk menghapus data
 
==== <code>SELECT</code> ====
 
<code>SELECT</code> adalah perintah yang paling sering digunakan pada SQL, sehingga terkadang istilah ''query'' dirujukkan pada perintah <code>SELECT</code>. <code>SELECT</code> digunakan untuk menampilkan data dari satu atau lebih tabel, biasanya dalam sebuah basis data yang sama. Secara umum, perintah <code>SELECT</code> memiliki bentuk lengkap:
 
<code>SELECT</code> adalah perintah yang paling sering digunakan pada SQL, sehingga kadang-kadang istilah ''query'' dirujukkan pada perintah <code>SELECT</code>.<code>SELECT</code> digunakan untuk menampilkan data dari satu atau lebih tabel, biasanya dalam sebuah basis data yang sama. Secara umum, perintah <code>SELECT</code> memiliki bentuk lengkap:<syntaxhighlight lang="mysql">
( QUERY BUDIN ) Cilegon.
SELECT [nama_tabel|alias.]nama_field1 [AS alias1] [, nama_field2, ...]
FROM nama_tabel1 [AS alias1] [INNER|LEFT|RIGHT JOIN tabel2 ON ''kondisi_penghubung'']
Baris 105 ⟶ 126:
[GROUP BY nama_field1[, nama_field2, ...]]
[HAVING ''kondisi_aggregat'']
</syntaxhighlight>
 
dengan:
* ''kondisi'' adalah syarat yang harus dipenuhi suatu data agar ditampilkan.
* ''kondisi_aggregat'' adalah syarat khusus untuk [[#Fungsi aggregat|fungsi aggregat]].
 
Kondisi dapat dihubungkan dengan [[operator logika]], misalnya <code>AND</code>, <code>OR</code>, dan sebagainya.
Baris 157 ⟶ 178:
Contoh 1:
Tampilkan seluruh data.
<syntaxhighlight lang="mysql">
 
SELECT *
FROM user
</syntaxhighlight>
 
Contoh 2:
Tampilkan pengguna yang tidak pernah bertransaksi.
<syntaxhighlight lang="mysql">
 
SELECT *
FROM user
WHERE total_transaksi = 0
</syntaxhighlight>
 
Contoh 3:
Tampilkan username pengguna yang bertransaksi kurang dari 10 dan nilainya lebih dari 1.000.
<syntaxhighlight lang="mysql">
 
SELECT username
FROM user
WHERE jml_transakai < 10 AND total_transaksi > 1000
</syntaxhighlight>
 
Contoh 4:
Tampilkan total nominal transaksi yang sudah terjadi.
<syntaxhighlight lang="mysql">
 
SELECT SUM(total_transaksi) AS total_nominal_transaksi
FROM user
</syntaxhighlight>
 
Contoh 5:
Tampilkan seluruh data diurutkan berdasarkan jumlah transaksi terbesar ke terkecil.
<syntaxhighlight lang="mysql">
 
SELECT *
FROM user
ORDER BY jml_transaksi DESC
</syntaxhighlight>
 
===== Fungsi aggregat =====
Beberapa SMBD memiliki fungsi aggregat, yaitu fungsi-fungsi khusus yang melibatkan sekelompok data (aggregat). Secara umum fungsi aggregat adalah:
* <code>SUM</code> untuk menghitung total nominal data
* <code>COUNT</code> untuk menghitung jumlah kemunculan data
* <code>AVG</code> untuk menghitung rata-rata sekelompok data
* <code>MAX</code> dan <code>MIN</code> untuk mendapatkan nilai maksimum/minimum dari sekelompok data.
 
Fungsi aggregat digunakan pada bagian <code>SELECT</code>. Syarat untuk fungsi aggregat diletakkan pada bagian <code>'''HAVING'''</code>, bukan <code>WHERE</code>.
 
===== Subquery =====
 
Ada kalanyaAdakalanya ''query'' dapat menjadi kompleks, terutama jika melibatkan lebih dari satu tabel dan/atau fungsi aggregat. Beberapa SMBD mengizinkan penggunaan ''subquery''. Contoh:
 
Tampilkan username pengguna yang memiliki jumlah transaksi terbesar.
<syntaxhighlight lang="mysql">
 
SELECT username
FROM user
Baris 210 ⟶ 231:
FROM user
)
</syntaxhighlight>
 
==== <code>INSERT</code> ====
Untuk menyimpan data dalam tabel dipergunakandigunakan sintaks:
<syntaxhighlight lang="mysql">
 
INSERT INTO [NAMA_TABLE] ([DAFTAR_FIELD]) VALUES ([DAFTAR_NILAI])
</syntaxhighlight>
 
Contoh:
<syntaxhighlight lang="mysql">
 
INSERT INTO TEST (NAMA, ALAMAT, PASSWORD) VALUES ('test', 'alamat', 'pass');
</syntaxhighlight>
 
==== <code>UPDATE</code> ====
Untuk mengubah data menggunakan sintakssintax:
<syntaxhighlight lang="mysql">
 
UPDATE [NAMA_TABLE] SET [NAMA_KOLOM]=[NILAI] WHERE [KONDISI]
</syntaxhighlight>
 
Contoh:
<syntaxhighlight lang="mysql">
 
UPDATE Msuser set password="123456" where username="abc"
</syntaxhighlight>
 
==== <code>DELETE</code> ====
 
Untuk menghapus data dipergunakan sintaks:
<syntaxhighlight lang="mysql">
 
DELETE FROM [NAMA_TABLEnama_table] Where [KONDISI]
</syntaxhighlight>
 
Contoh:
<syntaxhighlight lang="mysql">
 
DELETE FROM TEST WHERE NAMA='test';
</syntaxhighlight>
 
== Catatan ==
{{reflist}}
 
==Pranala luarLihat pula ==
* [[Kata-kata yang dilindungi di SQL]]
*{{en}}[http://www.sql.org/ SQL Org]
*{{en}}Mike Chapple, [http://databases.about.com/od/sql/a/sqlfundamentals.htm ''SQL Fundamentals'']
*{{en}}MySQL AB, [http://dev.mysql.com/doc/refman/5.0/en/index.html MySQL 5.0 Reference Manual]
 
== Pranala luar ==
* {{en}} [http://www.sql.org/ SQL Org]
* {{en}} [http://www.1keydata.com/sql/sql.html SQL Tutorial]
* {{en}} Mike Chapple, [http://databases.about.com/od/sql/a/sqlfundamentals.htm ''SQL Fundamentals''] {{Webarchive|url=https://web.archive.org/web/20090222225300/http://databases.about.com/od/sql/a/sqlfundamentals.htm |date=2009-02-22 }}
* {{en}} MySQL AB, [http://dev.mysql.com/doc/refman/5.0/en/index.html MySQL 5.0 Reference Manual]
{{Daftar bahasa pemrograman}}
{{Authority control}}
 
[[Kategori:SQL| ]]
[[Kategori:Bahasa pemrograman]]
[[Kategori:SQL|Basis data]]
 
[[ar:لغة الاستعلامات البنيوية]]
[[be:SQL]]
[[bg:SQL]]
[[bn:এসকিউএল]]
[[br:Areg SQL]]
[[bs:SQL]]
[[ca:Structured Query Language]]
[[cdo:SQL]]
[[cs:SQL]]
[[da:Structured Query Language]]
[[de:SQL]]
[[en:SQL]]
[[eo:SQL]]
[[es:SQL]]
[[eu:SQL]]
[[fa:اس‌کیوال]]
[[fi:SQL]]
[[fr:Structured Query Language]]
[[ga:Teanga Struchtúrtha Iarratas]]
[[he:SQL]]
[[hr:SQL]]
[[hu:SQL]]
[[ia:SQL]]
[[is:SQL]]
[[it:SQL]]
[[ja:SQL]]
[[ku:SQL]]
[[lt:SQL]]
[[lv:SQL]]
[[ms:SQL]]
[[nl:SQL]]
[[no:Structured Query Language]]
[[pl:SQL]]
[[pt:SQL]]
[[ro:SQL]]
[[ru:SQL]]
[[sk:SQL]]
[[sl:SQL]]
[[sr:SQL]]
[[sv:SQL]]
[[th:ภาษาสอบถามเชิงโครงสร้าง]]
[[tr:SQL]]
[[uk:SQL]]
[[vi:SQL]]
[[zh:SQL]]