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.