create database LatihDB
Klik gambar untuk memperbesar |
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
Klik gambar untuk memperbesar |
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 |
select * from pc
Klik gambar untuk memperbesar |
select * from laptop
Klik gambar untuk memperbesar |
select * from printer
Klik gambar untuk memperbesar |
- Tampilkan data PC dengan kolom merk, processor, harddisk, dan harga dibawah 5000000.
- Tampilkan data PC dan laptop dengan kolom model, merk, processor, harddisk, dengan cdrom(untuk PC), dan harga dibawah 4800000.
- Tampilkan data laptop dengan kolom merk, harddisk, processor"Intel".
- Tampilkan Data PC dan Laptop dengan kolom merk"HP", model, processor, harga .
- Tampilkan Data Printer dengan kolom merk, model, harga dengan harga tertinggi.
Jawaban no.1 Tampilkan data PC dengan kolom merk, processor, harddisk, dan harga dibawah 5000000.
select merk, processor, harddisk, harga from LatihDB.dbo.pc where harga < 5000000
Klik gambar untuk memperbesar |
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 |
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'
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 |
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 |
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 .
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 |
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
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