Tujuan

Untuk  melengkapi materi presentasi sebelumnya, seperti Transact-SQL adalah suplemen dengan standar SQL yang berlaku. tujuan hari ini adalah untuk

  • Mengidentifikasi salah satu ekstensi ke SQL populer
  • Garis fitur utama dari Transact-SQL
  • Memberikan contoh-contoh praktis untuk memberikan pemahaman tentang bagaimana Transact-SQL digunakan

Gambaran Umum Transact-SQL

“Advanced SQL Topik,” singkat meliputi SQL statis. Contoh-contoh pada beberapa hari yang lalu  menggambarkan penggunaan SQL tertanam dalam bahasa pemrograman generasi ketiga seperti C. Dengan metode pemrograman, kode SQL tertanam tidak berubah dan karena itu, terbatas. Di sisi lain, Anda dapat menulis SQL dinamis untuk melakukan fungsi yang sama sebagai bahasa pemrograman prosedural dan memungkinkan kondisi yang akan diubah dalam kode SQL.

Seperti yang telah kita disebutkan dalam diskusi hampir setiap topik dalam buku ini, hampir semua vendor database telah menambahkan banyak ekstensi bahasa. Transact-SQL adalah Sybase dan Microsoft SQL Server database produk. itu produk Oracle PL / SQL. Masing-masing bahasa berisi fungsionalitas lengkap segala sesuatu yang telah kita bahas sejauh ini. Selain itu, setiap produk mengandung banyak ekstensi SQL standar ANSI.

Ekstensi ke SQL ANSI

Untuk menggambarkan penggunaan ekstensi ini SQL untuk membuat logika pemrograman yang sebenarnya, kita menggunakan Sybase dan Transact-SQL Microsoft SQL Server. Ini berisi sebagian besar konstruksi yang ditemukan dalam bahasa generasi ketiga, serta beberapa fitur spesifik Server-SQL yang berubah menjadi alat yang sangat berguna bagi programmer database. (‘Produsen ekstensi lain berisi banyak fitur dan banyak lagi.)

Siapa yang Menggunakan Transact-SQL?

Semua membaca buku ini dapat menggunakan Transact-SQL – programmer database relasional biasa yang kadang-kadang menulis query serta pengembang yang menulis aplikasi dan menciptakan objek seperti pemicu dan prosedur yang tersimpan.


CATATAN: Pengguna Sybase dan Microsoft SQL Server yang ingin mengeksplorasi kemampuan sebenarnya dari pemrograman basis data relasional harus menggunakan fitur Transact-SQL.

Komponen Dasar Transact-SQL

SQL ekstensi mengatasi batas-batas SQL sebagai bahasa prosedural. Sebagai contoh, Transact-SQL memungkinkan Anda untuk mempertahankan kontrol yang ketat terhadap transaksi database Anda dan untuk menulis program database prosedural yang praktis membuat programmer dibebaskan dari tugas melelahkan pemrograman.

Tutorial hari ini meliputi fitur kunci berikut Transact-SQL:

  • Berbagai macam tipe data untuk mengoptimalkan penyimpanan data
  • Program aliran perintah seperti loop dan IF-ELSE laporan
  • Penggunaan variabel dalam pernyataan SQL
  • Disarikan laporan menggunakan perhitungan
  • Diagnostik fitur untuk menganalisis laporan SQL
  • Banyak pilihan lain untuk meningkatkan standar bahasa SQL

Jenis Data

Pada Hari ke-9, “Menciptakan dan Mempertahankan Tabel,” dibahas kita tipe data. Ketika membuat tabel pada SQL, Anda harus menentukan tipe data spesifik untuk setiap kolom.


CATATAN: Data jenis bervariasi antara implementasi dari SQL karena cara masing-masing database server toko data. Misalnya, Oracle menggunakan tipe data yang dipilih, sedangkan Sybase dan Microsoft SQL Server memiliki data sendiri jenis mereka.

Sybase dan Microsoft SQL Server mendukung tipe data sebagai berikut.

Karakter String

  • char string panjang karakter toko-tetap, seperti singkatan NEGARA, bila Anda tahu bahwa kolom akan selalu dua karakter.
  • varchar toko panjang karakter string-variabel, seperti nama seorang individu, di mana panjang pasti dari nama tidak ditentukan, misalnya, AL RAY untuk WILLIAM Stephenson.
  • toko teks string dengan ukuran hampir tak terbatas, seperti kolom komentar atau deskripsi dari jenis layanan.

Jenis Data numerik

  • toko int bilangan bulat dari -2 147,, 483, 647-2, 147, 483, 647.
  • smallint toko integer dari -32768 sampai 32.767.
  • tinyint menyimpan integer dari 0 ke 255.
  • float mengungkapkan nomor sebagai nomor floating-point dengan presisi data nyata. Penulisan angka dengan desimal diperbolehkan dengan tipe data. Nilai berkisar dari 2,23 E-308-1,79 E308.
  • nyata mengekspresikan bilangan real dengan presisi data dari 1,18 E-38-3,40 E38.

DATE Jenis Data

  • nilai datetime berkisar Jan 1, 1753 to Dec 31, 9999.
  • smalldatetime rentang nilai dari Jan 1, 1900 untuk Jun 6, 2079.

Jenis Data Uang

  • uang toko  nilai sampai dengan +922,337,203,685,477.5808.
  • smallmoney toko  nilai sampai dengan +214,748.3647.

Uang nilai dimasukkan ke tabel menggunakan tanda dolar, misalnya:

  masukkan payment_tbl (customer_id, paydate, pay_amt) 
  nilai (012.845, "1 Mei 1997", $ 2.099,99) 

Binary Strings

  • toko biner tetap-panjang string biner.
  • varbinary toko variabel-panjang string biner.
  • toko citra biner string yang sangat besar, misalnya, foto dan gambar-gambar lainnya.

bit: Tipe A Data Logis

Bit tipe data yang sering digunakan untuk menandai baris tertentu dari data di dalam tabel. Nilai yang disimpan dalam kolom tipe data yang sedikit adalah baik 1 atau 0. Misalnya, nilai 1 Mei menunjukkan kondisi benar, sedangkan 0 menunjukkan kondisi palsu. Contoh berikut menggunakan tipe data bit untuk menciptakan tabel yang berisi nilai tes individu:

  membuat tabel test_flag 
  (Int ind_id bukan null, 
    int test_results bukan null, 
    result_flag bit tidak nol) 
ANALISIS:

The result_flag kolom didefinisikan sebagai kolom bit, dimana bit merupakan karakter baik lulus atau gagal, mana pass adalah benar dan gagal adalah palsu.

Sepanjang sisa hari itu, perhatikan jenis data yang digunakan saat membuat tabel dan menulis kode Transact-SQL.


CATATAN: Kode di’s contoh hari ini menggunakan huruf besar dan huruf kecil baik. Meskipun kata kunci SQL tidak sensitif huruf dalam sebagian besar implementasi dari SQL, selalu periksa pelaksanaan Anda.

Mengakses Database dengan Transact-SQL

Baiklah, cukup bicara. Untuk benar-benar menjalankan contoh hari ini, Anda akan perlu untuk membangun tabel database berikut dalam database bernama Baseball.

Database Baseball

Baseball database terdiri dari tiga tabel digunakan untuk melacak informasi bisbol khas: tabel batters, meja pitchers, dan meja TIM. Database ini akan digunakan dalam contoh sepanjang sisa hari ini.

The batters TABEL

  NAMA char (30) 
  TIM int 
  RATA-RATA float 
  Int HOMERUNS 
  Int RBIs 

Tabel di atas dapat dibuat dengan menggunakan pernyataan Transact-SQL berikut:

INPUT:
  1> membuat database default Baseball 
  2> pergi 
  1 menggunakan Baseball> 
  2> pergi 
  1> membuat batters tabel ( 
  2> NAMA char (30), 
  3 TIM int>, 
  4 RATA-RATA float>, 
  5> HOMERUNS int, 
  6 RBIs> int) 
  7> pergi 
ANALISIS:

Baris 1 menciptakan database. Anda menetapkan Baseball database dan kemudian membuat batters meja bawah bisbol.

Masukkan data pada Tabel 19,1 ke dalam tabel batters.


CATATAN: Perintah pergi yang memisahkan setiap pernyataan Transact-SQL dalam contoh sebelumnya adalah bukan bagian dari tujuan Transact-SQL. pergi s ‘lewat pernyataan masing-masing dari aplikasi front-end ke SQL Server.

Tabel 19,1. Data untuk tabel batters.

Nama Tim Rata-rata Homeruns RBIs
Billy Brewster 1 0,275 14 46
John Jackson 1 0,293 2 29
Phil Hartman 1 0,221 13 21
Jim Gehardy 2 0,316 29 84
Tom Trawick 2 0,258 3 51
Eric Redstone 2 0,305 0 28

The pitchers Tabel

Tabel pitchers dapat dibuat dengan menggunakan pernyataan Transact-SQL berikut:

INPUT:
 1> menggunakan> 2 Baseball pergi 1> pitchers membuat tabel (2> NAMA char (30), 3> TIM int, 4> int WON, 5> int HILANG, 6> ERA float) 7> pergi

Masukkan data pada Tabel 19,2 ke dalam tabel pitchers.

Tabel 19,2. Data untuk tabel pitchers.

Nama Tim Won Kalah Era
Tom Madden 1 7 5 3,46
Bill Witter 1 8 2 2,75
Jeff Knox 2 2 8 4,82
Hank Arnold 2 13 1 1,93
Tim Smythe 3 4 2 2,76

The TIM Tabel

TIM tabel dapat dibuat dengan menggunakan pernyataan Transact-SQL berikut:

INPUT:
  1 menggunakan Baseball> 
  2> lanjut 
  1> TIM membuat tabel ( 
  2 int TEAM_ID>, 
  3> Kota char (30), 
  4> NAMA char (30), 
  5> int WON, 
  6> HILANG int, 
  7 TOTAL_HOME_ATTENDANCE int>, 
  8 AVG_HOME_ATTENDANCE int>) 
  9> pergi 

Masukkan data pada Tabel 19,3 ke dalam tabel TIM.

Tabel 19.3. Data untuk tabel TIM.

Team_ID Kota Nama Won Kalah Total_Home_Attendance Avg_Home_Attendance
1 Portland Berang-berang 72 63 1.226.843 19.473
2 Washington Perwakilan 50 85 941.228 14.048
3 Tampa Hiu 99 36 2.028.652 30.278

Mendeklarasikan Variabel Lokal

Setiap bahasa pemrograman memungkinkan suatu metode untuk menyatakan lokal (atau global) variabel yang dapat digunakan untuk menyimpan data. Transact-SQL tidak terkecuali.Mendeklarasikan variabel menggunakan Transact-SQL merupakan prosedur yang sangat sederhana. Kata kunci yang harus digunakan adalah kata kunci MENYATAKAN. sintaks penulisannya seperti ini:

Sintaks:

menyatakan @ data_type variable_name

Untuk mendeklarasikan variabel string karakter untuk menyimpan ‘nama-nama pemain, gunakan pernyataan berikut:

  1> menyatakan @ nama char (30) 
  2> pergi 

Perhatikan simbol @ sebelum nama variabel tersebut. Simbol ini diperlukan dan digunakan oleh prosesor untuk mengidentifikasi variabel query.

Mendeklarasikan Variabel Global

Jika Anda mempelajari lebih lanjut ke dokumentasi Transact-SQL, Anda akan melihat bahwa simbol @ @ mendahului beberapa nama-tingkat variabel sistem. Sintaks ini menunjukkan variabel global SQL Server yang menyimpan informasi.

Mendeklarasikan variabel global sendiri Anda sangat bermanfaat bila menggunakan prosedur Server disimpan. SQL juga mempertahankan beberapa sistem variabel global yang berisi informasi yang mungkin berguna bagi pengguna sistem database. Tabel 19,4 berisi daftar lengkap dari variabel-variabel ini. Sumber untuk daftar ini adalah Sybase SQL Server System 10 dokumentasi.

Tabel 19,4. SQL Server global variabel.

Nama Variabel Tujuan
@ @ Char_convert 0 jika konversi karakter set berlaku.
@ @ Client_csid Klien karakter set ID.
@ @ Client_csname Klien set karakter nama.
@ @ Sambungan Jumlah SQL Server login sejak dimulai.
@ @ Cpu_busy Jumlah waktu, di kutu, CPU telah sibuk sejak SQL Server dimulai.
@ @ Error Berisi kesalahan status.
@ @ Identitas Terakhir nilai dimasukkan ke dalam kolom identitas.
@ @ Idle Jumlah waktu, di kutu, bahwa SQL Server telah diam sejak dimulai.
@ @ Io_busy Jumlah waktu, di kutu, bahwa SQL Server telah menghabiskan melakukan I / O.
@ @ Isolasi isolasi saat ini tingkat program Transact-SQL.
@ @ Langid Mendefinisikan bahasa lokal ID.
@ @ Bahasa Mendefinisikan nama bahasa lokal.
@ @ Maxcharlen Maksimum panjang karakter.
@ @ Max_connections Maksimum jumlah koneksi yang dapat dibuat dengan SQL Server.
@ @ Ncharsize Panjang rata-rata yang bersifat nasional.
@ @ Nestlevel Nesting tingkat eksekusi.
@ @ Pack_received Jumlah paket input dibaca oleh SQL Server karena dimulai.
@ @ Pack_sent Jumlah paket output dikirim oleh SQL Server karena dimulai.
@ @ Packet_errors Jumlah kesalahan yang terjadi sejak SQL Server dimulai.
@ @ Procid ID dari prosedur yang tersimpan saat ini mengeksekusi.
@ @ Rowcount Jumlah baris yang terpengaruh oleh perintah terakhir.
@ @ Namaserver Nama SQL Server lokal.
@ @ Spid Proses nomor ID proses saat ini.
@ @ Sqlstatus Berisi informasi status.
@ @ Textsize Maksimum panjang teks atau gambar data yang dikembalikan dengan pernyataan SELECT.
@ @ Thresh_hysteresis Perubahan ruang bebas yang diperlukan untuk mengaktifkan ambang.
@ @ Timeticks Jumlah mikrodetik per tick.
@ @ Total_errors Jumlah kesalahan yang telah terjadi saat membaca atau menulis.
@ @ Total_read Jumlah disk SQL Server kali dibaca sejak dimulai.
@ @ Total_write Jumlah disk menulis sejak SQL Server dimulai.
@ @ Tranchained Lancar transaksi mode program Transact-SQL.
@ @ Trancount Nesting tingkat transaksi.
@ @ Transtate negara saat ini transaksi setelah pernyataan dijalankan.
@ @ Versi Tanggal versi dari SQL Server.

Menggunakan Variabel

MENYATAKAN kata kunci memungkinkan Anda untuk mendeklarasikan beberapa variabel dengan pernyataan tunggal (walaupun perangkat ini kadang-kadang dapat terlihat membingungkan bila Anda melihat kode Anda kemudian). Contoh dari jenis pernyataan muncul di sini:

  1> menyatakan @ batter_name char (30), @ int tim, rata-rata mengambang @ 
  2> pergi 

Bagian selanjutnya menjelaskan cara menggunakan variabel tersebut untuk melakukan operasi pemrograman berguna.

Menggunakan Variabel Menyimpan Data

Variabel yang tersedia hanya dalam blok pernyataan saat ini. Untuk menjalankan blok pernyataan menggunakan bahasa Transact-SQL, dimana saja pernyataan dijalankan. (Oracle menggunakan titik koma untuk tujuan yang sama variabel.) Ruang lingkup a mengacu pada penggunaan variabel dalam pernyataan Transact-SQL saat ini.

Anda tidak dapat menginisialisasi variabel hanya dengan menggunakan tanda =. Cobalah pernyataan berikut dan perhatikan bahwa kesalahan akan dikembalikan.

INPUT:
 1> menyatakan @ nama char (30) 2> @ name = "Billy Brewster" 3> pergi

Anda seharusnya menerima kesalahan memberitahukan Anda tentang sintaks yang tidak layak digunakan sesuai 2. Cara yang tepat untuk menginisialisasi variabel adalah dengan menggunakan perintah SELECT. (Ya, perintah yang sama Anda telah dikuasai.) Ulangi contoh sebelumnya menggunakan sintaks yang benar:

INPUT:
  1> menyatakan @ nama char (30) 
  2> pilih @ nama = "Billy Brewster" 
  3> pergi 

Pernyataan ini telah dieksekusi dengan baik, dan jika Anda telah memasukkan laporan tambahan sebelum menjalankan pergi pernyataan, variabel nama @ dapat digunakan.

Mengambil Data ke Variabel Lokal

Variabel sering menyimpan data yang telah diambil dari database. Mereka dapat digunakan dengan perintah SQL yang umum, seperti SELECT, INSERT, UPDATE, dan DELETE. Contoh 19,1 menggambarkan penggunaan variabel dalam cara ini.

Contoh 19,1

Contoh ini mengambil nama pemain bisbol di database yang memiliki rata-rata tertinggi batting dan bermain untuk Beaver Portland.

INPUT:
 1> menyatakan @ int team_id, @ player_name char (30), @ mengambang max_avg 2> pilih @ team_id = TEAM_ID dari TIM mana KOTA = "Portland" 3> pilih @ max_avg = max (RATA-RATA) dari batters mana TIM = @ team_id 4 > pilih @ player_name = NAMA dari batters mana RATA-RATA = @ max_avg 5> pergi
ANALISIS:

Contoh ini telah rusak menjadi tiga pertanyaan untuk menggambarkan penggunaan variabel.

Perintah PRINT

Salah satu fitur yang berguna lainnya Transact-SQL adalah perintah PRINT yang memungkinkan Anda untuk mencetak keluaran ke layar perangkat. Perintah ini memiliki sintaks berikut:

Sintaks:
  PRINT character_string 

Meskipun PRINT menampilkan hanya string karakter, Transact-SQL menyediakan sejumlah fungsi yang berguna yang dapat mengkonversi data yang berbeda untuk jenis string (dan sebaliknya).

Contoh 19,2

Contoh Contoh mengulangi 19,2 19,1 tapi cetak nama pemain di akhir.

INPUT:
  1> menyatakan @ int team_id, @ player_name char (30), @ mengambang max_avg 
  2> pilih @ team_id = TEAM_ID dari TIM mana KOTA = "Portland" 
  3> pilih @ max_avg = max (RATA-RATA) dari batters mana TIM = @ team_id 
  4> player_name @ pilih = NAMA dari batters mana RATA-RATA = @ max_avg 
  5> @ player_name cetak 
  6> pergi 

Perhatikan bahwa variabel dapat digunakan dalam klausa WHERE (atau klausa lain) hanya seolah-olah itu nilai konstan.

Flow Control

yang paling kuat set Mungkin dari Transact-SQL fitur melibatkan kemampuan untuk mengendalikan aliran program. Jika Anda telah diprogram dengan bahasa populer lainnya seperti C, COBOL, Pascal, dan Visual Basic, maka Anda mungkin sudah akrab dengan perintah kontrol seperti laporan IF ... THEN dan loop. Bagian ini berisi beberapa perintah utama yang memungkinkan Anda untuk menegakkan kontrol aliran program.

BEGIN dan END Laporan

Transact-SQL menggunakan laporan BEGIN dan END untuk menandai awal dan titik akhir dari blok kode. Bahasa lain menggunakan kurung (()) atau beberapa operator lain untuk menandai awal dan titik akhir dari kelompok fungsional kode. Pernyataan-pernyataan ini sering digabungkan dengan laporan IF ... ELSE dan WHILE loop. Berikut ini adalah contoh dengan menggunakan blokBEGIN dan END:

Sintaks:
  BEGIN 
    statement1 
    statement2 
    statement3 ... 
  AKHIR 

IF … ELSE Laporan

Salah satu dasar pemrograman yang paling konstruksi adalah pernyataan IF ELSE .... Hampir semua bahasa pemrograman mendukung ini membangun, dan hal ini sangat berguna untuk memeriksa nilai data diambil dari database. The Transact-SQL Sintaks untuk pernyataan IF ... ELSE terlihat seperti ini:

Sintaks:
  if (kondisi) 
  mulai 
       (Blok laporan) 
  akhir 
  lain jika (kondisi) 
  mulai 
       Pernyataan blok) 
  akhir 
  . 
  . 
  . 
  lain 
  mulai 
       (Blok pernyataan) 
  akhir 

Perhatikan bahwa untuk setiap kondisi yang mungkin benar, sebuah BEGIN baru / blok AKHIR laporan yang dimasukkan. Selain itu, dianggap praktek pemrograman yang baik untuk blok pernyataan indent menetapkan jumlah ruang dan untuk menjaga ini jumlah spasi yang sama di seluruh aplikasi Anda. Visual konvensi ini sangat meningkatkan pembacaan program dan luka di atas kesalahan bodoh yang sering disebabkan oleh hanya salah baca kode.

Contoh 19,3

Contoh Contoh meluas 19,3 19,2 dengan rata-rata memeriksa batting pemain. Jika pemain rata-rata lebih dari 0,300, pemilik ingin memberinya kenaikan gaji. Jika tidak, pemilik bisa benar-benar peduli tentang pemain!

19,3 Contoh menggunakan pernyataan IF ... ELSE untuk mengevaluasi kondisi di dalam pernyataan itu. Jika kondisi pertama adalah benar, maka ditetapkan teks tercetak; teks alternatif yang dicetak dalam kondisi apapun lainnya (ELSE).

INPUT:
  1> menyatakan @ int team_id, @ player_name char (30), @ mengambang max_avg 
  2> pilih @ team_id = TEAM_ID dari TIM mana KOTA = "Portland" 
  3> pilih @ max_avg = max (RATA-RATA) dari batters mana TIM = @ team_id 
  4> player_name @ pilih = NAMA dari batters mana RATA-RATA = @ max_avg 
  5> if (@ max_avg> 0,300) 
  6> mulai 
  7> @ player_name cetak 
  8 cetak> "Beri orang ini kenaikan gaji!" 
  9> akhir 
  10> yang lain 
  11> mulai 
  12> @ player_name cetak 
  13 print> "Kembalilah kalau kau memukul lebih baik!" 
  14> akhir 
  15> pergi 

Contoh 19,4

JIKA pernyataan baru ini memungkinkan Anda untuk menambahkan beberapa logika pemrograman ke database query Baseball sederhana. Contoh 19,4 menambahkan sebuah IF ... ELSE IF ... ELSE cabang ke kode di-cukup 19,3 Ex.

INPUT:
 1> menyatakan @ int team_id, @ player_name char (30), @ mengambang max_avg 2> pilih @ team_id = TEAM_ID dari TIM mana KOTA = "Portland" 3> pilih @ max_avg = max (RATA-RATA) dari batters mana TIM = @ team_id 4 > pilih @ player_name = NAMA dari batters mana RATA-RATA = @ max_avg 5> if (@ max_avg> 0,300) 6> mulai 7 mencetak> @ player_name 8> print "Beri orang ini meningkatkan jika!" 9> akhir 10> yang lain ( @ max_avg> 0,275) 11> mulai mencetak 12> @ player_name 13> mencetak "Tidak buruk. Berikut adalah bonus lain!" 14> akhir 15> 16> mulai mencetak 17> @ player_name 18> print "Kembalilah ketika Anda memukul lebih baik>! "19> 20 akhir pergi

Transact-SQL juga memungkinkan Anda untuk memeriksa kondisi yang berhubungan dengan IF pernyataan. Fungsi-fungsi dapat menguji untuk kondisi tertentu atau nilai-nilai. Jika kembali fungsiTRUE, JIKA cabang dieksekusi. Jika tidak, jika tersedia, cabang ELSE dijalankan, seperti yang Anda lihat pada contoh sebelumnya.

Kondisi tersebut ada

Ada kata kunci menjamin bahwa nilai adalah kembali dari perintah SELECT. Bila nilai dikembalikan, pernyataan JIKA dijalankan. Contoh 19,5 mengilustrasikan logika ini.

Contoh 19,5

Dalam contoh ini kata kunci ada mengevaluasi kondisi di IF. Kondisi ini ditentukan dengan menggunakan perintah SELECT.

INPUT:
  1> jika ada (pilih * dari TIM mana TEAM_ID> 5) 
  2> mulai 
  3> print "itu ada!" 
  4> akhir 
  5> lain 
  6> mulai 
  7 cetak> "NO esta aqui!" 
  8> akhir 

Hasil pengujian Permintaan’s a

JIKA Pernyataan ini juga dapat menguji hasil kembali dari query SELECT. Contoh 19,6 mengimplementasikan fitur ini untuk memeriksa batting maksimum rata-rata di antara pemain.

Contoh 19,6

Contoh ini mirip dengan Contoh 19,5 karena menggunakan pernyataan SELECT untuk mendefinisikan kondisi. Kali ini, bagaimanapun, kami menguji kondisi dengan tanda lebih besar dari (>).

INPUT:
  1> if (max pilih (AVG) dari batters)> 0,400 
  2> mulai 
  3> print "Luar biasa!" 
  4> akhir 
  5> lain 
  6 cetak> "TED WILLIAMS MENDAPATKAN IS KESEPIAN!" 
  7> akhir 

Kami menyarankan percobaan dengan implementasi SQL anda, JIKA pernyataan database. Pikirkan beberapa kondisi yang akan tertarik memeriksa di bisbol (atau lainnya). Jalankan beberapa permintaan memanfaatkan pernyataan IF untuk membiasakan diri dengan penggunaannya.

The Loop SEMENTARA

Pemrograman lain yang populer membangun Transact-SQL mendukung adalah WHILE loop. Perintah ini memiliki sintaks berikut:

Sintaks:
  SEMENTARA logical_expression 
       Pernyataan (s) 

Contoh 19,7

WHILE loop loop terus melalui laporan sampai ekspresi logis adalah memeriksa kembali sebuah FALSE. Contoh ini menggunakan WHILE loop sederhana untuk kenaikan suatu variabel lokal (bernama COUNT).

INPUT:
  1> menyatakan @ int COUNT 
  2> pilih @ COUNT = 1 
  3> sementara (COUNT @ <10) 
  4> mulai 
  5> pilih @ COUNT = @ COUNT + 1 
  6 cetak> "LOOP LAGI!" 
  7> akhir 
  8 cetak> "LOOP selesai!" 

CATATAN: Contoh 19,7 menerapkan sederhana UNTUK loop. Lain implementasi dari SQL, seperti Oracle PL / SQL, sebenarnya memberikan pernyataan UNTUK loop. Periksa dokumentasi Anda untuk menentukan apakah sistem yang Anda gunakan mendukung perintah ini berguna.

Perintah BREAK

Anda dapat mengeluarkan perintah BREAK dalam sebuah loop WHILE untuk memaksa orang segera keluar dari lingkaran. BREAK Perintah ini sering digunakan bersama dengan JIKA tes untuk memeriksa kondisi beberapa. Jika memeriksa kondisi berhasil, Anda dapat menggunakan perintah BREAK untuk keluar dari loop WHILE. Perintah segera setelah perintah END kemudian dieksekusi.Contoh 19,8 menggambarkan penggunaan sederhana dari perintah BREAK. Ia memeriksa untuk beberapa nomor acak (katakanlah @ COUNT = 8). Bila kondisi ini terpenuhi, rusak keluar dari loopWHILE.

Contoh 19,8

Perhatikan penempatan pernyataan BREAK setelah evaluasi kondisi pertama di IF.

INPUT:
 1> menyatakan @ int COUNT 2> pilih @ COUNT = 1 3> sementara (COUNT @ <10) 4> mulai 5> @ COUNT pilih = @ COUNT + 1 6> jika (COUNT @ = 8) 7> mulai 8> istirahat 9> akhir 10> yang lain 11> mulai> print 12 "LOOP LAGI selesai!" 13> 14 akhir> akhir 15> print "LOOP!"
ANALISIS:

Perintah BREAK menyebabkan loop yang akan keluar ketika variabel COUNT @ setara 8.

The LANJUTKAN Command

Perintah LANJUTKAN juga merupakan perintah khusus yang dapat dieksekusi dari dalam loop WHILE. Kekuatan perintah LANJUTKAN lingkaran agar segera melompat kembali ke awal, daripada melaksanakan loop sisa dan kemudian melompat kembali ke awal. Seperti perintah BREAK, perintah LANJUTKAN sering digunakan dengan pernyataan IF untuk memeriksa beberapa kondisi dan kemudian memaksa tindakan, seperti yang ditunjukkan pada Contoh 19,9.

Contoh 19,9

Perhatikan penempatan pernyataan LANJUTKAN setelah evaluasi kondisi pertama di IF.

INPUT:
  1> menyatakan @ int COUNT 
  2> pilih @ COUNT = 1 
  3> while (COUNT @ <10) 
  4> mulai 
  5> pilih @ COUNT = @ COUNT + 1 
  6> if (@ = COUNT 8) 
  7> mulai 
  8> terus 
  9> akhir 
  10> lain 
  11> mulai 
  12 print> "LOOP LAGI!" 
  13> akhir 
  14> akhir 
  15 print> "LOOP selesai!" 
ANALISIS:

Contoh 19,9 identik dengan Contoh 19,8 kecuali bahwa perintah LANJUTKAN menggantikan perintah BREAK. Sekarang bukan keluar dari loop ketika @ COUNT = 8, itu hanya melompat kembali ke atas pernyataan WHILE dan terus.

Menggunakan WHILE Loop untuk Gulir Melalui Tabel

SQL Server dan banyak sistem database lain memiliki jenis khusus dari objek – kursor – yang memungkinkan Anda untuk menggulir melalui meja mencatat satu record pada satu waktu. (Lihat Hari 13.) Namun, beberapa sistem database (SQL Server termasuk Sistem pra-10) tidak mendukung penggunaan kursor digulir. Contoh 19,10 memberikan sebuah ide tentang bagaimana menggunakan WHILE loop untuk mengimplementasikan fungsi kursor-jenis kasar bila fungsi yang tidak secara otomatis diberikan.

Contoh 19,10

Anda dapat menggunakan WHILE loop untuk menggulir melalui tabel satu record pada satu waktu toko Transact-SQL. Rowcount variabel yang dapat diatur untuk memberitahu SQL Server untuk kembali hanya satu baris pada suatu waktu selama query. Jika Anda menggunakan produk lain database, menentukan apakah produk Anda memiliki pengaturan yang sama. Dengan pengaturanrowcount untuk 1 (default adalah 0, yang berarti tak terbatas), SQL Server kembali hanya satu record pada satu waktu dari sebuah query SELECT. Kamu dapat menggunakan catatan satu untuk melakukan operasi apa pun yang perlu Anda lakukan. Dengan memilih isi tabel ke tabel sementara yang akan dihapus pada akhir operasi, Anda dapat memilih dari satu baris pada satu waktu, menghapus bahwa baris ketika Anda selesai. Ketika semua baris telah dipilih keluar dari meja, Anda telah melalui setiap baris dalam tabel! (Seperti yang kami katakan, ini adalah fungsi kursor sangat kasar sekarang!) Mari kita jangka contoh.

INPUT:
  1> set 1 rowcount 
  2> menyatakan @ PLAYER char (30) 
  3> temp_BATTERS membuat tabel ( 
  4> NAMA char (30), 
  5 TIM int>, 
  6 RATA-RATA float>, 
  7> HOMERUNS int, 
  8 RBIs> int) 
  9 temp_BATTERS memasukkan> 
  10 * pilih> dari batters 
  11 sedangkan> ada (pilih * dari temp_BATTERS) 
  12> mulai 
  13> pilih @ PLAYER = NAMA dari temp_BATTERS 
  14 mencetak> @ PLAYER 
  15> menghapus dari temp_BATTERS mana NAME = @ PLAYER 
  16> akhir 
  17 print> "LOOP IS DONE!" 
ANALISIS:

Perhatikan bahwa dengan mengeset variabel rowcount, Anda hanya mengubah jumlah baris SELECT kembali dari suatu. Jika klausa WHERE dari perintah DELETE kembali lima baris, lima baris akan dihapus! Juga catat bahwa variabel rowcount dapat direset berulang kali. Oleh karena itu, dari dalam loop, Anda dapat meng-query database untuk beberapa informasi tambahan hanya dengan ulang rowcount ke 1 sebelum melanjutkan dengan loop.

Transact-SQL Wildcard Operator

Konsep penggunaan wildcard di SQL kondisi diperkenalkan pada Hari 3, “Ekspresi, Kondisi, dan Operator.” Operator SEPERTI memungkinkan Anda untuk menggunakan wildcard di laporan kondisi SQL Anda. Transact-SQL memperluas fleksibilitas kondisi wildcard. Ringkasan operator wildcard Transact-SQL yang berikut.

  • The karakter underscore (_) merupakan salah satu karakter setiap individu. Sebagai contoh, _MITH mengatakan permintaan untuk mencari karakter string lima berakhir dengan MITH.
  • Tanda persen (%) merupakan salah satu atau beberapa karakter. Sebagai contoh, AKAN% mengembalikan nilai Williams jika ada. Kembali% nilai AKAN AKAN.
  • Kurung ([]) memungkinkan permintaan untuk mencari karakter yang tercantum dalam tanda kurung. Sebagai contoh, [ABC] mengatakan permintaan untuk mencari string yang berisi hurufA, B, atau C.
  • Karakter ^ digunakan di dalam kurung mengatakan permintaan untuk mencari karakter yang tidak tercantum dalam tanda kurung. Sebagai contoh, [^ ABC] mengatakan permintaan untuk mencari string itu tidak mengandung huruf A, B, atau C.

Membuat Laporan Disarikan Menggunakan menghitung

Transact-SQL juga memiliki mekanisme untuk menciptakan diringkas laporan database. Perintah, menghitung, memiliki sintaks yang sangat mirip dengan rekan di SQL * Plus.. (Lihat Hari 20, “SQL * Plus”)

Pertanyaan berikut ini menghasilkan laporan yang menunjukkan semua batters, jumlah rumah berjalan terkena adonan masing-masing, dan jumlah total rumah yang terkena menjalankan semua batters:

INPUT:
  pilih nama, homeruns 
  dari batters 
  menghitung jumlah (homeruns) 
ANALISIS:

Dalam contoh sebelumnya, Hitung saja melakukan perhitungan pada laporan secara keseluruhan, sedangkan Hitung DENGAN melakukan perhitungan pada kelompok tertentu dan laporan keseluruhan, sebagai contoh berikut menunjukkan:

Sintaks:
  Hitunglah FUNGSI (ekspresi) [BY] ekspresi 
    mana mungkin termasuk FUNGSI SUM, MAX, MIN, dll dan 
    EXPRESI biasanya nama kolom atau alias. 

Tanggal Konversi

Sybase dan Microsoft SQL Server dapat memasukkan tanggal ke tabel dalam berbagai format, mereka juga dapat mengekstrak tanggal dalam berbagai jenis format. Bagian ini menunjukkan kepada Anda bagaimana menggunakan perintah SQL server CONVERT cara memanipulasi tanggal ditampilkan.

Sintaks:
  CONVERT (datatype [(length)], ekspresi, format) 

Format tanggal berikut ini tersedia dengan SQL Server ketika menggunakan fungsi CONVERT:

Format kode Format gambar
100 Sen dd yyyy jj: Miam / PM
101 mm / dd / yy
102 yy.mm.dd
103 dd / mm / yy
104 dd.mm.yy
105 dd-mm-yy
106 Sen dd yy
107 Sen dd, yy
108 hh: mi: ss
109 Sen dd, yyyy hh: mi: ss: mmmAM / PM
110 mm-dd-yy
111 yy / mm / dd
112 yymmdd

INPUT:
  pilih "PayDate" = mengubah (char (15), paydate, 107) 
  dari payment_table 
  mana customer_id = 012.845
OUTPUT:
  PayDate 
  --------------- 
  1 Mei 1997 
ANALISIS:

Contoh sebelumnya menggunakan kode format 107 dengan fungsi CONVERT. Menurut tabel format tanggal, kode 107 akan menampilkan tanggal dalam format dd Mon, yy.

SQL Server Peralatan Diagnostik – Perintah SET

Transact-SQL menyediakan daftar perintah SET yang memungkinkan Anda untuk mengaktifkan berbagai pilihan yang membantu Anda menganalisis laporan Transact-SQL. Berikut adalah beberapa perintah SET populer:

  • STATISTIK IO ON SET memberitahu server untuk mengembalikan jumlah halaman permintaan fisik dan logis.
  • STATISTIK SET ON TIME memberitahu server untuk menampilkan waktu pelaksanaan pernyataan SQL.
  • SHOWPLAN SET ON memberitahu server untuk menunjukkan rencana eksekusi untuk query yang ditunjuk.
  • Noexec SET ON memberitahu server untuk mengurai permintaan yang ditunjuk, tetapi tidak untuk melaksanakannya.
  • PARSONLY SET ON memberitahu server untuk memeriksa sintaks untuk query yang ditunjuk, tetapi tidak untuk melaksanakannya.

Transact-SQL juga memiliki perintah berikut yang membantu mengontrol apa yang ditampilkan sebagai bagian dari output dari pertanyaan Anda:

  • ROWCOUNTSET memberitahu server untuk menampilkan catatan n pertama diambil dari query.
  • NOCOUNT SET ON memberitahu server tidak melaporkan jumlah baris yang dikembalikan oleh query.

CATATAN: Jika Anda khawatir dengan statemen SQL tuning Anda, lihat Hari 15, “Memperlancar SQL Laporan untuk Peningkatan Kinerja.”

Ringkasan

Hari 19 memperkenalkan beberapa topik yang menambahkan beberapa gigi untuk program keahlian SQL Anda. Topik SQL dasar yang Anda pelajari sebelumnya di buku ini sangat penting dan menyediakan fondasi untuk semua pemrograman database pekerjaan yang Anda lakukan. Namun, topik ini hanya yayasan. The prosedural menjelaskan konsep SQL kemarin dan hari ini membangun fondasi yang Anda dari SQL. Mereka memberi Anda, programmer database, banyak kekuasaan ketika mengakses data dalam database relasional Anda.

The Transact-SQL termasuk dalam Microsoft dan Sybase SQL Server database menyediakan berbagai produk dari pemrograman populer konstruksi ditemukan di ketiga-dan-bahasa generasi keempat. Its fitur termasuk JIKA pernyataan, loop WHILE, dan kemampuan untuk menyatakan dan menggunakan variabel lokal dan global.

Perlu diketahui bahwa Day 19 adalah pengantar singkat untuk fitur dan teknik dari kode Transact-SQL. Jangan ragu untuk kepala menyelam yang pertama ke dokumentasi Anda dan percobaan dengan semua alat yang tersedia untuk Anda. Untuk cakupan yang lebih rinci dari Transact-SQL, lihat SQL Server Transact-SQL dokumentasi Microsoft.

Sumber ; http://www.webbasedprogramming.com