“Pengantar Permintaan: Pernyataan SELECT," digunakan SELECT dan FROM Anda untuk memanipulasi data dalam menarik (dan berguna) cara. Hari ini Anda mempelajari lebih lanjut tentang SELECT dan FROM dan memperluas query dasar dengan beberapa istilah baru untuk pergi dengan query, tabel, dan baris, serta klausul baru dan sekelompok barang berguna yang disebut operator. Ketika matahari terbenam pada hari 3, Anda akan

  • ahu apa ekspresi dan bagaimana untuk menggunakannya
  • Tahu kondisi apa dan bagaimana menggunakannya
  • klausa Jadilah akrab dengan dasar penggunaan WHERE yang
  • Dapat menggunakan aritmatika, perbandingan, karakter, logis, dan menetapkan operator
  • Memiliki pengetahuan tentang beberapa operator miscellaneous

CATATAN: Kami menggunakan Oracle Pribadi Oracle7 untuk menghasilkan’s contoh hari ini. implementasi lain dari SQL mungkin sedikit berbeda dengan cara di mana perintah dimasukkan atau output ditampilkan, tetapi hasilnya pada dasarnya sama untuk semua implementasi yang sesuai dengan standar ANSI.


Ekspresi

Definisi dari sebuah ekspresi sederhana: Sebuah ekspresi hasil nilai. Jenis Ekspresi yang sangat luas, meliputi berbagai jenis data seperti String, Numeric, dan Boolean. Bahkan, banyak hal cukup mengikuti ayat (SELECT atau DARI, misalnya) adalah sebuah ekspresi. Dalam jumlah contoh berikut adalah ekspresi yang mengembalikan nilai yang terkandung dalam jumlah kolom.

  cek jumlah SELECT FROM; 

Dalam laporan berikut NAMA, ALAMAT, TELEPON dan AddressBook adalah ekspresi:

 SELECT NAMA, ALAMAT, TELEPON DARI AddressBook;

Sekarang, periksa ekspresi berikut:

  WHERE NAME = 'BROWN' 

Ini mengandung kondisi, sebuah ekspresi Boolean NAME = "BROWN", yang merupakan contoh '. NAME = BROWN' akan baik TRUE atau FALSE, tergantung pada kondisi =.

Kondisi

Jika Anda ingin mencari barang tertentu atau sekelompok item dalam database Anda, Anda perlu satu atau lebih kondisi. Kondisi yang terkandung dalam klausa WHERE. Pada contoh sebelumnya, kondisi ini

  NAME = 'BROWN' 

Untuk menemukan setiap orang dalam organisasi Anda yang bekerja lebih dari 100 jam bulan lalu, kondisi Anda akan

  NUMBEROFHOURS> 100 

Kondisi memungkinkan Anda untuk membuat kueri selektif. Dalam bentuknya yang paling umum, kondisi terdiri dari variabel, konstanta, dan operator perbandingan. Pada contoh pertama variabel adalah NAME, konstanta adalah 'Brown', dan operator perbandingan adalah =. Dalam contoh kedua variabel adalah NUMBEROFHOURS, konstanta adalah 100, dan operator perbandingan ini>.Anda perlu tahu tentang dua lebih elemen sebelum Anda dapat menulis permintaan bersyarat: klausa WHERE dan operator.

The WHERE Klausul

Sintaks klausa WHERE adalah

Sintaks:
  WHERE <SEARCH CONDITION> 

SELECT, FROM, dan WHERE adalah tiga yang paling sering digunakan klausa dalam SQL. WHERE hanya menyebabkan pertanyaan Anda akan lebih selektif. Tanpa klausa WHERE, yang berguna paling Anda bisa lakukan dengan query menampilkan semua catatan dalam tabel yang dipilih ( s). Sebagai contoh:

INPUT:
  SQL> SELECT * FROM bikes; 

daftar semua baris data dalam tabel sepeda.

OUTPUT:
  KOMPOSISI NAMA JENIS FRAMESIZE MILESRIDDEN 
  -------------- --------- ------------ ----------- ---- --- 
  Trek 2.300 3.500 22,5 SERAT KARBON RACING 
  Burley 22 BAJA 2000 Tandem 
  GIANT 19 BAJA 1500 komuter 
  FUJI 20 BAJA 500 Touring 
  Khusus 16 BAJA 100 GUNUNG 
  Cannondale 22,5 ALUMINIUM RACING 3000 

  6 baris yang dipilih. 

Jika Anda ingin sepeda tertentu, Anda bisa mengetik

INPUT / OUTPUT:
  SQL> SELECT * 
       DARI Bikes 
       WHERE NAME 'Burley ='; 

yang akan menghasilkan hanya satu record:

  KOMPOSISI NAMA JENIS FRAMESIZE MILESRIDDEN 
  -------------- -------------- ----------- --------- - ----- 
  Burley 22 BAJA 2000 Tandem 
ANALISIS:

Contoh sederhana ini menunjukkan bagaimana Anda dapat kondisi tempat pada data yang Anda ingin mengambil.

Operator

Operator adalah elemen yang Anda gunakan dalam sebuah ekspresi untuk mengartikulasikan bagaimana Anda ingin kondisi tertentu untuk mengambil data. Operator jatuh ke dalam enam kelompok: aritmatika, perbandingan, karakter, logis, mengatur, dan lain-lain.

Operator Aritmatika

Operator aritmatika adalah plus (+), minus (-), bagi (/), kalikan (*), dan modulo (%). Empat pertama adalah jelas. Modulo mengembalikan sisa integer dari divisi. Berikut adalah dua contoh:

  5% 2 = 1 
  6% 2 = 0 

Operator modulo tidak bekerja dengan tipe data yang memiliki desimal, seperti Real atau Nomor.

Jika Anda menempatkan beberapa dari operator aritmetika dalam ekspresi tanpa tanda kurung, operator diselesaikan dalam urutan ini: perkalian, pembagian, modulo, penambahan, dan pengurangan. Sebagai contoh, ekspresi

  2 * 6 +9 / 3 

sama dengan

  12 + 3 = 15 

Namun, ekspresi

  2 * (6 + 9) / 3 

sama dengan

 2 * 15 / 3 = 10

Perhatikan di mana Anda menempatkan mereka kurung! Kadang ekspresi tidak persis apa yang Anda kirim ke lakukan, bukan apa yang ingin Anda lakukan.

Bagian berikut memeriksa operator aritmetika dalam beberapa detail dan memberikan Anda kesempatan untuk menulis beberapa permintaan.

Plus (+)

Anda dapat menggunakan tanda plus dalam beberapa cara. Ketik pernyataan berikut untuk menampilkan tabel HARGA:

INPUT:
  SQL> SELECT * FROM HARGA;
OUTPUT:
  WHOLESALE ITEM 
  ---------- -------------- 
  TOMAT 0,34 
  KENTANG 0,51 
  Pisang 0,67 
  Lobak 0,45 
  CHEESE 0,89 
  APEL 0,23 

  6 baris yang dipilih. 

Sekarang ketik:

INPUT / OUTPUT:
  SQL> SELECT ITEM, WHOLESALE, + WHOLESALE 0,15 
      DARI HARGA; 

Di sini + menambah 15 sen untuk setiap harga untuk memproduksi berikut:

 WHOLESALE WHOLESALE ITEM 0,15 ---------- ---- --------- -------------- TOMAT KENTANG 0,34 0,49 0,51 0,66 0,67 0,82 pisang lobak 0,45 0,60 0,89 1,04 CHEESE APEL 0,23 0,38
  6 baris yang dipilih. 
ANALISIS:

Apa ini kolom terakhir dengan kolom pos WHOLESALE 0,15 menarik? Ini bukan dalam tabel asli. (Ingat, Anda digunakan * dalam klausa SELECT, yang menyebabkan semua kolom yang akan ditampilkan SQL.) Memungkinkan Anda untuk membuat atau diturunkan kolom virtual dengan menggabungkan atau memodifikasi kolom yang ada.

Ketik ulang entri asli:

INPUT / OUTPUT:
  SQL> SELECT * FROM HARGA; 

Hasil tabel berikut:

  WHOLESALE ITEM 
  -------------- --------- 
  TOMAT 0,34 
  KENTANG 0,51 
  Pisang 0,67 
  Lobak 0,45 
  CHEESE 0,89 
  APEL 0,23 

  6 baris yang dipilih. 
ANALISIS:

Output menegaskan bahwa data asli belum berubah dan bahwa kolom judul WHOLESALE 0,15 bukan bagian permanen dari itu. Bahkan, kolom pos adalah sangat tidak menarik yang harus Anda lakukan sesuatu tentang hal ini.

Ketik berikut:

INPUT / OUTPUT:
  SQL> SELECT ITEM, WHOLESALE, (WHOLESALE + 0,15) ECERAN 
      DARI HARGA; 

Berikut hasilnya:

  WHOLESALE ITEM ECERAN 
  -------------- --------- ------ 
  TOMAT 0,34 0,49 
  KENTANG 0,51 0,66 
  Pisang 0,67 0,82 
  Lobak 0,45 0,60 
  CHEESE 0,89 1,04 
  APEL 0,23 0,38 

  6 baris yang dipilih. 
ANALISIS:

Hal ini indah! Anda tidak hanya dapat membuat kolom baru, namun Anda juga bisa merubah nama mereka dengan cepat. Anda dapat merubah nama kolom menggunakan alias column_namesintaks (perhatikan ruang antara column_name dan alias).

Misalnya, pertanyaan

INPUT / OUTPUT:
  SQL SELECT ITEM> PRODUCE, WHOLESALE, WHOLESALE + 0,25 ECERAN 
       DARI HARGA; 

mengganti nama kolom sebagai berikut:

  WHOLESALE PRODUCE ECERAN 
  -------------- --------- --------- 
  TOMAT 0,34 0,59 
  KENTANG 0,51 0,76 
  Pisang 0,67 0,92 
  Lobak 0,45 0,70 
  CHEESE 0,89 1,14 
  APEL 0,23 0,48 

CATATAN: Beberapa implementasi dari SQL menggunakan nama <column sintaks = alias>. Contoh sebelumnya akan ditulis sebagai berikut:

  SQL SELECT ITEM> = PRODUCE, 
       WHOLESALE, 
       WHOLESALE + 0,25 = ECERAN, 
       HARGA DARI;

Periksa pelaksanaan Anda untuk sintaks yang tepat.


Anda mungkin bertanya-tanya apa gunanya aliasing adalah jika Anda tidak menggunakan perintah SQL-line. Cukup adil. Apakah Anda pernah membayangkan bagaimana laporan kerja pembangun? Suatu hari, ketika Anda diminta untuk menulis sebuah generator laporan, Anda akan ingat ini dan tidak menghabiskan minggu menemukan kembali apa yang Dr Codd dan IBM telah tempa.

Sejauh ini, Anda telah melihat dua penggunaan tanda plus. Contoh pertama adalah penggunaan tanda plus pada klausa SELECT untuk melakukan perhitungan pada data dan menampilkan perhitungan. Penggunaan kedua tanda plus berada di klausa WHERE. Menggunakan operator pada klausa WHERE memberi Anda fleksibilitas yang lebih ketika Anda menetapkan kondisi untuk mengambil data.

Dalam beberapa implementasi dari SQL, tanda plus melakukan tugas ganda sebagai operator karakter. Anda akan melihat sisi plus hari ini kemudian sedikit.

Minus (-)

Minus juga memiliki dua kegunaan. Pertama, bisa mengubah tanda nomor. Anda dapat menggunakan meja HILOW untuk menunjukkan fungsi ini.

INPUT:
  SQL> SELECT * FROM HILOW;
OUTPUT:
  NEGARA HIGHTEMP LOWTEMP 
  ---------- -------- --------- 
  CA -50 120 
  FL 20 110 
  LA 15 99 
  ND -70 101 
  -60 NE 100 

Sebagai contoh, berikut ini adalah cara untuk memanipulasi data:

INPUT / OUTPUT:
  SQL> SELECT NEGARA,-HIGHTEMP lows,-LOWTEMP Highs 
       DARI HILOW; 

  NEGARA highs lows 
  ---------- -------- --------- 
  CA 50 -120 
  FL -20 -110 
  LA -15 -99 
  ND 70 -101 
  NE 60 -100 

Yang kedua (dan jelas) penggunaan tanda minus adalah untuk mengurangi satu kolom dari yang lain. Sebagai contoh:

INPUT / OUTPUT:
  SQL> SELECT NEGARA, 
  2 HIGHTEMP lows, 
  3 LOWTEMP tertinggi, 
  4 (LOWTEMP - HIGHTEMP) SELISIH 
  5 DARI HILOW; 

  PERBEDAAN NEGARA highs lows 
  ---------- -------- -------- ---------- 
  CA -50 120 170 
  FL 20 110 90 
  LA 15 99 84 
  ND -70 101 171 
  NE -60 100 160 

Perhatikan penggunaan alias untuk memperbaiki data yang dimasukkan salah. Obat ini hanyalah patch sementara, meskipun, dan bukan memperbaiki permanen. Anda harus memastikan bahwa data tersebut dikoreksi dan dimasukkan dengan benar di masa mendatang. Pada Hari 21, “Kesalahan umum SQL / Kesalahan dan Penyelesaian,” Anda akan belajar bagaimana memperbaiki data yang buruk.

Query ini tidak hanya tetap (setidaknya secara visual) data yang salah, tetapi juga menciptakan kolom baru yang mengandung perbedaan antara pasang surut masing-masing negara.

Jika Anda tanpa sengaja menggunakan tanda minus di lapangan karakter, Anda mendapatkan sesuatu seperti ini:

INPUT / OUTPUT:
  SQL> SELECT-NEGARA DARI HILOW; 

  ERROR: 
  ORA-01722: nomor yang tidak valid 
  ada baris yang dipilih 

Pesan kesalahan yang tepat bervariasi dengan pelaksanaan, tapi hasilnya sama.

Bagi (/)

Operator divisi hanya memiliki satu arti yang jelas. Menggunakan meja HARGA, ketik berikut:

INPUT:
  SQL> SELECT * FROM HARGA;
OUTPUT:
  WHOLESALE ITEM 
  -------------- --------- 
  TOMAT 0,34 
  KENTANG 0,51 
  Pisang 0,67 
  Lobak 0,45 
  CHEESE 0,89 
  APEL 0,23 

  6 baris yang dipilih. 

Anda dapat menunjukkan efek dari penjualan dua-untuk-satu dengan mengetik pernyataan berikutnya:

INPUT / OUTPUT:
 SQL SELECT ITEM>, WHOLESALE, (WHOLESALE / 2) SALEPRICE 2 DARI HARGA; ITEM WHOLESALE SALEPRICE -------------- --------- ------- - TOMAT KENTANG 0,34 0,17 0,51 0,255 0,67 0,335 pisang lobak Cheese 0,225 0,45 0,89 0,115 0,23 0,445 APEL
  6 baris yang dipilih. 

Penggunaan divisi dalam laporan SELECT sebelumnya sangatlah mudah (kecuali yang datang dengan uang setengah dapat sulit).

Kalikan (*)

Operator multiplikasi juga langsung. Sekali lagi, menggunakan tabel HARGA, ketik berikut:

INPUT:
  SQL> SELECT * FROM HARGA;
OUTPUT:
  WHOLESALE ITEM 
  -------------- --------- 
  TOMAT 0,34 
  KENTANG 0,51 
  Pisang 0,67 
  Lobak 0,45 
  CHEESE 0,89 
  APEL 0,23 

  6 baris yang dipilih. 

Perubahan permintaan ini meja untuk mencerminkan-di papan-diskon 10 persen:

INPUT / OUTPUT:
  SQL> SELECT ITEM, WHOLESALE, WHOLESALE * 0.9 NEWPRICE 
       DARI HARGA; 

  WHOLESALE ITEM NEWPRICE 
  -------------- --------- -------- 
  TOMAT 0,34 0,306 
  KENTANG 0,51 0,459 
  Pisang 0,67 0,603 
  Lobak 0,45 0,405 
  0,89 Cheese 0,801 
  APEL 0,23 0,207 

  6 baris yang dipilih. 

Operator ini memungkinkan Anda untuk melakukan perhitungan kuat dalam sebuah pernyataan SELECT.

Modulo (%)

Operator mengembalikan sisa integer modulo operasi divisi. Menggunakan TETAP meja, ketik berikut:

INPUT:
  SQL SELECT *> FROM TETAP;
OUTPUT:
  Pembilang penyebut 
  ------------ --------- 
         10 5 
          8 3 
         23 9 
         40 17 
       16 1024 
         85 34 

  6 baris yang dipilih. 

Anda juga dapat membuat kolom baru, sisanya, untuk memegang nilai-nilai pembilang% penyebut:

INPUT / OUTPUT:
  SQL> SELECT pembilang, 
       Penyebut, 
       Pembilang% penyebut sisa 
       DARI TETAP; 

  Pembilang penyebut sisa 
  --------- ----------- --------- 
         10 5 0 
          8 3 2 
         23 9 5 
         40 17 6 
       1024 16 0 
         85 34 17 

  6 baris yang dipilih. 

Beberapa implementasi dari SQL menerapkan modulo sebagai fungsi disebut MOD (lihat Hari 4, “Fungsi: Molding Data Anda Ambil”). Pernyataan berikut menghasilkan hasil yang identik dengan hasil pada laporan sebelumnya:

  SQL> SELECT pembilang, 
       Penyebut, 
       MOD (pembilang, penyebut) sisa 
       DARI TETAP; 

Diutamakan

Bagian ini membahas penggunaan protokoler dalam sebuah pernyataan SELECT. Menggunakan database diutamakan, ketik berikut:

  SQL> SELECT * FROM didahulukan; 
         N1 N2 N3 N4 
  --------- --------- --------- --------- 
          1 2 3 4 
         13 24 35 46 
          9 3 23 5 
         63 2 45 3 
          7 2 1 4 

Gunakan segmen kode berikut untuk menguji didahulukan:

INPUT / OUTPUT:
  SQL> SELECT 
    2 N1 + N2 * N3/N4, 
    3 (N1 + N2) * N3/N4, 
    4 N1 + (N2 * N3) / N4 
    5 DARI didahulukan; 

  N1 + N2 * N3/N4 (N1 + N2) * N3/N4 N1 + (N2 * N3) / N4 
  ----------- ------------- ------------- 
          2,5 2,25 2,5 
     28,152174 31,26087 31,26087 
         22,8 55,2 22,8 
           93 93 975 
          7,5 2,25 7,5 

Perhatikan bahwa kolom pertama dan terakhir adalah identik. Jika Anda menambahkan kolom keempat * N1 + N2 (N3/N4), nilai-nilai perusahaan juga akan sama dengan yang pertama kolom terakhir dan saat ini.

Operator Perbandingan

Sesuai dengan namanya, operator perbandingan membandingkan ekspresi dan kembali satu dari tiga nilai: TRUE, FALSE, atau Unknown. Tunggu sebentar?! Unknown TRUE dan FALSE yang cukup jelas, tetapi apa yang tidak diketahui?

Untuk memahami bagaimana Anda bisa mendapatkan Unknown, Anda perlu tahu sedikit tentang konsep NULL. Dalam istilah database NULL adalah tidak adanya data di lapangan. Ini tidak berarti kolom memiliki nol atau kosong di dalamnya. Sebuah nol atau kosong adalah nilai berarti. NULL tidak ada yang dalam bidang itu. Jika Anda membuat perbandingan seperti Lapangan = 9 dan nilai hanya untuk Lapangan adalah NULL, perbandingan itu akan kembali Unknown. Karena tidak diketahui adalah kondisi tidak nyaman, rasa sebagian besar dari SQL perubahan tidak diketahuike FALSE dan menyediakan operator khusus, IS NULL, untuk menguji kondisi NULL.

Berikut ini adalah contoh NULL: Misalkan sebuah entri di dalam tabel HARGA tidak mengandung nilai untuk WHOLESALE. Hasil query dapat terlihat seperti ini:

INPUT:
  SQL> SELECT * FROM HARGA;
OUTPUT:
 WHOLESALE ITEM ---------- -------------- TOMAT KENTANG 0,34 0,51 0,67 pisang lobak APEL 0,89 0,45 0,23 CHEESE Jeruk

Perhatikan bahwa tidak ada yang dicetak dalam posisi bidang WHOLESALE untuk jeruk. Nilai untuk WHOLESALE lapangan untuk jeruk adalah NULL. The NULL terlihat dalam kasus ini karena dalam kolom numerik. Namun, jika NULL muncul di kolom ITEM, mustahil untuk membedakan antara NULL dan kosong.

Cobalah untuk menemukan NULL:

INPUT / OUTPUT:
  SQL> SELECT * 
  2 DARI HARGA 
   3 WHERE IS WHOLESALE NULL; 

  WHOLESALE ITEM 
  ---------- -------------- 
  Jeruk 
ANALISIS:

Seperti yang dapat Anda lihat dengan output, jeruk adalah hanya item yang nilainya untuk WHOLESALE adalah NULL atau tidak mengandung nilai. Bagaimana jika Anda menggunakan tanda sama dengan (=) bukan?

INPUT / OUTPUT:
  SQL> SELECT * 
       HARGA DARI 
       WHERE WHOLESALE = NULL; 

  ada baris yang dipilih 
ANALISIS:

Anda tidak menemukan apa pun karena perbandingan WHOLESALE = NULL kembali FALSE sebuah – hasilnya tidak diketahui. Itu akan lebih tepat untuk menggunakan IS NULL bukannya =,mengubah pernyataan untuk MANA WHERE IS WHOLESALE NULL. Dalam hal ini Anda akan mendapatkan semua baris mana NULL ada.

Contoh ini juga menggambarkan kedua penggunaan operator perbandingan yang paling umum, tanda sama dengan (=), dan taman bermain dari semua operator perbandingan, klausa WHERE.Anda sudah tahu tentang klausa WHERE, jadi inilah sekilas tanda sama.

Equal (=)

Sebelumnya hari ini Anda melihat bagaimana beberapa implementasi dari SQL menggunakan sign sama dalam klausa SELECT untuk menetapkan sebuah alias. Dalam klausa WHERE, tanda sama adalah perbandingan digunakan operator yang paling umum. Digunakan sendiri, tanda sama adalah cara yang sangat mudah memilih satu nilai dari banyak. Coba ini:

INPUT:
  SQL> SELECT * FROM FRIENDS;
OUTPUT:
  NamaBelakang NamaDepan AREACODE ST ZIP PHONE 
  -------------- -------- -------------- --------- - --- - 
  AL Bundy 100 555-1111 IL 22333 
  Meza AL Inggris 200 555-2222 
  Merrick BUD 300 555-6666 CO 80212 
  Mast JD 381 555-6767 LA 23456 
  Ferris BULHER 345 555-3223 IL 23332 

Mari kita cari baris JD itu. (Pada daftar singkat tugas ini tampak sepele, tetapi Anda mungkin memiliki lebih banyak teman daripada kita – atau Anda mungkin memiliki daftar dengan ribuan catatan.)

INPUT / OUTPUT:
  SQL> SELECT * 
       DARI TEMAN 
       WHERE Nama_belakang = 'JD'; 

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE 
  -------------- -------------- -------- --------- - --- - 
  Mast JD 381 555-6767 LA 23456 

Kami mendapat hasil yang kami harapkan. Coba ini:

INPUT / OUTPUT:
  SQL> SELECT * 
       DARI TEMAN 
       WHERE Nama depan 'AL ='; 

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE 
  -------------- -------------- -------- --------- - --- - 
  AL Bundy 100 555-1111 IL 22333 
  Meza AL Inggris 200 555-2222 

CATATAN: Di sini Anda melihat bahwa = dapat menarik beberapa catatan. Perhatikan bahwa ZIP kosong pada catatan kedua. ZIP adalah bidang karakter (Anda mempelajari cara membuat dan mengisi tabel pada Hari 8, “Memanipulasi Data”), dan dalam catatan khususnya NULL NULL menunjukkan bahwa dalam bidang karakter mustahil untuk membedakan dari bidang kosong.


Inilah pelajaran lain yang sangat penting tentang kasus kepekaan:

INPUT / OUTPUT:
 SQL> SELECT * FROM FRIENDS WHERE Nama depan = 'BUD'; NamaDepan -------------- BUD 1 baris yang dipilih.

Sekarang coba ini:

INPUT / OUTPUT:
  SQL> * pilih dari teman-teman 
       mana NamaDepan = 'Bud'; 

  ada baris yang dipilih. 
ANALISIS:

Meskipun sintaks SQL tidak bersifat case sensitive, data. Kebanyakan perusahaan lebih memilih untuk menyimpan data dalam huruf besar untuk menyediakan konsistensi data. Anda harus selalu menyimpan data baik dalam huruf besar semua atau huruf kecil semua. Mencampur kasus menciptakan kesulitan ketika Anda mencoba untuk mengambil data akurat.

Greater Than (>) dan lebih besar dari atau sama Untuk (> =)

Operator dari yang lebih besar (>) bekerja seperti ini:

INPUT:
  SQL> SELECT * 
       DARI TEMAN 
       MANA AREACODE> 300;
OUTPUT:
  NamaBelakang NamaDepan AREACODE ST ZIP PHONE 
  -------------- -------------- -------- --------- - --- - 
  Mast JD 381 555-6767 LA 23456 
  BULHER Ferris 345 555-3223 IL 23332 
ANALISIS:

Contoh ini ditemukan semua kode area lebih besar dari (tapi tidak termasuk) 300. Untuk menyertakan 300, jenis ini:

INPUT / OUTPUT:
  SQL> SELECT * 
  2 DARI TEMAN 
  3 WHERE AREACODE> = 300; 

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE 
  -------------- -------------- -------- --------- - --- - 
  Merrick BUD 300 555-6666 CO 80212 
  Mast JD 381 555-6767 LA 23456 
  Ferris BULHER 345 555-3223 IL 23332 
ANALISIS:

Dengan perubahan ini Anda mendapatkan kode area 300 dan mulai naik. Anda bisa mencapai hasil yang sama dengan pernyataan AREACODE> 299.


CATATAN: Perhatikan bahwa tidak ada kutipan mengelilingi 300 dalam pernyataan SQL. -Didefinisikan bidang-didefinisikan fieldsnumber Jumlah tidak memerlukan tanda kutip.


Kurang dari (<) dan Kurang dari atau sama dengan (<=)

Seperti yang Anda duga, ini pekerjaan operator perbandingan cara yang sama seperti> dan> bekerja =, hanya secara terbalik:

INPUT:
  SQL> SELECT * 
  2 DARI TEMAN 
  3 NEGARA MANA <'LA';
OUTPUT:
 NamaBelakang NamaDepan AREACODE ZIP PHONE ST -------------- -------------- --------- ------- - - ------ AL Bundy IL 22333 100 555-1111 300 555-6666 Merrick BUD CO BULHER 80.212 Ferris 345 555-3223 IL 23332

CATATAN: Bagaimana NEGARA bisa berubah menjadi ST? Karena kolom hanya memiliki dua karakter, nama kolom disingkat menjadi dua karakter di baris kembali. Jika nama kolom yang KK telah, akan keluar CO. Lebar dari AREACODE dan TELEPON adalah lebih lebar dari kolom nama mereka, sehingga mereka tidak terpotong.


ANALISIS:

Tunggu sebentar. Apakah Anda hanya menggunakan <di lapangan karakter? Tentu saja Anda lakukan. Anda dapat menggunakan salah satu operator pada setiap tipe data. Hasil bervariasi menurut tipe data. Misalnya, gunakan huruf kecil dalam pencarian negara berikut:

INPUT / OUTPUT:
  SQL> SELECT * 
  2 DARI TEMAN 
  3 MANA NEGARA <'la'; 

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE 
  -------------- -------------- --------- -------- - --- - 
  AL Bundy 100 555-1111 IL 22333 
  Meza AL Inggris 200 555-2222 
  Merrick BUD 300 555-6666 CO 80212 
  Mast JD 381 555-6767 LA 23456 
  Ferris BULHER 345 555-3223 IL 23332 
ANALISIS:

Huruf besar biasanya disortir sebelum huruf kecil, sehingga kode huruf besar kembali kurang dari 'la'. Sekali lagi, aman, periksa implementasi Anda.


TIP: Untuk memastikan bagaimana operator akan berperilaku, periksa tabel bahasa Anda. implementasi Kebanyakan PC menggunakan tabel ASCII. Beberapa platform lainnya menggunakan EBCDIC.


Untuk memasukkan negara bagian Louisiana dalam pencarian asli, jenis

INPUT / OUTPUT:
  SQL> SELECT * 
   2 DARI TEMAN 
  3 WHERE <NEGARA = 'LA'; 

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE 
  -------------- -------------- --------- -------- - --- - 
  AL Bundy 100 555-1111 IL 22333 
  Merrick BUD 300 555-6666 CO 80212 
  Mast JD 381 555-6767 LA 23456 
  Ferris BULHER 345 555-3223 IL 23332 

Ketimpangan (<> atau! =)

Bila Anda perlu menemukan segala sesuatu kecuali data tertentu, gunakan simbol ketimpangan, yang dapat berupa <> atau! = Tergantung pada implementasi SQL Anda. Sebagai contoh, untuk menemukan semua orang yang tidak AL, ketik ini:

INPUT:
  SQL> SELECT * 
  2 DARI TEMAN 
  3 WHERE NamaDepan <> 'AL';
OUTPUT:
 NamaBelakang NamaDepan AREACODE ZIP PHONE ST -------------- -------------- --------- ------- - - Merrick ----- BUD CO 80212 300 555-6666 381 555-6767 Mast JD LA BULHER 23.456 Ferris 345 555-3223 IL 23332

Untuk mencari semua orang tidak tinggal di California, ketik ini:

INPUT / OUTPUT:
  SQL> SELECT * 
  2 DARI FRIENDS 
  3 MANA NEGARA '! =' CA; 

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE 
  -------------- -------------- -------- --------- - --- - 
  AL Bundy 100 555-1111 IL 22333 
  Meza AL Inggris 200 555-2222 
  Merrick BUD 300 555-6666 CO 80212 
  Mast JD 381 555-6767 LA 23456 
  Ferris BULHER 345 555-3223 IL 23332 

CATATAN: Perhatikan bahwa kedua simbol, <> dan! =, Dapat mengungkapkan “tidak sama.”


Karakter Operator

Anda dapat menggunakan operator untuk memanipulasi string karakter karakter cara diwakili, baik dalam output data dan dalam proses menempatkan kondisi pada data yang akan diambil.Bagian ini menjelaskan dua karakter operator: operator LIKE dan | operator |, yang menyampaikan konsep Rangkaian karakter.

Aku Ingin Seperti SEPERTI

Bagaimana jika Anda ingin memilih bagian dari database yang sesuai dengan pola, tetapi tidak cukup tepat sama? Anda bisa menggunakan tanda yang sama dan dijalankan melalui semua kasus mungkin, tapi proses itu akan membosankan dan menyita waktu. Sebaliknya, Anda dapat menggunakan SEPERTI. Pertimbangkan hal berikut:

INPUT:
  SQL> SELECT * FROM PARTS;
OUTPUT:
  NAMA LOKASI PARTNUMBER 
  -------------- -------------- ---------- 
  MID-PERUT LAMPIRAN 1 
  Adams APPLE Tenggorokan 2 
  HATI DADA 3 
  Spine BACK 4 
  Landasan EAR 5 
  GINJAL MID-BACK 6 

Bagaimana Anda bisa menemukan semua bagian yang terletak di belakang? Sebuah inspeksi visual cepat dari tabel sederhana ini menunjukkan bahwa ia memiliki dua bagian, tapi sayangnya lokasi yang memiliki nama berbeda sedikit. Coba ini:

INPUT / OUTPUT:
  SQL> SELECT * 
  2 DARI PARTS 
   3 MANA LOKASI LIKE '% KEMBALI%'; 

  NAMA LOKASI PARTNUMBER 
  -------------- -------------- ---------- 
  Spine BACK 4 
  GINJAL MID-BACK 6 
ANALISIS:

Anda dapat melihat penggunaan tanda persen (%) dalam laporan setelah SEPERTI. Ketika digunakan di dalam ekspresi SEPERTI,% merupakan wildcard. Apa yang Anda minta adalah setiap kejadian BACK di kolom lokasi. Jika Anda tanya

INPUT:
  SQL> SELECT * 
       DARI PARTS 
       LOKASI DI MANA SEPERTI 'BACK%'; 

Anda akan mendapatkan kejadian yang dimulai dengan BACK:

OUTPUT:
  NAMA LOKASI PARTNUMBER 
  -------------- -------------- ---------- 
  Spine BACK 4 

Jika Anda tanya

INPUT:
  SQL> SELECT * 
       DARI PARTS 
      WHERE NAMA LIKE '% A'; 

Anda akan mendapatkan nama yang dimulai dengan A:

OUTPUT:
  NAMA LOKASI PARTNUMBER 
  -------------- -------------- ---------- 
  MID-PERUT LAMPIRAN 1 
  Adams APPLE Tenggorokan 2 
  Landasan EAR 5 

Apakah kasus SEPERTI sensitif? Coba permintaan berikutnya untuk mencari tahu.

INPUT / OUTPUT:
  SQL> SELECT * 
       DARI PARTS 
       WHERE NAME LIKE '% a'; 

  ada baris yang dipilih 
ANALISIS:

Jawabannya adalah ya. Referensi data selalu kasus sensitif.

Bagaimana jika Anda ingin mencari data yang cocok semua kecuali satu karakter dalam pola tertentu? Dalam hal ini Anda dapat menggunakan berbagai jenis wildcard: ini garis bawah.

Underscore (_)

Ini menggarisbawahi adalah karakter wildcard tunggal. Menggunakan versi modifikasi dari TEMAN tabel, jenis ini:

INPUT:
  SQL> SELECT * FROM FRIENDS;
OUTPUT:
  NamaBelakang NamaDepan AREACODE ST ZIP PHONE 
  -------------- -------------- -------- --------- - --- - 
  AL Bundy 100 555-1111 IL 22333 
  Meza AL Inggris 200 555-2222 
  UD Merrick 300 555-6666 CO 80212 
  Mast JD 381 555-6767 LA 23456 
  Ferris BULHER 345 555-3223 IL 23332 
  Alton PERKINS CA 95633 911 555-3116 
  BOSS SIR 204 555-2345 CT 95633 

Untuk menemukan semua catatan di mana NEGERI dimulai dengan C, ketik berikut:

INPUT / OUTPUT:
  SQL> SELECT * 
    2 DARI TEMAN 
  3 MANA NEGARA SEPERTI 'C_';
  NamaBelakang NamaDepan AREACODE ST ZIP PHONE 
  -------------- -------------- -------- --------- - --- - 
  Merrick BUD 300 555-6666 CO 80212 
  Alton PERKINS CA 95633 911 555-3116 
  BOSS SIR 204 555-2345 CT 95633 

Anda dapat menggunakan beberapa garis bawah dalam sebuah pernyataan:

INPUT / OUTPUT:
  SQL> SELECT * 
   2 DARI TEMAN 
   3 WHERE TELEPON LIKE'555-6_6_ '; 

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE 
  -------------- -------------- -------- --------- - --- - 
  Merrick BUD 300 555-6666 CO 80212 
  Mast JD 381 555-6767 LA 23456 

Pernyataan sebelumnya juga dapat ditulis sebagai berikut:

INPUT / OUTPUT:
  SQL> SELECT * 
    2 DARI TEMAN 
   3 MANA SEPERTI TELEPON '555-6% '; 

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE 
  -------------- -------------- -------- --------- - --- - 
  Merrick BUD 300 555-6666 CO 80212 
  Mast JD 381 555-6767 LA 23456 

Perhatikan bahwa hasil adalah identik. Kedua wildcard dapat dikombinasikan. Contoh berikut menemukan semua catatan dengan L sebagai karakter kedua:

INPUT / OUTPUT:
 SQL> SELECT * FROM FRIENDS 2 3 WHERE NamaDepan LIKE '_L%'; AREACODE NamaBelakang NamaDepan TELEPON ST ZIP -------------- -------------- --------- -------- - ----- Bundy AL IL 22333 100 555-1111 200 555-2222 Meza AL Inggris PERKINS Alton CA 95633 911 555-3116

Rangkaian (| |)

The | | (pipa ganda) simbol concatenates dua string. Coba ini:

INPUT:
  SQL> SELECT NamaDepan | | NamaBelakang ENTIRENAME 
    2 DARI TEMAN;
OUTPUT:
  ENTIRENAME 
  ---------------------- 
  AL Bundy 
  AL Meza 
  BUD Merrick 
  JD Mast 
  Ferris BULHER 
  Alton PERKINS 
  SIR BOSS 

  7 baris yang dipilih. 
ANALISIS:

Perhatikan bahwa | | digunakan bukan +. Jika Anda menggunakan + untuk mencoba menyatukan string, penafsir SQL digunakan untuk contoh (Personal Oracle7) mengembalikan kesalahan berikut:

INPUT / OUTPUT:
  SQL> SELECT Nama depan + NamaBelakang ENTIRENAME 
       DARI TEMAN; 

  ERROR: 
  ORA-01722: nomor yang tidak valid 

Ini adalah mencari dua nomor untuk menambahkan dan melempar kesalahan nomor yang tidak valid ketika tidak menemukan apapun.


CATATAN: Beberapa implementasi dari SQL menggunakan tanda plus untuk menyatukan string. Periksa pelaksanaan Anda.


Here’s a more practical example using concatenation:

INPUT / OUTPUT:
 SQL> SELECT LASTNAME || ',' || FIRSTNAME NAME
     FROM FRIENDS;

NAME
------------------------------------------------------
BUNDY    , AL
MEZA     , AL
MERRICK  , BUD
MAST     , JD
BULHER   , FERRIS
PERKINS  , ALTON
BOSS     , SIR

  7 baris yang dipilih. 
ANALISIS:

This statement inserted a comma between the last name and the first name.


CATATAN: Notice the extra spaces between the first name and the last name in these examples. These spaces are actually part of the data. With certain data types, spaces are right-padded to values less than the total length allocated for a field. See your implementation. Data types will be discussed on Day 9, “Creating and Maintaining Tables.”


So far you have performed the comparisons one at a time. That method is fine for some problems, but what if you need to find all the people at work with last names starting with P who have less than three days of vacation time?

Logical Operators

logical operatorsLogical operators separate two or more conditions in the WHERE clause of an SQL statement.

Vacation time is always a hot topic around the workplace. Say you designed a table called VACATION for the accounting department:

INPUT:
 SQL> SELECT * FROM VACATION;
OUTPUT:
 LASTNAME       EMPLOYEENUM    YEARS  LEAVETAKEN
-------------- ----------- --------- ----------
ABLE                   101        2           4
BAKER                  104        5          23
BLEDSOE                107        8          45
BOLIVAR                233        4          80
BOLD                   210       15         100
COSTALES               211       10          78

  6 baris yang dipilih. 

Misalkan perusahaan Anda setiap karyawan memberikan cuti 12 hari setiap tahun. Menggunakan apa yang Anda pelajari dan operator logis, menemukan semua karyawan yang namanya mulai dengan B dan yang memiliki lebih dari 50 hari cuti datang.

INPUT / OUTPUT:
 SQL> SELECT LASTNAME,
   2   YEARS * 12 - LEAVETAKEN REMAINING
   3   FROM VACATION
   4   WHERE LASTNAME LIKE 'B%'
  5   AND
  6  YEARS * 12 - LEAVETAKEN > 50;

LASTNAME       REMAINING
-------------- ---------
BLEDSOE               51
BOLD                  80
ANALISIS:

Query ini adalah yang paling rumit yang telah Anda lakukan selama ini. Klausa SELECT (baris 1 dan 2) menggunakan operator aritmatika untuk menentukan berapa hari cuti tiap karyawan memiliki sisa. Yang diutamakan normal menghitung TAHUN * 12 - LEAVETAKEN (. (Lebih jelas Pendekatan akan menulis TAHUN * 12) - LEAVETAKEN.)

SEPERTI yang digunakan sesuai dengan 4% wildcard untuk menemukan semua nama B. Line 6 menggunakan> untuk menemukan semua kejadian yang lebih besar dari 50.

Unsur baru pada baris 5. Anda menggunakan operator logika AND untuk memastikan bahwa Anda menemukan catatan yang memenuhi kriteria di baris 4 dan 6.

DAN

DAN berarti bahwa ekspresi kedua belah pihak harus benar mengembalikan TRUE. Jika ekspresi baik adalah palsu, DAN kembali FALSE. Misalnya, untuk mengetahui karyawan telah dengan perusahaan selama 5 tahun atau kurang dan telah mengambil lebih dari 20 hari cuti, coba ini:

INPUT:
  SQL> SELECT NamaBelakang 
  2 dari liburan 
  3 WHERE TAHUN <= 5 
  4 DAN 
   5 LEAVETAKEN> 20;
OUTPUT:
  NamaBelakang 
  -------- 
  BAKER 
  Bolivar 

Jika Anda ingin tahu yang telah karyawan dengan perusahaan selama 5 tahun atau lebih dan telah diambil kurang dari 50 persen meninggalkan mereka, Anda bisa menulis:

INPUT / OUTPUT:
  SQL> SELECT NamaBelakang workaholics 
  2 dari liburan 
   3 TAHUN WHERE> = 5 
   4 DAN 
   5 ((TAHUN * 12) -LEAVETAKEN) / (TAHUN * 12) <0,50; 

  Workaholics 
  --------------- 
  BAKER 
  Bledsoe 

Periksa orang-orang untuk pemadaman. Juga memeriksa bagaimana kita menggunakan AND untuk menggabungkan dua kondisi.

ATAU

Anda juga dapat menggunakan OR untuk meringkas serangkaian kondisi. Jika salah satu perbandingan adalah benar, kembali OR TRUE. Untuk menggambarkan perbedaan itu, conditionsrun permintaan terakhir dengan OR bukannya dengan DAN:

INPUT:
  SQL> SELECT NamaBelakang workaholics 
    2 dari liburan 
    3 WHERE TAHUN> = 5 
   4 OR 
  5 ((TAHUN * 12) -LEAVETAKEN) / (TAHUN * 12)> = 0,50;
OUTPUT:
  Workaholics 
  --------------- 
  MAMPU 
  BAKER 
  Bledsoe 
  BOLD 
  COSTALES 
ANALISIS:

Nama asli masih dalam daftar, namun Anda memiliki tiga entri baru (yang mungkin akan membenci yang pecandu kerja yang disebut). Ketiga membuat daftar nama-nama baru karena mereka puas salah satu kondisi. ATAU membutuhkan bahwa hanya satu dari kondisi benar agar data yang akan dikembalikan.

TIDAK

TIDAK berarti hanya itu. Jika kondisi ini berlaku untuk mengevaluasi ke TRUE, TIDAK membuat FALSE. Jika kondisi setelah NOT FALSE, itu menjadi TRUE. Sebagai contoh, kembali SELECT berikut hanya dua nama, bukan dimulai dengan B dalam tabel:

INPUT:
  SQL> SELECT * 
  2 dari liburan 
    3 WHERE NamaBelakang TIDAK LIKE 'B%';
OUTPUT:
  TAHUN EMPLOYEENUM NamaBelakang LEAVETAKEN 
  -------------- ----------- -------- ---------- 
  MAMPU 101 2 4 
  COSTALES 211 10 78 

TIDAK juga dapat digunakan dengan operator IS bila diterapkan ke NULL. Ingat meja BIAYA mana kita menempatkan nilai NULL di kolom WHOLESALE sebaliknya jeruk item.

INPUT / OUTPUT:
  SQL> SELECT * FROM HARGA; 

  WHOLESALE ITEM 
  -------------- --------- 
  TOMAT 0,34 
  KENTANG 0,51 
  Pisang 0,67 
  Lobak 0,45 
  CHEESE 0,89 
  APEL 0,23 
  Jeruk 

  7 baris yang dipilih. 

Untuk menemukan item non-NULL, ketik ini:

INPUT / OUTPUT:
SQL> SELECT * 2 FROM PRICE 3 WHERE WHOLESALE IS NOT NULL; ITEM           WHOLESALE -------------- --------- TOMATOES             .34 POTATOES             .51 BANANAS              .67 TURNIPS              .45 CHEESE               .89 APPLES               .23
  6 baris yang dipilih. 

Set Operators

On Day 1, “Introduction to SQL,” you learned that SQL is based on the theory of sets. The following sections examine set operators.

UNION and UNION ALL

UNION returns the results of two queries minus the duplicate rows. The following two tables represent the rosters of teams:

INPUT:
 SQL> SELECT * FROM FOOTBALL;
OUTPUT:
  NAMA 
--------------------
  MAMPU 
BRAVO
CHARLIE
DECON
EXITOR
FUBAR
GOOBER

  7 baris yang dipilih. 
INPUT:
 SQL> SELECT * FROM SOFTBALL;
OUTPUT:
  NAMA 
--------------------
  MAMPU 
BAKER
CHARLIE
DEAN
EXITOR
FALCONER
GOOBER

  7 baris yang dipilih. 

How many different people play on one team or another?

INPUT / OUTPUT:
SQL> SELECT NAME FROM SOFTBALL 2 UNION 3 SELECT NAME FROM FOOTBALL; NAME -------------------- ABLE BAKER BRAVO CHARLIE DEAN DECON EXITOR FALCONER FUBAR GOOBER
 10 rows selected.

UNION returns 10 distinct names from the two lists. How many names are on both lists (including duplicates)?

INPUT / OUTPUT:
 SQL> SELECT NAME FROM SOFTBALL
  2   UNION ALL
  3  SELECT NAME FROM FOOTBALL;

  NAMA 
--------------------
  MAMPU 
BAKER
CHARLIE
DEAN
EXITOR
FALCONER
GOOBER
  MAMPU 
BRAVO
CHARLIE
DECON
EXITOR
FUBAR
GOOBER

 14 rows selected.
ANALISIS:

Daftar gabungan – milik UNION ALL pernyataan – memiliki 14 nama. UNION ALL bekerja seperti UNI kecuali ia tidak menghilangkan duplikasi. Sekarang tunjukkan daftar pemain yang berada di kedua tim. Anda tidak dapat melakukannya dengan UNI – Anda perlu belajar INTERSECT.

INTERSECT

INTERSECT kembali hanya baris ditemukan oleh kedua permintaan. Pernyataan SELECT berikutnya menampilkan daftar pemain yang bermain di kedua tim:

INPUT:
 SQL> SELECT * FROM FOOTBALL
  2  INTERSECT
  3   SELECT * FROM SOFTBALL;
OUTPUT:
NAME -------------------- ABLE CHARLIE EXITOR GOOBER
ANALISIS:

Dalam contoh ini INTERSECT menemukan daftar pendek pemain yang berada di kedua tim dengan menggabungkan hasil dari dua pernyataan SELECT.

MINUS (Difference)

Minus mengembalikan baris dari query pertama yang tidak hadir pada urutan kedua. Sebagai Contoh:

INPUT:
 SQL> SELECT * FROM FOOTBALL
  2  MINUS
  3  SELECT * FROM SOFTBALL;
OUTPUT:
  NAMA 
--------------------
BRAVO
DECON
FUBAR
ANALISIS:

Permintaan sebelumnya menunjukkan tiga pemain sepak bola yang tidak di tim softball. Jika Anda membalik urutan, Anda mendapatkan tiga pemain softball yang tidak berada pada tim sepak bola:

INPUT:
 SQL> SELECT * FROM SOFTBALL
  2  MINUS
  3  SELECT * FROM FOOTBALL;
OUTPUT:
  NAMA 
--------------------
BAKER
DEAN
FALCONER

Miscellaneous Operators: IN and BETWEEN

Kedua operator IN dan ANTARA memberikan singkatan untuk fungsi Anda sudah tahu bagaimana melakukannya. Jika Anda ingin menemukan teman-teman di Colorado, California, dan Louisiana, Anda bisa mengetik berikut:

INPUT:
  SQL> SELECT * 
   2   FROM FRIENDS
  3  WHERE STATE= 'CA'
   4  OR
   5  STATE ='CO'
  6   OR
  7  STATE = 'LA';
OUTPUT:
 LASTNAME       FIRSTNAME       AREACODE PHONE    ST ZIP
-------------- -------------- --------- -------- -- -----
MERRICK        BUD                  300 555-6666 CO 80212
MAST           JD                   381 555-6767 LA 23456
PERKINS        ALTON                911 555-3116 CA 95633

Or you could type this:

INPUT / OUTPUT:
  SQL> SELECT * 
  2   FROM FRIENDS
   3   WHERE STATE IN('CA','CO','LA');
 LASTNAME       FIRSTNAME       AREACODE PHONE    ST ZIP
-------------- -------------- --------- -------- -- -----
MERRICK        BUD                  300 555-6666 CO 80212
MAST           JD                   381 555-6767 LA 23456
PERKINS        ALTON                911 555-3116 CA 95633
ANALISIS:

Contoh kedua yang lebih pendek dan lebih mudah dibaca daripada yang pertama. Anda tidak pernah tahu kapan Anda mungkin harus kembali dan mengerjakan sesuatu yang Anda tulis bulan lalu. DI juga bekerja dengan angka. Pertimbangkan yang berikut ini, di mana kolom AREACODE adalah angka:

INPUT / OUTPUT:
 SQL> SELECT * 2    DARI TEMAN 
  3 AREACODE DI MANA (100.381.204); AREACODE NamaBelakang NamaDepan ZIP PHONE ST -------------- -------------- -------- - -------- - ----- Bundy AL IL 22333 100 555-1111 381 555-6767 Mast JD LA BOSS SIR 23.456 95.633 204 555-2345 CT

Jika Anda membutuhkan berbagai hal dari meja HARGA, Anda bisa menulis hal berikut:

INPUT / OUTPUT:
  SQL> SELECT * 
   2 DARI HARGA 
   3 WHERE 0,25> WHOLESALE 
  4 DAN 
  5 WHOLESALE <0,75; 

ITEM           WHOLESALE
-------------- ---------
TOMATOES             .34
POTATOES             .51
BANANAS              .67
TURNIPS              .45

Or using BETWEEN , you would write this:

INPUT / OUTPUT:
  SQL> SELECT * 
  2  FROM PRICE
  3   WHERE WHOLESALE BETWEEN 0.25 AND 0.75;

ITEM            WHOLESALE
-------------- ---------
TOMATOES              .34
POTATOES              .51
BANANAS               .67
TURNIPS               .45

Sekali lagi, contoh kedua adalah solusi, bersih lebih mudah dibaca daripada yang pertama.

Catatan: Jika nilai WHOLESALE sebesar 0.25 ada dalam tabel HARGA, yang merekam akan diambil juga. Parameter yang digunakan dalam operator ANTARA adalah parametersinclusive inklusif.

Ringkasan

Pada Latihan selanjutnya Anda tahu bagaimana menggunakan SELECT dasar dan klausa FROM. Sekarang Anda tahu bagaimana menggunakan sejumlah operator yang memungkinkan Anda untuk menyempurnakan permintaan Anda ke database. Anda belajar bagaimana menggunakan aritmatika, perbandingan, karakter, logis, dan operator ditetapkan. Set alat kuat memberikan landasan pengetahuan SQL Anda.

Pengantar Permintaan: Pernyataan SELECT," digunakan Anda SELECT dan FROM untuk memanipulasi data dalam menarik (dan berguna) cara. Hari ini Anda mempelajari lebih tentangSELECT dan FROM dan memperluas query dasar dengan beberapa istilah baru untuk pergi dengan query, tabel, dan baris, serta klausul baru dan sekelompok barang berguna yang disebut operator.

  • Kenal apa ekspresi itu dan bagaimana menggunakannya
  • Kenal kondisi apa dan bagaimana menggunakannya
  • Jadilah akrab dengan dasar penggunaan WHERE
  • Dapat menggunakan aritmatika, perbandingan, karakter, logis, dan menetapkan operator
  • Memiliki pengetahuan tentang beberapa operator miscellaneous

Definisi dari sebuah ekspresi sederhana: Sebuah ekspresi hasil nilai. Jenis Ekspresi yang sangat luas, meliputi berbagai jenis data seperti String, Numeric, dan Boolean. Bahkan, banyak hal cukup mengikuti ayat (SELECT atau DARI, misalnya) adalah sebuah ekspresi. Dalam jumlah contoh berikut adalah ekspresi yang mengembalikan nilai yang terkandung dalam jumlah kolom.

  cek jumlah SELECT FROM;

Dalam laporan berikut NAMA, ALAMAT, TELEPON dan AddressBook adalah ekspresi:

  SELECT NAMA, ALAMAT, TELEPON
  DARI AddressBook;

Sekarang, periksa ekspresi berikut:

  WHERE NAME = 'BROWN'

Ini berisi kondisi, sebuah ekspresi Boolean NAME = "BROWN", yang merupakan contoh '. NAME = BROWN' akan baik TRUE atau FALSE, tergantung pada kondisi =.

Kondisi

Jika Anda ingin mencari barang tertentu atau sekelompok item dalam database Anda, Anda perlu satu atau lebih kondisi. Kondisi yang terkandung dalam klausa WHERE. Dalam contoh sebelumnya, kondisi ini

  NAME = 'BROWN'

Untuk menemukan setiap orang dalam organisasi Anda yang bekerja lebih dari 100 jam bulan lalu, kondisi Anda akan

  NUMBEROFHOURS> 100

Kondisi memungkinkan Anda untuk membuat kueri selektif. Dalam bentuknya yang paling umum, kondisi terdiri dari variabel, konstanta, dan operator perbandingan. Dalam contoh pertama variabel adalah NAMA, konstanta adalah 'Brown', dan operator perbandingan adalah =. Dalam contoh kedua variabel adalah NUMBEROFHOURS, konstanta adalah 100, dan operator perbandinganini>. Anda perlu tahu tentang dua lebih elemen sebelum Anda dapat menulis permintaan bersyarat: klausa WHERE dan operator.

The WHERE Klausul

Sintaks klausa WHERE adalah

Sintaks:
  WHERE <SEARCH CONDITION>

SELECT, FROM, dan WHERE adalah tiga yang paling sering digunakan klausa dalam SQL. WHERE hanya menyebabkan pertanyaan Anda ke lebih selektif. Tanpa klausa WHERE, hal yang paling bermanfaat yang dapat Anda lakukan dengan query menampilkan semua catatan dalam tabel yang dipilih ( s). Sebagai contoh:

INPUT:
  SQL> SELECT * FROM bikes;

Daftar semua baris data dalam tabel sepeda.

OUTPUT:
  KOMPOSISI NAMA JENIS FRAMESIZE MILESRIDDEN
  -------------- --------- ------------ ----------- ---- ---
  Trek 2.300 3.500 22,5 SERAT KARBON RACING
  Burley 22 BAJA 2000 Tandem
  19 BAJA 1500 GIANT Komuter
  FUJI 20 BAJA 500 Touring
  Khusus 16 BAJA 100 GUNUNG
  Cannondale 22,5 ALUMINIUM RACING 3000 

  6 baris yang dipilih.

Jika Anda ingin sepeda tertentu, Anda bisa mengetik

INPUT / OUTPUT:
  SQL> SELECT *  
       DARI Bikes   
       WHERE NAME 'Burley ='; 

yang akan menghasilkan hanya satu record:

  KOMPOSISI NAMA JENIS FRAMESIZE MILESRIDDEN
  -------------- -------------- ----------- --------- - -----
  Burley 22 BAJA 2000 Tandem
ANALISIS:

Contoh sederhana ini menunjukkan bagaimana Anda dapat menempatkan kondisi pada data yang Anda inginkan untuk mengambil.

Operator

Operator adalah elemen yang Anda gunakan dalam sebuah ekspresi untuk mengartikulasikan bagaimana Anda ingin kondisi tertentu untuk mengambil data. Operator jatuh ke dalam enam kelompok: aritmatika, perbandingan, karakter, logis, mengatur, dan lain-lain.

Operator Aritmatika

Operator aritmatika adalah plus (+), minus (-), bagi (/), kalikan (*), dan modulo (%). Empat pertama adalah jelas. Modulo mengembalikan sisa integer dari divisi. Berikut adalah dua contoh:

  5% 2 = 1
  6% 2 = 0

Operator modulo tidak bekerja dengan tipe data yang memiliki desimal, seperti Real atau Nomor.

Jika Anda menempatkan beberapa dari operator aritmetika dalam ekspresi tanpa kurung, operator diselesaikan dalam urutan ini: perkalian, divisi, modulo, penambahan, dan pengurangan.Sebagai contoh, ekspresi

  2 * 6 +9 / 3

sama dengan

  12 + 3 = 15

Namun, ekspresi

  2 * (6 + 9) / 3

sama dengan

  2 * 15 / 3 = 10

Perhatikan di mana Anda menempatkan mereka kurung! Kadang ekspresi tidak persis apa yang Anda kirim ke lakukan, bukan apa yang ingin Anda lakukan.

Bagian berikut memeriksa operator aritmetika dalam beberapa detail dan memberikan Anda kesempatan untuk menulis beberapa permintaan.

Plus (+)

Anda dapat menggunakan tanda plus dalam beberapa cara. Ketik pernyataan berikut untuk menampilkan tabel HARGA:

INPUT:
  SQL> * SELECT DARI HARGA;
OUTPUT:
  WHOLESALE ITEM
  ---------- --------------
  TOMAT 0,34
  KENTANG 0,51
  Pisang 0,67
  Lobak 0,45
  CHEESE 0,89
  APEL 0,23 

  6 baris yang dipilih.

Sekarang ketik:

INPUT / OUTPUT:
  SQL> SELECT ITEM, WHOLESALE, + WHOLESALE 0,15  
      DARI HARGA; 

Di sini + menambah 15 sen untuk setiap harga untuk menghasilkan berikut:

  WHOLESALE WHOLESALE ITEM 0,15
  -------------- --------- --------------
  TOMAT 0,34 0,49
  KENTANG 0,51 0,66
  Pisang 0,67 0,82
  Lobak 0,45 0,60
  CHEESE 0,89 1,04
  APEL 0,23 0,38 

  6 baris yang dipilih.
ANALISIS:

Apa ini kolom terakhir dengan kolom pos WHOLESALE 0,15 menarik? Ini bukan dalam tabel asli. (Ingat, Anda digunakan * dalam klausa SELECT, yang menyebabkan semua kolom yang akan ditampilkan SQL.) Memungkinkan Anda untuk membuat atau diturunkan kolom virtual dengan menggabungkan atau memodifikasi kolom yang ada.

Ketik ulang entri asli:

INPUT / OUTPUT:
  SQL> * SELECT DARI HARGA;

Hasil tabel berikut:

  WHOLESALE ITEM
  -------------- ---------
  TOMAT 0,34
  KENTANG 0,51
  Pisang 0,67
  Lobak 0,45
  CHEESE 0,89
  APEL 0,23 

  6 baris yang dipilih.
ANALISIS:

Output menegaskan bahwa data asli belum berubah dan bahwa kolom judul WHOLESALE 0,15 bukan bagian permanen dari itu. Bahkan, kolom pos adalah sangat tidak menarik yang harus Anda lakukan sesuatu tentang hal ini.

Ketik berikut:

INPUT / OUTPUT:
  SQL> SELECT ITEM, WHOLESALE, (WHOLESALE + 0,15) ECERAN  
      DARI HARGA; 

Berikut hasilnya:

  WHOLESALE ITEM ECERAN
  -------------- --------- ------
  TOMAT 0,34 0,49
  KENTANG 0,51 0,66
  Pisang 0,67 0,82
  Lobak 0,45 0,60
  CHEESE 0,89 1,04
  APEL 0,23 0,38 

  6 baris yang dipilih.
ANALISIS:

Hal ini indah! Anda tidak hanya dapat membuat kolom baru, namun Anda juga bisa merubah nama mereka dengan cepat. Anda dapat merubah nama kolom menggunakan alias column_namesintaks (perhatikan ruang antara column_name dan alias).

Misalnya, pertanyaan

INPUT / OUTPUT:
  SQL SELECT ITEM> PRODUCE, WHOLESALE, WHOLESALE + 0,25 ECERAN  
       DARI HARGA; 

mengganti nama kolom sebagai berikut:

  WHOLESALE PRODUCE ECERAN
  -------------- --------- ---------
  TOMAT 0,34 0,59
  KENTANG 0,51 0,76
  Pisang 0,67 0,92
  Lobak 0,45 0,70
  CHEESE 0,89 1,14
  APEL 0,23 0,48

CATATAN: Beberapa implementasi dari SQL menggunakan nama <column sintaks = alias>. Contoh sebelumnya akan ditulis sebagai berikut:

  SQL SELECT ITEM> = PRODUCE,  
       WHOLESALE,   
       WHOLESALE + 0,25 = ECERAN,   
       DARI HARGA; 

Periksa pelaksanaan Anda untuk sintaks yang tepat.


Anda mungkin bertanya-tanya apa gunanya aliasing adalah jika Anda tidak menggunakan perintah SQL-line. Cukup adil. Apakah Anda pernah bertanya-tanya bagaimana laporan kerja pembangun? Suatu hari, ketika Anda diminta untuk menulis sebuah generator laporan, Anda akan ingat ini dan tidak menghabiskan minggu menemukan kembali apa yang Dr Codd dan IBM telah tempa.

Sejauh ini, Anda telah melihat dua penggunaan tanda plus. Contoh pertama adalah penggunaan tanda plus pada klausa SELECT untuk melakukan perhitungan pada data dan menampilkan perhitungan. Penggunaan kedua tanda plus berada di klausa WHERE. Menggunakan operator pada klausa WHERE memberi Anda fleksibilitas yang lebih ketika Anda menetapkan kondisi untuk mengambil data.

Dalam beberapa implementasi dari SQL, tanda plus melakukan tugas ganda sebagai operator karakter. Anda akan melihat sisi plus hari ini kemudian sedikit.

Minus (-)

Minus juga memiliki dua kegunaan. Pertama, bisa mengubah tanda nomor. Anda dapat menggunakan meja HILOW untuk menunjukkan fungsi ini.

INPUT:
  SQL> SELECT * FROM HILOW;
OUTPUT:
  NEGARA HIGHTEMP LOWTEMP
  ---------- -------- ---------
  CA -50 120
  FL 20 110
  LA 15 99
  ND -70 101
  -60 NE 100

Sebagai contoh, berikut ini adalah cara untuk memanipulasi data:

INPUT / OUTPUT:
  SQL> SELECT NEGARA,-HIGHTEMP lows,-LOWTEMP Highs  
       DARI HILOW;  

  NEGARA highs lows
  ---------- -------- ---------
  CA 50 -120
  FL -20 -110
  LA -15 -99
  ND 70 -101
  NE 60 -100

Yang kedua (dan jelas) penggunaan tanda minus adalah untuk mengurangi satu kolom dari yang lain. Sebagai contoh:

INPUT / OUTPUT:
  SQL> SELECT NEGARA,  
  2 HIGHTEMP lows,  
  3 LOWTEMP tertinggi,  
  4 (LOWTEMP - HIGHTEMP) SELISIH  
  5 DARI HILOW; 

  PERBEDAAN NEGARA highs lows
  ---------- -------- -------- ----------
  CA -50 120 170
  FL 20 110 90
  LA 15 99 84
  ND -70 101 171
  NE -60 100 160

Perhatikan penggunaan alias untuk memperbaiki data yang dimasukkan salah. Obat ini hanyalah patch sementara, meskipun, dan bukan memperbaiki permanen. Anda harus memastikan bahwa data tersebut dikoreksi dan dimasukkan dengan benar di masa mendatang. Pada hari 21, “Kesalahan umum SQL / Kesalahan dan Penyelesaian,” Anda akan belajar bagaimana memperbaiki data yang buruk.

Query ini tidak hanya tetap (setidaknya secara visual) data yang salah, tetapi juga menciptakan kolom baru yang mengandung perbedaan antara pasang surut masing-masing negara.

Jika Anda tanpa sengaja menggunakan tanda minus di lapangan karakter, Anda mendapatkan sesuatu seperti ini:

INPUT / OUTPUT:
  SQL> SELECT-NEGARA DARI HILOW; 

  ERROR:
  ORA-01722: nomor yang tidak valid
  ada baris yang dipilih

Pesan kesalahan tepat bervariasi dengan pelaksanaan, tapi hasilnya sama.

Bagi (/)

Operator divisi hanya memiliki satu arti yang jelas. Menggunakan meja HARGA, ketik berikut:

INPUT:
  SQL> * SELECT DARI HARGA;
OUTPUT:
  WHOLESALE ITEM
  -------------- ---------
  TOMAT 0,34
  KENTANG 0,51
  Pisang 0,67
  Lobak 0,45
  CHEESE 0,89
  APEL 0,23 

  6 baris yang dipilih.

Anda dapat menunjukkan efek dari penjualan dua-untuk-satu dengan mengetik pernyataan berikutnya:

INPUT / OUTPUT:
  SQL> SELECT ITEM, WHOLESALE, (WHOLESALE / 2) SALEPRICE  
    2 DARI HARGA;  

  WHOLESALE ITEM SALEPRICE
  -------------- --------- ---------
  TOMAT 0,34 0,17
  KENTANG 0,51 0,255
  Pisang 0,67 0,335
  Lobak 0,45 0,225
  CHEESE 0,89 0,445
  APEL 0,23 0,115 

  6 baris yang dipilih.

Penggunaan divisi dalam laporan SELECT sebelumnya sangatlah mudah (kecuali yang datang dengan uang setengah dapat sulit).

Kalikan (*)

Operator multiplikasi juga langsung. Sekali lagi, menggunakan tabel HARGA, ketik berikut:

INPUT:
  SQL> * SELECT DARI HARGA;
OUTPUT:
  WHOLESALE ITEM
  -------------- ---------
  TOMAT 0,34
  KENTANG 0,51
  Pisang 0,67
  Lobak 0,45
  CHEESE 0,89
  APEL 0,23 

  6 baris yang dipilih.

Perubahan permintaan ini meja untuk mencerminkan-di papan-diskon 10 persen:

INPUT / OUTPUT:
  SQL> SELECT ITEM, WHOLESALE, WHOLESALE * 0.9 NEWPRICE  
       DARI HARGA;  

  WHOLESALE ITEM NEWPRICE
  -------------- --------- --------
  TOMAT 0,34 0,306
  KENTANG 0,51 0,459
  Pisang 0,67 0,603
  Lobak 0,45 0,405
  CHEESE 0,89 0,801
  APEL 0,23 0,207 

  6 baris yang dipilih.

Operator ini memungkinkan Anda untuk melakukan perhitungan kuat dalam sebuah pernyataan SELECT.

Modulo (%)

Operator mengembalikan sisa integer modulo operasi divisi. Menggunakan TETAP meja, ketik berikut:

INPUT:
  SQL SELECT *> FROM TETAP;
OUTPUT:
  Pembilang penyebut
  ------------ ---------
         10 5
          8 3
         23 9
         40 17
       16 1024
         85 34 

  6 baris yang dipilih.

Anda juga dapat membuat kolom baru, sisanya, untuk memegang nilai-nilai pembilang% penyebut:

INPUT / OUTPUT:
  SQL> pembilang SELECT,  
       Penyebut,   
       Pembilang% penyebut sisa   
       DARI TETAP;  

  Pembilang penyebut sisa
  --------- ----------- ---------
         10 5 0
          8 3 2
         23 9 5
         40 17 6
       1024 16 0
         85 34 17 

  6 baris yang dipilih.

Beberapa implementasi dari SQL menerapkan modulo sebagai fungsi disebut MOD (lihat Hari 4, “Fungsi: Molding Data Anda Ambil”). Pernyataan berikut menghasilkan hasil yang identik dengan hasil pada laporan sebelumnya:

  SQL> pembilang SELECT,  
       Penyebut,   
       MOD (pembilang, penyebut) sisa   
       DARI TETAP; 

Diutamakan

Bagian ini membahas penggunaan protokoler dalam sebuah pernyataan SELECT. Menggunakan database diutamakan, ketik berikut:

  SQL> SELECT * FROM didahulukan;
         N1 N2 N3 N4
  --------- --------- --------- ---------
          1 2 3 4
         13 24 35 46
          9 3 23 5
         63 2 45 3
          7 2 1 4

Gunakan segmen kode berikut untuk menguji didahulukan:

INPUT / OUTPUT:
  SQL> SELECT  
    2 N1 + N2 * N3/N4,   
    3 (N1 + N2) * N3/N4,   
    4 N1 + (N2 * N3) / N4   
    5 DARI didahulukan;  

  N1 + N2 * N3/N4 (N1 + N2) * N3/N4 N1 + (N2 * N3) / N4
  ----------- ------------- -------------
          2,25 2,5 2,5
     28,152174 31,26087 31,26087
         22,8 55,2 22,8
           93 93 975
          7,5 2,25 7,5

Perhatikan bahwa kolom pertama dan terakhir adalah identik. Jika Anda menambahkan kolom keempat * N1 + N2 (N3/N4), nilai-nilai perusahaan juga akan sama dengan yang pertama kolom terakhir dan saat ini.

Operator Perbandingan

Sesuai dengan namanya, operator perbandingan membandingkan ekspresi dan kembali satu dari tiga nilai: TRUE, FALSE, atau Unknown. Tunggu sebentar?! Unknown TRUE dan FALSE yang cukup jelas, tetapi apa yang tidak diketahui?

Untuk memahami bagaimana Anda bisa mendapatkan Unknown, Anda perlu tahu sedikit tentang konsep NULL. Dalam istilah database NULL adalah tidak adanya data di lapangan. Ini tidak berarti kolom memiliki nol atau kosong di dalamnya. Sebuah nol atau kosong adalah nilai berarti. NULL tidak ada yang dalam bidang itu. Jika Anda membuat perbandingan seperti Lapangan = 9 dan nilai hanya untuk Lapangan adalah NULL, perbandingan itu akan kembali Unknown. Karena tidak diketahui adalah kondisi tidak nyaman, rasa sebagian besar dari SQL perubahan tidak diketahuike FALSE dan menyediakan operator khusus, IS NULL, untuk menguji kondisi NULL.

Berikut ini adalah contoh NULL: Misalkan sebuah entri di dalam tabel HARGA tidak mengandung nilai untuk WHOLESALE. Hasil query dapat terlihat seperti ini:

INPUT:
  SQL> * SELECT DARI HARGA;
OUTPUT:
  WHOLESALE ITEM
  ---------- --------------
  TOMAT 0,34
  KENTANG 0,51
  Pisang 0,67
  Lobak 0,45
  CHEESE 0,89
  APEL 0,23
  Jeruk

Perhatikan bahwa tidak ada yang dicetak dalam posisi bidang WHOLESALE untuk jeruk. Nilai untuk WHOLESALE lapangan untuk jeruk adalah NULL. The NULL terlihat dalam kasus ini karena dalam kolom numerik. Namun, jika NULL muncul di kolom ITEM, mustahil untuk membedakan antara NULL dan kosong.

Cobalah untuk menemukan NULL:

INPUT / OUTPUT:
  SQL> SELECT *  
  2 DARI HARGA  
   3 WHERE IS WHOLESALE NULL; 

  WHOLESALE ITEM
  ---------- --------------
  Jeruk
ANALISIS:

Seperti yang dapat Anda lihat dengan output, jeruk adalah hanya item yang nilainya untuk WHOLESALE adalah NULL atau tidak mengandung nilai. Bagaimana jika Anda menggunakan tanda sama dengan (=) bukan?

INPUT / OUTPUT:
  SQL> SELECT *  
       HARGA DARI   
       WHERE WHOLESALE = NULL;  

  ada baris yang dipilih
ANALISIS:

Anda tidak menemukan apa-apa karena perbandingan WHOLESALE = NULL kembali FALSE sebuah – hasilnya tidak diketahui. Itu akan lebih tepat untuk menggunakan IS NULL bukannya =,mengubah pernyataan untuk MANA WHERE IS WHOLESALE NULL. Dalam hal ini Anda akan mendapatkan semua baris mana NULL ada.

Contoh ini juga menggambarkan kedua penggunaan operator perbandingan yang paling umum, tanda sama dengan (=), dan taman bermain dari semua operator perbandingan, klausa WHERE.Anda sudah tahu tentang klausa WHERE, jadi inilah sekilas tanda sama.

Equal (=)

Sebelumnya hari ini Anda melihat bagaimana beberapa implementasi dari SQL menggunakan tanda sama dengan di klausa SELECT untuk menetapkan sebuah alias. Dalam klausa WHERE, tanda sama adalah perbandingan digunakan operator yang paling umum. Digunakan sendiri, tanda sama adalah cara yang sangat mudah memilih satu nilai dari banyak. Coba ini:

INPUT:
  SQL> SELECT * FROM FRIENDS;
OUTPUT:
  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- -
  AL Bundy 100 555-1111 IL 22333
  Meza AL Inggris 200 555-2222
  Merrick BUD 300 555-6666 CO 80212
  Mast JD 381 555-6767 LA 23456
  Ferris BULHER 345 555-3223 IL 23332

Mari kita cari baris JD’s. (Pada daftar singkat tugas ini tampak sepele, tetapi Anda mungkin memiliki lebih banyak teman daripada kita – atau Anda mungkin memiliki daftar dengan ribuan catatan.)

INPUT / OUTPUT:
  SQL> SELECT *  
       DARI TEMAN   
       WHERE Nama_belakang = 'JD';  

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- -
  Mast JD 381 555-6767 LA 23456

Kami mendapat hasil yang kami harapkan. Coba ini:

INPUT / OUTPUT:
  SQL> SELECT *  
       DARI TEMAN  
       WHERE Nama depan 'AL ='; 

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- -
  AL Bundy 100 555-1111 IL 22333
  Meza AL Inggris 200 555-2222

CATATAN: Di sini Anda melihat bahwa = dapat menarik beberapa catatan. Perhatikan bahwa ZIP kosong pada catatan kedua. ZIP adalah bidang karakter (Anda mempelajari cara membuat dan mengisi tabel pada Hari 8, “Memanipulasi Data”), dan dalam catatan khususnya NULL NULL menunjukkan bahwa dalam bidang karakter mustahil untuk membedakan dari bidang kosong.


Inilah pelajaran lain yang sangat penting tentang kasus sensitivitas:

INPUT / OUTPUT:
  SQL> SELECT * FROM FRIENDS 
       WHERE Nama depan "BUD = '; 

  Nama depan
  --------------
  BUD
  1 baris yang dipilih.

Sekarang coba ini:

INPUT / OUTPUT:
  SQL> * pilih dari sahabat 
       mana NamaDepan = 'Bud'; 

  ada baris yang dipilih.
ANALISIS:

Meskipun sintaks SQL tidak bersifat case sensitive, data. Kebanyakan perusahaan lebih memilih untuk menyimpan data dalam huruf besar untuk menyediakan konsistensi data. Anda harus selalu menyimpan data baik dalam huruf besar semua atau huruf kecil semua. Mencampur kasus menciptakan kesulitan ketika Anda mencoba untuk mengambil data akurat.

Greater Than (>) dan lebih besar dari atau sama Untuk (> =)

Operator dari yang lebih besar (>) bekerja seperti ini:

INPUT:
  SQL> SELECT * 
       DARI TEMAN 
       MANA AREACODE> 300;
OUTPUT:
  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- -
  Mast JD 381 555-6767 LA 23456
  Ferris BULHER 345 555-3223 IL 23332
ANALISIS:

Contoh ini menemukan semua kode area lebih besar dari (tapi tidak termasuk) 300. Untuk menyertakan 300, jenis ini:

INPUT / OUTPUT:
  SQL> SELECT * 
  2 DARI TEMAN 
  3 WHERE AREACODE> = 300; 

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- -
  Merrick BUD 300 555-6666 CO 80212
  Mast JD 381 555-6767 LA 23456
  Ferris BULHER 345 555-3223 IL 23332
ANALISIS:

Dengan perubahan ini Anda mendapatkan kode area 300 dan mulai naik. Anda bisa mencapai hasil yang sama dengan pernyataan AREACODE> 299.


CATATAN: Perhatikan bahwa tidak ada kutipan mengelilingi 300 dalam pernyataan SQL. -Didefinisikan bidang-didefinisikan fieldsnumber Jumlah tidak memerlukan tanda kutip.


Kurang dari (<) dan Kurang dari atau sama dengan (<=)

Seperti yang mungkin Anda harapkan, operator perbandingan ini bekerja dengan cara yang sama seperti> dan> bekerja =, hanya secara terbalik:

INPUT:
  SQL> SELECT * 
  2 DARI TEMAN 
  3 MANA NEGARA <'LA';
OUTPUT:
  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- ---
  AL Bundy 100 555-1111 IL 22333
  Merrick BUD 300 555-6666 CO 80212
  Ferris BULHER 345 555-3223 IL 23332

CATATAN: Bagaimana bisa berubah menjadi NEGARA ST? Karena kolom hanya memiliki dua karakter, nama kolom disingkat menjadi dua karakter di baris kembali. Jika nama kolom yang KK telah, akan keluar CO. Lebar dari AREACODE dan TELEPON adalah lebih lebar dari kolom nama mereka, sehingga mereka tidak terpotong.


ANALISIS:

Tunggu sebentar. Apakah Anda hanya menggunakan <di lapangan karakter? Tentu saja Anda lakukan. Anda dapat menggunakan salah satu operator pada setiap tipe data. Hasil bervariasi menurut tipe data. Misalnya, gunakan huruf kecil dalam pencarian negara berikut:

INPUT / OUTPUT:
  SQL> SELECT * 
  2 DARI TEMAN 
  3 MANA NEGARA <'la'; 

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- -
  AL Bundy 100 555-1111 IL 22333
  Meza AL Inggris 200 555-2222
  Merrick BUD 300 555-6666 CO 80212
  Mast JD 381 555-6767 LA 23456
  Ferris BULHER 345 555-3223 IL 23332
ANALISIS:

Huruf besar biasanya disortir sebelum huruf kecil, sehingga kode huruf besar kembali kurang dari "la". Sekali lagi, aman, periksa pelaksanaan Anda.


TIP: Untuk memastikan bagaimana operator akan berperilaku, periksa tabel bahasa Anda. implementasi Kebanyakan PC menggunakan tabel ASCII. Beberapa platform lainnya menggunakan EBCDIC.


Untuk memasukkan negara bagian Louisiana dalam pencarian asli, jenis

INPUT / OUTPUT:
  SQL> SELECT * 
   2 DARI TEMAN 
  3 WHERE <NEGARA = 'LA'; 

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- -
  AL Bundy 100 555-1111 IL 22333
  Merrick BUD 300 555-6666 CO 80212
  Mast JD 381 555-6767 LA 23456
  Ferris BULHER 345 555-3223 IL 23332

Ketidaksetaraan (<> atau! =)

Bila Anda perlu menemukan segala sesuatu kecuali data tertentu, gunakan simbol ketimpangan, yang dapat berupa <> atau! = Tergantung pada implementasi SQL Anda. Sebagai contoh, untuk menemukan semua orang yang tidak AL, ketik ini:

INPUT:
  SQL> SELECT * 
  2 DARI TEMAN 
  3 WHERE NamaDepan <> 'AL';
OUTPUT:
  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- -
  Merrick BUD 300 555-6666 CO 80212
  Mast JD 381 555-6767 LA 23456
  Ferris BULHER 345 555-3223 IL 23332

Untuk mencari semua orang tidak tinggal di California, ketik ini:

INPUT / OUTPUT:
  SQL> SELECT * 
  2 DARI TEMAN 
  3 MANA NEGARA '! =' CA; 

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- -
  AL Bundy 100 555-1111 IL 22333
  Meza AL Inggris 200 555-2222
  Merrick BUD 300 555-6666 CO 80212
  Mast JD 381 555-6767 LA 23456
  Ferris BULHER 345 555-3223 IL 23332

CATATAN: Perhatikan bahwa kedua simbol, <> dan! =, Dapat mengungkapkan “tidak sama.”


Karakter Operator

Anda dapat menggunakan operator untuk memanipulasi string karakter karakter cara diwakili, baik dalam output data dan dalam proses menempatkan kondisi pada data yang akan diambil.Bagian ini menjelaskan dua karakter operator: operator LIKE dan | operator |, yang menyampaikan konsep Rangkaian karakter.

Aku Ingin Seperti SEPERTI

Bagaimana jika Anda ingin memilih bagian dari database yang sesuai dengan pola, tetapi tidak cukup tepat sama? Anda bisa menggunakan tanda yang sama dan dijalankan melalui semua kasus mungkin, tapi proses itu akan membosankan dan menyita waktu. Sebaliknya, Anda dapat menggunakan SEPERTI. Pertimbangkan hal berikut:

INPUT:
  SQL> SELECT * FROM PARTS;
OUTPUT:
  NAMA LOKASI PARTNUMBER
  -------------- -------------- ----------
  MID-PERUT LAMPIRAN 1
  Adams APPLE Tenggorokan 2
  HATI DADA 3
  Spine BACK 4
  Landasan EAR 5
  GINJAL MID-BACK 6

Bagaimana Anda bisa menemukan semua bagian yang terletak di belakang? Sebuah inspeksi visual cepat dari tabel sederhana ini menunjukkan bahwa ia memiliki dua bagian, tapi sayangnya lokasi yang memiliki nama berbeda sedikit. Coba ini:

INPUT / OUTPUT:
  SQL> SELECT * 
  2 DARI PARTS 
   3 MANA LOKASI LIKE '% KEMBALI%'; 

  NAMA LOKASI PARTNUMBER
  -------------- -------------- ----------
  Spine BACK 4
  GINJAL MID-BACK 6
ANALISIS:

Anda dapat melihat penggunaan tanda persen (%) dalam laporan setelah SEPERTI. Ketika digunakan di dalam ekspresi SEPERTI,% merupakan wildcard. Apa yang Anda minta adalah setiap kejadian BACK di kolom lokasi. Jika Anda tanya

INPUT:
  SQL> SELECT * 
       DARI PARTS
       LOKASI DI MANA SEPERTI 'BACK%';

Anda akan mendapatkan kejadian yang dimulai dengan BACK:

OUTPUT:
  NAMA LOKASI PARTNUMBER
  -------------- -------------- ----------
  Spine BACK 4

Jika Anda tanya

INPUT:
  SQL> SELECT * 
       DARI PARTS
      WHERE NAMA LIKE '% A';

Anda akan mendapatkan nama yang dimulai dengan A:

OUTPUT:
  NAMA LOKASI PARTNUMBER
  -------------- -------------- ----------
  MID-PERUT LAMPIRAN 1
  Adams APPLE Tenggorokan 2
  Landasan EAR 5

Apakah kasus SEPERTI sensitif? Coba permintaan berikutnya untuk mencari tahu.

INPUT / OUTPUT:
  SQL> SELECT * 
       DARI PARTS 
       WHERE NAMA LIKE '% a'; 

  ada baris yang dipilih
ANALISIS:

Jawabannya adalah ya. Referensi data selalu kasus sensitif.

Bagaimana jika Anda ingin mencari data yang cocok semua kecuali satu karakter dalam pola tertentu? Dalam hal ini Anda dapat menggunakan berbagai jenis wildcard: ini garis bawah.

Underscore (_)

Ini menggarisbawahi adalah karakter wildcard tunggal. Menggunakan versi modifikasi dari TEMAN tabel, jenis ini:

INPUT:
  SQL> SELECT * FROM FRIENDS;
OUTPUT:
  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- -
  AL Bundy 100 555-1111 IL 22333
  Meza AL Inggris 200 555-2222
  UD Merrick 300 555-6666 CO 80212
  Mast JD 381 555-6767 LA 23456
  Ferris BULHER 345 555-3223 IL 23332
  Alton PERKINS CA 95633 911 555-3116
  BOSS SIR 204 555-2345 CT 95633

Untuk menemukan semua catatan di mana NEGERI dimulai dengan C, ketik berikut:

INPUT / OUTPUT:
  SQL> SELECT * 
    2 DARI TEMAN 
  3 MANA NEGARA SEPERTI 'C_';
  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- -
  Merrick BUD 300 555-6666 CO 80212
  Alton PERKINS CA 95633 911 555-3116
  BOSS SIR 204 555-2345 CT 95633

Anda dapat menggunakan beberapa garis bawah dalam sebuah pernyataan:

INPUT / OUTPUT:
  SQL> SELECT * 
   2 DARI TEMAN 
   3 MANA TELEPON LIKE'555-6_6_ '; 

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- -
  Merrick BUD 300 555-6666 CO 80212
  Mast JD 381 555-6767 LA 23456

Pernyataan sebelumnya juga dapat ditulis sebagai berikut:

INPUT / OUTPUT:
  SQL> SELECT * 
    2 DARI TEMAN 
   3 MANA SEPERTI TELEPON '555-6% '; 

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- -
  Merrick BUD 300 555-6666 CO 80212
  Mast JD 381 555-6767 LA 23456

Perhatikan bahwa hasil adalah identik. Kedua wildcard bisa digabungkan. Contoh berikut menemukan semua catatan dengan L sebagai karakter kedua:

INPUT / OUTPUT:
  SQL> SELECT * 
  2 DARI TEMAN 
   3 WHERE NamaDepan LIKE '_L%'; 

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- -
  AL Bundy 100 555-1111 IL 22333
  Meza AL Inggris 200 555-2222
  Alton PERKINS CA 95633 911 555-3116

Rangkaian (| |)

The | | (pipa ganda) simbol concatenates dua string. Coba ini:

INPUT:
  SQL> SELECT NamaDepan | | NamaBelakang ENTIRENAME 
    2 DARI TEMAN;
OUTPUT:
  ENTIRENAME
  ----------------------
  AL Bundy
  AL Meza
  BUD Merrick
  JD Mast
  Ferris BULHER
  Alton PERKINS
  SIR BOSS 

  7 baris yang dipilih.
ANALISIS:

Perhatikan bahwa | | digunakan bukan +. Jika Anda menggunakan + untuk mencoba menyatukan string, penafsir SQL digunakan untuk contoh (Personal Oracle7) mengembalikan kesalahan berikut:

INPUT / OUTPUT:
  SQL> SELECT Nama depan + NamaBelakang ENTIRENAME 
       DARI TEMAN; 

  ERROR:
  ORA-01722: nomor yang tidak valid

Ini adalah mencari dua nomor untuk menambahkan dan melempar kesalahan nomor yang tidak valid ketika tidak menemukan apapun.


CATATAN: Beberapa implementasi dari SQL menggunakan tanda plus untuk menyatukan string. Periksa pelaksanaan Anda.


Berikut adalah contoh yang lebih praktis menggunakan Rangkaian:

INPUT / OUTPUT:
  SQL> SELECT NamaBelakang | | ',' | | NAMA NamaDepan 
       DARI TEMAN; 

  NAMA
  -------------------------------------------------- ----
  Bundy, AL
  Meza, AL
  Merrick, BUD
  Mast, JD
  BULHER, Ferris
  PERKINS, Alton
  BOSS, SIR 

  7 baris yang dipilih.
ANALISIS:

Pernyataan ini disisipkan koma antara nama belakang dan nama pertama.


CATATAN: Perhatikan spasi ekstra antara nama pertama dan nama terakhir dalam contoh ini. Ruang ini sebenarnya bagian dari data. Dengan tipe data tertentu, ruang benar-melangkah ke nilai kurang dari total panjang dialokasikan untuk ladang. Lihat penerapan Anda. jenis data akan dibahas pada Hari 9, “Menciptakan dan Mempertahankan Tabel.”


Sejauh ini Anda telah melakukan perbandingan satu per satu. metode Itu bagus untuk beberapa masalah, tetapi bagaimana jika Anda perlu untuk menemukan semua orang di tempat kerja dengan nama terakhir dimulai dengan P yang memiliki kurang dari tiga hari waktu liburan?

Logical Operator

operator operatorsLogical logis memisahkan dua atau lebih kondisi pada klausa WHERE dari pernyataan SQL.

Liburan waktu selalu menjadi topik hangat di sekitar tempat kerja. Katakanlah Anda merancang sebuah tabel yang disebut liburan untuk departemen akuntansi:

INPUT:
  SQL> SELECT * FROM Liburan;
OUTPUT:
  TAHUN EMPLOYEENUM NamaBelakang LEAVETAKEN
  -------------- ----------- --------- ----------
  MAMPU 101 2 4
  BAKER 104 5 23
  Bledsoe 107 8 45
  Bolivar 233 4 80
  BOLD 210 15 100
  COSTALES 211 10 78 

  6 baris yang dipilih.

Misalkan perusahaan Anda setiap karyawan memberikan cuti 12 hari setiap tahun. Menggunakan apa yang Anda pelajari dan operator logis, menemukan semua karyawan yang namanya mulai dengan B dan yang memiliki lebih dari 50 hari cuti datang.

INPUT / OUTPUT:
  SQL> SELECT NamaBelakang, 
    2 TAHUN * 12 - LEAVETAKEN sisa 
    3 dari liburan 
    4 WHERE NamaBelakang LIKE 'B%' 
  5 DAN 
  6 TAHUN * 12 - LEAVETAKEN> 50; 

  NamaBelakang Tersisa
  -------------- ---------
  Bledsoe 51
  80 BOLD
ANALISIS:

Query ini adalah yang paling rumit yang telah Anda lakukan selama ini. Klausa SELECT (baris 1 dan 2) menggunakan operator aritmatika untuk menentukan berapa hari cuti tiap karyawan memiliki sisa. Yang diutamakan normal menghitung TAHUN * 12 - LEAVETAKEN (. (Lebih jelas Pendekatan akan menulis TAHUN * 12) - LEAVETAKEN.)

SEPERTI yang digunakan sesuai dengan 4% wildcard untuk menemukan semua nama B. Line 6 menggunakan> untuk menemukan semua kejadian yang lebih besar dari 50.

Unsur baru pada baris 5. Anda menggunakan operator logika AND untuk memastikan bahwa Anda menemukan catatan yang memenuhi kriteria di baris 4 dan 6.

DAN

DAN berarti bahwa ekspresi kedua belah pihak harus benar mengembalikan TRUE. Jika ekspresi baik adalah palsu, DAN kembali FALSE. Misalnya, untuk mengetahui karyawan telah dengan perusahaan selama 5 tahun atau kurang dan telah mengambil lebih dari 20 hari cuti, coba ini:

INPUT:
  SQL> SELECT NamaBelakang 
  2 dari liburan 
  3 WHERE TAHUN <= 5  
  4 DAN 
   5 LEAVETAKEN> 20;
OUTPUT:
  NamaBelakang
  --------
  BAKER
  Bolivar

Jika Anda ingin tahu yang karyawan telah dengan perusahaan selama 5 tahun atau lebih dan telah diambil kurang dari 50 persen meninggalkan mereka, Anda bisa menulis:

INPUT / OUTPUT:
  SQL> SELECT NamaBelakang workaholics 
  2 dari liburan 
   3 WHERE TAHUN> = 5 
   4 DAN 
   5 ((TAHUN * 12) -LEAVETAKEN) / (TAHUN * 12) <0,50; 

  Workaholics
  ---------------
  BAKER
  Bledsoe

Periksa orang-orang untuk pemadaman. Juga memeriksa bagaimana kita menggunakan AND untuk menggabungkan dua kondisi.

ATAU

Anda juga dapat menggunakan OR untuk meringkas serangkaian kondisi. Jika salah satu perbandingan adalah benar, kembali OR TRUE. Untuk menggambarkan perbedaan, conditionsrun permintaan terakhir dengan OR bukannya dengan DAN:

INPUT:
  SQL> SELECT NamaBelakang workaholics 
    2 dari liburan 
    3 WHERE TAHUN> = 5 
   4 OR 
  5 ((TAHUN * 12) -LEAVETAKEN) / (TAHUN * 12)> = 0,50;
OUTPUT:
  Workaholics
  ---------------
  MAMPU
  BAKER
  Bledsoe
  BOLD
  COSTALES
ANALISIS:

Nama asli masih dalam daftar, namun Anda memiliki tiga entri baru (yang mungkin akan membenci yang pecandu kerja yang disebut). Ketiga membuat daftar nama-nama baru karena mereka puas salah satu kondisi. ATAU membutuhkan bahwa hanya satu dari kondisi benar agar data yang akan dikembalikan.

TIDAK

TIDAK berarti hanya itu. Jika kondisi ini berlaku untuk mengevaluasi ke TRUE, TIDAK membuat FALSE. Jika kondisi setelah NOT FALSE, itu menjadi TRUE. Sebagai contoh, kembali SELECT berikut hanya dua nama, bukan dimulai dengan B dalam tabel:

INPUT:
  SQL> SELECT * 
  2 dari liburan 
    3 WHERE NamaBelakang TIDAK LIKE 'B%';
OUTPUT:
  TAHUN EMPLOYEENUM NamaBelakang LEAVETAKEN
  -------------- ----------- -------- ----------
  MAMPU 101 2 4
  COSTALES 211 10 78

TIDAK juga dapat digunakan dengan operator IS bila diterapkan ke NULL. Ingat meja BIAYA mana kita menempatkan nilai NULL di kolom WHOLESALE sebaliknya jeruk item.

INPUT / OUTPUT:
  SQL> * SELECT DARI HARGA; 

  WHOLESALE ITEM
  -------------- ---------
  TOMAT 0,34
  KENTANG 0,51
  Pisang 0,67
  Lobak 0,45
  CHEESE 0,89
  APEL 0,23
  Jeruk 

  7 baris yang dipilih.

Untuk menemukan item non-NULL, ketik ini:

INPUT / OUTPUT:
  SQL> SELECT * 
    2 DARI HARGA 
  3 WHERE IS WHOLESALE NOT NULL; 

  WHOLESALE ITEM
  -------------- ---------
  TOMAT 0,34
  KENTANG 0,51
  Pisang 0,67
  Lobak 0,45
  CHEESE 0,89
  APEL 0,23 

  6 baris yang dipilih.

Set Operator

Pada Hari ke-1, “Pengenalan ke SQL,” belajar Anda bahwa SQL didasarkan pada teori himpunan. Bagian berikut memeriksa ditetapkan operator.

UNION dan UNION ALL

UNI mengembalikan hasil dari dua pertanyaan minus duplikasi baris. Dua tabel berikut mewakili rosters tim:

INPUT:
  SQL> SELECT * FROM sepak bola;
OUTPUT:
  NAMA
  --------------------
  MAMPU
  BRAVO
  CHARLIE
  DECON
  EXITOR
  Fubar
  GOOBER 

  7 baris yang dipilih.
INPUT:
  SQL> SELECT * FROM softball;
OUTPUT:
  NAMA
  --------------------
  MAMPU
  BAKER
  CHARLIE
  DEAN
  EXITOR
  Pemburu yg menggunakan elang sbg alat bantu
  GOOBER 

  7 baris yang dipilih.

Berapa banyak orang yang berbeda bermain di satu tim atau yang lain?

INPUT / OUTPUT:
  SQL> SELECT NAMA DARI softball 
    2 UNI 
  3 SELECT NAMA dari sepak bola; 

  NAMA
  --------------------
  MAMPU
  BAKER
  BRAVO
  CHARLIE
  DEAN
  DECON
  EXITOR
  Pemburu yg menggunakan elang sbg alat bantu
  Fubar
  GOOBER 

  10 baris yang dipilih.

UNION kembali 10 nama berbeda dari dua daftar. Berapa banyak nama pada kedua daftar (termasuk duplikat)?

INPUT / OUTPUT:
  SQL> SELECT NAMA DARI softball 
   2 UNION ALL 
   3 PILIH NAMA dari sepak bola; 

  NAMA
  --------------------
  MAMPU
  BAKER
  CHARLIE
  DEAN
  EXITOR
  Pemburu yg menggunakan elang sbg alat bantu
  GOOBER
  MAMPU
  BRAVO
  CHARLIE
  DECON
  EXITOR
  Fubar
  GOOBER 

  14 baris yang dipilih.
ANALISIS:

Daftar gabungan – milik UNION ALL pernyataan – memiliki 14 nama bekerja. UNION ALL seperti UNI kecuali ia tidak menghilangkan duplikasi. Sekarang tunjukkan daftar pemain yang berada di kedua tim. Anda tidak dapat melakukannya dengan UNI – Anda perlu belajar INTERSECT.

INTERSECT

INTERSECT kembali hanya baris ditemukan oleh kedua permintaan. Pernyataan SELECT berikutnya menampilkan daftar pemain yang bermain di kedua tim:

INPUT:
  SQL> SELECT * FROM Football 
  2 INTERSECT 
  3 SELECT * FROM softball;
OUTPUT:
  NAMA
  --------------------
  MAMPU
  CHARLIE
  EXITOR
  GOOBER
ANALISIS:

Dalam contoh ini INTERSECT menemukan daftar pendek pemain yang berada di kedua tim dengan menggabungkan hasil dari dua pernyataan SELECT.

MINUS (Perbedaan)

Minus mengembalikan baris dari query pertama yang tidak hadir pada urutan kedua. Sebagai contoh:

INPUT:
  SQL> SELECT * FROM Football 
   2 MINUS 
  3 SELECT * FROM softball;
OUTPUT:
  NAMA
  --------------------
  BRAVO
  DECON
  Fubar
ANALISIS:

Permintaan sebelumnya menunjukkan tiga pemain sepak bola yang tidak di tim softball. Jika Anda membalik urutan, Anda mendapatkan tiga pemain softball yang tidak berada pada tim sepak bola:

INPUT:
  SQL> SELECT * FROM softball 
  2 MINUS 
   3 SELECT * FROM Football;
OUTPUT:
  NAMA
  --------------------
  BAKER
  DEAN
  Pemburu yg menggunakan elang sbg alat bantu

Miscellaneous Operator: DI dan ANTARA

Kedua operator IN dan ANTARA memberikan singkatan untuk fungsi Anda sudah tahu bagaimana melakukannya. Jika Anda ingin menemukan teman-teman di Colorado, California, dan Louisiana, Anda bisa mengetik berikut:

INPUT:
  SQL> SELECT * 
    2 DARI TEMAN 
   3 MANA NEGARA 'CA =' 
    4 OR 
    5 NEGARA = 'CO' 
   6 OR 
   7 NEGARA = 'LA';
OUTPUT:
  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- -
  Merrick BUD 300 555-6666 CO 80212
  Mast JD 381 555-6767 LA 23456
  Alton PERKINS CA 95633 911 555-3116

Atau Anda bisa mengetik ini:

INPUT / OUTPUT:
  SQL> SELECT * 
   2 DARI TEMAN 
    3 NEGARA DI MANA ('CA', 'CO', 'LA');
  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- -
  Merrick BUD 300 555-6666 CO 80212
  Mast JD 381 555-6767 LA 23456
  Alton PERKINS CA 95633 911 555-3116
ANALISIS:

Contoh kedua yang lebih pendek dan lebih mudah dibaca daripada yang pertama. Anda tidak pernah tahu kapan Anda mungkin harus kembali dan bekerja di sesuatu yang Anda tulis bulan lalu. DIjuga bekerja sama dengan nomor. Pertimbangkan yang berikut ini, di mana kolom AREACODE adalah angka:

INPUT / OUTPUT:
  SQL> SELECT * 
   2    DARI TEMAN 
  3 AREACODE DI MANA (100.381.204); 

  NamaBelakang NamaDepan AREACODE ST ZIP PHONE
  -------------- -------------- -------- --------- - --- -
  AL Bundy 100 555-1111 IL 22333
  Mast JD 381 555-6767 LA 23456
  BOSS SIR 204 555-2345 CT 95633

Jika Anda membutuhkan berbagai hal dari meja HARGA, Anda bisa menulis hal berikut:

INPUT / OUTPUT:
  SQL> SELECT * 
   2 HARGA DARI 
   3 WHERE 0,25> WHOLESALE 
  4 DAN 
  5 WHOLESALE <0,75; 

  WHOLESALE ITEM
  -------------- ---------
  TOMAT 0,34
  KENTANG 0,51
  Pisang 0,67
  Lobak 0,45

Atau ANTARA menggunakan, Anda akan menulis ini:

INPUT / OUTPUT:
  SQL> SELECT * 
  2 DARI HARGA 
   3 WHERE WHOLESALE ANTARA 0,25 DAN 0,75; 

  WHOLESALE ITEM
  -------------- ---------
  TOMAT 0,34
  KENTANG 0,51
  Pisang 0,67
  Lobak 0,45

Sekali lagi, contoh kedua adalah solusi, bersih lebih mudah dibaca daripada yang pertama.


CATATAN: Jika nilai WHOLESALE sebesar 0.25 ada dalam tabel HARGA, yang merekam akan diambil juga. Parameter yang digunakan dalam operator ANTARA adalah parametersinclusive inklusif.


Ringkasan

Pada awal Hari 3, Anda tahu bagaimana menggunakan SELECT dasar dan klausa FROM. Sekarang Anda tahu bagaimana menggunakan sejumlah operator yang memungkinkan Anda untuk menyempurnakan permintaan Anda ke database. Anda belajar bagaimana menggunakan aritmatika, perbandingan, karakter, logis, dan operator ditetapkan. Set alat yang kuat memberikan landasan pengetahuan SQL Anda.

Sumber ; http://www.webbasedprogramming.com

About these ads