T-SQL (Transact-SQL) T-SQL ada 2 macam T- sql query T- sql Programming T-SQL Query : merupakan bahasa pemrograman yang digunakan oleh SQL server untuk mengakses data dan juga melakukan modifikasi data, mulai dari select,insert , update, dan delete data. Menggunakan query-query secara tepat dan efisien , performa pada database akan meningkatkan . T-SQL Programming : saat membutuhkan business process dan business rule pada sisi database, bisa menggunakan T-SQL programming, seperti stored procedure, function, trigger, cursor dan table temp. performa database sql server akan jauh lebih cepat .
T-SQL query Pengambilan data pada SELECT Pengambilan data pada column yang didefinisikan pada perintah select harus sesuai dengan data data yang akan dilihat oleh user. Hal ini akan mengurangi network bandwidth yang terjadi antara database server dan application server, sehingga data yang diambil benar-benar sesuai dengan kebutuhan . Database script untuk mengambil data pada table dengan menggunakan select adalah :
--- Query (1) SELECT * FROM CUSTOMERS --- Query (2) SELECT kode_customer , nama_customer , alamat , telepon , jenis_cust , tanggal_join FROM CUSTOMERS --- Query (1) SELECT * FROM CUSTOMERS --- Query (2) SELECT kode_customer , nama_customer , alamat , telepon , jenis_cust , tanggal_join FROM CUSTOMERS --- Query (3) SELECT kode_customer , nama_customer FROM CUSTOMERS Pada query (1) didefinisikan ‘*’ untuk mengambil data pada table CUSTOMERS, artinya seluruh field yang ada pada table CUSTOMERS akan diekstrak dan ditampilkan . Pada contoh query (3) dengan mendefinisikan column yang memang diperlukan , sehingga mengurangi network bandwidth dari database server ke application server.
2. Menggunakan TOP Ketika mengambil beberapa data dari tabel berdasarkan data yang paling atas , pada sql server bisa menggunakan kata TOP. Dengan menggunakan TOP, SQL Engine akan mengembalikan beberapa data sesuai dengan nilai yang didefinisikan pada TOP. Database script untuk mendefinisikan TOP pada perintah select sebagai berikut :
--- Query (1) SELECT TOP 5 kode_customer , nama_customer , alamat , telepon , jenis_cust , tanggal_join FROM CUSTOMERS WHERE delete_flag =0 --- Query (2) SELECT TOP 10 sales_id , tanggal_trx , jumlah , status, keterangan FROM SALES WHERE delete_flag =0 Pada query mendefiniskan TOP 5 pada masing-masing query. Dengan demikian data pada masing - masing query akan keluar sebanyak 5 teratas berdasarkan urutannya . Urutan secara default adalah ascending, mendefinisikan urutan secara terbalik dengan mendefinisikan descending. TOP digunakan untuk mengambil data teratas dengan jumlah yg didefinisikan . Dengan menggunakan TOP, bisa meminalisir data yang akan ditampilkan oleh SQL Engine sehingga network bandwidth datanya menjadi lebih bagus . Hal ini bisa sebuah diimplementasikan pada halaman search sebuah aplikasi , yang datanya banyak dan user melakukan searching atau yang data pecariannya banyak .
3. Menggunakan WHERE Kata where pada perintah select adalah untuk melakukan filtering data yang akan diambil oleh SQL Engine. Penggunaan kata where sangat beragam karena dengan mendefisikan where pada perintah select, akan mempengaruhi index pada tabel . Pendefinisian column pada kata where akan menetukan query optimizer pada SQL Engine untuk menentukan index yang akan digunakan . Database script untuk menggunakan kata where pada perintah select berikut :
--- Query (1) SELECT nama_customer , alamat , telepon , jenis_cust , tanggal_join FROM CUSTOMERS WHERE jenis_cust = ‘NVIP’ ---Query (2) SELECT nama_customer , alamat , telepon , jenis_cust , tanggal_join FROM CUSTOMERS WHERE tanggal_join < ‘23 January 2018’ --- Query (3) SELECT nama_customer , alamat , telepon , jenis_cust , tanggal_join FROM CUSTOMERS WHERE alamat LIKE ‘A%’ ---Query (4) SELECT nama_customer , alamat , telepon , jenis_cust , tanggal_join FROM CUSTOMERS WHERE alamat LIKE ‘%A%’
Pada query (1) dan (2), didefinisikan query dengan ‘=‘ dan ‘<‘. SQL Engine akan menggunakan index dalam mencari data tersebut . Akan tetapi penggunaan ‘=‘ lebih cepat dibandingkan dengan menggunakan ‘<‘. Pada query (3) dan (4) mendefiniskan query menggunakan LIKE. LIKE akan menggunakan index jika tidak menggunakan ‘%’ di depan karena data pada LIKE tidak akan berubah nilainya . Jika mendefinisikan % diawal seperti pada query (4), SQL Engine tidak akan menggunakan index karena datanya bisa berubah-ubah . Kata WHERE sebaiknya juga tidak digunakan dengan function.
--- Query (1) SELECT nama_customer , alamat , telepon , jenis_cust , tanggal_join FROM CUSTOMERS WHERE SUBSTRING(jenis_cust,1,1)=‘N’ ---Query (2) SELECT nama_customer , alamat , telepon , jenis_cust , tanggal_join FROM CUSTOMERS WHERE jenis_cust LIKE ‘N%’ Query (1) mendefinsikan where dengan SUBSTRING. SUBSTRING merupakan salah satu function yang ada pada SQL server untuk mengolah kata . Menggunakan SUBSTRING, SQL Engine tidak akan menggunakan index dalam pencarian data. Untuk bisa menggunakan index, query bisa diganti dengan LIKE
4. Mendefiniskan JOIN TABLE Join table adalah mekanisme pada SQL server untuk mengambil data dari tabel yang saling berhubungan satu sama lain. Join table pada sql server bisa menggunkan INNER JOIN, LEFT JOIN, RIGHT JOIN dan FULL JOIN. Tetapi tidak semua sering digunakan , hanya INNER JOIN dan LEFT JOIN yang sering digunakan pada aplikasi . Database script untuk mendefiniskan query dengan join tabel adalah :
--- Query (1) SELECT nama_customer , alamat , tanggal_trx , status, keterangan FROM CUSTOMERS CUST INNER JOIN SALES SAL ON CUST. kode_customer = SAL. kode_customer WHERE CUST. delete_flag =0 AND SAL. delete_flag =0 ---Query (2) SELECT nama_customer , alamat , tanggal_trx , status, keterangan FROM CUSTOMERS CUST LEFT JOIN SALES SAL ON CUST. kode_customer = SAL. kode_customer WHERE CUST. delete_flag =0 Query (1) dan (2) adalah query mendefinisikan join tabel antara tabel CUSTOMERS dan SALES. Tabel-tabel tersebut dihubungkan dengan column kode_customer yang dimiliki oleh masing-masing tabel . Mendefinisikan query dengan INNER JOIN dan LEFT JOIN untuk mengambil data pada tabel CUSTOMERS yang ada di tabel SALES.
--- CUSTOMERS CREATE TABLE CUSTOMERS ( kode_customer CHAR(5) NOT NULL PRIMARY KEY, nama_customer VARCHAR(25) NULL, alamat VARCHAR(50) NULL, telepon VARCHAR(10) NULL, jenis_cust VARCHAR (5) NULL ) ---SALES CREATE TABLE SALES ( sales_id INT NOT NULL IDENTITY PRIMARY KEY, tanggal_trx DATETIME NULL, jumlah DECIMAL(29,2), status VARCHAR(5), keterangan VARCHAR(50) )
T-SQL query 5. Penggunaan NON-SARGABLE 6. Penggunaan SUB-QUERY 7. Menggunakan IN 8. Menggunakan EXISTS 9. Menggunakan POSITIF ARGUMEN 10. Menggunakan ROW CONSTRUCTOR 11. Menggunakan MERGE QUERY 12. Penggunaan INSERT INTO SELECT 13. Penggunaan BETWEEN 14. Penggunaan DISTINCT 15. Penggunaan TRUNCATE TABLE 16. Penggunaan EXEC 17. Penggunaan SP_EXECUTESQL
T-SQL Programming Declaration Table Karena sifatnya declaration yang artinya harus didefinisikan sebelum dieksekusi , untuk menjalankannya harus selalu membuat tabel tersebut . Tetapi tidak perlu menghapus table jika sudah tidak diperlukan karena secara otomatis , table akan terhapus jika eksekusi selesai dilakukan .
Database script penggunaan declaration table adalah : DECLARE @ CustomerTable TABLE { kode_customer CHAR(5) NOT NULL PRIMARY KEY, nama_customer VARCHAR(25) NULL, alamat VARCHAR(50) NULL, telep on VARCHAR(10) NULL, jenis_cust VARCHAR(5) NULL, tanggal_join DATE NULL, delete_flag CHAR(1) NULL } INSERT INTO @ CustomerTable SELECT * FROM CUSTOMERS SELECT * FROM @ CustomerTable Query tersebut adalah merupakan mengimplementasikan declaration table, dimana dibuat @ CustomerTable sebagai declaration table. Pada @ CustomerTable mendefinisikan column yang sama seperti table CUSTOMERS, dan selajutnya table variable dimasukkan data yang berasal dari table CUSTOMERS
T-SQL Programming 2. Temporary Table 3. Set NOCOUNT property 4. Membuat Store Procedure 5. Membuat Function 6. Membuat Trigger 7. Menggunakan View 8. Menggunakan Table-Valued Parameter 9. Menggunakan Cursor 10. FAST FORWARD pada cursor 11. Menggunakan Try Catch