• Tidak ada hasil yang ditemukan

Suplemen Tugas Besar Manajemen Data dan Basis Data

N/A
N/A
Syauqiy Nur

Academic year: 2025

Membagikan "Suplemen Tugas Besar Manajemen Data dan Basis Data"

Copied!
39
0
0

Teks penuh

(1)

Suplemen Tugas Besar

Manajemen

Data

(2)

“ Without big data, you are blind and deaf and in the middle of a freeway “

- Geoffrey Moore

(3)

Daftar Isi

Tujuan Suplemen... 5

Teori & Praktik... 6

1. ERD...6

1.1. Primary dan Foreign Key...7

1.2. Jenis – Jenis Antara Tabel dan Normalisasi...7

2. Relational Database Management System... 8

3. Mengelola Data dalam RDBMS... 9

4. Mengelola Data dalam RDBMS... 9

4.1. Numbering Numerics...9

4.2. Approximate Numerics... 10

4.3. Date and Time... 10

4.4. Character Strings... 10

4.5. Unicode Character Strings...11

4.6. Unicode Character Strings...11

4.7. Tipe Data Lain... 11

5. SQL Statement Rules...11

6. Memulai Program SQL Server 2012 Express... 13

7. Membuat, Memodifikasi, dan Menghapus Tabel... 15

7.1. Membuat Database... 15

7.2. Membuat Tabel...15

7.3. Memodifikasi Tabel...17

7.3.1. Menambahkan Kolom... 17

7.3.2. Menambahkan Primary Key... 18

7.3.3. Menambahkan Foreign Key... 18

7.3.4. Memodifikasi Konstrain... 18

7.3.5. Menghapus Kolom... 19

7.3.6. Menghapus Konstrain... 19

8. Manipulasi Data dalam SQL...21

8.1. Menyisipkan (INSERT)... 21

8.2. Memodifikasi (UPDATE)...22

8.3. Menghapus (DELETE)... 23

8.3.1. Menghapus Seluruh Record...23

8.3.2. Menghapus Record Tertentu... 23

9. Menampilkan Data... 23

9.1. Menampilkan Seluruh Kolom... 23

9.2. Menampilkan Kolom Tertentu...23

(4)

9.3. Menampilkan Kolom dengan Eliminasi Duplikasi...24

9.4. Menampilkan Kolom dengan Nama Lain... 24

9.5. Menampilkan Data dengan Syarat... 24

10. Pengolahan Data...25

10.1. Menampilkan dengan Fungsi Aritmatika... 25

10.2. Menampilkan dengan Fungsi Matematika...25

10.3. Menampilkan dengan Fungsi Agregasi... 26

10.3.1. COUNT...26

10.3.2. MAX dan MIN... 26

10.3.3. SUM... 26

10.3.4. AVG... 27

11. Pengurutan dan Pengelompokan Data... 27

11.1. Mengurutkan Data... 27

11.2. Mengelompokkan Data...28

12. Pencarian Data...29

13. Tables... 30

13.1. INNER JOIN... 30

13.2. OUTER JOIN...31

13.2.1. Right Outer Join... 31

13.2.2. Left Outer Join...32

13.2.3. Full Outer Join... 32

14. Sub Queries... 33

14.1. Subquery with IN or NOT IN...33

14.2. Subquery with UPDATE, DELETE, and INSERT... 33

14.3. Subquery with Comparison Operators... 34

14.4. Subquery with EXISTS or NOT EXISTS... 34

14.4.1. EXISTS...34

14.4.2. NOT EXISTS... 35

FAQ (Frequently Asked Questions)... 36

(5)

Tujuan Suplemen

Memberikan pemahaman fundamental terhadap basis data, terutama penerapan di Microsoft SQL Server.

(6)

Database atau basis data adalah kumpulan data yang disimpan secara sistematis di dalam komputer yang dapat diolah dan dimanipulasi untuk menghasilkan suatu informasi yang berguna atau dalam definisi lainnya berarti kumpulan data yang saling berkaitan yang membentuk suatu bangunan data yang dapat dijadikan informasi pada instansi tertentu. Contoh penggunaan basis data dalam kehidupan pendataan pemeranan film oleh artis. Pada pemeranan film akan ada data-data terkait yang menjelaskan tentang artis, film, serta tentang pemeranan film oleh artis. Basis data akan berguna dalam menghubungkan ketiga data ini jika kita ingin mengetahui artis A memerankan film apa, diproduseri oleh siapa dan tanggal berapa film rilis.

Dalam mengimplementasikan suatu basis data dengan menggunakan software RDMBS, Anda akan berfokus dengan bagaimana membuat entitas dalam bentuk tabel, mendefinisikan atribut entitas (column), menambahkan data (record) ke tabel, menghapus record, dan meng-update record. Aktivitas pembuatan dan pengolahan data ini dilakukan melalui query (dalam bahasa Inggris artinya permintaan atau pertanyaan).

Query ini berwujud sebagai kumpulan syntax yang isinya perintah-perintah untuk membuat basis data baru dan/atau mengolah basis data yang sudah ada. Pada tugas besar ini, kita akan menggunakan bahasa SQL sebagai query.

Teori & Praktik 1. ERD

Sekedar mengingat kembali, dalam ERD, ada 3 komponen dasar, yaitu :

Notasi Nama Keterangan

Entitas Objek yang mewakili sesuatu yang nyata dan dapat dibedakan dari sesuatu yang lain. Dalam SQL Server, entitas

direpresentasikan ke dalam tabel.

Atribut Elemen dari entitas yang mempunyai fungsi untuk mendeskripsikan karakteristik dari entitas tersebut. Isi dari atribut

mempunyai sesuatu yang dapat mengidentifikasikan isi elemen satu dengan yang lain. Dalam SQL Server, sebuah atribut direpresentasikan ke dalam suatu kolom.

Relasi Hubungan antara sejumlah entitas yang berasal dari himpunan entitas yang berbeda.

(7)

Berikut merupakan contoh dari ERD Pemeranan Film :

1.1.

Primary dan Foreign Key

Key dalam database merupakan suatu cara untuk mengidentifikasi dan menghubungkan satu tabel data dengan tabel yang lain. Terdapat enam macam key dalam SQL, pada tugas besar ini ini hanya dipelajari dua macam key saja yaitu:

● Primary Key

Suatu nilai dalam basis data yang digunakan untuk mengidentifikasi suatu baris dalam tabel. Nilai ini bersifat unik untuk setiap record. Anda tidak dapat menambahkan 2 record dengan primary key yang sama.

● Foreign Key

Suatu atribut sebagai key penghubung antara dua tabel. Apabila terdapat relasi 1 – M, maka pada tabel yang berordinal many memiliki kolom foreign key dengan referensi primary key dari tabel yang berordinal 1.

Pada contoh sebelumnya, pada tabel Artis yang akan menjadi primary key adalah No_Reg_Artis, sedangkan pada tabel Film yang menjadi primary key adalah ID_Film.

No_Reg_Artis dan ID_Film akan menjadi foreign key pada tabel Peran

1.2. Jenis – Jenis Antara Tabel dan Normalisasi

Dalam kasus pendaftaran kelas pada contoh sebelumnya, kita asumsikan bahwa satu artis dapat berperan pada lebih dari satu film dan satu film dapat diperani oleh lebih dari satu artis. Maka bila dibuat ERD-nya akan menjadi seperti

(8)

Hubungan antara tabel Artis dengan tabel Film menjadi Many-to-Many (M-M). Relasi ini terjadi pada tabel Artis dan tabel Film. Relasi M-M pada ERD harus disederhanakan menjadi M-1 dengan menambahkan tabel yang menghubungkan aktivitas yang terjadi di antara artis dan film. Maka dapat dikatakan adanya aktivitas pemeranan dan sebaiknya dibuat rekap datanya dalam bentuk tabel. Maka ERD yang telah dinormalisasikan menjadi seperti :

Untuk lebih jelasnya perhatikan poin-poin berikut:

● Artis : Setiap Artis dapat memiliki banyak peran dan satu peran hanya dapat diperankan oleh satu artis.

● Film : Setiap Film memiliki banyak pemeran dan satu peran hanya dapat berperan pada satu film.

Setelah penambahan tabel peran, maka di antara tabel Artis dan tabel Film dan tabel Peran dengan tabel Film ada relasi. Kedua relasi ini diwujudkan dalam foreign key. No_Reg_Artis pada tabel Peran menjadi foreign key yang menghubungkan tabel Artis dengan tabel Peran dan ID_Film pada tabel Peran menjadi foreign key yang menghubungkan tabel Peran dengan tabel Film.

2. Relational Database Management System

Dalam merancang suatu basis data, Anda perlu mengenal diagram ERD (entity relationship diagram). Anda akan belajar bagaimana mengimplementasikan rancangan basis data yang sudah dibuat dalam diagram ERD, dengan membangun basis data hasil rancangan ke dalam sebuah software. Software yang akan kita gunakan untuk membangun basis data adalah software RDBMS (Relational Database Management System). Di pasaran, software RDBMS yang populer digunakan misalnya Microsoft Access, Microsoft SQL Server, Oracle Database, dan MySQL. Pada tugas besar mata kuliah ini, kita akan menggunakan Microsoft SQL Server 2012 Express Edition sebagai software yang akan kita gunakan untuk mengimplementasikan rancangan basis data.

(9)

3. Mengelola Data dalam RDBMS

Berikut adalah penjelasan terkait pengelolaan data dalam RDBMS :

SQL (Structured Query Language) adalah bahasa pemrograman yang dirancang khusus untuk mengelola data dalam Relational Database Management System (RDBMS)-(wikipedia.org, 2013). Dalam RDBMS data direpresentasikan dalam bentuk tabel dan relasi. SQL merupakan bahasa “permintaan", yaitu permintaan untuk membuat, menghapus, mengedit, dan mengolah data pada RDBMS.

SQL berbeda dengan bahasa pemrograman yang kita gunakan pada saat kita membuat program di C++. Kita menggunakan C++ untuk membuat suatu program yang dieksekusi kapan saja dan dapat dieksekusi berulang-ulang ketika dibutuhkan, sedangkan SQL hanyalah kumpulan perintah yang digunakan untuk memanipulasi data saja, bukan untuk membuat program “berwujud” seperti di C++, Efek dari perintah SQL juga bersifat permanen, sehingga kadang suatu perintah tidak bisa di- eksekusi lebih dari 1 kali, misalnya perintah untuk membuat tabel.

SQL Server tidak mengizinkan kita untuk membuat 2 tabel dengan nama yang sama. Ketika perintah untuk membuat sebuah tabel sudah di-eksekusi, maka kita tidak dapat mengeksekusinya perintah yang sama untuk kedua kalinya karena tabel sudah pernah dibuat. Jadi, berhati-hatilah ketika mengetikkan perintah SQL.

● Dalam konsep basis data, sebuah entitas memiliki banyak atribut yang mendeskripsikan entitas tersebut. Dalam SQL Server, sebuah entitas direpresentasikan ke dalam suatu tabel dan atribut- atributnya direpresentasikan ke kolom-kolom dari tabel tersebut. Data yang ada pada tabel tersebut, kita sebut sebagai record.

Sebuah tabel dapat berisikan satu kolom atau lebih. Sebuah kolom memiliki nama kolom dan tipe data tertentu. Struktur dari tabel disebut dengan relation schema dan didefinisikan melalui atribut- atributnya. Jadi setiap informasi yang akan disimpan harus sesuai dengan tipe data atribut pada saat pertama kali dibuat.

● Sebuah tabel yang akan dibuat dalam SQL harus berdasarkan pada ERD. ERD menjelaskan hubungan antar data dalam basis data berdasarkan objek-objek dasar data yang mempunyai hubungan antar relasi. ERD inilah yang membantu kita dalam merancang basis data yang akan kita buat pada SQL Server.

4. Mengelola Data dalam RDBMS

Dalam mendefinisikan kolom, terdapat beberapa tipe data yang digunakan. Sebuah tabel dapat terdiri dari banyak kolom dengan berbagai tipe data. Berikut adalah beberapa contoh tipe data yang dikenal oleh Microsoft SQL Server.

4.1. Numbering Numerics

1. BIGINT, angka dengan jangkauan nilai dari -263 (- 9,223,372,036,854,775,808) sampai 263 - 1 (9,223,372,036,854,775,807) dan membutuhkan tempat penyimpanan 8 byte.

(10)

2. INT, angka dengan jangkauan nilai dari -231 (-2,147,483,648) sampai 231 - 1 (2,147,483,647) dan membutuhkan tempat penyimpanan 4 byte.

3. SMALLINT, angka dengan jangkauan nilai dari -215 (-32,768) sampai 215 - 1 (32,767) dan membutuhkan tempat penyimpanan 2 byte.

4. TINYINT, angka dengan jangkauan nilai dari 0 sampai 255 dan membutuhkan tempat penyimpanan 1 byte.

5. BIT, angka dengan jangkauan nilai dari 0 sampai 1 dan membutuhkan tempat penyimpanan 1 byte untuk tabel yang berisi 8 baris dan seterusnya.

6. DECIMAL [(p, s])] dan NUMERIC [(p[, s])], presisi dan angka skala yang tetap dengan jangkauan nilai dari -1038 + 1 sampai 1038 – 1 membutuhkan tempat penyimpanan dari 5 sampai 17 byte.

7. p (presisi), total angka maksimum dari digit desimal yang dapat disimpan di sisi kiri dan kanan tanda desimal. Jangkauan nilai presisi adalah mulai dari 1 sampai 38, dengan nilai default 18.

8. s (skala), angka maksimum dari digit desimal yang dapat disimpan di sebelah kanan tanda \desimal dengan jangkauan nilai dari 0 sampai p, dengan nilai default 0 sehingga 0 <= s <= p. Skala hanya dapat didefinisikan jika p sudah didefinisikan.

9. MONEY, angka mata uang dengan jangkauan nilai dari -922,337,203,685,477.5808 sampai 922,337,203,685,477.5807 dan membutuhkan tempat penyimpanan 8 byte.

10. SMALLMONEY, angka mata uang dengan jangkauan nilai dari -214,748.3648 to 214,748.3647 dan membutuhkan tempat penyimpanan 4 byte.

4.2. Approximate Numerics

1. FLOAT(n), angka aproksimasi dengan jangkauan nilai dari -1.79E+38 sampai -2.23E-38, 0 dan 2.23E-38 sampai 1.79E+38 dan membutuhkan tempat penyimpanan dari 4 dan 8 byte. Nilai n memiliki jangkauan dari 1 sampai 53.

2. REAL, angka aproksimasi dengan jangkauan nilai dari -1.18E-38, 0, dan 1.18E-38 sampai 3.40E+38 dan membutuhkan tempat penyimpanan 4 byte.

4.3. Date and Time

1. DATE, tanggal dengan jangkauan nilai dari 1 Januari 0001 sampai 31 Desember 9999 dan memiliki presisi 1 hari. Input data berbentuk DATE dilakukan dengan format YYYY-MM-DD.

2. DATETIME, tanggal dan waktu dengan jangkauan nilai dari 1 Januari 1753 sampai 31 Desember 9999 dan memiliki presisi 3.33 milidetik. Input data berbentuk DATETIME dilakukan dengan format YYYY-MM-DD HH:MI:SS.

3. SMALLDATETIME, tanggal dan waktu dengan jangkauan nilai dari 1 Januari 1900 sampai 6 Juni 2079 dan memiliki presisi 1 menit. Input data berbentuk SMALLDATETIME dilakukan dengan format YYYY-MM-DD HH:MI:SS.

4.4. Character Strings

1. CHAR (n), karakter non-Unicode yang panjangnya bersifat tetap terhadap kapasitas penyimpanan yang didefinisikan oleh n dan membutuhkan tempat penyimpanan sebesar n byte. Nilai n memiliki jangkauan dari 1 sampai 8,000.

2. VARCHAR (n atau max), karakter non-Unicode yang panjangnya bersifat variabel terhadap kapasitas penyimpanan yang didefinisikan oleh n dan membutuhkan

(11)

tempat penyimpanan sebesar [jumlah karakter yang disimpan + 2] byte. Nilai n memiliki jangkauan dari 1 sampai 8,000 dan max bernilai 231 – 1 byte.

3. TEXT, karakter non-Unicode yang panjangnya bersifat variabel dengan jumlah karakter maksimum sebesar 231 - 1 (2,147,483,647) dan membutuhkan tempat penyimpanan sebesar [jumlah karakter yang disimpan] byte.

4.5. Unicode Character Strings

1. NCHAR, karakter Unicode yang panjangnya bersifat tetap terhadap kapasitas penyimpanan yang didefinisikan oleh n dan membutuhkan tempat penyimpanan sebesar 2 kali n byte. Nilai n memiliki jangkauan dari 1 sampai 4,000.

2. NVARCHAR (n atau max), karakter Unicode yang panjangnya bersifat variabel terhadap kapasitas penyimpanan yang didefinisikan oleh n dan membutuhkan tempat penyimpanan sebesar 2 kali jumlah karakter yang disimpan + 2 byte. Nilai n memiliki jangkauan dari 1 sampai 4,000 dan max bernilai 230 – 1 byte.

3. NTEXT, karakter Unicode yang panjangnya bersifat variabel dengan jumlah karakter maksimum sebesar 230 - 1 (1,073,741,823) dan membutuhkan tempat penyimpanan sebesar [2 kali jumlah karakter yang disimpan] byte.

4.6. Unicode Character Strings

1. BINARY (n), data biner yang panjangnya bersifat tetap terhadap kapasitas penyimpanan yang didefinisikan oleh n dan membutuhkan tempat penyimpanan sebesar n byte. Nilai n memiliki jangkauan dari 1 sampai 8,000.

2. VARBINARY (n atau max), data biner yang panjangnya bersifat variabel terhadap kapasitas penyimpanan yang didefinisikan oleh n dan membutuhkan tempat penyimpanan sebesar [jumlah data yang disimpan + 2] byte. Nilai n memiliki jangkauan dari 1 sampai 8,000 dan max bernilai 231 – 1 byte.

3. IMAGE, data biner yang panjangnya bersifat variabel dengan jumlah data maksimum sebesar 231 - 1 (2,147,483,647) dan membutuhkan tempat penyimpanan sebesar [jumlah karakter yang disimpan] byte.

4.7. Tipe Data Lain

1. TIMESTAMP, angka biner yang unik, yang secara otomatis dihasilkan ketika terjadi perubahaan dalam suatu baris pada suatu tabel dan membutuhkan tempat penyimpanan sebesar 8 byte.

2. UNIQUEIDENTIFIER, globally unique indentifier data (GUID) yang membutuhkan

tempat penyimpanan sebesar 16 byte.

Contoh:6F9619FF-8B86-D011-B42D-00C04FC964FF.

Penggunaan jenis data ini tentunya bergantung pada data-data yang ada.

5. SQL Statement Rules

Dalam SQL, terdapat 8 perintah dasar yang sering digunakan dalam memanipulasi basis data.

(12)

● SQL Statement tidak bergantung pada huruf besar atau kecil, yang terpenting adalah konsisten dalam penulisannya. Konvensi yang disepakati adalah keyword menggunakan UPPER CASE dan nama-nama tabel/kolom menggunakan Pascal Case.

● SQL Statement dapat lebih dari satu baris, dan harus diakhiri tanda titik koma (;).

Tabulasi dan indentasi biasanya hanya digunakan untuk memudahkan pembacaan.

● Setiap query yang sudah dimasukkan tidak dapat di-undo

(13)

6. Memulai Program SQL Server 2012 Express

● Jika Anda menggunakan Windows XP/Vista/7/10, pada start menu cari Microsoft SQL Server 2012, lalu klik SQL Server Management Studio.

● Jika Anda menggunakan Windows 8, buka Start Sreen. Ketik “SQL” lalu klik SQL Server Management Studio

(14)

● Isi server name dengan Nama PC Anda, diikuti tanda “ \ “ , lalu diikuti

“SQLEXPRESS”. Kemudian klik Connect. Jika koneksi server berhasil, maka di Object Explorer akan muncul tampilan berikut :

Microsoft SQL Server 2012 siap digunakan.

● Klik New Query untuk memulai menulis syntax pada Microsoft SQL Server 2012.

Seperti tampilan di bawah ini:

● Setelah itu, Anda bisa menuliskan syntax pada Microsoft SQL Server 2012 ini.

Setelah menuliskan syntax, jangan lupa untuk meng-execute dengan menekan tombol F5. Setiap menulis syntax, Anda harus menekan tombol F5 untuk meng-execute syntax tersebut.

(15)

7. Membuat, Memodifikasi, dan Menghapus Tabel

7.1. Membuat Database

Perintah SQL untuk membuat database baru adalah:

Sebagai contoh:

7.2. Membuat Tabel

Perintah SQL untuk membuat suatu tabel baru yang kosong adalah sebagai berikut:

Catatan:

● Untuk setiap kolom, nama kolom dan tipe data harus ditentukan dan setiap nama kolom harus unik.

● Definisi kolom dipisahkan dengan tanda koma.

● Tidak ada perbedaan huruf besar maupun huruf kecil dalam pemberian nama.

Penggunaan 
perbedaan huruf besar kecil hanya pada operasi pembanding string.

● Jika kondisi NOT NULL tidak ditentukan untuk sebuah kolom, maka nilai atribut null diperbolehkan dan dua buah record yang memiliki nilai atribut null untuk kolom tersebut tidak melanggar konstrain.

● Jika nama kolom atau nama tabel tidak menggunakan spasi, nama ditulis langsung apa 
adanya. Contoh: No_Reg_Artis

● Jika nama kolom atau nama tabel memakai spasi, nama kolom harus diapit oleh tanda “[“ dan “]”. Contoh: [No Reg Artis]

Bentuk dasar tabel yang dibuat pada SQL Server adalah sebagai berikut:

NAMA TABEL

Kolom 1 Kolom 2 Kolom 3 ... Kolom n Isi Kolom Isi Kolom Isi Kolom Isi Kolom Isi Kolom

(16)

Sebagai contoh:

1) Tabel Artis

Membuat tabel Artis dengan spesifikasi kolom-kolom sebagai berikut:

Nama Kolom Tipe Allow Nulls

No_Reg_Artis NVARCHAR(10) No

Nama NVARCHAR(30) No

Manajemen NVARCHAR(30) No

Alamat NVARCHAR(30) No

2) Tabel Film

Membuat tabel Film dengan spesifikasi kolom-kolom sebagai berikut:

Nama Kolom Tipe Allow Nulls

ID_Film NVARCHAR(10) No

Judul NVARCHAR(30) No

Produser NVARCHAR(30) No

Tanggal_Rilis DATE No

(17)

3) Tabel Peran

Membuat tabel Pendaftaran dengan spesifikasi kolom-kolom sebagai berikut:

Nama Kolom Tipe Allow Nulls

No_Peran NVARCHAR(10) No No_Reg_Artis NVARCHAR(10) No

ID_Film NVARCHAR(10) No

Nama_Tokoh NVARCHAR(30) No

Bayaran INT Yes

7.3. Memodifikasi Tabel

Modifikasi tabel seperti mengubah tipe data kolom, menambah kolom, menambah constraint primary key dan foreign key dimungkinkan dalam SQL. Perintah yang digunakan adalah ALTER TABLE.

7.3.1. Menambahkan Kolom

Perintah SQL untuk menambahkan kolom adalah:

Contoh : Tambahkan kolom Keterangan pada tabel Artis.

Perintah di atas akan mengubah tabel Artis dengan menambah kolom baru yakni kolom Keterangan dengan tipe nvarchar (256 karakter).

Catatan :

(18)

● Kolom yang baru ditambahkan tidak boleh memiliki tipe data NOT NULL.

● Penggunaan syntax penambahan kolom di atas akan menambahkan kolom sebagai kolom terakhir.

7.3.2. Menambahkan Primary Key

Perintah SQL untuk menambahkan constraint primary key adalah:

Contoh : Tambahkan constraint primary key bernama PK_No_Reg_Artis untuk kolom No_Reg_Artis pada tabel Artis.

Query di atas akan mengubah tabel Artis dengan menambahkan constraint PK_No_Reg_Artis berjenis primary key untuk kolom No_Reg_Artis.

7.3.3. Menambahkan Foreign Key

Perintah SQL untuk menambahkan constraint foreign key adalah:

Contoh : Tambahkan constraint foreign key bernama FK_No_Reg_Artis pada tabel Peran.

foreign key tersebut adalah kolom No_Reg_Artis dari tabel Artis.

Perintah di atas akan mengubah tabel Peran dengan menambahkan constraint

FK_No_Reg_Artis berjenis foreign key untuk kolom No_Reg_Artis yang akan dihubungkan dengan tabel Artis.

7.3.4. Memodifikasi Konstrain

Perintah SQL untuk memodifikasi constraint yang semula bernilai NULL menjadi NOT NULL adalah :

(19)

Contoh : Modifikasi kolom keterangan pada tabel Artis yang sebelumnya memiliki constraint NULL menjadi NOT NULL.

Perintah di atas akan mengubah tabel Artis dengan memodifikasi kolom Keterangan dengan tipe data NVARCHAR(50) dan constraint NOT NULL.

7.3.5. Menghapus Kolom

Perintah SQL untuk menghapus kolom adalah:

Contoh : Hapus kolom Keterangan dari tabel Artis.

Perintah di atas akan mengubah tabel Artis dengan menghapus kolom Keterangan.

7.3.6. Menghapus Konstrain

● Perintah SQL untuk menghapus constraint primary key adalah:

Contoh : Hapus constraint primary key pada tabel Artis.

Perintah di atas akan mengubah tabel Artis dengan menghapus constraint primary key yang bernama PK_No_Reg_Artis

● Perintah SQL untuk menghapus constraint foreign key adalah:

Contoh : Hapus constraint foreign key pada tabel Peran

(20)

Perintah di atas akan mengubah tabel Peran dengan menghapus constraint foreign key yang bernama FK_No_Reg_Artis.

7.4. Menghapus Tabel

Perintah SQL untuk menghapus kolom adalah:

Contoh : Hapus tabel Film.

Perintah di atas akan menghapus tabel Film dari database Pemeran_Film.

(21)

8. Manipulasi Data dalam SQL

Setelah suatu tabel terbentuk dengan menggunakan perintah CREATE TABLE, record-record dapat disisipkan dalam tabel (insert), dimodifikasi (update), dan dihapus (delete).

8.1. Menyisipkan (INSERT)

Cara paling sederhana untuk menyisipkan sebuah record ke dalam tabel adalah dengan menggunakan perintah INSERT.

Perhatikan infomrasi tentang pengisian statement INSERT ini:

● Statement ini hanya berfungsi untuk pengisian satu baris pada sebuah tabel.

● Urutan nilai (value) harus mengikuti default dari urutan kolom yang dituliskan.

● Nilai karakter dan tanggal, harus diapit oleh tanda kutip (‘...’).

● Kolom yang memiliki constraint NOT NULL harus memiliki value.

● Beberapa record dapat disisipkan ke dalam tabel dalam satu statement INSERT.

Contoh : Mengisi data – data pada tabel Anggota.

atau dengan cara di bawah ini.

(22)

Perintah di atas memasukkan data pada tabel Artis dengan menambah 4 baris baru.

Hasil tabel Anggota yang didapat dari perintah INSERT yang telah dibuat di atas:

8.2. Memodifikasi (UPDATE)

Perintah UPDATE dapat digunakan untuk mengubah nilai suatu record yang berada dalam suatu tabel.

“expression” dapat berisi konstan (sebuah nilai baru), operasi string atau aritmetik atau sebuah SQL query. Perhatikan bahwa nilai baru yang di-assign pada setiap kolom harus mengikuti tipe data kolom tersebut.

Contoh: seorang Artis yang bernama Rafathar berpindah manajemen menjadi Putra Indonesia dan juga pindah alamat menjadi di Jakarta. Maka dapat dimodifikasi dengan cara berikut:

(23)

8.3. Menghapus (DELETE)

8.3.1. Menghapus Seluruh Record

Contoh : Hapuslah seluruh record yang ada dalam tabel Artis.

8.3.2. Menghapus Record Tertentu

Contoh : Hapuslah seluruh Artis yang memiliki manajemen Putra Indonesia.

9. Menampilkan Data

Untuk menampilkan data suatu tabel, kita menggunakan perintah SELECT. Berikut ini adalah perintah yang digunakan untuk menampilkan tabel Artis.

9.1. Menampilkan Seluruh Kolom

Untuk menampilkan seluruh kolom dan baris dalam suatu tabel, dapat digunakan simbol “ * ” setelah perintah SELECT. Perhatikan format penulisan query di bawah ini.

SELECT *

FROM <table_name>;

Contoh : Menampilkan keseluruhan isi tabel ‘Restoran’.

SELECT * FROM Restoran;

9.2. Menampilkan Kolom Tertentu

Untuk menampilkan kolom tertentu yang terdapat pada suatu tabel, penulisan SELECT harus diikuti dengan nama kolom yang diinginkan. Apabila terdapat lebih dari satu kolom, nama kolom dipisahkan dengan tanda koma “ , ”. Perhatikan format penulisan query di bawah ini.

SELECT <column_name1>, <column_name2>,. . . FROM <table_name>;

Contoh : Menampilkan kolom ‘Hidangan Khas’ dan kolom ‘Rating’ dari tabel ‘Masakan’.

(24)

SELECT [Hidangan Khas], Rating FROM Masakan;

9.3. Menampilkan Kolom dengan Eliminasi Duplikasi

Dalam menyajikan data, terkadang diperlukan eliminasi data yang berulang. Dengan menambahkan klausa DISTINCT setelah SELECT, SQL akan menyortir dan menampilkan record tanpa duplikasi data. Perhatikan format penulisan query di bawah ini.

SELECT DISTINCT <column_name1>, <column_name2>, . . . FROM <table_name>;

Contoh : Menampilkan kolom ‘Jenis Masakan’ dari tabel ‘Masakan’ tanpa duplikasi.

SELECT DISTINCT [Jenis Masakan]

FROM Masakan;

Contoh : Menampilkan kolom ‘Nama Koki’ dan kolom ‘Nama Restoran’ dari tabel ‘Koki’ tanpa duplikasi.

SELECT DISTINCT [Nama Koki], [Nama Restoran]

FROM Koki;

9.4. Menampilkan Kolom dengan Nama Lain

Nama kolom dapat dimanipulasi dengan nama alias pada bagian ‘Results’. Hal ini terkadang diperlukan untuk memudahkan pembaca dalam mengerti isi tabel. Untuk melakukannya, kita menggunakan klausa AS. Perhatikan format penulisan query di bawah ini.

SELECT <column_name1> AS <alias1>, <column_name2> AS <alias2>,...

FROM <table_name>;

Contoh : Menampilkan kolom ‘Nama Masakan’ dan kolom ‘Rating’ dari tabel ‘Masakan’

dengan menambahkan informasi tahun pengambilan rating.

SELECT [Hidangan Khas] AS [Nama Masakan], Rating AS [Rating tahun 2009]

FROM Masakan;

9.5. Menampilkan Data dengan Syarat

Jika record yang diinginkan memiliki kondisi tertentu, maka klausa WHERE dapat digunakan. Operator pembanding seperti =, !=, <>, <, >, <=, atau => dan operator logika AND, OR, serta NOT dapat digunakan untuk pengkondisian klausa WHERE. Perhatikan format penulisan query di bawah ini.

(25)

SELECT <column_name>

FROM <table_name>

WHERE <condition>;

Contoh : Menampilkan kolom ‘Nama Koki’ dari ‘Jack&Jack’.

SELECT [Nama Koki]

FROM Koki

WHERE [Nama Restoran] = ‘Jack&Jack’;

Contoh : Menampilkan kolom ‘Hidangan Khas’ yang memiliki rating lebih dari 8.

SELECT [Hidangan Khas]

FROM Masakan WHERE Rating > 8;

Contoh : Menampilkan kolom ‘Nama Koki’ yang tidak memiliki restoran.

SELECT [Nama Koki]

FROM Koki

WHERE [Nama Restoran] is NULL;

10. Pengolahan Data

10.1. Menampilkan dengan Fungsi Aritmatika

Fungsi aritmatika merupakan fungsi yang digunakan untuk pengolahan data menggunakan operator +, -, /, *, dan lain-lain. Operator aritmatika akan berlaku untuk setiap record.

Contoh : Menampilkan kolom ‘Nama Restoran’ dan Jumlah Pelanggan dalam 2 tahun.

SELECT [Nama Restoran], [Jumlah Pelanggan (2018,ribu)] + [Jumlah Pelanggan (2019,ribu)] AS [Jumlah Pelanggan (2018 & 2019, ribu)]

FROM Restoran;

10.2. Menampilkan dengan Fungsi Matematika

Fungsi matematika berikut akan memperlihatkan sebuah kalkulasi, umumnya sesuai dengan input values yang diletakkan pada argumen. Fungsi ini hanya dapat digunakan pada record yang merupakan angka. Terdapat fungsi ABS, CEILING, ROUND, FLOOR, POWER, dan SIN sebagai contoh penggunaan fungsi matematika pada SQL.

Contoh : Menampilkan pembulatan ke atas dari nilai kolom ‘Rating’ dari tabel ‘Masakan’.

(26)

SELECT CEILING (Rating) FROM Masakan;

10.3.

Menampilkan dengan Fungsi Agregasi

Fungsi agregasi digunakan untuk mengolah seluruh record atau record tertentu yang memenuhi kondisi yang didefinisikan hingga menghasilkan sebuah nilai. Misalnya nilai rata-rata, maksimum, jumlah, dan sebagainya.

Fungsi agregasi yang akan dipelajari adalah fungsi COUNT, MAX, MIN, SUM, dan AVG.

Perhatikan bahwa perintah AVG, MIN, dan MAX mengabaikan record dengan nilai null (null value) untuk atribut terkait, tetapi COUNT mengikutkan nilai null. Perhatikan format penulisan query di bawah ini.

SELECT AGGREGATE_FUNCTION (<column_name>) FROM <table_name>;

10.3.1. COUNT

Fungsi COUNT digunakan untuk menghitung jumlah baris dari perintah SELECT. Keyword ini dapat dikombinasikan dengan DISTINCT untuk menghindari redundansi.

Contoh : Menampilkan hasil perhitungan jumlah baris yang berada dalam tabel ‘Restoran’.

SELECT COUNT(*) FROM Restoran;

10.3.2. MAX dan MIN

Fungsi MIN digunakan untuk menghitung nilai minimum dari sebuah kolom, sedangkan fungsi MAX digunakan untuk menghitung nilai maksimum dari sebuah kolom. Fungsi MIN dan MAX hanya berlaku untuk kolom dengan tipe data number.

Contoh : Menampilkan nilai minimum dari kolom ‘Jumlah Pelanggan 2018’ dengan alias ‘Jumlah Pelanggan Minimal 2018‘ dan nilai maksimum dari kolom ‘Jumlah Pelanggan 2018’ dengan alias

‘Jumlah Pelanggan Maksimal 2018‘

SELECT MIN([Jumlah Pelanggan (2018, ribu)]) AS [Jumlah Pelanggan Minimal 2018], MAX ([Jumlah Pelanggan (2018, ribu)]) AS [Jumlah Pelanggan Maksimal 2018]

FROM Restoran;

10.3.3. SUM

Fungsi SUM digunakan untuk menghitung jumlah dari seluruh data yang terdapat pada suatu kolom (hanya berlaku untuk tipe data number).

(27)

Contoh : Menampilkan total pelanggan dari kolom ‘Jumlah Pelanggan 2018’ dari tabel ‘Restoran’

dengan alias ‘Total Pelanggan 2018’.

SELECT SUM([Jumlah Pelanggan (2018, ribu)]) AS [Total Pelanggan 2018]

FROM Restoran;

10.3.4.

AVG

Fungsi AVG digunakan untuk menghitung nilai rata-rata dari sebuah kolom (hanya berlaku untuk tipe data number).

Contoh : Menampilkan nilai rata-rata data pada kolom ‘Jumlah Pelanggan (2018)’ dengan alias

‘Rata-rata Pelanggan 2018’.

SELECT AVG([Jumlah Pelanggan (2018, ribu)]) AS [Rata-rata Pelanggan 2018]

FROM Restoran;

11. Pengurutan dan Pengelompokan Data

Dalam melakukan pengurutan dan pengelompokan data, dapat dilakukan sebagai berikut.

11.1. Mengurutkan Data

Dalam melakukan pengurutan data, kita memadukan perintah SELECT dengan klausa ORDER BY. Perhatikan format penulisan query di bawah ini.

SELECT <column_name1>, <column_name2>

FROM <table_name>

ORDER BY <column_name>;

Secara default, ORDER BY didefinisikan sebagai pengurutan dari yang terkecil sampai yang terbesar (ascending). Jika diperlukan pengurutan dari yang terbesar sampai yang terkecil (descending), maka diperlukan keyword tambahan DESC. Perhatikan format penulisan query di bawah ini.

SELECT <column_name1>, <column_name2>

FROM <table_name>

ORDER BY <column_name> DESC;

Contoh: Menampilkan kolom ‘Nama Koki’ dari tabel ‘Koki’ dengan pengurutan data, baik secara ascending atau descending.

(28)

SELECT [Nama Koki] SELECT [Nama Koki]

FROM Koki FROM Koki

ORDER BY [Nama Koki]; ORDER BY [Nama Koki] DESC;

11.2. Mengelompokkan Data

Pengelompokan data dapat dilakukan dengan menggunakan klausa GROUP BY. GROUP BY akan mengelompokkan baris berdasarkan kesamaan data dalam kolom yang anda tentukan. GROUP BY juga memungkinkan penerapan fungsi agregasi terhadap satu kolom atau lebih. Perhatikan format penulisan query di bawah ini.

SELECT <column_name1>, AGGREGATE_FUNCTION <column_name2>

FROM <table_name>

GROUP BY <column_name1>;

Dengan menggunakan perintah di atas, kita menerapkan fungsi agregasi AGGREGATE_FUNCTION kepada kolom <column_name2> untuk setiap nilai

<column_name1>.

Contoh : Mengetahui jumlah koki dari setiap restoran .

SELECT [Nama Restoran], COUNT([Nama Koki]) AS [Jumlah Koki]

FROM Koki

GROUP BY [Nama Restoran];

Dari hasil tersebut, kita dapat melihat query di atas menghitung jumlah koki di setiap restoran, termasuk yang bernilai null. Kita mengaplikasikan fungsi agregat COUNT pada kolom ‘Jumlah Koki’ untuk setiap data ‘Nama Restoran’. Lalu memberikan nama ‘Jumlah Koki’ sebagai nama alias terhadap hasil fungsi agregat tersebut.

Contoh : Menampilkan jumlah masakan dan sekaligus menampilkan rating maksimal untuk masing-masing jenis masakan dari tabel ‘Masakan’.

SELECT [Jenis Masakan], COUNT([Hidangan Khas]) AS [Jumlah Masakan], MAX(Rating) AS [Rating Maksimal]

FROM Masakan

GROUP BY [Jenis Masakan];

Kita dapat menampilkan hasil dari GROUP BY yang memenuhi kondisi tertentu saja dengan menambahkan klausa HAVING dan operator relasional (<. >, =, <=, >=). Untuk menampilkan Nama Restoran yang memiliki 1 koki, dapat digunakan query berikut.

(29)

SELECT [Nama Restoran], COUNT([Nama Koki]) AS [Jumlah Koki]

FROM Koki

GROUP BY [Nama Restoran]

HAVING COUNT([Nama Koki]) = 1;

Contoh : Menampilkan kolom ‘Jenis Masakan’ yang hanya memiliki kurang dari 3 varian.

SELECT [Jenis Masakan], COUNT([Hidangan Khas]) AS [Jumlah Masakan]

FROM Masakan

GROUP BY [Jenis Masakan]

HAVING COUNT([Hidangan Khas]) < 3;

12. Pencarian Data

Subbab ini berisi pengolahan data berupa pencarian data menggunakan query LIKE dan operator % dan _.

Selain menampilkan, mengolah, mengurutkan, dan mengelompokkan data, kita juga dapat melakukan pencarian data dengan memadukan perintah SELECT yang disertai klausa WHERE dengan klausa LIKE. Klausa LIKE sangat berguna karena memungkinkan kita untuk memilih baris-baris yang menyerupai apa yang kita ingin tentukan. Tanda “%” dapat digunakan sebagai wild card untuk mewakili semua karakter yang mungkin muncul sebelum atau sesudah karakter yang kita tentukan.

Misalkan kita hanya ingin menampilkan record dengan nama hidangan khas yang diawali kata “Chicken”.

SELECT * FROM Masakan

WHERE [Hidangan Khas] LIKE 'Chicken%';

Atau kita ingin menampilkan record yang mengandung kata “Veg”.

SELECT * FROM Masakan

WHERE [Hidangan Khas] LIKE '%Veg%';

Atau kita ingin menampilkan record yang diakhiri dengan kata “Truffle”.

SELECT * FROM Masakan

(30)

WHERE [Hidangan Khas] LIKE '%Truffle';

Selain menggunakan wild card “%”, kita juga dapat menggunakan wild card “_” untuk mewakili sebuah karakter saja, berbeda dengan wild card “%” yang dapat mewakili banyak karakter.

Misalnya, kita ingin menampilkan record dengan Kode Pos yang diawali dengan “DL” dan diakhiri dengan satu karakter.

SELECT * FROM Restoran

WHERE [Kode Pos] LIKE 'DL_';

Atau kita ingin menampilkan record dengan Kode Pos yang diawali dengan “D” dan diakhiri dengan

“9” dengan satu karakter di antara keduanya.

SELECT * FROM Restoran

WHERE [Kode Pos] LIKE 'D_9';

13. Tables

Setelah kita mempelajari tentang bagaimana menampilkan data, mengolah data, mengurutkan data, mengelompokkan data, dan mencari data, pada bagian ini kita akan menggabungkan dua tabel dengan menggunakan klausa JOIN. Ada 2 jenis klausa JOIN yang akan dipelajari, yaitu INNER JOIN dan OUTER JOIN.

13.1. INNER JOIN

INNER JOIN dikenal juga sebagai Equi-join atau Simple Join. Tipe join ini digunakan apabila ingin menampilkan isi dari kolom tertentu pada suatu tabel dan menggabungkannya dengan kolom tertentu pada tabel lainnya berdasarkan kesamaan isi dari kolom yang sama-sama dimiliki oleh kedua tabel tersebut, yaitu Primary Key dan Foreign Key. Operator yang digunakan adalah INNER JOIN dengan syntax query sebagai berikut.

SELECT <table_name1>.<column_name1>, <table_name2>.<column_name2>, ...

FROM <main_table> INNER JOIN <joined_table>

ON <main_table>.<connecting_column> = <joined_table>.<connecting_column>;

Contoh : Menampilkan join table (tabel gabungan) antara kolom ‘Nama Koki’ dari tabel ‘Koki’

dan kolom ‘Kode Pos’ dari tabel ‘Restoran’.

(31)

SELECT Koki.[Nama Koki], Restoran.[Kode Pos]

FROM Koki INNER JOIN Restoran

ON Koki.[Nama Restoran] = Restoran.[Nama Restoran];

Contoh : Menampilkan kolom ‘Hidangan Khas’ dan kolom ‘Nama Koki’ dari tabel ‘Masakan’, kolom ‘Nama Restoran’ dari tabel ‘Koki’, dan kolom ‘Kode Pos’ dari tabel ‘Restoran’.

SELECT Masakan.[Hidangan Khas], Masakan.[Nama Koki], Koki.[Nama Restoran], Restoran.[Kode Pos]

FROM Masakan INNER JOIN Koki

ON Masakan.[Nama Koki] = Koki.[Nama Koki]

INNER JOIN Restoran

ON Restoran.[Nama Restoran] = Koki.[Nama Restoran];

13.2. OUTER JOIN

Fungsi join yang digunakan untuk melihat semua baris yang terdapat pada tabel utama yang dihubungkan dengan tabel lainnya. Berbeda dari fungsi INNER JOIN, fungsi OUTER JOIN ini juga menampilkan baris yang tidak memenuhi syarat join yang diberikan. Outer Join dinyatakan dengan operator OUTER JOIN.

Pada bagian ini kita akan belajar dua jenis statement Outer Join, yaitu RIGHT OUTER JOIN, LEFT OUTER JOIN, dan FULL OUTER JOIN. Perbedaannya adalah kolom yang menjadi acuan untuk tampilan eksekusi. Jika menggunakan Right Outer Join, yang dijadikan acuan adalah tabel yang statement-nya berada di sebelah kanan statement Right Outer Join tersebut. Sebaliknya, jika menggunakan Left Outer Join, maka kolom yang dijadikan acuan adalah tabel yang statement-nya berada di sebelah kiri statement Left Outer Join.

Sedangkan, Full Outer Join menggabungkan isi kedua kolom yang dipilih pada tabel seluruhnya tanpa menentukan acuan dari kedua tabel tersebut.

13.2.1. Right Outer Join

Syntax yang digunakan adalah sebagai berikut:

SELECT

<table_name1>.<column_name1>,<table_name2>.<column_name2>, ...

FROM <main_table> RIGHT OUTER JOIN <joined_table>

ON <main_table>.<connecting_column> =

<joined_table>.<connecting_column>;

Contoh : Menampilkan kolom ‘Nama Koki’ dari tabel ‘Koki’ dan kolom ‘Kode Pos’ dari tabel

‘Restoran’ dengan acuan tabel ‘Restoran’.

(32)

SELECT Koki.[Nama Koki], Restoran.[Kode Pos]

FROM Koki RIGHT OUTER JOIN Restoran

ON Koki.[Nama Restoran] = Restoran.[Nama Restoran];

Terlihat ada sel yang nilainya null di kolom ‘Nama Koki’. Hal ini hanya bisa terjadi jika menggunakan Outer Join. Jika menggunakan Inner Join, maka baris dengan sel yang bernilai null di salah satu tabel tidak akan ditampilkan.

13.2.2. Left Outer Join

Syntax yang digunakan adalah sebagai berikut:

SELECT

<table_name1>.<column_name1>,<table_name2>.<column_name2>, ... FROM

<main_table> RIGHT OUTER JOIN <joined_table> ON

<main_table>.<connecting_column> =

<joined_table>.<connecting_column>;

Contoh: Menampilkan kolom ‘Nama Koki’ dari tabel ‘Koki’ dan kolom ‘Kode Pos’ dari tabel

‘Restoran’ dengan acuan tabel ‘Koki’.

SELECT Koki.[Nama Koki], Restoran.[Kode Pos]

FROM Koki LEFT OUTER JOIN Restoran

ON Koki.[Nama Restoran] = Restoran.[Nama Restoran];

Berbeda dengan saat menggunakan Right Outer Join, muncul nilai null di kolom ‘Kode Pos’.

Hal ini terjadi karena acuan yang dipakai adalah tabel ‘Koki’, sehingga baris bernilai null di kolom ‘Kode Pos’ (tabel ‘Restoran’) dan memiliki isi di kolom ‘Nama Koki’ (tabel ‘Koki’) akan tetap ditampilkan.

13.2.3. Full Outer Join

Syntax yang digunakan adalah sebagai berikut:

SELECT <table_name1>.<column_name1>,<table_name2>.<column_name2>, ...

FROM <main_table> FULL OUTER JOIN <joined_table>

ON <main_table>.<connecting_column> =

<joined_table>.<connecting_column>;

Contoh: Menampilkan kolom ‘Nama Koki’ dari tabel ‘Koki’ dan kolom ‘Kode Pos’ dari tabel

‘Restoran’ tanpa acuan tabel apapun.

(33)

SELECT Koki.[Nama Koki], Restoran.[Kode Pos]

FROM Koki FULL OUTER JOIN Restoran

ON Koki.[Nama Restoran] = Restoran.[Nama Restoran];

14. Sub Queries

Subquery merupakan query yang terdapat di dalam suatu query yang lain. Subquery ini disebut juga Inner Query atau Nested Query. Subquery dapat digunakan di manapun suatu ekspresi diperbolehkan. Pada modul ini, terdapat 4 (empat) jenis subquery yang akan dijelaskan, yaitu:

14.1. Subquery with IN or NOT IN

Subquery ini digunakan untuk melakukan statement query (SELECT, INSERT, UPDATE, atau DELETE) untuk record-record yang memiliki kesamaan (IN) atau ketidaksamaan nilai (NOT IN) dengan kriteria yang diberikan. Untuk memahami lebih jelas penggunaan query ini, dapat melihat contoh berikut.

Contoh : Menampilkan kolom ‘Hidangan Khas’ dari koki yang debut di bawah tahun 2015.

SELECT [Hidangan Khas]

FROM Masakan WHERE [Nama Koki] IN

(SELECT [Nama Koki]

FROM Koki

WHERE [Tahun Debut] < 2015);

Contoh : Menampilkan kolom ‘Hidangan Khas’ selain dari koki yang debut di bawah tahun 2015.

SELECT [Hidangan Khas]

FROM Masakan

WHERE [Nama Koki] NOT IN (SELECT [Nama Koki]

FROM Koki

WHERE [Tahun Debut] < 2015);

14.2. Subquery with UPDATE, DELETE, and INSERT

Penggunaan subquery dapat digabungkan dengan perintah manipulasi data UPDATE, DELETE, dan INSERT. Dengan memanfaatkan berbagai perintah manipulasi data, dapat digunakan sebagai berikut:

Restoran Jack&Jack sedang melakukan pengubahan sistem rating yang awalnya menggunakan skala 1-10 menjadi 1-5. Berikut query yang diperlukan untuk melakukan UPDATE terhadap Kolom ‘Rating’ pada tabel ‘Masakan’ dihubungkan dengan kolom ‘Nama Restoran’ pada tabel ‘Koki’ menggunakan subquery IN dan UPDATE. Sebelumnya ubah terlebih dahulu tipe data kolom ‘Rating’ dari INT menjadi FLOAT.

(34)

ALTER TABLE Masakan

ALTER COLUMN [Rating] FLOAT;

UPDATE Masakan SET [Rating] = [Rating] / 2 WHERE [Nama Koki] IN

(SELECT [Nama Koki] FROM Koki WHERE [Nama Restoran] = 'Jack&Jack');

Penggunaan subquery dengan UPDATE memiliki hasil yang sama jika menggunakan query INNER JOIN sebagai berikut:

UPDATE Masakan SET [Rating] = [Rating] / 2 FROM Masakan

INNER JOIN Koki

ON Masakan.[Nama Koki] = Koki.[Nama Koki]

AND [Nama Restoran] = 'Jack&Jack';

14.3. Subquery with Comparison Operators

Terkadang user hanya ingin menampilkan atau melakukan statement query lainnya untuk beberapa record pada suatu database yang nilai pada salah satu kolomnya memenuhi suatu kriteria tertentu. Pada kondisi seperti itulah subquery ini digunakan, yaitu dengan membandingkan nilai pada suatu kolom dari record tersebut dengan kriteria yang ditetapkan. Operasi perbandingan (comparison operators) terdiri dari =, < >, >, > = , <, ! > , !

< , dan < = .

Contoh : Menampilkan daftar restoran yang memiliki jumlah pelanggan di tahun 2019 di bawah rata-rata.

SELECT [Nama Restoran]

FROM Restoran

WHERE [Jumlah Pelanggan (2019, ribu)] < (SELECT AVG([Jumlah Pelanggan (2019, ribu)]) FROM Restoran);

14.4. Subquery with EXISTS or NOT EXISTS

Selain mencari query bersyarat dengan operator logika, user juga dapat mencari record yang ada maupun tidak ada pada tabel subquery.

14.4.1. EXISTS

EXISTS umumnya digunakan untuk menampilkan data bersyarat, dengan syaratnya adalah

(35)

record harus ada pada tabel, bahkan bisa terdiri dari beberapa record. Untuk melakukan hal ini dibutuhkan kombinasi klausa WHERE dengan klausa tambahan EXISTS.

Contoh : Menampilkan record tabel ‘Koki’ yang memiliki korelasi dengan tabel ‘Restoran’.

SELECT * From Koki WHERE EXISTS

(SELECT * FROM Restoran

WHERE Koki.[Nama Restoran] = Restoran.[Nama Restoran]);

14.4.2. NOT EXISTS

NOT EXISTS umumnya digunakan untuk menampilkan data bersyarat, tetapi syaratnya adalah record tertentu tidak ada pada tabel. Untuk melakukan hal ini maka dibutuhkan kombinasi klausa WHERE dengan klausa tambahan yaitu NOT EXISTS.

Contoh : Menampilkan record tabel ‘Koki’ yang tidak memiliki korelasi dengan tabel

‘Restoran’.

SELECT * From Koki

WHERE NOT EXISTS (SELECT *

FROM Restoran

WHERE Koki.[Nama Restoran] = Restoran.[Nama Restoran]);

(36)

FAQ (Frequently Asked Questions)

1. Apakah Microsoft SQL dapat di-install pada Macbook?

Hingga saat ini, Microsoft SQL Server belum dapat disupport oleh software iOS.

2. Apa arti nomor yang ada di sebelah tipe kolom? (Contoh : NVARCHAR(10)) Nomor tersebut adalah jumlah maksimum karakter dari data yang akan di-input.

3. Apakah bisa menuliskan nama kolom/tabel dengan menggunakan spasi?

Bisa, namun perlu diapit dengan kurung siku [ ].

Sebagai contoh, akan dimasukkan kolom Nama Lengkap untuk tabel Artis. Perintah yang digunakan adalah :

4. Apa perbedaan CHAR dan VARCHAR?

CHAR adalah tipe data string yang panjangnya bersifat tetap untuk kapasitas penyimpanannya berdasarkan n yang ditentukan. CHAR memerlukan 1 byte untuk penyimpanan 1 karakter. Misalnya, untuk CHAR(50), diperlukan 50 bytes di disk untuk setiap inputnya, tidak memperhatikan banyaknya karakter yang di-insert.

Sedangkan, VARCHAR adalah tipe data string yang panjangnya bersifat variabel untuk kapasitas penyimpanan sehingga n yang didefinisikan hanya sebagai batas maksimal karakter yang bisa di-input. VARCHAR memerlukan kapasitas penyimpanan sebesar [jumlah karakter yang disimpan + 2] byte. Misalnya, untuk VARCHAR(50) dan inputan datanya ‘AIDAN’, diperlukan 5 bytes (untuk A, I, D, A, dan N) + 2 bytes yang totalnya menjadi 7 bytes.

5. Kapan penggunaan CHAR lebih dianjurkan dibandingkan VARCHAR?

Hanya dalam kondisi tertentu penggunaan CHAR lebih menghemat space. Kondisi ini adalah apabila jumlah karakter yang di-input untuk kolom tersebut selalu tetap (misalnya, karakter yang di-input selalu berjumlah 10 dan sebagainya). Misalnya, dalam input untuk kolom singkatan negara bagian di United States yang hanya memerlukan dua karakter sehingga penggunaan CHAR(2) akan lebih menghemat penyimpanan dibandingkan VARCHAR(2).

6. Apakah memasukkan data angka harus diapit dengan tanda ‘ ? Tidak, cukup ditulis angka nya saja.

7. Apa perbedaan Primary Key dan Unique Key?

Pada dasarnya primary key merupakan unique key. Dalam satu tabel hanya terdapat satu primary key namun bisa beberapa unique key. Primary key juga harus bersifat not null sedangkan unique key memungkinkan satu value bersifat null.

(37)

8. Apa yang terjadi ketika saya tidak mencantumkan tipe data, baik NULL atau NOT NULL, dalam syntax ketika membuat kolom pada tabel?

Ketika Anda tidak mencantumkan tipe data baik NULL maupun NOT NULL pada syntax dalam pembuatan kolom maka secara default kolom yang Anda buat pada tabel

tersebut akan bertipe NULL.

9. Apakah perlu menggunakan tanda ' saat ingin memasukkan data bertipe DATE? Bagaimana format penulisan data bertipe DATE?

Data bertipe DATE perlu dimasukkan menggunakan tanda ' dan format penulisannya 'YYYY-MM-DD'.

10. Bagaimana cara saya mengetahui bahwa suatu tabel sudah berhasil dibuat dan berada dalam database yang saya buat?

Setelah command pembuatan database berhasil, pastikan Anda memilih database tersebut menjadi tempat Anda memasukkan data selanjutnya (perhatikan kotak merah) Saat telah berhasil terbuat, nama tabel akan muncul di dalam folder Tables dalam database Anda (perhatikan kotak biru).

11. Apakah dapat melakukan undo?

Tidak bisa, oleh karena itu disarankan untuk melakukan execute secara bertahap sehingga mudah identifikasi kesalahan. Namun, untuk beberapa kasus kesalahan dapat dilakukan dengan mengeksekusi query ALTER TABLE.

12. Apakah enter dan penggunaan huruf kapital akan mempengaruhi pembacaan query?

(38)

Tidak, query dalam SQL Server 2012 tidak case sensitive serta penggunaan enter tidak mempengaruhi hasil pembacaan perintah.

(39)

Selamat bekerja!

Referensi

Dokumen terkait

Sebuah sistem basis data (DBMS) yang handal dapat dilihat dari mekanisme cara kerja yang optimal dalam melakukan eksekusi proses pada perintah-perintah SQL (query) yang dibuat oleh

 Mengomunikasi kan tentang bahasa SQL dasar untuk memanipulasi tabel dalam basis data 3.9 Menerapkan. fungsi agregasi dalam

arsitektur basis data, konsep database management system (DBMS), data dictionary, arsitektur basis data multiuser dan mampu menjelaskan konsep dasar SQL arsitektur basis

Selain itu, untuk mengelola dan memanggil query basis data agar dapat disajikan dalam berbagai bentuk yang diinginkan dibutuhkan perangkat lunak yang disebut Sistem Manajemen Basis

Kesimpulan yang dapat diambil dari “Desain Basis Data Sistem Informasi Akademik SMP XYZ dengan Menggunakan Oracle SQL Developer Data Modeler” adalah menghasilkan

literatur (deduktif dan induktif), pengumpualn data, pembuatan tabel, pembuatan SQL, pengujian, pembahasan, dan penarikan simpulan. Hasil penelitian secara rinci tersusun pada

Pengamanan Basis Data 9.1 Perintah SQL untuk pengamanan basis data Perintah utama pemberian otorisasi ini adalah: Grant dengan sintax :Grant on < nama objek basis data> To - :

Skema Relasi “SAKILA” Soal : Tuliskan SQL dan aljabar relasional untuk pemrosesan query pada database "SAKILA" beserta contoh screenshot hasil dengan ketentuan sebagai berikut :