Anda di halaman 1dari 27

adalah nama sebuah bahasa pemrograman sekaligus software untuk pengolahan data dan


grafik.
R sangat popular saat ini karena tiga hal berikut:

 Banyak pilihan pengolahan data dengan jumlah fitur yang sangat komplit - dari grafik
sampai machine learning.
 Lebih cepat dipelajari dan dijalankan untuk mengolah data dibandingkan dengan
bahasa lain. 
 R bersifat gratis dan open source yang artinya, tidak perlu biaya lisensi yang biasanya
sangat mahal untuk software pengolahan data.

"Tidak ada asap tanpa api", demikian suatu peribahasa yang berarti tidak ada rumor tanpa ada
fakta yang menyertainya. Kepopuleran bahasa R disebabkan karena penggunaannya pada
berbagai perusahaan besar dunia. Perusahaan besar yang dimaksud diantaranya adalah AirBnB
untuk data science, Microsoft untuk menambahkan fungsionalitas di produk-produknya, Uber
untuk analisa statistik, Facebook untuk behavior analysis, dan lain-lain.

Comment pada R
Comment merupakan teks untuk menambahkan keterangan pada kode yang ditulis.
Penambahan keterangan ini akan mengingatkan kita kembali ketika membuka code tersebut di
suatu waktu di masa depan. 
Comment tidak dianggap sebagai code yang dapat dieksekusi. 
Penggunaan comment dalam bahasa R dapat dilakukan dengan mengawali suatu teks dengan
tanda '#'.

Berikut ini merupakan contoh penggunaan comment

10 + 7 #Ini adalah baris komentar

atau seperti ini

#Ini adalah baris komentar.


10 + 7

Vector pada R
Vector merupakan sebuah struktur data yang dapat menyimpan lebih dari satu data yang akan
digunakan di R.
 
Penggunaannya sangat sederhana, yaitu menggunakan fungsi c disertai data-data yang ingin
disimpan. Perhatikan potongan kode berikut

c(5, 10, 20)

ini artinya kamu akan menyimpan nilai 5, 10 dan 20 dalam satu struktur yang disebut vektor.
Selanjutnya, jika kamu ingin menyimpan rangkaian angka yang terurut, misalkan angka 1 sampai
dengan 20, maka kamud dapat dapat mengetikkan potongan kode berikut
c(1:20)

Praktek: Penggunaan Vector - Bagian Satu


Ketikkanlah perintah c(3, 10, 15) pada Code Editor

c(3, 10, 15)

Klik tombol Run dan perhatikan output yang dihasilkan pada bagian Console. Di sini dapat


kamu melihat hasil sebagai berikut

> c(3, 10, 15)


[1] 3 10 15

Terlihat bahwa perintah c(3, 10, 15) ini membuat tiga urutan angka yaitu 3, 10 dan 15 yang
disimpan dan ditampilkan secara bersamaan dalam suatu vector.

Praktek: Penggunaan Vector - Bagian Dua


Selain mengetikkan satu per satu data pada vector, kita juga dapat membuat urutan data
dengan menggunakan operator titik dua. Cobalah ketikkan perintah berikut pada code editor

c(1:5)

Klik tombol Run dan perhatikan output yang dihasilkan pada bagian Console yang ditampilkan


sebagai berikut.

> c(1:5)
[1] 1 2 3 4 5

Terlihat bahwa perintah c(1:5) membuat vector dengan lima urutan angka yang dimulai dari 1
dan diakhiri nilai 5. 

Menggunakan Fungsi Summary


Kekuatan bahasa pemrograman R terdapat pada fungsi-fungsi bawaan yang kaya untuk
dipergunakan dalam analisis data. Salah satu fungsi ini  adalah fungsi bernama summary yang
bisa digunakan untuk menyimpulkan data yang lagi kita proses. Kesimpulan ini berupa nilai
statistik deskriptif dari data yang dimiliki, diantaranya nilai minimum, nilai kuartil pertama, nilai
tengah (median), nilai kuartil ketiga, dan nilai maksimum data.
Ketikkanlah perintah berikut di Code Editor agar kita dapat melihat karakteristik dari vector c(1:5)

summary(c(1:5))

Jalankan dan kamu akan mendapatkan hasil pada Console seperti berikut. Kamu dapat men-
scroll ke bawah untuk mengetahui penjelasannya.

Min. 1st Qu. Median Mean 3rd Qu. Max.


1 2 3 3 4 5

Ini artinya dari vector tersebut terdapat angka paling kecil 1 (Min), angka paling besar 5 (Max),
angka rata-rata 3 (Mean), dan angka tengah 3 (Median). Untuk 1st Qu dan 3rd Qu kita abaikan
dulu.

Bahasa SQL
SQL adalah akronim dari Bahasa Permintaan Terstruktur/Structured Query Language.
SQL digunakan untuk berkomunikasi dengan database hubungan. Pernyataan SQL
digunakan untuk melakukan tugas seperti memperbarui data dalam database, atau
mengambil data dari database. Sebagai contoh, pernyataan SQL SELECT digunakan
untuk kueri database dan mengembalikan satu set baris data. Beberapa sistem
manajemen database relasional umum yang menggunakan SQL meliputi Microsoft
SQL Server, MySQL, PostgreSQL, MariaDB, dan Oracle.

Ada standar bahasa SQL yang ditentukan oleh American National Standards Institute
(ANSI). Setiap vendor menambahkan variasi dan ekstensi mereka sendiri.

Dalam modul ini, Anda akan mempelajari cara:

 Memahami tentang SQL dan bagaimana penggunaannya


 Mengidentifikasi objek database dalam skema
 Mengidentifikasi jenis pernyataan SQL
 Menggunakan pernyataan SELECT untuk kueri tabel dalam database
 Bekerja dengan tipe data
 Handel NUL

Transact-SQL
Pernyataan laporan SQL, seperti SELECT, INSERT, UPDATE, dan DELETE tersedia apa
pun sistem database hubungan yang sedang Anda kerjakan. Meskipun pernyataan
SQL ini adalah bagian dari standar SQL ANSI, banyak sistem manajemen database
yang juga memiliki ekstensinya sendiri. Ekstensi ini menyediakan fungsionalitas yang
tidak dicakup oleh standar SQL, dan mencakup area seperti manajemen keamanan
dan programabilitas. Sistem database Microsoft seperti SQL Server, Azure SQL
Database, Azure Synapse Analytics, dan lainnya menggunakan dialek SQL yang
disebut Transact-SQL, atau T-SQL. T-SQL mencakup ekstensi bahasa untuk menulis
prosedur dan fungsi tersimpan, yaitu kode aplikasi yang disimpan dalam database,
dan mengelola akun pengguna.

SQL adalah bahasa Deklaratif


Bahasa pemrograman dapat dikategorikan sebagai prosedural atau deklaratif. Bahasa
prosedural memungkinkan Anda menentukan urutan instruksi yang diikuti komputer
untuk melakukan tugas. Bahasa deklaratif memungkinkan Anda untuk
mendeskripsikan output yang Anda inginkan, dan meninggalkan detail langkah-
langkah yang diperlukan untuk menghasilkan output ke mesin eksekusi.

SQL mendukung beberapa sintaks prosedural, tetapi kueri data dengan SQL biasanya
mengikuti semantik deklaratif. Anda menggunakan SQL untuk menjelaskan hasil
yang Anda inginkan, dan prosesor kueri mesin database mengembangkan
rencana kueri untuk mengambilnya. Prosesor kueri menggunakan statistik tentang
data dalam database dan indeks yang ditentukan pada tabel untuk menghasilkan
rencana kueri yang baik.

Database relasional
SQL paling sering (meskipun tidak selalu) digunakan untuk kueri data
dalam databasehubungan. Sebuah database hubungan adalah salah satu data yang
telah diatur dalam beberapa tabel (secara teknis disebut sebagai hubungan), masing-
masing mewakili jenis entitas tertentu (seperti pelanggan, produk, atau pesanan
penjualan). Atribut entitas ini (misalnya, nama pelanggan, harga produk, atau tanggal
pesanan penjualan) ditetapkan sebagai kolom, atau atribut, dari tabel, dan setiap
baris dalam tabel mewakili instans dari jenis entitas (misalnya, pelanggan, produk,
atau pesanan penjualan tertentu).

Tabel dalam database terkait satu sama lain menggunakan kolom kunci yang secara
unik mengidentifikasi entitas tertentu yang diwakili. Kunci utama ditetapkan untuk
setiap tabel, dan referensi ke kunci ini ditetapkan sebagai kunci asing dalam tabel
terkait apa pun. Ini lebih mudah dipahami dengan melihat contoh:

Diagram menunjukkan database hubungan yang berisi empat tabel:

 Pelanggan
 SalesOrderHeader
 SalesOrderDetail
 Produk

Setiap pelanggan diidentifikasi oleh bidang CustomerID yang unik - bidang ini adalah


kunci primer untuk tabel Pelanggan. Tabel SalesOrderHeader memiliki kunci utama
bernama OrderID untuk mengidentifikasi setiap pesanan, dan juga menyertakan
kunci asingCustomerID yang mereferensikan kunci primer dalam
tabel Pelanggan sehingga mengidentifikasi pelanggan mana yang terkait dengan
setiap pesanan. Data tentang masing-masing item dalam pesanan disimpan dalam
tabel SalesOrderDetail, yang memiliki kunci utama komposit yang
menggabungkan OrderID dalam tabel SalesOrderHeader dengan nilai LineItemNo.
Kombinasi nilai ini secara unik mengidentifikasi item baris. Bidang OrderID juga
digunakan sebagai kunci asing untuk menunjukkan urutan item baris milik,
bidang ProductID digunakan sebagai kunci asing untuk kunci primer
ProductID dari tabel Produk untuk menunjukkan produk mana yang dipesan.

Pemrosesan berbasis set


Set theory adalah salah satu dasar matematika dari model relasional manajemen
data dan merupakan dasar untuk bekerja dengan database hubungan. Meskipun
Anda mungkin dapat menulis kueri di T-SQL tanpa pemahaman yang menyeluruh
tentang set, pada akhirnya Anda mungkin mengalami kesulitan menulis beberapa
jenis pernyataan yang lebih kompleks yang mungkin diperlukan untuk performa
optimal.

Tanpa memahami matematika teori himpunan, Anda dapat menganggap himpunan


sebagai "kumpulan objek tertentu dan berbeda yang dianggap sebagai keseluruhan".
Dalam istilah yang diterapkan ke database SQL Server, Anda dapat menganggap
kumpulan sebagai kumpulan objek berbeda yang berisi nol atau lebih anggota
dengan jenis yang sama. Misalnya, tabelPelangganmewakili satu set: khususnya, set
semua pelanggan. Anda akan melihat bahwa hasil pernyataan SELECT juga
membentuk satu set.

Saat Anda mempelajari lebih lanjut tentang kueri T-SQL, penting untuk selalu
memikirkan seluruh set, bukan anggota individual. Pola pikir ini akan lebih baik
membekali Anda untuk menulis kode berbasis set, daripada berpikir satu baris pada
satu waktu. Bekerja dengan set membutuhkan pemikiran dalam hal operasi yang
terjadi "sekaligus" alih-alih satu per satu.

Salah satu fitur penting yang perlu diperhatikan tentang teori set adalah bahwa tidak
ada spesifikasi mengenai pemesanan anggota set. Kurangnya pesanan ini berlaku
untuk tabel database hubungan. Tidak ada konsep baris pertama, baris kedua, atau
baristerakhir. Elemen dapat diakses (dan diambil) dalam pesanan apa pun. Jika Anda
perlu mengembalikan hasil dalam pemesanan tertentu, Anda harus menentukannya
secara eksplisit dengan menggunakan klausa ORDER BY di kueri SELECT Anda.

Bekerja dengan skema

Dalam SQL Server database, tabel ditetapkan dalam skema untuk membuat


namespace logis dalam database. Misalnya, tabelPelanggan mungkin ditentukan
dalam skemaPenjualan, sementara tabel Produk ditentukan dalam skema Produksi.
Database mungkin melacak detail pesanan yang telah ditempatkan pelanggan dalam
tabelPesanan dalam skemaPenjualan. Anda kemudian mungkin juga perlu melacak
pesanan dari pemasok untuk komponen produk dalam tabel Pesanan dalam tabel
skemaProduksi.

Sistem database seperti SQL Server menggunakan sistem penamaan hierarkis.


Penamaan multilevel ini membantu membedakan tabel dengan nama yang sama
dalam skema yang berbeda. Nama objek yang sepenuhnya memenuhi syarat
mencakup nama instans server database tempat database disimpan, nama database,
nama skema, dan nama tabel. Contohnya: Server1.StoreDB.Sales.Order.
Saat bekerja dengan tabel dalam konteks database tunggal, biasanya merujuk ke
tabel (dan objek lain) dengan menyertakan nama skema. Contohnya, Sales.Order.

Jelajahi struktur pernyataan SQL baru

Dalam setiap dialek SQL, pernyataan SQL dikelompokkan bersama ke dalam


beberapa jenis pernyataan yang berbeda. Jenis yang berbeda tersebut adalah:

 Bahasa Manipulasi Data/Data Manipulation Language (DML) adalah kumpulan


pernyataan SQL yang berfokus pada kueri dan memodifikasi data. Pernyataan DML
termasuk SELECT, fokus utama dari pelatihan ini, dan pernyataan modifikasi seperti
INSERT, UPDATE, dan DELETE.
 Bahasa Definisi Data/Data Definition Language (DDL) adalah kumpulan pernyataan
SQL yang menangani definisi dan siklus hidup objek database, seperti tabel, tampilan,
dan prosedur. DDL mencakup pernyataan seperti CREATE, ALTER, dan DROP.
 Bahasa Kontrol Data/Data Control Language (DCL) adalah kumpulan pernyataan
SQL yang digunakan untuk mengelola izin keamanan bagi pengguna dan objek. DCL
mencakup pernyataan seperti GRANT, REVOKE, dan DENY.

Terkadang, Anda mungkin juga melihat TCL terdaftar sebagai jenis pernyataan,


untuk merujuk ke Bahasa Kontrol Transaksi. Selain itu, beberapa daftar mungkin
mendefinisikan ulang DML sebagai Bahasa Modifikasi Data, yang tidak akan
menyertakan pernyataan SELECT, tetapi kemudian mereka
menambahkan DQL sebagai Bahasa Kueri Data untuk pernyataan SELECT.

Dalam modul ini, kami akan fokus pada pernyataan DML. Pernyataan-pernyataan ini
biasanya digunakan oleh analis data untuk mengambil data sebagai laporan dan
analisis. Pernyataan DML juga digunakan oleh pengembang aplikasi untuk
melakukan operasi "CRUD" untuk membuat, membaca, memperbarui, atau
menghapus data aplikasi.

Memeriksa pernyataan SELECT

Transact-SQL atau T-SQL adalah dialek bahasa SQL standar ANSI yang digunakan
oleh produk dan layanan Microsoft SQL. Ini mirip dengan standar SQL. Sebagian
besar fokus kami adalah pada pernyataan SELECT, yang sejauh ini memiliki opsi dan
variasi terbanyak dari setiap pernyataan DML mana pun.

Mari kita mulai dengan melihat tingkat tinggi bagaimana pernyataan SELECT
diproses. Urutan penulisan pernyataan SELECT bukanlah urutan evaluasi dan
pemrosesannya oleh mesin database SQL Server.

Pertimbangkan kueri berikut:


SELECT OrderDate, COUNT(OrderID) AS Orders

FROM Sales.SalesOrder

WHERE Status = 'Shipped'

GROUP BY OrderDate

HAVING COUNT(OrderID) > 1

ORDER BY OrderDate DESC;

Kueri terdiri dari pernyataan SELECT, yang terdiri dari beberapa klausul, yang masing-
masing menentukan operasi tertentu yang harus diterapkan ke data yang diambil.
Sebelum kita memeriksa urutan run-time operasi, mari kita lihat secara singkat apa
yang dilakukan kueri ini, meskipun detail dari berbagai klausa tidak akan dibahas
dalam modul ini.

Klausa SELECT mengembalikan kolom OrderDate, dan hitungan nilai OrderID, yang


menetapkan nama (atau alias) Pesanan: SELECT OrderDate, COUNT(OrderID) AS Orders

Klausa FROM mengidentifikasi tabel mana yang merupakan sumber baris untuk kueri; dalam
hal ini adalah tabel Sales.SalesOrder: FROM Sales.SalesOrder

Klausa WHERE memfilter baris dari hasil, hanya menyimpan baris yang memenuhi kondisi
yang ditentukan; dalam hal ini, pesanan yang berstatus "dikirim": WHERE Status = 'Shipped'

Klausa GROUP BY mengambil baris yang memenuhi kondisi filter dan


mengelompokkannya menurut OrderDate, sehingga semua baris
dengan OrderDate yang sama dianggap sebagai satu grup dan satu baris akan
dikembalikan untuk setiap kelompok:

SQLMenyalin
GROUP BY OrderDate

Setelah grup terbentuk, klausa HAVING memfilter grup berdasarkan predikatnya


sendiri. Hanya tanggal dengan lebih dari satu pesanan yang akan disertakan dalam
hasil:

SQLMenyalin
HAVING COUNT(OrderID) > 1

Untuk tujuan pratinjau kueri ini, klausa terakhir adalah ORDER BY, yang mengurutkan
output ke dalam urutan menurun dari OrderDate:

SQLMenyalin
ORDER BY OrderDate DESC;

Sekarang, setelah Anda melihat apa yang dilakukan setiap klausa, mari kita lihat
urutan di mana SQL Server benar-benar mengevaluasinya:

1. Klausa FROM dievaluasi terlebih dahulu, untuk menyediakan baris sumber


untuk sisa pernyataan. Tabel virtual dibuat dan diteruskan ke langkah
berikutnya.
2. Klausa WHERE selanjutnya dievaluasi, memfilter baris tersebut dari tabel
sumber yang cocok dengan predikat. Tabel virtual yang difilter diteruskan ke
langkah berikutnya.
3. GROUP BY berikutnya, mengatur baris dalam tabel virtual sesuai dengan nilai
unik yang ditemukan dalam daftar GROUP BY. Tabel virtual baru dibuat, berisi
daftar grup, dan diteruskan ke langkah berikutnya. Dari titik ini dalam alur
operasi, hanya kolom dalam daftar GROUP BY atau fungsi agregat yang dapat
dirujuk oleh elemen lain.
4. Klausa HAVING dievaluasi berikutnya, menyaring seluruh grup berdasarkan
predikatnya. Tabel virtual yang dibuat pada langkah 3 difilter dan diteruskan ke
langkah berikutnya.
5. Klausa SELECT akhirnya dijalankan, menentukan kolom mana yang akan muncul
dalam hasil kueri. Karena klausul SELECT dievaluasi setelah langkah-langkah
lainnya, alias kolom apa pun (dalam contoh kami, Pesanan) yang dibuat di sana
tidak dapat digunakan dalam klausa GROUP BY atau HAVING.
6. Klausa ORDER BY adalah yang terakhir dieksekusi, mengurutkan baris seperti
yang ditentukan oleh daftar kolomnya.

Untuk menerapkan pemahaman ini ke kueri contoh kami, berikut adalah urutan logis
saat menjalankan pernyataan SELECT di atas:

SQLMenyalin
FROM Sales.SalesOrder
WHERE Status = 'Shipped'
GROUP BY OrderDate
HAVING COUNT(OrderID) > 1
SELECT OrderDate, COUNT(OrderID) AS Orders
ORDER BY OrderDate DESC;

Tidak semua klausul yang mungkin diperlukan dalam setiap pernyataan SELECT yang
Anda tulis. Satu-satunya klausa yang diperlukan adalah klausul SELECT, yang dapat
digunakan sendiri dalam beberapa kasus. Biasanya klausa FROM juga disertakan
untuk mengidentifikasi tabel yang sedang dikueri. Selain itu, T-SQL memiliki klausul
lain yang dapat ditambahkan.

Seperti yang Telah Anda lihat, Anda tidak menulis T-SQL dalam urutan yang sama di
mana mereka dievaluasi secara logis. Urutan evaluasi run-time menentukan data apa
yang tersedia untuk klausul yang mana, karena klausul hanya memiliki akses ke
informasi yang sudah tersedia dari klausul yang sudah diproses. Untuk alasan ini,
penting untuk memahami urutan pemrosesan logis yang sebenarnya saat menulis
kueri.

Memilih semua kolom


Klausul SELECT sering disebut sebagai daftarSELECT, karena mencantumkan nilai
yang akan dikembalikan dalam hasil kueri.

Bentuk paling sederhana dari klausa SELECT adalah penggunaan karakter asterisk (*)
untuk mengembalikan semua kolom. Ketika digunakan dalam kueri T-SQL, klausul
terebut disebut bintang. Meskipun SELECT * cocok untuk pengujian cepat, Anda
harus menghindari menggunakannya dalam pekerjaan produksi karena alasan
berikut:

 Perubahan pada tabel yang menambahkan atau menyusun ulang kolom akan
tercermin dalam hasil kueri, yang dapat mengakibatkan output yang tidak
terduga untuk aplikasi atau laporan yang menggunakan kueri.
 Mengembalikan data yang tidak diperlukan dapat memperlambat kueri Anda
dan menyebabkan masalah performa jika tabel sumber berisi sejumlah besar
baris.

Misalnya, contoh berikut ini mengambil semua kolom dari


tabel Production.Product (hipotetis).

SQLMenyalin
SELECT * FROM Production.Product;

Hasil dari kueri ini adalah rowset yang berisi semua kolom untuk semua baris tabel,
yang mungkin terlihat seperti ini:

ProductID

Nama

ProductNum

Warna

StandardCost

ListPrice

Ukuran
Berat

ProductCatID

680

HL Road Frame - Black, 58

FR-R92B-58

Hitam

1059.31

1431.5

58

1016.04

18

706

HL Road Frame - Red, 58

FR-R92R-58

Merah

1059.31

1431.5

58

1016.04

18

707

Sport-100 Helmet, Red

HL-U509-R

Merah

13.0863
34.99

35

708

Sport-100 Helmet, Black

HL-U509

Hitam

13.0863

34.99

35

...

...

...

...

...

...

...

...

...

Memilih kolom tertentu


Daftar kolom eksplisit memungkinkan Anda memiliki kontrol atas kolom mana yang
dikembalikan dan dalam urutan yang mana. Setiap kolom dalam hasil akan memiliki
nama kolom sebagai header.

Misalnya, pertimbangkan kueri berikut ini; yang lagi-lagi menggunakan


tabel Produksi.Product hipotetis.

SQLMenyalin
SELECT ProductID, Name, ListPrice, StandardCost
FROM Production.Product;
Kali ini, hasilnya hanya mencakup kolom yang ditentukan:

ProductID

Nama

ListPrice

StandardCost

680

HL Road Frame - Black, 58

1431.5

1059.31

706

HL Road Frame - Red, 58

1431.5

1059.31

707

Sport-100 Helmet, Red

34.99

13.0863

708

Sport-100 Helmet, Black

34.99

13.0863

...

...

...

...
Memilih ekspresi
Selain mengambil kolom yang disimpan dalam tabel yang ditentukan, klausa SELECT
dapat melakukan penghitungan dan manipulasi dengan cara menggunakan operator
untuk menggabungkan kolom dan nilai atau beberapa kolom. Hasil perhitungan atau
manipulasi harus merupakan hasil (skalar) bernilai tunggal yang akan muncul dalam
hasil sebagai kolom terpisah.

Misalnya, kueri berikut ini menyertakan dua ekspresi:

SQLMenyalin
SELECT ProductID,
Name + '(' + ProductNumber + ')',
ListPrice - StandardCost
FROM Production.Product;

Hasil dari kueri ini mungkin terlihat seperti berikut ini:

ProductID

680

HL Road Frame - Black, 58(FR-R92B-58)

372.19

706

HL Road Frame - Red, 58(FR-R92R-58)

372.19

707

Sport-100 Helmet, Red(HL-U509-R)

21.9037

708

Sport-100 Helmet, Black(HL-U509)

21.9037

...

...
...

Ada beberapa hal menarik yang perlu diperhatikan dalam hasil ini:

 Kolom yang dikembalikan oleh dua ekspresi tidak memiliki nama kolom.
Bergantung pada alat yang Anda gunakan untuk mengirimkan kueri Anda,
nama kolom yang hilang mungkin ditunjukkan oleh header kolom kosong,
indikator literal"tanpa nama kolom", atau nama default seperti kolom1. Kita
akan melihat cara menentukan alias untuk nama kolom dalam kueri berikutnya
di bagian ini.
 Ekspresi pertama menggunakan + operator untuk menggabungkan nilai string
(berbasis karakter), sedangkan ekspresi kedua menggunakan - operator untuk
mengurangi satu nilai numerik dari yang lain. Saat digunakan dengan nilai
numerik, + operator melakukan penambahan. Dengan jelas, penting untuk
memahami tipe data kolom yang Anda sertakan dalam ekspresi. Kita akan
membahas tipe data di bagian berikutnya.

Menentukan alias kolom


Anda dapat menentukan alias untuk setiap kolom yang dikembalikan oleh kueri
SELECT, baik sebagai alternatif untuk nama kolom sumber atau untuk menetapkan
nama ke output ekspresi.

Misalnya, berikut ini kueri yang sama seperti sebelumnya, tetapi dengan alias yang
ditentukan untuk setiap kolom:

SQLMenyalin
SELECT ProductID AS ID,
Name + '(' + ProductNumber + ')' AS ProductName,
ListPrice - StandardCost AS Markup
FROM Production.Product;

Hasil dari kueri ini mencakup nama kolom yang ditentukan:

ID

ProductName

Markup

680

HL Road Frame - Black, 58(FR-R92B-58)

372.19
706

HL Road Frame - Red, 58(FR-R92R-58)

372.19

707

Sport-100 Helmet, Red(HL-U509-R)

21.9037

708

Sport-100 Helmet, Black(HL-U509)

21.9037

...

...

...

 Memformat kueri
Anda mungkin mencatat dari contoh di bagian ini, bahwa Anda dapat fleksibel
tentang cara memformat kode kueri Anda. Misalnya, Anda dapat menulis setiap
klausa (atau seluruh kueri) pada satu baris, atau memecahnya menjadi beberapa
baris. Di sebagian besar sistem database, kode ini tidak sensitif terhadap huruf
besar/kecil, dan beberapa elemen bahasa T-SQL bersifat opsional (termasuk kata
kunci AS seperti yang disebutkan sebelumnya, dan bahkan titik koma di akhir
pernyataan).

Pertimbangkan panduan berikut untuk membuat kode T-SQL mudah dibaca (dan
lebih mudah dipahami dan di-debug!):

 Kapitalisasi kata kunci T-SQL, seperti SELECT, FROM, AS, dan sebagainya.
Kapitalisasi kata kunci adalah konvensi yang umum digunakan yang
membuatnya lebih mudah untuk menemukan setiap klausul dari pernyataan
yang kompleks.
 Mulai baris baru untuk setiap klausul utama pernyataan.
 Jika daftar SELECT berisi banyak kolom, ekspresi, atau alias, pertimbangkan
untuk mencantumkan setiap kolom di barisnya sendiri.
 Baris inden yang berisi subklausul atau kolom untuk memperjelas kode mana
yang termasuk dalam setiap klausul utama.
Bekerja dengan tipe data

Kolom dan variabel yang digunakan dalam T-SQL masing-masing memiliki tipe data.
Perilaku nilai dalam ekspresi bergantung pada tipe data kolom atau variabel yang
direferensikan. Misalnya, seperti yang Anda lihat sebelumnya, Anda dapat
menggunakan+ operator untuk menggabungkan dua nilai string, atau untuk
menambahkan dua nilai numerik.

Tabel berikut ini menunjukkan tipe data umum yang didukung dalam database SQL
Server.

Exact Numeric

Approximate Numeric

Karakter

Tanggal/Waktu

Biner

Lainnya

tinyint

float

char

tanggal

biner

cursor

smallint

nyata

varchar

waktu

varbinary

hierarchyid

int
teks

tanggalwaktu

gambar

sql_variant

bigint

nchar

tanggalwaktu2

tabel

bit

nvarchar

smalldatetime

rentang waktu

decimal/numeric

ntext

tanggalwaktulewat

uniqueidentifier

numeric

xml

money

geografi

smallmoney

geometry

 Konversi tipe data

Nilai jenis data yang kompatibel dapat secara implisit dikonversi sesuai kebutuhan.
Misalnya, Anda dapat menggunakan + operator untuk menambahkan + ke
angka desimal, atau untuk menggabungkan nilai char dengan panjang tetap dan
nilai varchar dengan panjang variabel. Namun, dalam beberapa kasus, Anda mungkin
perlu secara eksplisit mengonversi nilai dari satu jenis data ke jenis data lainnya -
misalnya, mencoba menggunakan + untuk menggabungkan nilai varchar dan
nilai desimal akan menghasilkan kesalahan, kecuali Anda terlebih dahulu
mengonversi nilai numerik ke jenis data string yang kompatibel.

T-SQL menyertakan fungsi untuk membantu Anda


secara eksplisit mengonversi antar jenis data

CAST dan TRY_CAST

Fungsi CAST mengonversi nilai menjadi tipe data tertentu jika nilai kompatibel
dengan tipe data target. Kesalahan akan dikembalikan jika tidak kompatibel.

Misalnya, kueri berikut ini menggunakan CAST untuk mengonversi nilai bilangan


bulat di kolom ProductID menjadi nilaivarchar (dengan maksimum 4 karakter) untuk
menggabungkannya dengan nilai berbasis karakter lain:

SQLMenyalin

SELECT CAST(ProductID AS varchar(4)) + ': ' + Name AS ProductName


FROM Production.Product;

Hasil dari kueri ini mungkin terlihat seperti berikut ini:

ProductName

680: HL Road Frame - Black, 58

706: HL Road Frame - Red, 58

707: Sport-100 Helmet, Red

708: Sport-100 Helmet, Black

...

Namun, misalkan kolomUkuran pada tabel Production.Product adalah


kolom nvarchar (panjang variabel, data teks Unicode) yang berisi beberapa ukuran
numerik (seperti 58) dan beberapa ukuran berbasis teks (seperti "S", "M", atau "L").
Kueri berikut ini mencoba mengonversi nilai dari kolom ini menjadi tipe
data bilangan bulat:
SELECT CAST(Size AS integer) As NumericSize
FROM Production.Product;

Kueri ini menghasilkan pesan galat berikut ini:

Kesalahan: Konversi gagal saat mengonversi nilai nvarchar ‘M’ menjadi tipe data int.

Mengingat bahwa setidaknya beberapa nilai dalam kolom merupakan numerik, Anda


mungkin ingin mengonversi nilai tersebut dan mengabaikan yang lain. Anda dapat
menggunakan fungsi TRY_CAST untuk mengonversi tipe data.

SELECT TRY_CAST(Size AS integer) As NumericSize


FROM Production.Product;

Kali ini hasilnya mungkin terlihat seperti ini:

NumericSize

58

58

NULL

NULL

...

Nilai yang dapat dikonversi menjadi tipe data numerik dikembalikan menjadi nilai
desimal, dan nilai yang tidak kompatibel dikembalikan menjadi NULL, yang
digunakan untuk menunjukkan bahwa nilai tidak diketahui.

CONVERT dan TRY_CONVERT

CAST adalah fungsi SQL standar ANSI untuk mengonversi antar tipe data, dan
digunakan dalam banyak sistem database. Dalam T-SQL, Anda juga dapat
menggunakan fungsi CONVERT, seperti yang ditunjukkan di sini:

SQLMenyalin

SELECT CONVERT(varchar(4), ProductID) + ': ' + Name AS ProductName


FROM Production.Product;

Sekali lagi, kueri ini mengembalikan nilai yang dikonversi ke tipe data yang
ditentukan, seperti ini:
ProductName

680: HL Road Frame - Black, 58

706: HL Road Frame - Red, 58

707: Sport-100 Helmet, Red

708: Sport-100 Helmet, Black

...

Seperti CAST, CONVERT memiliki varian TRY_CONVERT yang


menampilkan NULL untuk nilai yang tidak kompatibel.

Manfaat lain menggunakan CONVERT daripada CAST adalah CONVERT juga


menyertakan parameter yang memungkinkan Anda menentukan gaya format saat
mengonversi nilai numerik dan tanggal menjadi string. Misalnya, pertimbangkan
kueri di bawah ini:

SQLMenyalin

SELECT SellStartDate,
CONVERT(varchar(20), SellStartDate) AS StartDate,
CONVERT(varchar(10), SellStartDate, 101) AS FormattedStartDate
FROM SalesLT.Product;

Hasil dari kueri ini mungkin terlihat seperti berikut ini:

SellStartDate

StartDate

FormattedStartDate

2002-06-01T00:00:00

1 Jun 2002 12:00

1/6/2002

2002-06-01T00:00:00

1 Jun 2002 12:00

1/6/2002

2005-07-01T00:00:00
1 Jul 2005 12:00

1/7/2005

2005-07-01T00:00:00

1 Jul 2005 12:00

1/7/2005

...

...

Handel NUL

Nilai NULL berarti tidak bernilai atau tidak diketahui. Nilai ini tidak berarti nol atau
kosong, atau bahkan string kosong. Nilai-nilai tersebut tidak diketahui. Nilai NULL
dapat digunakan untuk nilai yang belum diberikan, contohnya, ketika pelanggan
belum memberikan alamat email. Seperti yang telah Anda lihat sebelumnya, nilai
NULL juga dapat dikembalikan oleh beberapa fungsi konversi jika nilai tidak
kompatibel dengan tipe data target.

Anda akan sering mengambil langkah khusus untuk menghadapi nilai NULL. NULL
benar-benar non-nilai. Hal ini tidak diketahui. Hal ini tidak sama dengan apa pun,
dan tidak setara dengan apa pun. NULL tidak lebih besar atau kurang dari apa pun.
Kita tidak bisa mengatakan apa-apa tentang NULL, tetapi kadang-kadang kita perlu
bekerja dengan nilai-nilai NULL. Untungnya, T-SQL menyediakan fungsi untuk
konversi atau penggantian nilai NULL.

ISNULL
Fungsi ISNULL membutuhkan dua argumen. Yang pertama adalah ekspresi yang
sedang kita uji. Jika nilai argumen pertama adalah NULL, fungsi mengembalikan
argumen kedua. Jika ekspresi pertama tidak null, ekspresi dikembalikan tanpa
perubahan.

Contohnya, tabel Sales.Customer dalam database menyertakan


kolom MiddleName yang memungkinkan nilai NULL. Saat melakukan kueri pada
tabel ini, daripada mengembalikan NULL dalam hasilnya, Anda dapat memilih untuk
mengembalikan nilai tertentu, seperti "Tidak Bernilai".

SQLMenyalin

SELECT FirstName,
ISNULL(MiddleName, 'None') AS MiddleIfAny,
LastName
FROM Sales.Customer;

Hasil dari kueri ini mungkin terlihat seperti berikut ini:

NamaDepan

MiddleIfAny

NamaBelakang

Orlando

N.

Gee

Keith

Tidak ada

Howard

Donna

F.

Gonzales

...

...

...

Nilai yang diganti dengan NULL harus memiliki tipe data yang sama dengan ekspresi
yang sedang dievaluasi. Dalam contoh di atas, MiddleName adalah varchar,
sehingga penggantiannya tidak boleh numerik. Selain itu, Anda harus memilih nilai
yang tidak akan muncul dalam data sebagai nilai reguler. Terkadang sulit untuk
menemukan nilai yang tidak akan pernah muncul di data Anda.

Contoh sebelumnya menangani nilai NULL dalam tabel sumber, tetapi Anda dapat
menggunakan ISNULL dengan ekspresi apa pun yang mungkin mengembalikan
NULL, termasuk menyarangkan fungsi TRY_CONVERT dalam fungsi ISNULL.
COALESCE
Fungsi ISNULL bukan standar ANSI, jadi Anda mungkin ingin menggunakan fungsi
COALESCE sebagai gantinya. COALESCE sedikit lebih fleksibel, fungsi ini dapat
mengambil jumlah variabel argumen, yang masing-masing adalah ekspresi. Fungsi
ini akan mengembalikan ekspresi pertama dalam daftar yang bukan NULL.

Jika hanya ada dua argumen, COALESCE berjalan seperti ISNULL. Namun, dengan
lebih dari dua argumen, COALESCE dapat digunakan sebagai alternatif untuk
ekspresi CASE multi bagian menggunakan ISNULL.

Jika semua argumen adalah NULL, COALESCE mengembalikan NULL. Semua ekspresi
harus mengembalikan tipe data yang sama atau kompatibel.

Sintaksnya adalah sebagai berikut:

SQLMenyalin

SELECT COALESCE(<expression_1>[, ...<expression_n>];

Contoh berikut ini menggunakan tabel fiktif yang disebut HR.Wages, yang


mencakup tiga kolom yang berisi informasi tentang penghasilan mingguan
karyawan: tarif per jam, gaji mingguan, dan komisi per unit yang dijual. Namun,
seorang karyawan hanya menerima satu jenis gaji. Untuk setiap karyawan, salah satu
dari tiga kolom tersebut akan memiliki nilai, dua lainnya akan menjadi NULL. Untuk
menentukan jumlah total yang dibayarkan kepada setiap karyawan, Anda dapat
menggunakan COALESCE untuk mengembalikan hanya nilai, bukan nulll yang
ditemukan dalam tiga kolom tersebut.

SQLMenyalin

SELECT EmployeeID,
COALESCE(HourlyRate * 40,
WeeklySalary,
Commission * SalesQty) AS WeeklyEarnings
FROM HR.Wages;

Hasilnya mungkin terlihat seperti berikut ini:

IDKaryawan

WeeklyEarnings

899.76
2

1001.00

1298.77

...

...

NULLIF
Fungsi NULLIF memungkinkan Anda mengembalikan NULL dalam kondisi tertentu.
Fungsi ini memiliki aplikasi yang berguna di area seperti pembersihan data, ketika
Anda ingin mengganti karakter kosong atau tempat penampung dengan NULL.

NULLIF mengambil dua argumen dan mengembalikan NULL jika keduanya setara.
Jika tidak sama, NULLIF mengembalikan argumen pertama.

Dalam contoh ini, NULLIF mengganti diskon 0 dengan NULL. NULLIF mengembalikan
nilai diskon jika bukan 0:

SQLMenyalin

SELECT SalesOrderID,
ProductID,
UnitPrice,
NULLIF(UnitPriceDiscount, 0) AS Discount
FROM Sales.SalesOrderDetail;

Hasilnya mungkin terlihat seperti berikut ini:

SalesOrderID

ProductID

UnitPrice

Diskon

71774

836

356.898
NULL

71780

988

112.998

0.4

71781

748

818.7

NULL

71781

985

112.998

0.4

...

...

...

...

...

PARSE dan TRY_PARSE

Fungsi PARSE dirancang untuk mengonversi string berformat yang mewakili nilai
numerik atau tanggal/waktu. Secagai contoh, pertimbangkan kueri berikut (yang
menggunakan nilai literal daripada nilai dari kolom dalam tabel):

SQLMenyalin

SELECT PARSE('01/01/2021' AS date) AS DateValue,


PARSE('$199.99' AS money) AS MoneyValue;

Hasil kueri terlihat seperti ini:


DateValue

MoneyValue

2021-01-01T00:00:00

199.99

Sama halnya dengan CAST dan CONVERT, PARSE memiliki varian TRY_PARSE yang
mengembalikan nilai yang tidak kompatibel dengan NULL.

 STR

Fungsi STR mengonversi nilai numerik menjadi varchar.

Contohnya:

SQLMenyalin

SELECT ProductID, '$' + STR(ListPrice) AS Price


FROM Production.Product;

Hasilnya akan terlihat seperti ini:

ProductID

Harga

680

$1432.00

706

$1432.00

707

$35.00

...

...

Anda mungkin juga menyukai