Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apa itu SQL? Apa itu Basis Data? Sistem Manajemen Basis Data Relasional (RDBMS) Dijelaskan dalam Bahasa Inggris Biasa.

Basis data bisa sulit untuk dipahami. Namun, mereka penting untuk pemrograman tumpukan penuh dan membangun layanan back-end yang menyimpan data.

Dalam posting ini, saya akan mengungkap SQL, Database, dan Sistem Manajemen Database Relasional. Saya juga akan menggunakan beberapa analogi dengan Dunia Sihir, termasuk Harry Potter sendiri dan beberapa kelas yang dia ambil di Hogwarts.

Sebelum kita masuk ke Key Terms, mari kita definisikan apa itu database itu sendiri:

Basis data adalah kumpulan data terstruktur yang disimpan di komputer, terutama yang dapat diakses dengan berbagai cara. Ini pada dasarnya adalah kumpulan data terorganisir di komputer, yang dapat diakses secara elektronik dari sistem komputer.

Istilah Kunci

Berikut adalah beberapa istilah kunci yang akan kita mulai:

  • RDMS: Sistem Manajemen Basis Data Relasional. Kerangka kerja untuk database ini adalah dasar dari MySQL.
  • SQL: Bahasa Kueri Terstruktur.
  • Tabel: Objek database yang membawa data. Contoh nama tabel adalah "Siswa", atau "Guru", atau "Kursus".
  • Bidang: Nilai dari sebuah tabel dikenal sebagai field. Contoh bidang untuk Siswa adalah "Nama Depan", "Nama Belakang", dan "IPK".
  • Rekam/Baris: Entri individu dalam tabel.

Setelah menambahkan Guru dan Kursus ke database, kita dapat memiliki tabel untuk Siswa, Guru, dan Kursus.

Saat kami bergerak maju dalam panduan ini, kami hanya akan menggunakan Siswa contoh di sini sebagai referensi. Jika Anda cukup beruntung untuk dipekerjakan sebagai Insinyur Perangkat Lunak di Hogwarts, database Anda mungkin menggunakan beberapa perintah ini dengan baik :D

Pernyataan SQL

Sintaks

Titik koma adalah cara standar untuk memisahkan satu pernyataan SQL dari yang lain. Ini memungkinkan beberapa pernyataan SQL dijalankan dalam panggilan yang sama. Dalam panduan ini, kita akan memiliki titik koma di akhir setiap pernyataan.

Perintah SQL Paling Penting

Buat :Membuat tabel SQL baru.

Jika kita membuat database siswa untuk Sekolah Hogwarts, misalnya, kita akan menggunakan CREATE untuk membuat tabel yang disebut "Siswa".

  • Sintaks
CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype,
   ....
);
  • Contoh
CREATE TABLE Students
                (first_name VARCHAR(255),
                last_name VARCHAR(255),
                login VARCHAR(255),
                age INTEGER,
                gpa REAL,
                house VARCHAR(255));

Lepas :Menghapus tabel. Berhati-hatilah saat menggunakan perintah ini karena ini akan menghapus semua data dalam tabel!

Jika kami ingin menghapus seluruh database Siswa, kami akan menggunakan DROP untuk melakukan tindakan itu.

  • Sintaks
DROP TABLE table_name;
  • Contoh
DROP TABLE Students;

Sisipkan :Menambahkan baris data baru ke tabel.

Kami akan menggunakan INSERT untuk menambah siswa baru saat mereka mendaftar ke Hogwarts.

  • Sintaks
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
  • Contoh
INSERT 
INTO Students(first_name, last_name, login, age, gpa, house)
VALUES 
('Harry',     'Potter', 'theboywholived', 15, 4.0, 'Gryffindor'),
('Hermionie', 'Granger','granger2',       15, 4.5, 'Gryffindor'),
('Ron',       'Weasley','weasley7',       15, 3.7, 'Gryffindor'),
('Draco',     'Malfoy', 'malfoy999',      15, 4.0, 'Slytherin'),
('Cedric',    'Diggory','diggory123',     15, 4.0, 'Hufflepuff');

Pilih :Digunakan untuk mengambil data dalam database untuk dikembalikan dalam format tabel.

Jika kita ingin mengambil semua Nama Siswa yang ada di Asrama Gryffindor, kita akan menggunakan PILIH memerintah. Contoh di bawah ini mengkueri tabel Siswa untuk nama depan dan nama belakang setiap siswa dalam database, yang bagi kami hanyalah lima baris yang dijelaskan di atas.

  • Sintaks
SELECT column1, column2, ...
FROM table_name;
  • Contoh
SELECT first_name, last_name FROM Students;
nama_depan nama_belakang
Harry Tembikar
Hermioni Granger
Ron Weasley
Draco Malfoy
Cedric Diggory

Atau, jika kita ingin memilih semua bidang dalam tabel, perintah kita akan menggunakan sintaks "*", yang berarti memilih semua bidang:

SELECT * FROM Students;
nama_depan nama_belakang masuk umur gpa rumah
Harry Tembikar anak laki-laki yang hidup 15 4 Gryffindor
Hermioni Granger grager2 15 4.5 Gryffindor
Ron Weasley weasley7 15 3.7 Gryffindor
Draco Malfoy malfoy999 15 4 Slytherin
Cedric Diggory diggory123 15 4 Hufflepuff

Klausul

Sebuah klausa adalah bagian logis dari pernyataan SQL, dan ini (secara teori) merupakan bidang opsional.

Dalam pernyataan di atas, kami hanya mengembalikan semua bidang dalam database Siswa. Kami tidak menentukan kondisi pada nilai yang dikembalikan.

Bagaimana jika kita ingin menanyakan tidak semua siswa, tetapi hanya mereka yang rumahnya Gryffindor? Bagaimana dengan menanyakan siswa yang nama depannya dimulai dengan "H", atau siswa di Hufflepuff dan Slytherin? Kasus yang lebih kompleks ini diselesaikan dengan klausa SQL.

Di bawah ini adalah ikhtisar dari klausa yang paling umum, tetapi ada beberapa klausa lagi dalam bahasa SQL. Berikut adalah ikhtisar umum yang bagus jika Anda menginginkan info lebih lanjut.

Contoh Klausa

Di mana: Digunakan untuk menyatakan kondisi saat mengambil data dari database. Kembali ke contoh dengan Select, kita harus menggunakan WHERE untuk menentukan rumahnya sebagai Gryffindor.

  • Sintaks
SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • Contoh
SELECT * FROM Students
WHERE house='Gryffindor';
nama_depan nama_belakang masuk umur gpa rumah
Harry Tembikar anak laki-laki yang hidup 15 4 Gryffindor
Hermioni Granger grager2 15 4.5 Gryffindor
Ron Weasley weasley7 15 3.7 Gryffindor

Dan Digunakan untuk menggabungkan beberapa klausa dalam pernyataan SQL, di mana semua kondisi yang dipisahkan oleh AND adalah benar. Kami akan menggunakan DAN untuk mendapatkan siswa Gryffindor yang memiliki IPK di atas 3,8.

  • Sintaks
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;
  • Contoh
SELECT * FROM Students
WHERE house='Gryffindor' AND gpa>3.8;
nama_depan nama_belakang masuk umur gpa rumah
Harry Tembikar anak laki-laki yang hidup 15 4 Gryffindor
Hermioni Granger grager2 15 4.5 Gryffindor

Atau :Mirip dengan AND, tetapi hanya mengembalikan data yang hanya SATU kondisi yang dipisahkan oleh OR yang benar. Jika kita ingin mengambil siswa di Hufflepuff dan Slytherin, tetapi tidak keduanya, kita akan menggunakan perintah OR.

  • Sintaks
SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;
  • Contoh
SELECT * FROM Students
WHERE house='Slytherin' OR house='Hufflepuff';
nama_depan nama_belakang masuk umur gpa rumah
Draco Malfoy malfoy999 15 4 Slytherin
Cedric Diggory diggory123 15 4 Hufflepuff

Seperti: Digunakan dengan WHERE untuk mencari pola tertentu. Jika kita hanya menginginkan nama depan dan belakang dari penyihir/penyihir dengan nama yang dimulai dengan "H", kita dapat menggunakan perintah Suka.

  • Sintaks
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
  • Contoh
SELECT first_name, last_name FROM Students
WHERE first_name LIKE 'H%';
nama_depan nama_belakang
Harry Tembikar
Hermioni Granger

Hitung: Digunakan untuk menemukan jumlah kolom (atau kolom) dalam sebuah tabel.

  • Sintaks
SELECT COUNT(column_name)
FROM table_name
WHERE condition;
  • Contoh
SELECT COUNT(first_name) FROM Students;
COUNT(nama_depan)
5

Dua perintah lain yang menggunakan sintaks yang sama adalah AVG dan SUM. AVG akan menghitung rata-rata semua nilai, dan sum akan menghitung jumlah semua nilai.

Pilih Batas: Digunakan untuk memotong tanggapan hanya dalam jumlah tertentu. Cara pemilihan jawaban teratas adalah dengan urutan pertama kali dimasukkan ke dalam database secara kronologis.

  • Sintaks
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
  • Contoh
SELECT * FROM Students LIMIT 3;
nama_depan nama_belakang masuk umur gpa rumah
Harry Tembikar anak laki-laki yang hidup 15 4 Gryffindor
Hermioni Granger grager2 15 4.5 Gryffindor
Ron Weasley weasley7 15 3.7 Gryffindor

Perintah Berguna Lainnya

Pesan Berdasarkan: Mengurutkan hasil dalam urutan menaik atau menurun.

  • Sintaks
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
  • Contoh
SELECT * FROM Students ORDER BY first_name;
nama_depan nama_belakang masuk umur gpa rumah
Cedric Diggory diggory123 15 4 Hufflepuff
Draco Malfoy malfoy999 15 4 Slytherin
Harry Tembikar anak laki-laki yang hidup 15 4 Gryffindor
Hermioni Granger grager2 15 4.5 Gryffindor
Ron Weasley weasley7 15 3.7 Gryffindor

Kelompokkan Menurut: Mengelompokkan kategori yang memiliki nilai yang sama ke dalam baris. Jika Anda ingin mengetahui jumlah siswa di setiap rumah (3 di Gryffindor misalnya), Anda dapat menggunakan perintah Group By.

  • Sintaks
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
  • Contoh
SELECT COUNT(first_name), house FROM Students GROUP BY house;
COUNT(nama_depan) rumah
3 Gryffindor
1 Hufflepuff
1 Slytherin

Akhirnya, ini adalah DB Fiddle yang menunjukkan semua perintah di atas beraksi!

Basis Data Dinormalisasi vs Didenormalisasi

Saat mendesain database, ada dua pola desain utama yang dapat Anda ikuti, masing-masing dengan pengorbanannya sendiri.

Dinormalisasi: Mengoptimalkan untuk meminimalkan redundansi, bukan untuk waktu membaca.

Katakanlah kita memiliki tabel kursus yang memiliki ID guru untuk guru yang mengajar kursus itu. Kami juga memiliki database guru yang memiliki nama guru.

Saat kita ingin mendapatkan nama guru yang mengajar mata pelajaran tertentu, kita harus menanyakan tabel Kursus dan Guru karena tabel kursus tidak memiliki nama guru (efisien tapi berlebihan).

Denormalisasi: Mengoptimalkan waktu membaca , bukan untuk meminimalkan redundansi.

Katakanlah kita memiliki tabel kursus yang memiliki ID guru DAN nama guru. Kami memiliki database guru yang juga memiliki nama guru. Saat kita ingin mendapatkan nama guru di mata pelajaran, kita bisa menggunakan tabel kursus (redundant tapi efisien).

Integritas Data

Sangat penting bagi pengguna bahwa data yang berinteraksi dengan mereka aman, benar, dan masuk akal. Contohnya adalah memastikan bahwa usia bukanlah angka negatif, atau tidak ada dua siswa yang memiliki informasi yang sama. Kami menyebutnya sebagai integritas data.

Integritas data memiliki beberapa bentuk dan dapat dibagi menjadi empat kategori:

  • Integritas Entitas :Tidak ada baris duplikat dalam tabel. Misalnya, kita tidak bisa memasukkan Ron Weasley dua kali ke dalam database.
  • Integritas Domain :Membatasi jenis nilai yang dapat dimasukkan seseorang untuk menerapkan nilai yang benar. Misalnya, Asrama hanya dapat berupa Gryffindor, Ravenclaw, Slytherin, atau Hufflepuff.
  • Integritas Referensial :Catatan yang digunakan oleh catatan lain tidak dapat dihapus. Seorang guru tidak dapat dihapus jika sedang mengajar mata pelajaran.
  • Integritas Buatan Pengguna: Kategori "lainnya" yang terdiri dari logika dan aturan terkait bisnis ke database.

Database SQL Umum

  • Oracle :Sangat stabil dan matang tetapi bisa mahal
  • MySQL :Ringan dan cepat disiapkan, tetapi tidak setajam Oracle
  • PostgreSQL :Baik untuk kasus penggunaan tertentu tetapi tidak super cepat

Sumber daya

  • SWEPrep - Pertanyaan Wawancara Langsung Ke Kotak Masuk Anda
  • SQL dan Database freeCodeCamp
  • Bersihkan Kode
  • Java yang Efektif
  • Dokumentasi Oracle
  • Dokumentasi MySql
  • Dokumentasi PostgreSQL

Tetap Terkini

  • Utas Reddit :Utas hebat tentang database, SQL, dan teknologi baru
  • Berita Peretas: Sumber daya yang sangat bagus untuk tetap mengetahui perkembangan terbaru di industri teknologi
  • CodePen: Sumber daya yang sangat baik untuk menemukan praktik SQL yang baik.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. dimana 1=1 pernyataan

  2. Cara Bootstrap MySQL atau MariaDB Galera Cluster - Diperbarui

  3. mysqli:dapatkah ia menyiapkan banyak kueri dalam satu pernyataan?

  4. Menyortir Di MySQL Menggunakan Order By Clause

  5. Cara Memantau Metrik HAProxy dengan ClusterControl