Monday, 3 October 2016

Belajar SQL Server : Latihan Dasar SQL Server Bagian 1

Hi para calon Ahli SQL Server ^_^. Pada postingan sebelumnya kita telah mempelajari sintaks dasar SQL Server, sebelum kalian memulai latihan pada artikel ini alangkah baiknya kalian memastikan sudah mempelajari sintaks dasar SQL Server pada postingan sebelumnya.


Kali ini kita akan mengerjakan beberapa soal latihan SQL Server, tenang aja bro & sist kita akan mengerjakannya bersama-sama kalau kata fans Liverpool "YNWA" You'll Never Walk Alone #tsaahhh XD apa itu artinya ? wkwk.

Sebelum memulai latihan, kita berdoa dulu menurut agama dan kepercayaan masing-masing...

Berdoa selesai.

Selanjutnya buatlah database LatihDB pada SQL Server kalian.
create database LatihDB
Klik gambar untuk memperbesar
Setelah database berhasil dibuat, langkah selanjutnya adalah membuat table sebagai berikut ;

Table pc values
kdbarang nchar(12),
model nchar(15),
merk nchar(10),
processor nchar(30),
ram nchar(5),
harddisk nchar(5),
cdrom nchar(1),
harga numeric(8)
penjelasan; Table pertama berisi kdbarang, model/nomor model, merk/pembuat, processor(nama processor), ram(kapasitas ram), harddisk(kapasitas harddisk), cdrom(diberi keterangan "y" untuk ya, dan "n" untuk tidak), harga.

Table laptop values
kdbarang nchar(12),
model nchar(15),
merk nchar(10),
processor nchar(30),
ram char(5),
harddisk nchar(5),
layar nchar(7),
harga numeric(8)
penjelasan; Banyak kesamaan pada table pc dan laptop, hanya berbeda pada kolom layar(dalam bentuk inch).

Table printer values
kdbarang nchar(12),
model nchar(15),
merk nchar(10),
warna nchar(1),
penjelasan; Warna diberi keterangan "y" dan "n".

create table pc(
kdbarang nchar(12),
model nchar(15),
merk nchar(10),
processor nchar(30),
ram nchar(5),
harddisk nchar(5),
cdrom nchar(1),
harga numeric(8)
);
go

create table laptop(
kdbarang nchar(12),
model nchar(15),
merk nchar(10),
processor nchar(30),
ram nchar(5),
harddisk nchar(5),
layar nchar(8),
harga numeric(8)
);
go

create table printer(
kdbarang nchar(12),
model nchar(15),
merk nchar(10),
warna nchar(1),
);
go
Eksekusi kodingan diatas.
Klik gambar untuk memperbesar
Database telah dibuat begitu juga dengan tablenya, selanjutnya masukkan data-data berikut kedalam table yang sudah kita buat.
insert into LatihDB.dbo.pc values
('PC2016092801','251-A153D','HP','Intel J1800','2GB','500GB','y','4700000'),
('PC2016092802','300S|11BR|19D','Lenovo','Intel Celeron N3050','2GB','500GB','n','4700000'),
('PC2016092803','LIVA-ONE','ECS','Intel Skylake','4GB','500GB','n','5200000'),
('PC2016092804','K31AD-ID009D','Asus','Intel Core i3-4170','2GB','500GB','n','5900000'),
('PC2016092805','ATC-707','Acer','Intel G3260','2GB','500GB','y','4850000')
go

insert into LatihDB.dbo.laptop values
('LP2016092801','ES1-131-C27P','Acer','Intel N3050','2GB','500GB','11.6"','3000000'),
('LP2016092802','Ideapad-300','Lenovo','Intel N3150','2GB','500GB','14"','3100000'),
('LP2016092803','X550ZE-XX111D','Asus','AMD FX-7500P','4GB','500GB','15.6"','5950000'),
('LP2016092804','14-AF120AU','HP','AMD A4-5000','4GB','500GB','14"','3650000'),
('LP2016092805','11-3162','Dell','Intel N3050','2GB','500GB','11"','2870000')
go

insert into LatihDB.dbo.printer values
('PR2016092801','2135','HP','y','650000'),
('PR2016092802','MG2570s','Canon','y','580000'),
('PR2016092803','L360','Epson','y','2380000'),
('PR2016092804','L120','Epson','y','1600000'),
('PR2016092805','CP1025','HP','y','2800000')
go
Klik gambar untuk memperbesar
Cek data yang sudah kita masukkan

select * from pc
Klik gambar untuk memperbesar
select * from laptop
Klik gambar untuk memperbesar
select * from printer
Klik gambar untuk memperbesar
Langsung saja kita lanjut ke soal latihan yang sudah ane susun dibawah ini;

  1. Tampilkan data PC dengan kolom merk, processor, harddisk, dan harga dibawah 5000000.
  2. Tampilkan data PC dan laptop dengan kolom model, merk, processor, harddisk, dengan cdrom(untuk PC), dan harga dibawah 4800000.
  3. Tampilkan data laptop dengan kolom merk, harddisk, processor"Intel".
  4. Tampilkan Data PC dan Laptop dengan kolom merk"HP", model, processor, harga .
  5. Tampilkan Data Printer dengan kolom merk, model, harga dengan harga tertinggi.
Jawab :

Jawab aja sendiri !!! wkwkwk XD

Jawaban no.1 Tampilkan data PC dengan kolom merk, processor, harddisk, dan harga dibawah 5000000.


Kita pahami terlebih dahulu soalnya, jadi kita diperintahkan untuk menampilkan data pada table PC yaitu data pada kolom merk, processor, harddisk, dan harga tetapi hanya yang memiliki harga dibawah 5000000.

Bagaimana caranya yaa ? Pasti kalian bisa !
Jika hanya menampilkan kolom apa adanya pasti kalian sudah mengerti tetapi jika menampilkan data dengan nilai yang spesifik seperti diatas mungkin kita akan sedikit bingung. Padahal caranya sangat mudah, silahkan tulis sintaks dibawah ini;
select merk,
processor,
harddisk,
harga
from LatihDB.dbo.pc
where harga < 5000000
Klik gambar untuk memperbesar
Inti dari jawaban soal diatas adalah klausa where (Dimana), perintah ini pasti sudah tidak asing ditelinga kita dan banyak bahasa pemrograman juga memiliki klausa where yang digunakan untuk mengeksekusi atau mengekstraksi nilai dari string yang ditentukan seperti dalam kasus ini adalah harga dibawah 5000000.


Jawaban no.2 Tampilkan data PC dan laptop dengan kolom model, merk, processor, harddisk, dengan cdrom(untuk PC), dan harga dibawah 4800000.


Setelah membaca soal diatas mungkin kalian akan langsung teringat pada alter table yang sudah kita bahas sebelumnya. Alter table mahh gampang XD, eits baca baik-baik, kita memang diperintahkan menampilkan data pada pc dan laptop dengan kolom, merk, processor, harddisk, dengan cdrom(untuk pc) "kita diperintahkan hanya menampilkan data pada table pc yang berisi nilai 'y' pada kolom cdrom", dan menampilkan harga dibawah 4800000.

Dari situ saja kita bisa melihat dua klausa where yang harus digunakan, yaitu pada kolom cdrom dan kolom harga, silahkan tulis sintaks berikut;
select pc.model,
pc.merk,
pc.processor,
pc.harddisk,
pc.cdrom,
pc.harga,
laptop.model,
laptop.merk,
laptop.processor,
laptop.harddisk,
laptop.harga
from pc
full outer join laptop
on pc.kdbarang!=laptop.kdbarang
where pc.harga < 4800000
and laptop.harga < 4800000
and cdrom = 'y'
Klik gambar untuk memperbesar
Mari kita bahas susunan sintaks pada kueri diatas, perintah select sudah jelas untuk memilih dan menyeleksi kolom yang telah diperintahkan pada soal, pada lanjutan sintaks juga sama seperti pada perintah alter join.

Yang membedakannya adalah pada perintah on pc.model!=laptop.model , kok pakai != (Tidak sama dengan) bukannya pakai perintah persamaan = seperti artikel sebelumnya? pada postingan sebelumna memang kita memakai "=" untuk mencari data yang sama diantara dua table, tetapi sekarang kita mencari data dengan nilai tertentu, jadi jika kalian menggunakan "=" tidak akan muncul data apapun dikarenakan tidak ada data yang sama.

Hal ini juga dibuktikan pada table pc "sebelah kiri" muncul data yang sama sebanyak 4 kali, tidak bernilai "null" seperti pada artikel sebelumnya, lalu pada perintah where dibawahnya;
where pc.harga < 4800000
and laptop.harga < 4800000
and cdrom = 'y'
Terdapat 3 where didalam sintaks ini, kita menggabungkan ketiga where tersebut dengan perintah and yaitu harga pc dan laptop dibawah 4800000, dan pc dengan cdrom"y", tetapi tetap saja perintah tidak sama dengan yang menyebabkan duplikasi tampilan data, walaupun kalian mengganti full outer join dengan inner join atau right join dan left join hasilnya akan tetap sama seperti diatas.

Walaupun duplikasi data bisa dihilangkan tetapi ane gak ngerti caranya, lagian yang bikin soal ada-ada aja -_-" (nunjuk diri ane sendiri XD).


Jawaban No.3 Tampilkan data laptop dengan kolom merk, harddisk, processor"Intel".



Habis yang susah-susah lebih baik kita kerjain yang agak gampang dikit biar gak puyeng, ane yang puyeng sihh, udah nulis, bikin sintaks juga, sama edit gambar, dll tetek bengek -_- tapi itulah yang dinamakan usaha yang mulia #asikasikjoss.

Pada soal yang ketiga kita diperintahkan untuk menampilkan data pada table laptop dengan kolom merk, harddisk, processor"intel". Berikut sintaksnya;
select merk,
harddisk,
processor
from LatihDB.dbo.laptop
where processor = 'intel'
Klik gambar untuk memperbesar
Lohh kok gk ada datanya ???

Amsyong T_T, kita menggunakan sama dengan "=" sedangkan data pada table tidak ada yang namanya "intel" doang. Gimana kalau pakai tidak sama dengan "!=", jika kita memakai tidak sama dengan hasilnya yaa data ditampilkan semua.

Terus bagaimana mencari kata tertentu pada data table? emang bisa?

Tentu saja bisa, silahkan tulis sintaks berikut;
select merk,
harddisk,
processor
from LatihDB.dbo.laptop
where processor like 'intel%'

Klik gambar untuk memperbesar
Akhirnya kita berhasil !!! Berkat berdoa sebelum belajar ^_^.

Ane akan jelasin sedikit tentang perintah where processor like 'intel%' yang telah menyelamatkan kita.

Kunci dari perintah ini adalah like 'intel%' , like berfungsi sebagai perintah untuk mencari data yang mempunyai nilai string "seperti/mengandung" jadi bukan perintah yang spesifik dan pasti seperti menggunakan perintah sama dengan "=", lebih besar">", lebih kecil "<", lebih besar sama dengan "<=" dll.

Lalu untuk apa simbol "%" pada kalimat 'intel%' ?
Simbol "%" adalah tanda yang digunakan untuk menentukan wildcard (huruf yang hilang) baik sebelum atau sesudah pola kalimat atau nilai tertentu, jadi jika kalian ingin mencari data tetapi lupa kalimat atau nilai lengkapnya, kalian bisa menggunakan simbol ini untuk mencarinya secara tebak-tebak buah manggis XD.

Pada jawaban no.3 ini kita menggunakan simbol "%" untuk menemukan kata yang hilang setelahnya jadi simbol "%" ada dibelakang 'intel%' jadi kita menampilkan data yang berawalan "intel", jika simbol '%intel' ada di depan berarti kita mencari kata yang hilang sebelumnya jadi kita menampilkan data yang berakhiran "intel", jika tanda "%" berada di kedua sisi yaitu awal dan akhir '%intel%' itu berarti kita akan menampilkan kata yang hilang dibelakang atau didepan lalu menampilkan data yang berawalan, berakhiran, atau kata "intel" yang berada pada tengah-tengah kalimat.

Lebih baik kalian menggunakan tanda "%" di kedua sisi jika kalian tidak ingat secara pasti dimana kata yang hilang dan dimana letak kata tersebut ^_^.


Jawaban No.4 Tampilkan Data PC dan Laptop dengan kolom merk"HP", model, processor, harga .

Soal selanjutnya kita diperintahkan untuk menampilkan data PC dan Laptop. Tepat sekali ! kita akan menggunakan alter table lagi tetapi dengan kolom merk = 'HP', silahkan tulis sintaks berikut;
select pc.merk,
pc.model,
pc.processor,
pc.harga,
laptop.merk,
laptop.model,
laptop.processor,
laptop.harga
from pc
full outer join laptop
on pc.merk=laptop.merk
where pc.merk='HP'
and laptop.merk='HP'
Klik gambar untuk memperbesar
Semakin kesini ngerjain soalnya semakin gampang aja, atau soalnya yang kurang susah, atau kita yang semakin AHLI !!!

Pada soal kali ini kita menggunakan "=" (equal to) bahasa indonesianya sama dengan, bahasa Arabnya ane kagak tau >.<.

Mengapa kita menggunakan sama dengan ? Kenapa kita tidak menggunakan perintah where pc like 'HP%' ?
Kita ingin mencari nama yang pasti, atau kelompok kata dan huruf yang benar-benar sama seperti yang kita inginkan walaupun kita bisa menggunakan perintah "like" seperti pada soal sebelumnya, semua tergantung dengan kebutuhan kalian ^_^.


Jawaban No.5 Tampilkan Data Printer dengan kolom merk, model, harga dengan harga tertinggi

Kembali ke soal yang lumayan sulit, tetapi gak susah-susah amat kok hehe ^_^. Pada soal ini kita diperintahkan untuk menampilkan data pada table Printer dengan kolom merk, model, dan harga tertinggi.

Sebelumnya kita menampilkan data dengan harga kurang dari sekian "< 3000000", nilai yang kita cari spesifik, lalu bagaimana cara menampilkan harga dengan nilai tertinggi ?.

Mungkin pada table yang kita buat hanya memiliki lima rekam data, tetapi bagaimana bila datanya ada ribuan atau jutaan? Hal itu bisa dilakukan dengan menampilkan data dengan menambahkan perintah order by pc.harga desc untuk menampilkan nilai tertinggi pada posisi teratas jendela results.

Tetapi bukan perintah itu yang ingin kita pelajari -_-", silahkan tulis sintaks dibawah ini;
select MAX(merk) as merk, 
MAX(model) as model, 
MAX(harga) as harga 
from printer
Kita menggunakan perintah MAX(harga) yang berfungsi untuk menampilkan nilai tertinggi pada kolom tertentu, tentu saja terdapat perintah MIN(harga) untuk menampilkan nilai harga terendah.

Perintah ini mengubah tipe data menjadi integer (int) pada saat ditampilkan pada jendela result, itulah mengapa kolom merk dan model juga diberikan perintah "MAX" agar menyesuaikan pada saat proses grouping.

Perbandingan kecepatan eksekusi perintah MAX(harga) dengan perintah order by  mungkin tidak berbeda terlalu jauh, intinya jika datanya banyak tetap saja eksekusinya lama, tetapi ane juga belum pernah menguji sihh hehe T_T.

Kelebihan perintah MAX adalah data yang ditampilkan hanya satu saja, berbeda dengan perintah order yang menampilkan seluruh data hanya saja mengurutkan dari nilai terbesar sampai nilai terkecil. Sekali lagi, gunakan sesuai dengan kebutuhan kalian ^_^

Demikian latihan soal SQL Server pada kali ini, tunggu soal latihan yang selanjutnya, jangan lupa untuk selalu mencoba, jika kalian mempunyai tips dan trik seputar SQL Server silahkan tinggalkan komentar \|^o^|/.
+SQL Server +SQLServerCentral +SQL Server Pro +SQL Professionals, LLC 

8 comments:

  1. Terbaik emang anda Gan
    Makasih banyak pencerahannya gan

    ReplyDelete
    Replies
    1. Sama-sama gan, ane juga masih pemula, masih jauh dibilang terbaik hehe

      Delete
    2. kalo belum terbaik semoga skillnya makin dewa gan. hehe

      gan,saya mau nanya kalau agan berkenan menjawab. hehe. Pada sintaks select * from laptop, kenapa di Result setelah di eksekusi outputnya berulang? Padahal harusnya muncul 5 baris doang. sementara yg muncul outputnya bisa sampai ratusan baris dan berulang?

      mohon pencerahanya gan
      Trims

      Delete
    3. Aamiin gan bro, makasih doanya hehe

      Waduhh bisa begitu, coba pake select top aja gan, klik kanan di tablenya hehe

      Delete
    4. Aamiin gan bro, makasih doanya hehe

      Waduhh bisa begitu, coba pake select top aja gan, klik kanan di tablenya hehe

      Delete
  2. create table pc(
    kdbarang nchar(12),
    model nchar(15),
    merk nchar(10),
    processor nchar(30),
    ram nchar(5),
    harddisk nchar(5),
    cdrom nchar(1),
    harga numeric(8)
    );
    go

    create table laptop(
    kdbarang nchar(12),
    model nchar(15),
    merk nchar(10),
    processor nchar(30),
    ram nchar(5),
    harddisk nchar(5),
    layar nchar(8),
    harga numeric(8)
    );
    go

    create table printer(
    kdbarang nchar(12),
    model nchar(15),
    merk nchar(10),
    warna nchar(1),
    );
    go

    angka angka di dalem syntax itu fungsinya buat apa gan?

    ReplyDelete
  3. Bantu jawab .
    Angka2 dalam kurung itu fungsinya untuk menentuka banyak maksimal jumlah karakter misal 6 jadi karakter maksimalnya 6 ndak boleh lebih misal merk kita masukin data "suzuki" kan pas 6 karakter boleh kurang tapi ndak boleh lebih

    ReplyDelete

luvne.com ayeey.com cicicookies.com mbepp.com kumpulanrumusnya.comnya.com tipscantiknya.com