Anda di halaman 1dari 23

LAPORAN PRAKTIKUM

PEMROGRAMAN BASIS DATA JARINGAN


COMMON TABLE EXPRESSION




Disusun Oleh :
Nama : Akhda Khairul Zadid
No : 3.34.11.0.05
Kelas : IK 3 A

PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SEMARANG
2013
I. Tujuan Instruksional Khusus
Setelah menyelsaikan praktek mahasiswa diharapkan dapat :
1. Memahami dan menggunakan SQL Server Management Studio.
2. Menginstall paket AdventureWorks database ke dalam SQL Server. Membuat database
dan tabel baru menggunakan Transact SQL.
3. Memahami dan menggunakan perintah query CTE pada SQL Server Management
Studio.
II. Teori Pendahuluan
Untuk memulai praktek anda harus menginstall paket database AdventureWorks untuk
SQLServer 2005. Database ini, berisi data fiktif sebuah perusahaan, dan merupakan hal
yang baru dan khusus di desain untuk mendesain dan membangun SQL Server 2005.
Untuk memulainya, install lah terlebih dahulu AdventureWorks , lalu buat database
nya.
Common Table Expressions
Common Table Expression (CTE) merupakan fitur baru SQL Server yang dimulai dari
SQL Server 2005. Bagi yang pernah menggunakan variabel bertipe TABLE, mungkin
ada kemiripan diantara keduanya. Menurut dokumentasi, CTE dapat digambarkan
sebagai hasil query sementara yang ada pada lingkup eksekusi operasi SELECT,
INSERT, UPDATE, DELETE, atau CREATE VIEW. CTE mirip dengan tabel turunan
yang tidak disimpan sebagai obyek. Tapi tidak seperti tabel turunan, CTE dapat di
referensikan ke diri sendiri dan dapat di referensikan beberapa kali pada query yang
sama. Menggunakan CTE memiliki beberapa keuntungan yaitu lebih mudah dibaca dan
memudahkan pengaturan pada query yang kompleks. Query dapat dipecah menjadi
beberapa query yang lebih sederhana. CTE dapat digunakan pada procedure, fungsi,
trigger atau view.
Cara penggunaanya:
WITH <expression_name> [<column_name [,...n]>]
AS
(<CTE_query_definition>)
Daftar nama kolom bisa tidak diberikan hanya jika pada definisi query terdapat nama
kolom yang masing-masing berbeda. Untuk menjalankan CTE sama seperti SELECT
dari sebuah tabel.
SELECT <column_list> FROM expression_name
Dibawah ini adalah contoh penggunaan CTE. Terdapat sebuah tabel yang berisi daftar
departemen dan pekerjaan. Sebuah departemen/pekerjaan bisa memiliki sub
departemen/pekerjaan. Ini hanya sebagai contoh cara penggunaan saja. Pada
penggunaan query yang kompleks akan terlihat keuntungan dari penggunaan CTE.
GROUP BY Clause
Klausa GROUP BY digunakan untuk mengatur keluaran baris dalam kelompok.
SELECT dapat mencakup fungsi agregat dan menghasilkan nilai keluaran untuk setiap
kelompok. Seringkali Anda akan ingin meng-generate laporan dari database dengan
angka ringkasan untuk kolom tertentu atau set kolom. Sebagai contoh, Anda mungkin
ingin mengetahui jumlah total masing-masing jenis kartu yang berakhir pada tahun
tertentu dari tabel Sales.CreditCard.
PIVOT Operator
Skenario umum dimana PIVOT dapat berguna adalah ketika Anda ingin menghasilkan
laporan tabulasi silang untuk meringkas data. Operator PIVOT dapat memutar baris
untuk kolom. Misalnya, Anda ingin query tabel Sales.CreditCard dalam data-base
AdventureWorks untuk menentukan jumlah kartu kredit dari jenis tertentu yang akan
berakhir pada tahun tertentu.
Jika anda melihat permintaan untuk GROUP BY disebutkan dalam bagian sebelumnya
dan ditunjukkan sebelumnya pada Figur 4-4, tahun 2008 dan 2009 juga telah diteruskan
ke klausa WHERE, tetapi mereka hanya ditampilkan sebagai bagian dari catatan dan
mendapatkan diulang untuk setiap jenis kartu secara terpisah, yang telah meningkatkan
jumlah baris untuk delapan. PIVOT mencapai tujuan yang sama dengan memproduksi
format con-Cukai dan mudah memahami laporan.
ROW_NUMBER() Function
SQL Server 2005 telah memperkenalkan fungsi ROW_NUMBER() untuk mengurutkan
: ini mengembalikan nilai yang unik , berurutan untuk tiap baris yang dikembalikan
hasilnya.
PARTITION BY Clause
The PARTITION BY Clause dapat digunakan untuk membagi hasil ditetapkan menjadi
partisi mana ROW_NUMBER () fungsi diterapkan. Penerapan fungsi ROW_NUMBER
() dengan PARTITION BY klausa mengembalikan nomor urut untuk setiap baris dalam
partisi dari satu set hasil, dimulai dari 1 untuk baris pertama di setiap partisi.
Pattern Matching
Pencocokan pola adalah teknik yang menentukan apakah karakter string cocok dengan
pola tertentu . Sebuah pola dapat dibuat dengan menggunakan kombinasi karakter biasa
dan karakter wildcard . Selama pencocokan pola , karakter biasa harus sama persis
seperti yang ditentukan dalam string karakter. SUKAI dan TIDAK SUKA ( negasi )
adalah operator yang digunakan untuk pencocokan pola . Ingat bahwa pencocokan pola
adalah kasus sensitif. SQL Server mendukung karakter wildcard untuk pencocokan pola
berikut:
% ( tanda persen) : wildcard ini merupakan nol sampai banyak karakter . Misalnya ,
MANA judul LIKE ' % VB 2008 % ' menemukan semua judul buku yang berisi teks
" VB 2008, " terlepas dari mana dalam judul bahwa teks - terjadi pada awal , tengah,
atau akhir . Dalam hal ini , judul buku seperti " VB 2008: An Introduction , " "
Dipercepat VB 2008, " dan " Awal 2008 VB Database " akan terdaftar .
_ (underscore ) : Sebuah garis bawah tunggal mewakili setiap karakter tunggal .
Dengan menggunakan karakter wild card , Anda bisa lebih spesifik dalam pencarian
Anda tentang panjang karakter data yang Anda cari . Misalnya, MANA au_fname
LIKE ' _ean ' menemukan semua nama pertama yang terdiri dari empat huruf dan
akhir bahwa dengan " bisakah " ( Dean , Sean , dan sebagainya) . MANA au_fname
LIKE ' a___n ' menemukan semua nama pertama yang dimulai dengan " a" dan
diakhiri dengan " n " dan memiliki tiga karakter lain di antara , seperti allan , amman
, aryan , dan sebagainya.
[ ] ( tanda kurung siku ) : Ini menentukan satu karakter apapun dalam kisaran
tertentu , seperti [ af ] , atau ditetapkan, seperti [ abcdef ] atau bahkan [ adf ] .
Misalnya, MANA au_lname LIKE ' [ CK ] arsen ' menemukan penulis nama terakhir
berakhir dengan " arsen " dan dimulai dengan karakter apapun antara " C " dan " K ,
" seperti Carsen , Darsen , Larsen , Karsen , dan sebagainya.
[ ^ ] ( tanda kurung siku dan tanda sisipan ) : Ini menentukan satu karakter apapun
tidak berada dalam kisaran Speci - fied , seperti [ ^ af ] , atau ditetapkan, seperti [ ^
abcdef ] . Misalnya, MANA au_lname LIKE ' de [ ^ l ] % ' mengambil semua
penulis nama terakhir dimulai dengan " de , " tapi surat berikut - tidak dapat " l . "
Aggregate Functions
SQL memiliki beberapa fungsi built-in yang agregat nilai-nilai kolom. Agregat fungsi-
fungsi yang diterapkan pada set baris dan mengembalikan nilai tunggal. Misalnya,
Anda dapat menggunakan fungsi agregat untuk menghitung harga satuan rata-rata
pesanan ditempatkan. Anda dapat menemukan order dengan harga termurah atau paling
mahal. MIN, MAX, SUM, AVG, dan COUNT yang fre-paling sering digunakan dalam
fungsi agregat.
DATETIME Functions
Meskipun standar SQL mendefinisikan tipe DATETIME data dan komponennya,
TAHUN, BULAN, HARI, JAM, MENIT, dan KEDUA, tidak mendikte bagaimana
DBMS membuat data ini tersedia. Setiap DBMS menawarkan fungsi yang mengekstrak
bagian DateTimes. Mari kita lihat beberapa contoh fungsi T-SQL DATETIME.
Joins
Kebanyakan query membutuhkan informasi dari lebih dari satu tabel . Sebuah join
adalah operasi relasional yang menghasilkan tabel dengan mengambil data dari dua (
tidak harus berbeda ) tabel dan pertandingan - ing baris mereka sesuai dengan
spesifikasi bergabung. Berbagai jenis bergabung ada, yang Anda akan melihat secara
individual , namun perlu diingat bahwa setiap join adalah operasi - yang biner , satu
meja adalah milik orang lain, yang mungkin meja yang sama karena tabel dapat
bergabung untuk diri mereka sendiri . Operasi join adalah topik kaya dan agak rumit .
Bagian berikutnya akan mencakup dasar-dasar . Untuk contoh bergabung , kita
menggunakan database favorit sepanjang masa , Northwind . Agar terhubung dengan
Northwind , lakukan langkah-langkah berikut dalam SSMSE :
1. Pilih File Putus Obyek Explorer , tutup semua jendela yang terbuka , dan klik
tombol Tidak jika diminta untuk menyimpan perubahan ke item .
2. Sekali lagi , klik File Connect Object Explorer . Pada Hubungkan ke kotak dialog
Server , pilih <servername> \ SQLEXPRESS sebagai nama server dan kemudian
klik Connect .
3. Pada Object Explorer , pilih database Northwind .
Inner Joins
Sebuah inner join adalah join paling sering digunakan. Ia mengembalikan hanya baris
yang memenuhi bergabung speci-fikasi. Meskipun secara teori setiap operator
relasional (seperti> atau <) dapat digunakan dalam spesifikasi bergabung, operator
kesetaraan (=) hampir selalu digunakan. Bergabung dengan menggunakan kesetaraan
opera-tor disebut bergabung alami. Sintaks dasar untuk inner join adalah sebagai
berikut:
select
<select list>
from
left-table INNER JOIN right-table
ON
<join specification>
Perhatikan bahwa INNER JOIN adalah operasi biner, sehingga memiliki dua operan,
kiri dan kanan meja-meja, yang mungkin tabel dasar atau apapun yang dapat dilihat
(misalnya, meja dihasilkan oleh subquery atau join lain). Kata kunci ON dimulai
spesifikasi bergabung, yang dapat berisi apa saja yang dapat digunakan dalam WHERE
clause.
Outer Joins
Luar bergabung kembali semua baris dari (setidaknya) salah satu meja bergabung
bahkan jika baris dalam satu tabel tidak cocok baris yang lain. Tiga jenis luar
bergabung ada: outer join kiri, kanan luar bergabung, dan penuh luar bergabung. Istilah
kiri dan kanan mengacu pada operan di sebelah kiri dan kanan dari operator
BERGABUNG. (Lihat sintaks dasar untuk bergabung dalam, dan Anda akan melihat
mengapa kita disebut operan kiri-kanan meja dan meja.) Dalam luar kiri bergabung,
semua baris dari tabel kiri akan diambil apakah mereka telah pencocokan baris di tabel
kanan. Sebaliknya, dalam outer join kanan, semua baris dari tabel kanan akan diambil
apakah mereka telah pencocokan baris dalam tabel kiri. Dalam outer join penuh, semua
baris dari kedua tabel dikembalikan.

III. Alat Dan Bahan
1. PC Processor minimal Pentium IV, RAM minimal 512 MB
2. Software Visual Studio 2008
3. Software SQL Server Management Studio

IV. Langkah Kerja
Installasi AdventureWorks
untuk menginstall AdventureWorks Sample database , lakukan langkah-langka berikut:
1. Buka browser ,masuk pada URL :
www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=5
705. Download AdventureWorksDB.msi.
2. Pada halaman display pada file terpilih , klik AdventureWorksDB.msi.
3. Pada saat dialog box muncul , pilih lokasi folder untuk di simpan kemudian klik save.
4. Ketika download selesai klik close.
5. Buka file AdventureWorksDB.msi yang telah terdownload untuk mulai di install.ketika
jendela awal proses installasi muncul , klik Next. Catat hasil dari perintah no.9 dan
masukan dalam lembar hasil praktek. (Praktek 2.1)
6. Ketika muncul jendela License Agreement pilih I Agree ketika folder destination
pada windows muncul , klik Next.
7. Ketika muncul jendela Ready to Install Program, klik install
8. Tunngu proses hingga proses instalasi selesai kemudian klik Finish
9. Catat hasil dan masukan dalam lembar hasil praktek. (Praktek 2.1)
Membuat AdventureWorks Sample Database pada SQL Server
10. Buka SQL Server Management Studio , Kemudian pastikan pada Server Name
tercantum nama PC anda , klik Connect.
11. Maka jendela SQL Management Studio akan muncul , kemudian klik kanan pada
Database lalu klik Attach pada context menu.
12. Pada jendela Attach Database , klik add.
13. Pada jendela Locate Database Files , pilih file AdventureWorks_Data.mdf dan klik OK.
maka jendela Attach Database akan muncul AdventureWorks_Data.mdf dan
AdventureWorks_Log.ldf . Kemudian klik OK .
14. Lihat kembali pada Databases , klik tombol Expands maka AdventureWorks database
akan terlihat .
15. Catat hasil dan masukan dalam lembar hasil praktek. (Praktek 2.2)
Membuat sebuah CTE
16. Untuk membuat CTE , buka jendela New Query pada Database AdventureWorks klik
kanan pilih New Query.
17. Masukkan query berikut pada SSMSE lalu dieksekusi.
WITH TopSales (SalesPersonID,TerritoryID,NumberOfSales)
AS
(
SELECT SalesPersonID,TerritoryID, Count(*)
FROM Sales.SalesOrderHeader
GROUP BY SalesPersonID, TerritoryID
)
SELECT * FROM TopSales
WHERE SalesPersonID IS NOT NULL
ORDER BY NumberOfSales DESC
18. Catat hasil dari perintah dan masukan dalam lembar hasil praktek. (Praktek 2.3)
Menggunakan Perintah GROUP BY.
19. Buka jendela New Query lagi dengan cara pada AdventureWorks klik kanan pilih New
Query.
20. Masukkan query berikut pada SSMSE lalu dieksekusi.
Use AdventureWorks
Go
Select CardType, ExpYear,count(CardType) AS 'Total Cards'
from Sales.CreditCard
Where ExpYear in (2008,2009)
group by ExpYear,CardType
order by CardType,ExpYear
21. Catat hasil dari perintah tersebut dan masukan dalam lembar hasil praktek. (Praktek
2.4)
Menggunakan Operator PIVOT
22. Buka jendela New Query lagi dengan cara pada AdventureWorks klik kanan pilih New
Query.
23. Masukkan query berikut pada SSMSE lalu dieksekusi.
Use AdventureWorks
Go
select CardType ,[2008] as Year2008,[2009] as Year2009
from
(
select CardType,ExpYear
from Sales.CreditCard
)piv Pivot
(
count(ExpYear) for ExpYear in ([2008],[2009])
)as carddetail
order by CardType
24. Catat hasil dari perintah tersebut dan masukan dalam lembar hasil praktek. (Praktek
2.5)
Menggunakan Fungsi ROW_NUMBER()
25. Buka jendela New Query lagi dengan cara pada AdventureWorks klik kanan pilih New
Query.
26. Masukkan query berikut pada SSMSE lalu dieksekusi.
select SalesPersonID, Bonus,
ROW_NUMBER() over (order by SalesPersonID) as [RowCount]
from Sales.SalesPerson
27. Catat hasil dari perintah tersebut dan masukan dalam lembar hasil praktek. (Praktek
2.6)
Mengggunakan Perintah PARTITION BY
28. Buka jendela New Query lagi dengan cara pada AdventureWorks klik kanan pilih New
Query.
29. Masukkan query berikut pada SSMSE lalu dieksekusi.
select CustomerID, TerritoryID ,
Row_Number() over (Partition by TerritoryID
order by CustomerID) as [RowCount]
from Sales.Customer
Where TerritoryID in (1,2) AND
CustomerID Between 1 and 75
30. Catat hasil dari perintah tersebut dan masukan dalam lembar hasil praktek. (Praktek
2.7)
Menggunakan karakter %
31. Buka jendela New Query lagi dengan cara pada AdventureWorks klik kanan pilih New
Query.
32. Masukkan query berikut pada SSMSE lalu dieksekusi.
select Title + ' ' + FirstName + ' ' + LastName
as "Person Name"
from Person.Contact
where FirstName like 'A%' and Title is not null
33. Catat hasil dari perintah tersebut dan masukan dalam lembar hasil praktek. (Praktek
2.8)
Menggunakan karakter _(Underscore)
34. Buka jendela New Query lagi dengan cara pada AdventureWorks klik kanan pilih New
Query.
35. Masukkan query berikut pada SSMSE lalu dieksekusi.
select Title + ' ' + FirstName + ' ' + LastName
as "Person Name"
from Person.Contact
where FirstName like 'B____a' and Title is not null
36. Catat hasil dari perintah tersebut dan masukan dalam lembar hasil praktek. (Praktek
2.9)
Menggunakan karakter [ ] (Square Bracket)
37. Buka jendela New Query lagi dengan cara pada AdventureWorks klik kanan pilih New
Query.
38. Masukkan query berikut pada SSMSE lalu dieksekusi.
select Title + ' ' + FirstName + ' ' + LastName
as "Person Name"
from Person.Contact
where FirstName like '[A-I]__' and Title is not null
39. Catat hasil dari perintah tersebut dan masukan dalam lembar hasil praktek. (Praktek
2.10)
Menggunakan karakter [^] (Square Bracket dan Caret)
40. Buka jendela New Query lagi dengan cara pada AdventureWorks klik kanan pilih New
Query.
41. Masukkan query berikut pada SSMSE lalu dieksekusi.
select Title + ' ' + FirstName + ' ' + LastName
as "Person Name"
from Person.Contact
where FirstName like '_[^I][a]__' and Title is not null
42. Catat hasil dari perintah tersebut dan masukan dalam lembar hasil praktek. (Praktek
2.11)
Menggunakan Fungsi MIN,MAX dan AVG
43. Buka jendela New Query lagi dengan cara pada AdventureWorks klik kanan pilih New
Query.
44. Masukkan query berikut pada SSMSE lalu dieksekusi.
select SalesOrderID,min(UnitPrice)as "Min",
max(UnitPrice) as "Max",Sum(UnitPrice) as "Sum",
Avg(UnitPrice)as "Avg"
from Sales.SalesOrderDetail
where SalesOrderID between 43659 and 43663
group by SalesOrderID
45. Catat hasil dari perintah tersebut dan masukan dalam lembar hasil praktek. (Praktek
2.12)
Menggunakan Fungsi Count
46. Buka jendela New Query lagi dengan cara pada AdventureWorks klik kanan pilih New
Query.
47. Masukkan query berikut pada SSMSE lalu dieksekusi.
Select count(*) as "Total Records" from Person.Contact
Select count(Title)as "Not Null Titles" from Person.Contact
48. Catat hasil dari perintah tersebut dan masukan dalam lembar hasil praktek. (Praktek
2.13)
Menggunakan Fungsi T-SQL Date and Time
49. Buka jendela New Query lagi dengan cara pada AdventureWorks klik kanan pilih New
Query.
50. Masukkan query berikut pada SSMSE lalu dieksekusi.
select
current_timestamp'standard datetime',
getdate()'Transact-SQL datetime',
datepart(year, getdate())'datepart year',
year(getdate())'year function',
datepart(hour, getdate())'hour'
51. Catat hasil dari perintah tersebut dan masukan dalam lembar hasil praktek. (Praktek
2.14)
Menulis Inner Join
52. Buka jendela New Query lagi dengan cara pada AdventureWorks klik kanan pilih New
Query.
53. Masukkan query berikut pada SSMSE lalu dieksekusi.
select
orders.orderid,
orders.customerid,
employees.lastname
from
orders inner join employees
on
orders.employeeid = employees.employeeid
54. Catat hasil dari perintah tersebut dan masukan dalam lembar hasil praktek. (Praktek
2.15)
Menuliskan Inner Join Menggunakan Correlation Names.
55. Buka jendela New Query lagi dengan cara pada AdventureWorks klik kanan pilih New
Query.
56. Masukkan query berikut pada SSMSE lalu dieksekusi.
select
o.orderid,
o.customerid,
e.lastname
from
orders o inner join employees e
on
o.employeeid = e.employeeid
57. Catat hasil dari perintah tersebut dan masukan dalam lembar hasil praktek. (Praktek
2.16)
Menulis Inner Join dari Tiga Tabel.
58. Buka jendela New Query lagi dengan cara pada AdventureWorks klik kanan pilih New
Query.
59. Masukkan query berikut pada SSMSE lalu dieksekusi.
select
o.orderid OrderID,
c.companyname CustomerName,
e.lastname Employee
from
orders o inner join employees e
on o.employeeid = e.employeeid
inner join customers c
on o.customerid = c.customerid
60. Catat hasil dari perintah tersebut dan masukan dalam lembar hasil praktek. (Praktek
2.17)
Menambahkan Employee tanpa Orders
61. Buka jendela New Query lagi dengan cara pada AdventureWorks klik kanan pilih New
Query.
62. Masukkan query berikut pada SSMSE lalu dieksekusi.
insert into employees
(
firstname,
lastname
)
values ('Amy', 'Abrams')
63. Catat hasil dari perintah tersebut dan masukan dalam lembar hasil praktek. (Praktek
2.18)
Menggunakan Left Outer Join
64. Buka jendela New Query lagi dengan cara pada AdventureWorks klik kanan pilih New
Query.
65. Masukkan query berikut pada SSMSE lalu dieksekusi.
select
e.firstname,
e.lastname,
o.orderid
from
employees e left outer join orders o
on e.employeeid = o.employeeid
order by 2, 1
66. Catat hasil dari perintah tersebut dan masukan dalam lembar hasil praktek. (Praktek
2.19)

V. Lembar Kerja
No Praktek Komentar dan Hasil
1 2.1

Proses installasi paket database adventureWorks sama dengan
proses instalasi software lainnya.
2 2.2

attach database AdventureWorks_Data.mdf dan
AdventureWorks_Log.ldf Untuk dapat mengakses database
AdventureWorks
3 2.3


WITH TopSales ( SalesPersonID, TeriittoryID, NumberOfSales)
terdiri dari tiga buah kolom, yang berarti perintah SELECT di
dalam brace nya :
SELECT SalesPersonID,TerritoryID, Count(*)
Juga akan memiliki tiga buah kolom, dan tiap kolom yang telah di
sebutkan dalam statemen SELECT akan di spesifikasikan didalam
CTE.
4 2.4

Terdapat tiga buah kolom yang akan di beri fungsi COUNT untuk
menghitung total cards dari kolom CardType dan tabel
CreditCard :
Select CardType, ExpYear,count(CardType) AS 'Total Cards'
from Sales.CreditCard
lalu ketikan WHERE , dan klausa GROUP BY dan ORDER BY.
WHERE memastikan kartu yang akan expire pada 2008 atau 2009.
5 2.5

Memulai dengan SELECT lalu tentukan kolom yang akan diganti
dengan alias yang akan muncul.
select CardType ,[2008] as Year2008,[2009] as Year2009
from
lalu tentukan SELECT untuk tabel dengan nama kolom yang akan
digunakan datanya, dan tambahkan juga operator PIVOT untuk
SELECT.
select CardType,ExpYear
from Sales.CreditCard
) piv Pivot
Sekarang hitunglah jumlah dari kolom CardType untuk tahun 2008
dan 2009 dengan statemen sebagai berikut
(
count(ExpYear) for ExpYear in ([2008],[2009])
)as carddetail
6 2.6

ROW_NUMBER() digunakan sebagai hitungan berurutan di
sebuah kolom bernama RowCount . RowCount ditampilkan melalui
sebuah tanda kurung siku ([]) karena RowCount merupakan sebuah
kata kunci dari SQL Server sehingga tidak dapat digunakan secara
langsung, jika dipaksakan maka akan terjadi error.
7 2.7

RowCount terbagi menjadi dua untuk masing masing nilai dari
TeritoryID dan akan berulang ketika TeritoryID nya berubah.
8 2.8

Menggabungkan antara tiga kolom Title, FirstName dan lastName
dengan tanda + didalam kolom Person Name . klausa where
digunakan untuk menunjukkan bahwa FirstName harus diawali
dengan A.
9 2.9

Menggabungkan antara tiga kolom Title, FirstName dan lastName
dengan tanda + didalam kolom Person Name . klausa where
digunakan untuk FirstName yang berisi total enam karakter dimulai
dengan huruf B dan diakhiri dengan a dan memiliki empat
huruf diantaranya.
10 2.10

Menggabungkan antara tiga kolom Title, FirstName dan lastName
dengan tanda + didalam kolom Person Name . klausa where
digunakan untuk menyeleksi kolom FirstName yang huruf
pertamanya diawali mulai dari huruf A hingga I.
11 2.11

Menggabungkan antara tiga kolom Title, FirstName dan lastName
dengan tanda + didalam kolom Person Name . klausa where
digunakan untuk menyeleksi dari FirstName yang terdiri dari lima
karakter dan diawali dengan dua huruf kecuali I dan diikuti
dengan a, lalu ada dua huruf lagi dan dari kolom Title tidak boleh
kosong.
12 2.12

Menyeleksi SalesOrderID , nilai minimal dari UnitPrice sebagai
Min , nilai maksimal dari UnitPrice sebagai Max , Jumlah dari
UnitPrice sebagai Sum, rata rata dari UnitPrice sebagai Avg dari
tabel Sales.SalesOrderDetail dimana SalesOrderId diantara 43659
dan 43663
13 2.13

Baris pertama digunakan untuk memilih jumlah total dari
seluruh tabel Person, kemudian pada baris kedua merupakan
perintah untuk menyeleksi jumlah total dari seluruh tabel
person yang ada isinya pada kolom title
14 2.14

Baris pertama dan kedua current_timestamp standard datetime
dan getdate()Transact-SQL datetime merupakan fungsi yang sama
dan memiliki efek yang sama. Kedua fungsi yang selanjutnya juga
memiliki efek yang sama yaitu menampilkan tahun saat ini.
Pertama menggunakan fungsi T-SQL DATEPART dan yang kedua
menggunakan fungsi T-SL YEAR. Keduanya merupakan argumen
dari DATETIME dan mengembalikan nilai integer. Yang terakhir
adalah fungsi untuk mengambil nilai jam.
15 2.15

Memilih tiga buah kolom dengan menggabungkan secara inner join
tabel orders dan employees.
16 2.16

Mengganti nama tabel dengan alias o untuk tabel order e untuk
employees. Semakin pendek maka semakin mudah dalam penulisan
kode
17 2.17

Gabungan dari tiga buah tabel dengan menggunakan inner
join dari tabel employee , orders dan custumer masing masing
menggunakan alias o , c dan e. Dan menggunakan
18 2.18

Memasukan record baru dengan values firstname Amy dan
lastname Abrams
19 2.19

Menampilakan firstname , lastname dan ordered dari 2 tabel yang
berbeda yaitu orders o dan employees e yang digabung
menggunakan inner outer join.


VI. Tugas
1. Buat tabel baru bernama Beasiswa dengan kolom NIM (varchar), Beasiswa (varchar) ,
Tahun(int) dan Prodi (varchar).
2. Isikan tiap record dengan beberapa data dengan data yang berbeda beda .
3. Tampilkan data Beasiswa dengan ketentuan seperti berikut:
- Menampilkan tiap Prodi banyaknya mahasiwa yang mendapat beasiwa mulai dari
tahun 2008 hingga 2013 diikuti dengan Jumlah mahasiswa yang mendapat beasiwa
mulai dari tahun 2008 hingga 2013 .
- Menampilkan tiap Prodi dan Nama Beasiswa banyaknya mahasiwa yang mendapat
beasiwa pada tahun 2011 dan 2012 diikuti dengan Jumlah mahasiswa yang
mendapat beasiwa mulai dari tahun 2011 hingga 2012.
Jawab :
1. Membuat tabel baru bernama Beasiswa dengan kolom NIM (varchar), Beasiswa
(varchar) , Tahun(int) dan Prodi (varchar).

2. Mengisikan data pada tabel beasiswa

3. Untuk menampilkan tiap Prodi banyaknya mahasiwa yang mendapat beasiwa mulai
dari tahun 2008 hingga 2013 diikuti dengan Jumlah mahasiswa yang mendapat beasiwa
mulai dari tahun 2008 hingga 2013 .dapat dilakukan dengan mengetikkan query seperti
berikut:
SELECT prodi ,[2008] as Year2008,[2009] as Year2009,
[2010] as Year2010,[2011] as Year2011,
[2012] as Year2012,[2013] as Year2013,
(ISNULL(ProdiDetail.[2008],0)+ISNULL(ProdiDetail.[2009],0)+ISNULL(Prod
iDetail.[2010],0)+ISNULL(ProdiDetail.[2011],0)+ISNULL(ProdiDetail.[201
2],0)+ISNULL(ProdiDetail.[2013],0))Jumlah
FROM
(
SELECT prodi,Tahun
FROM dbo.tabel_beasiswa
)piv Pivot
(
count(tahun) for tahun in ([2008],[2009],[2010],[2011],[2012],[2013])
)as ProdiDetail
order by prodi

Hasilnya akan seperti ini :

4. Untuk menampilkan tiap Prodi dan Nama Beasiswa banyaknya mahasiwa yang
mendapat beasiwa pada tahun 2011 dan 2012 diikuti dengan Jumlah mahasiswa yang
mendapat beasiwa mulai dari tahun 2011 hingga 2012.
dapat dilakukan dengan mengetikkan query seperti berikut:
SELECT Prodi ,Beasiswa,[2011] as Year2011,[2012] as
Year2012,(ISNULL(ProdiDetail.[2011],0)+ISNULL(ProdiDetail.[2012],0))Ju
mlah
FROM
(
SELECT Prodi,Tahun,Beasiswa
FROM dbo.Beasiswa
)piv Pivot
(
count(Tahun) for Tahun in ([2011],[2012])
)as ProdiDetail
order by Prodi



VII. Kesimpulan
1. CTE dapat digambarkan sebagai hasil query sementara yang ada pada lingkup eksekusi
operasi SELECT, INSERT, UPDATE, DELETE, atau CREATE VIEW. CTE mirip
dengan tabel turunan yang tidak disimpan sebagai obyek.
2. ROW_NUMBER digunakan untuk mengurutkan nilai
3. Patern Matching adalah sebuah teknik untuk mencocokan pola menggunakan karakter
string %, _, [], dan ^
4. Aggregate Functions adalah fungsi yang digunakan untuk menentukan nilai
menggunakan MAX, MIN, SUM, AVG, COUNT
5. DATETIME Functions adalah fungsi untuk menampilkan tanggal
6. joins digunakan untuk menggabungkan dua atau lebih tabel dan dihasilkan dalam satu
buah tabel.

Anda mungkin juga menyukai