{"id":25230511,"url":"https://github.com/ahdanfirdaus/belajar-sql-dasar","last_synced_at":"2026-02-05T19:35:25.501Z","repository":{"id":276146979,"uuid":"928352574","full_name":"AhdanFirdaus/belajar-sql-dasar","owner":"AhdanFirdaus","description":"Dokumentasi belajar sql dasar","archived":false,"fork":false,"pushed_at":"2025-02-15T03:45:56.000Z","size":10,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-02T08:43:40.755Z","etag":null,"topics":["sql","sql-dasar","sql-learning"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AhdanFirdaus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-06T13:52:12.000Z","updated_at":"2025-02-15T03:47:22.000Z","dependencies_parsed_at":"2025-02-06T15:35:11.775Z","dependency_job_id":"045f9e90-c079-4a2d-82d8-d4e5bcbc6c62","html_url":"https://github.com/AhdanFirdaus/belajar-sql-dasar","commit_stats":null,"previous_names":["ahdanfirdaus/belajar-sql-dasar"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AhdanFirdaus/belajar-sql-dasar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AhdanFirdaus%2Fbelajar-sql-dasar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AhdanFirdaus%2Fbelajar-sql-dasar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AhdanFirdaus%2Fbelajar-sql-dasar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AhdanFirdaus%2Fbelajar-sql-dasar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AhdanFirdaus","download_url":"https://codeload.github.com/AhdanFirdaus/belajar-sql-dasar/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AhdanFirdaus%2Fbelajar-sql-dasar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29130629,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T18:55:47.139Z","status":"ssl_error","status_checked_at":"2026-02-05T18:55:04.010Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["sql","sql-dasar","sql-learning"],"created_at":"2025-02-11T11:59:26.755Z","updated_at":"2026-02-05T19:35:25.485Z","avatar_url":"https://github.com/AhdanFirdaus.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Belajar SQL\r\n\r\nrequirement: https://dev.mysql.com/downloads/installer/\r\n\r\n## SQL itu apa bang ?\r\n\r\nNah jadi `SQL (Structured Query Language)` adalah bahasa pemrograman yang digunakan untuk mengelola dan mengakses data yang tersimpan dalam sistem basis data relasional. \r\n\r\n## Sejarah Singkat\r\nSQL pertama kali dikembangkan oleh `IBM` pada tahun 1970-an berdasarkan konsep model relasional yang dikemukakan oleh `Edgar F. Codd`. Pada tahun 1974, IBM mengembangkan bahasa `SEQUEL` untuk bekerja dengan database relasional, yang kemudian disingkat menjadi `SQL`. Pada tahun 1986, ANSI dan ISO mulai menetapkan standar SQL, membuatnya menjadi bahasa universal untuk mengelola data dalam basis data relasional. SQL terus berkembang dan menjadi standar utama yang digunakan di banyak sistem manajemen basis data, seperti `MySQL`, `PostgreSQL`, dan `Oracle`.\r\n\r\n## Let's code\r\n\u003e [!TIP]\r\n\u003e Jangan lupa pakai titik koma \";\" Dan juga disarankan pakai \"_\" untuk pengganti spasi atau bisa camelcase contoh \"dataBarang\"\r\n\r\n\r\n### Create Database\r\n\r\n**Membuat Database**\r\n\r\n```sql\r\nCREATE DATABASE nama_database;\r\n```\r\n\r\n**Membuat Database Namun tidak mau sama**\r\n\r\n```sql\r\nCREATE DATABASE IF NOT EXISTS nama_database;\r\n```\r\n**Menghapus Database**\r\n\r\n```sql\r\nDROP DATABASE nama_database;\r\n```\r\n\r\n### Use Select Database\r\n\r\n**Memilih \u0026 Mengaktifkan Database**\r\n\r\n```sql\r\nUSE nama_database;\r\n```\r\n\r\n**Cek database yang sedang aktif.**\r\n\r\n```sql\r\nSELECT DATABASE();\r\n```\r\n\r\n### Show Database\r\n\r\n**Cek Isi Database**\r\n\r\n```sql\r\nSHOW DATABASES;\r\n```\r\n\r\n**Cek sesuai yang ingin dicek saja**\r\n\r\n```sql\r\nSHOW DATABASES LIKE \"nama_database\";\r\n```\r\n\r\n**Cek sesuai awalan kata**\r\n\r\n```sql\r\nSHOW DATABASES LIKE \"%nama_database\";\r\n```\r\n\r\n**Cek sesuai akhir kata**\r\n\r\n```sql\r\nSHOW DATABASES LIKE \"nama_database%\";\r\n```\r\n\r\n### Create Table\r\n\r\n**Membuat Table**\r\n\r\n```sql\r\nCREATE TABLE pelanggan(\r\n  id_pelanggan INT AUTO_INCREMENT PRIMARY KEY,\r\n  nama VARCHAR(50) NOT NULL,\r\n  umur INT NOT NULL,\r\n  alamat VARCHAR(100)\r\n);\r\n```\r\n\r\n**Membuat Table tidak mau sama**\r\n\r\n```sql\r\nCREATE TABLE IF NOT EXISTS pelanggan_tetap(\r\n  id_pelanggan INT AUTO_INCREMENT PRIMARY KEY,\r\n  nama VARCHAR(50) NOT NULL,\r\n  umur INT NOT NULL,\r\n  alamat VARCHAR(100)\r\n);\r\n```\r\n\r\n**Membuat Table sesuai table yang ada**\r\n\r\n```sql\r\nCREATE TABLE pelanggan_aktif AS SELECT id_pelanggan, nama, umur FROM pelanggan;\r\n```\r\n\r\n**Melihat isi Table**\r\n\r\n```sql\r\nDESC pelanggan;\r\n```\r\n\r\n**Melihat ada Table apa saja**\r\n\r\n```sql\r\nSHOW TABLES;\r\n```\r\n\r\n### Tipe Data\r\n\r\n1. `Tipe Data Numerik`\r\nDigunakan untuk menyimpan angka, baik bilangan bulat maupun desimal.\r\n\r\n```md\r\n`INTEGER (INT, BIGINT, SMALLINT, TINYINT)` → Bilangan bulat.\r\n`DECIMAL (NUMERIC, FIXED)` → Bilangan desimal dengan presisi tetap.\r\n`FLOAT (REAL, DOUBLE PRECISION)` → Bilangan desimal dengan presisi tidak tetap.\r\n```\r\n\r\n2. `Tipe Data String (Karakter \u0026 Teks)`\r\nDigunakan untuk menyimpan teks atau karakter.\r\n\r\n```md\r\n`CHAR(n)` → String dengan panjang tetap.\r\n`VARCHAR(n)` → String dengan panjang variabel.\r\n`TEXT (TINYTEXT, MEDIUMTEXT, LONGTEXT)` → Menyimpan teks dalam jumlah besar.\r\n```\r\n\r\n3. `Tipe Data Date \u0026 Time (Tanggal \u0026 Waktu)`\r\nDigunakan untuk menyimpan informasi tanggal dan waktu.\r\n\r\n```md\r\n`DATE` → Menyimpan tanggal (YYYY-MM-DD).\r\n`TIME` → Menyimpan waktu (HH:MM:SS).\r\n`DATETIME` → Menyimpan tanggal dan waktu (YYYY-MM-DD HH:MM:SS).\r\n`TIMESTAMP` → Menyimpan stempel waktu dalam format Unix.\r\n```\r\n\r\n4. `Tipe Data Boolean`\r\n\r\n```md\r\n`BOOLEAN (BOOL)` → Biasanya disimpan sebagai TINYINT(1), di mana 0 berarti FALSE dan 1 berarti TRUE.\r\n```\r\n\r\n5. `Tipe Data Binary (Biner)`\r\nDigunakan untuk menyimpan data dalam format biner seperti gambar atau file.\r\n\r\n```md\r\n`BLOB (TINYBLOB, MEDIUMBLOB, LONGBLOB)` → Menyimpan data biner dalam berbagai ukuran.\r\n`BINARY(n), VARBINARY(n)` → Data biner dengan panjang tetap atau variabel.\r\n```\r\n\r\n6. `Tipe Data Lainnya`\r\n\r\n```md\r\n`ENUM` → Menyimpan nilai tetap yang bisa dipilih dari daftar tertentu.\r\n`SET` → Menyimpan satu atau lebih nilai dari daftar yang telah ditentukan.\r\n```\r\n\r\n### Create Value\r\n\r\n**Menambahkan Data pada table**\r\n\r\n```sql\r\nINSERT INTO pelanggan VALUES (NULL, \"dadan\", 17, \"semarang\");\r\n```\r\n\r\n**Menampilkan semua isi data pada table**\r\n\r\n```sql\r\nSELECT * FROM pelanggan;\r\n```\r\n\r\n**Menampilkan isi data yang diinginkan saja**\r\n\r\n```sql\r\nSELECT nama, umur FROM pelanggan;\r\n```\r\n\r\n### Delete \u0026 Truncate\r\n\r\n\r\n| Aspek           | DELETE                                              | TRUNCATE                                           |\r\n|----------------|-----------------------------------------------------|---------------------------------------------------|\r\n| **Fungsi**      | Menghapus data dari tabel dengan kondisi tertentu (bisa sebagian atau semua). | Menghapus semua data dalam tabel tanpa kondisi. |\r\n| **WHERE Clause** | Bisa menggunakan `WHERE` untuk menghapus data tertentu. | Tidak bisa menggunakan `WHERE`, langsung menghapus semua data. |\r\n| **Rollback (Undo)** | Bisa dikembalikan (`ROLLBACK`) jika dalam transaksi (`BEGIN TRANSACTION`). | Tidak bisa di-rollback, karena langsung menghapus semua data secara permanen. |\r\n| **Auto Increment** | Tidak mengubah nilai `AUTO_INCREMENT`. | Me-reset nilai `AUTO_INCREMENT` kembali ke awal. |\r\n| **Trigger**     | Menjalankan trigger `AFTER DELETE` jika ada. | Tidak menjalankan trigger karena tidak terjadi operasi baris per baris. |\r\n\r\n\r\n**Kapan Menggunakan DELETE atau TRUNCATE?**\r\n- Gunakan `DELETE` jika kamu ingin menghapus `sebagian data` berdasarkan kondisi tertentu atau ingin mempertahankan perubahan dalam transaksi.\r\n- Gunakan `TRUNCATE` jika kamu ingin menghapus `semua data` dalam tabel dengan cepat dan tidak perlu menyimpan histori penghapusan.\r\n\r\n**Menghapus Table**\r\n\r\n```sql\r\nTRUNCATE TABLE pelanggan;\r\n```\r\n\r\n**Menghapus isi Table**\r\n\r\n```sql\r\nDELETE FROM pelanggan WHERE alamat = \"semarang\";\r\n```\r\n\r\n### Cloning Table\r\n\r\n**Copy Tanpa Data**\r\n\r\n```sql\r\nCREATE TABLE pelanggan_copy LIKE pelanggan;\r\n```\r\n\r\n**Copy Dengan Data**\r\n\r\n```sql\r\nCREATE TABLE pelanggan_copy AS SELECT * FROM pelanggan;\r\n```\r\n\r\n**Copy Table berdasarkan data yang diinginkan saja**\r\n\r\n```sql\r\nCREATE TABLE pelanggan_jakarta AS SELECT * FROM pelanggan WHERE alamat = \"semarang\";\r\n```\r\n\r\n\r\n**Menghapus Table**\r\n\r\n```sql\r\nDROP TABLE pelanggan_copy;\r\n```\r\n\r\n### Temporary Table\r\n\r\n`Temporary Table` adalah tabel sementara yang dibuat dalam sesi database tertentu dan otomatis terhapus setelah sesi berakhir atau setelah tabel tersebut tidak lagi dibutuhkan. Tabel ini sering digunakan untuk menyimpan data sementara dalam query kompleks, pengolahan batch, atau penyimpanan hasil sementara.\r\n\r\n\r\n**Temporary Table di MySQL**\r\n\r\n- Berlaku hanya dalam sesi saat ini.\r\n- Tidak bisa diakses oleh sesi lain.\r\n- Harus dibuat dengan kata kunci TEMPORARY.\r\n\r\ncontoh:\r\n```sql\r\nCREATE TEMPORARY TABLE tempOrders (\r\n    order_id INT PRIMARY KEY,\r\n    customer_name VARCHAR(100)\r\n);\r\n\r\nINSERT INTO tempOrders VALUES (101, 'dadan'), (102, 'ahdan');\r\n\r\nSELECT * FROM tempOrders;\r\n\r\nDROP TEMPORARY TABLE tempOrders;\r\n```\r\n\r\n### Alter Table\r\n\r\n`ALTER TABLE` adalah perintah di SQL yang digunakan untuk mengubah struktur tabel yang sudah ada tanpa menghapus dan membuat ulang tabel tersebut.\r\n\r\n**Menambahkan struktur table**\r\n\r\n```sql\r\nALTER TABLE user_kita ADD tanggal_lahir DATE;\r\n```\r\n\r\n**Menghapus column**\r\n\r\n```sql\r\nALTER TABLE user_kita DROP COLUMN tanggal_lahir;\r\n```\r\n\r\n**Modif**\r\n\r\n```sql\r\nALTER TABLE user_kita MODIFY nama VARCHAR(50);\r\n```\r\n\r\n**Rename**\r\n\r\n```sql\r\nALTER TABLE user_kita RENAME COLUMN nama TO nama_user;\r\n```\r\n\r\n**Rename Table**\r\n\r\n```sql\r\nALTER TABLE user_kita RENAME TO user_milik_kita;\r\n```\r\n\r\n### Constraint\r\n\r\nConstraint adalah aturan atau batasan yang diterapkan pada kolom di tabel database untuk memastikan `integritas` dan `validitas data`. Constraint membantu dalam mencegah kesalahan atau inkonsistensi dalam database.\r\n\r\n`NOT NULL` = tidak boleh kosong\r\n`UNIQUE` = tidak boleh kembar\r\n`PRIMARY KEY` = bisa dikombinasi sama NOT NULL, menentukan kolom sebagai identitas unik untuk setiap baris dalam tabel dan tidak boleh NULL dan harus unik.\r\n`CHECK` = mengisi nilai dengan kondisi\" tertentu\r\ncontoh:\r\n```sql\r\nCREATE TABLE students (\r\n    student_id INT PRIMARY KEY,\r\n    age INT CHECK (age \u003e= 18)\r\n);\r\n```\r\n`DEFAULT` = memberikan nilai default jika tidak ada nilai yang dimasukkan.\r\ncontoh:\r\n```sql\r\nCREATE TABLE accounts (\r\n    account_id INT PRIMARY KEY,\r\n    balance DECIMAL(10,2) DEFAULT 0.00\r\n);\r\n```\r\n`FOREIGN KEY` = menghubungkan dua tabel untuk menjaga hubungan referensial dan mencegah penyisipan data yang tidak valid.\r\ncontoh:\r\n```sql\r\nCREATE TABLE orders (\r\n    order_id INT PRIMARY KEY,\r\n    user_id INT,\r\n    FOREIGN KEY (user_id) REFERENCES users(id)\r\n);\r\n```\r\ncara bacanya: `user_id` harus sesuai dengan `id` di tabel `users`\r\n\r\n### Insert Query \r\n\r\n**Menambahkan data**\r\n\r\n```sql\r\nINSERT INTO user VALUES (1, \"dadan\", \"dadan@email.com\", \"jakarta\"), (2, \"ahdan\", \"ahdan@email.com\", \"semarang\");\r\n```\r\n\r\n**Menambahkan data yang diinginkan saja**\r\n\r\n```sql\r\nINSERT INTO user (id_user, nama) VALUES (3, \"firdaus\")\r\n```\r\n\r\n### Select Query\r\n\r\n**Menampilkan semua isi tablenya**\r\n\r\n```sql\r\nSELECT * FROM user;\r\n```\r\n\r\n**Menampilkan isi sesuai target**\r\n\r\n```sql\r\nSELECT nama, kota FROM user;\r\n```\r\n\r\n**Menampilkan sesuai isi target**\r\n\r\n```sql\r\nSELECT * FROM user WHERE kota = \"aceh\";\r\n```\r\n\r\n**Menampilkan sesuai isi target dan target yang lain**\r\n\r\n```sql\r\nSELECT * FROM user WHERE kota = \"aceh\" AND email LIKE \"%gmail.com\";\r\n```\r\n\r\n**Mengurutkan berdasarkan nama**\r\n\r\n```sql\r\nSELECT * FROM user ORDER BY nama;\r\n```\r\n\r\n**Mengurutkan dari bawah**\r\n\r\n```sql\r\nSELECT * FROM user ORDER BY nama DESC;\r\n```\r\n\r\n**Menampilkan 2 pertama**\r\n\r\n```sql\r\nSELECT * FROM user LIMIT 2;\r\n```\r\n\r\n**Menampilkam Total**\r\n\r\n```sql\r\nSELECT COUNT(*) AS total_user FROM user;\r\n```\r\n\r\n**Menampilkan yang unik**\r\n\r\n```sql\r\nSELECT DISTINCT kota FROM user;\r\n```\r\n\r\n### Update Query\r\n\r\n**Mengubah**\r\n\r\n```sql\r\nUPDATE user SET kota = \"jakarta\";\r\n```\r\n\r\n**Mengubah sesuai target**\r\n\r\n```sql\r\nUPDATE user SET kota = \"bandung\" WHERE id_user = 1;\r\n```\r\n\r\n**Mengubah beberapa data secara langsung**\r\n\r\n```sql\r\nUPDATE user SET email = \"contoh@email.com\" kota = \"semarang\" WHERE id_user = 2;\r\n```\r\n\r\n**Mengubah sesuai kondisi**\r\n\r\n```sql\r\nUPDATE user SET kota = \"surabaya\" WHERE id_user \u003e 1;\r\n```\r\n\r\n**Mengubah data secara dinamis**\r\n\r\n```sql\r\nUPDATE barang SET stok_barang = stok_barang + 5;\r\n```\r\n\r\n### Delete Query\r\n\r\n**Menghapus data bukan strukturnya**\r\n\r\n```sql\r\nDELETE FROM user;\r\n```\r\n\r\n**Menghapus sesuai yang diinginkan**\r\n\r\n```sql\r\nDELETE FROM user WHERE id_user = 2;\r\n```\r\n\r\n**Menghapus sesuai informasi yang diberikan**\r\n\r\n```sql\r\nDELETE FROM user WHERE kota = \"semarang\" OR nama LIKE \"%dadan%\";\r\n```\r\n\r\n## Closing\r\n\r\nTerimakasih sudah membaca sampai akhir, selanjutnya tinggal belajar sql lanjutan secara mandiri. 🙏","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahdanfirdaus%2Fbelajar-sql-dasar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fahdanfirdaus%2Fbelajar-sql-dasar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahdanfirdaus%2Fbelajar-sql-dasar/lists"}