ARSIP BULANAN : December 2012

Syintax SQL, Inner Join, Left Join, Right Join,dan Full Join

12 December 2012 08:09:50 Dibaca : 1563

A. Syintax SQL

 

1. SQL Syntax Introduction

 

      Bagian ini adalah referensi untuk tata bahasa SQL yang Mckoi SQL Database mendukung. Mckoi SQL Database mendukung subset dari entry level ANSI SQL-92. Bagian ini tidak dimaksudkan untuk menjadi tutorial untuk belajar SQL. Untuk buku SQL dan tutorial online melihat bagian link di halaman rumah.

 

2. CREATE TABLE syntax

 

CREATE TABLE [JIKA TIDAK ADA] nama_tabel
  (Column_declare1, column_declare2, constraint_declare1, ...)
  

column_declare :: = column_name jenis [DEFAULT ekspresi]
  [NULL | NOT NULL] [INDEX_BLIST | INDEX_NONE]

Tipe :: = BIT | NYATA | CHAR | TEKS | DATE | WAKTU |
  FLOAT | BIGINT | DOUBLE | STRING | BINARY | NUMERIC |
  DECIMAL | boolean | TINYINT | INTEGER | VARCHAR |
  SMALLINT | VARBINARY | TIMESTAMP | LONGVARCHAR |
  JAVA_OBJECT | LONGVARBINARY

constraint_declare :: = [constraint_name CONSTRAINT]
  PRIMARY KEY (col1, col2, ...) |
  FOREIGN KEY (col1, col2, ...) REFERENSI f_table [(col1, col2, ...)]
             [ON triggered_action UPDATE] [ON triggered_action HAPUS] |
  UNIK (col1, col2, ...) |
  LIHAT (ekspresi)
  [AWALNYA ditunda | AWALNYA SEGERA]
  [TIDAK deferrable | deferrable]

triggered_action :: =
  TINDAKAN NO | NULL SET | DEFAULT SET | CASCADE
  

Ketika mendeklarasikan string atau jenis kolom biner ukuran maksimum harus ditentukan. Contoh berikut mendeklarasikan kolom string yang dapat tumbuh maksimal 100 karakter,

MENCIPTAKAN TABEL Tabel (str_col VARCHAR (100))

Ketika menangani string database hanya akan mengalokasikan sebagai ruang penyimpanan sebanyak string menggunakan up. Jika karakter string 10 disimpan di str_col maka ruang hanya untuk 10 karakter akan dialokasikan dalam database. Jadi jika Anda memerlukan kolom yang dapat menyimpan string dari berbagai ukuran, menggunakan jumlah sewenang-wenang besar ketika menyatakan kolom. Mckoi database SQL tidak menggunakan mekanisme ukuran penyimpanan tetap pada saat menyimpan data panjang variabel kolom.

JAVA_OBJECT adalah jenis kolom yang dapat berisi objek Serializable Jawa. Jenis JAVA_OBJECT memiliki definisi kelas Java opsional yang digunakan untuk memeriksa kendala kelas runtime. Contoh berikut menunjukkan menciptakan kolom JAVA_OBJECT.

MENCIPTAKAN ObjectTable TABLE (
        obj_id NUMERIC, JAVA_OBJECT obj (java.awt.Point))

Jika kelas Java tidak ditentukan default kolom untuk java.lang.Object yang secara efektif berarti semua jenis objek Java serializable dapat disimpan dalam kolom.

Tipe string mungkin memiliki klausa Collate yang mengubah collation urutan string berdasarkan bahasa. Misalnya, pernyataan folling menciptakan sebuah string yang dapat menyimpan dan memesan teks Jepang;

CREATE TABLE InternationalTable (
        japanese_text VARCHAR (4000) Collate 'jaJP')

The 'jaJP' adalah lokalisasi ISO kode untuk bahasa Jepang di Jepang. Kode lokal lainnya dapat ditemukan dalam dokumentasi untuk java.text.Collate.

Unik, primary key / asing dan memeriksa integritas kendala dapat didefinisikan dalam pernyataan CREATE TABLE. Berikut ini adalah contoh mendefinisikan meja dengan kendala integritas.

MENCIPTAKAN Pelanggan TABLE (
  Nomor VARCHAR (40) NOT NULL,
  nama VARCHAR (100) NOT NULL,
  SSN VARCHAR (50) NOT NULL,
  INTEGER usia TIDAK NULL,
    
  CONSTRAINT PRIMARY KEY cust_pk (angka),
  UNIK (SSN), / / ​​(An kendala anonim)
  CONSTRAINT age_check TARIF (umur> = 0 DAN usia <200)
)

 

3. ALTER TABLE syntax

     ALTER TABLE table_name ADD [KOLOM] column_declare
     ALTER TABLE table_name ADD constraint_declare
     ALTER DROP TABLE table_name [KOLOM] column_name
     ALTER TABLE table_name DROP CONSTRAINT constraint_name
     ALTER TABLE table_name DROP PRIMARY KEY
     ALTER TABLE table_name ALTER [KOLOM] SET column_name default_expr
     ALTER TABLE table_name ALTER [KOLOM] column_name DROP DEFAULT

     ALTER CREATE TABLE ....

     ALTER digunakan untuk menambah / menghapus / memodifikasi kolom dan kendala integritas meja. The [KOLOM] ADD bentuk menambahkan definisi kolom baru ke meja (menggunakan deklarasi sintaks kolom yang sama dalam perintah membuat). The DROP [KOLOM] bentuk tetes kolom dengan nama tabel. ALTER [KOLOM] column_name SET default_expr mengubah nilai default untuk kolom. ALTER [KOLOM] column_name DEFAULT DROP menghapus nilai default ditetapkan untuk kolom.

     Contoh berikut menambahkan kolom baru ke tabel;

     Urutan ALTER TABLE ADD catatan VARCHAR (60000) DEFAULT 'n / a'

     ADD constraint_declare digunakan untuk mendefinisikan batasan integritas baru di atas meja (menggunakan deklarasi sintaks kendala yang sama dalam perintah membuat). CONSTRAINT DROP digunakan untuk menjatuhkan kendala bernama dari meja.

     Bentuk lain dari pernyataan ini adalah ALTER CREATE TABLE .... Ini mengubah tabel untuk spesifikasi dari pernyataan CREATE diberikan. Setiap kolom yang berada di tabel asli tidak hilang diberikan nama kolom di tabel spesifikasi baru. Setiap kolom yang tidak dalam tabel asli diatur ke nilai default.

     Contoh berikut menunjukkan bentuk pernyataan ALTER;

     ALTER TABLE tabel MENCIPTAKAN
       (Col1 INTEGER NOT NULL UNIQUE,
         col2 NUMERIC,
         col3 VARCHAR (90000))

     ALTER CREATE TABLE ... sintaks adalah ekstensi untuk standar SQL-92.

 

4. DROP TABLE syntax

 

DROP TABLE [JIKA ADA] table_name1, table_name2, ....

Menghapus tabel (s) dari database. JIKA ADA klausul akan turun meja hanya jika ada. Jika klausul ini tidak hadir kesalahan dihasilkan jika tabel tidak ada. Setiap data yang berada di meja menjatuhkan hilang jadi gunakan dengan hati-hati.

 

5. CREATE VIEW syntax

 

MENCIPTAKAN table_name VIEW [(column_name1, column_name2, ...)]
   AS SELECT ...

Membuat pandangan baru. A view adalah tabel virtual berdasarkan hasil query SELECT. Isi dari pandangan mungkin referensi sejumlah meja lain dan pandangan.

Sebuah contoh sederhana dari pandangan berikut;

CREATE VIEW AS SELECT col1 ViewOfTableA FROM TableA

A view bertindak seperti meja biasa, dan dapat dilihat seperti yang Anda lakukan meja yang terbuat dengan pernyataan CREATE TABLE. Pandangan read-only.

 

6. DROP VIEW syntax

 

DROP VIEW table_name

Menghapus pandangan dari database. A view dapat diubah dengan menjatuhkan dan menciptakan itu.

 


7. CREATE SEQUENCE syntax

 

MENCIPTAKAN nama SEQUENCE
   [Increment_value selisih]
   [MinValue minimum_value]
   [MAXVALUE maximum_value]
   [MULAI start_value]
   [CACHE cache_value]
   [SIKLUS]

Membuat generator urutan baru yang dapat digunakan untuk menghasilkan iteratif urutan nilai. Generator Urutan memiliki sejumlah kegunaan termasuk penciptaan kunci utama untuk tabel. The selisih, MinValue, MAXVALUE, MULAI, dan nilai-nilai CACHE semua opsional.

Nilai selisih menentukan berapa penambahan urutan setiap iterasi. Secara default penambahan urutan generator oleh 1. Nilai-nilai MinValue dan MAXVALUE menentukan batas-batas generator urutan. Secara default MinValue dan MAXVALUE adalah 0 dan Long.MAX_VALUE masing. Nilai MULAI menentukan kunci pertama (eksklusif) dari generator. Nilai CACHE menentukan berapa banyak kunci harus di-cache sebelumnya.

Di bawah ini adalah contoh yang menciptakan generator urutan baru yang disebut 'seq_key_1' yang dimulai pada 10 dan kenaikan sebesar 2 setiap iterasi;

CREATE SEQUENCE seq_key_1 selisih 2 MULAI 10

Sebuah generator urutan diakses oleh panggilan ke fungsi NEXTVAL. Fungsi NEXTVAL iterates generator dan mengembalikan nilai berikutnya dari urutan. Fungsi NEXTVAL adalah operasi atom dan menjamin bahwa tidak ada dua nilai yang identik akan dikembalikan terlepas dari frekuensi atau concurrency panggilan ke fungsi. Di bawah ini adalah contoh sederhana;

SELECT NEXTVAL ('seq_key_1')

 

B. Inner Join

 

Sebuah INNER JOIN menghasilkan tabel hasil yang berisi baris komposit dibuat dengan menggabungkan baris dari dua tabel di mana beberapa yang telah ditentukan, atau secara eksplisit ditentukan, bergabung dengan kondisi bernilai true.

Baris yang tidak memenuhi kondisi BERGABUNG tidak akan muncul dalam tabel hasil dari INNER JOIN.

The INNER JOIN adalah default BERGABUNG jenis, sehingga INNER kata kunci adalah opsional dan dapat dihilangkan.
NATURAL BERGABUNG

Tabel hasil BERGABUNG ALAM berisi satu baris untuk setiap kasus di mana semua kolom umum dalam dua tabel berisi nilai yang sama.

Kolom yang umum adalah mereka yang memiliki nama yang sama di setiap meja. Kolom umum harus memiliki tipe data yang memungkinkan nilai-nilai dalam tabel masing untuk dibandingkan.

Sebuah baris dalam tabel hasil set berisi gabungan kolom dari setiap meja, kecuali bahwa kolom yang umum muncul sekali. Kolom umum muncul pertama (di kiri tabel) diikuti oleh kolom tersisa dari tabel-referensi-1, diikuti oleh orang-orang dari meja-referensi-2.
sintaksis

Sintaks untuk BERGABUNG NATURAL adalah:

 

http://developer.mimer.com/documentation/html_92/Mimer_SQL_Engine_DocSet/images/NATURAL_JOIN.png

 

Jika tidak ada baris di mana semua kolom umum memiliki nilai yang sama, tabel hasilnya adalah sebuah meja kosong (yaitu memiliki satu set kolom hanya sebagai dijelaskan, namun jumlah baris adalah nol).

Misalnya, dua tabel berisi set informasi yang berbeda pada orang-orang, dan meja masing-masing memiliki kolom FIRST_NAME dan kolom nama untuk mengidentifikasi orang kepada siapa informasi tersebut berlaku.

Ketika kedua kolom FIRST_NAME dan kolom nama mengandung nilai yang sama berturut-turut di setiap meja, itu berarti mereka baris terkait. Sebuah BERGABUNG ALAM antara kedua tabel akan menghasilkan tabel hasil dengan baris komposit tunggal untuk setiap orang, yang berisi semua informasi yang diadakan di kedua tabel, dengan nama dan kolom FIRST_NAME muncul sekali dalam deretan hasil.
Catatan: Hal ini sebenarnya mungkin untuk melakukan BERGABUNG ALAM antara dua tabel yang tidak memiliki kolom yang sama sama sekali. Dalam hal ini tabel hasil adalah produk Cartesian (kadang-kadang disebut CROSS JOIN) dari dua tabel.

 

Contoh

    Contoh berikut menggabungkan alami bergabung dengan subquery skalar (untuk penjelasan subqueries skalar, lihat Memilih Spesifikasi).

     perintah NATURAL BERGABUNG order_items NATURAL BERGABUNG pelanggan

    BERGABUNG DENGAN

    perintah BERGABUNG DENGAN order_items (order_id) BERGABUNG DENGAN pelanggan (customer_id)

    The INNER NATURAL BERGABUNG konstruksi bawah ini akan bergabung dengan karyawan dan tabel gaji pada semua kolom yang berbagi nama yang sama.

     KARYAWAN GAJI ALAM INNER JOIN

    BERGABUNG DENGAN

    BERGABUNG DENGAN memungkinkan daftar nama kolom yang akan ditentukan. Semacam ini bergabung secara konseptual sama dengan ALAM BERGABUNG kecuali bahwa join didasarkan pada kolom tertentu bukan pada semua kolom yang umum.

    Menentukan kolom eksplisit daripada menggunakan set kolom umum seluruh berguna dalam situasi di mana beberapa kolom umum tidak dapat berisi nilai yang identik meskipun baris masing terkait (misalnya seperti dalam kolom KETERANGAN).

    Kolom yang ditentukan dalam daftar harus sama untuk kedua tabel, mereka harus ditentukan secara wajar tanpa pengecualian dan harus memiliki tipe data yang memungkinkan nilai-nilai dalam tabel masing untuk dibandingkan.

    Sebuah baris dalam tabel hasil set berisi gabungan kolom dari setiap meja, kecuali bahwa kolom yang umum muncul sekali. Kolom yang ditentukan dalam daftar nama kolom muncul pertama (di kiri tabel) diikuti oleh kolom yang tersisa dari tabel-referensi-1, diikuti oleh orang-orang dari meja-referensi-2.

    Sintaks untuk BERGABUNG DENGAN adalah:

http://developer.mimer.com/documentation/html_92/Mimer_SQL_Engine_DocSet/images/JOIN_USING.png


    Contoh

    Pembangunan di bawah ini akan membuat join pada kolom yang ditentukan.

     KARYAWAN INNER BERGABUNG DENGAN GAJI (EMP_NO)

    GABUNG ON

 


    BERGABUNG ON memungkinkan kondisi join yang akan ditentukan. Tabel hasil semacam ini bergabung diproduksi dengan menerapkan kondisi bergabung ditentukan untuk produk Cartesian dari dua tabel. Tabel hasil akan berisi hanya baris yang kondisi bergabung bernilai true.

    Kondisi join tidak dapat referensi kolom umum kecuali mereka memenuhi syarat (misalnya dengan nama tabel).

    Sebuah baris dalam tabel hasil set berisi gabungan kolom dari setiap meja. Kolom dari tabel-referensi-1 muncul pertama diikuti oleh orang-orang dari meja-referensi-2. Kolom umum karena itu akan muncul dua kali.

    Sintaks untuk BERGABUNG ON adalah:

http://developer.mimer.com/documentation/html_92/Mimer_SQL_Engine_DocSet/images/JOIN_ON.png

    Contoh

    Kondisi ON membatasi jumlah baris dalam bergabung dengan mereka yang gaji kurang dari 10 000.

     KARYAWAN ALAM INNER JOIN GAJI PADA gaji <10000

 


C. Left Join

 

The LEFT JOIN dan KANAN sejenis BERGABUNG operator dapat digunakan dalam klausa FROM untuk menggabungkan catatan dari dua tabel. Operator BERGABUNG KIRI digunakan untuk membuat outer join kiri dan mencakup semua catatan dari yang pertama (kiri) dari dua tabel, bahkan jika tidak ada nilai-nilai yang cocok untuk catatan di kedua.

Meskipun LEFT JOIN atau RIGHT JOIN operator dapat bersarang di dalam suatu INNER JOIN, yang sebaliknya tidak benar. Operator INNER JOIN tidak dapat bersarang di dalam LEFT JOIN atau RIGHT JOIN.
contoh
kode:
SELECT Employee.Username, Project.ProjectName
DARI KIRI BERGABUNG Karyawan Proyek
ON Employee.EmployeeID = Project.EmployeeID;
Output:
Nama ProjectName

Jack Smith Kerja keras
Herman Allen Hardwork
Jill Swafford Kerja keras
Bob Thornton Kerja keras
Mike Sosebee Grindstone
Jill Swafford Grindstone
Zack Womble Kerja keras
Chris Lowery NULL
Samuel Jones NULL
Robert Nicholson NULL

(10 baris (s) terpengaruh)
penjelasan:

Query ini menggunakan 'Karyawan' dan 'Proyek' tabel untuk menunjukkan LEFT JOIN. Contoh ini mengembalikan nama semua karyawan apakah atau tidak mereka saat ini terlibat dalam setiap proyek, tetapi dengan nama proyek mana yang berlaku.

Contoh di atas adalah berbeda dengan contoh INNER JOIN yang hanya mengembalikan catatan-catatan di mana data di bidang bergabung adalah sama (catatan saja yakni untuk karyawan saat ini terlibat dalam proyek-proyek).
Language (s): MS SQL Server

 

D. Right Join

 

The BERGABUNG KANAN dan KIRI sejenis BERGABUNG operator dapat digunakan dalam klausa FROM untuk menggabungkan catatan dari dua tabel. Operator BERGABUNG KANAN digunakan untuk membuat outer join yang tepat dan mencakup semua catatan dari kedua (kanan) dari dua tabel, bahkan jika tidak ada nilai-nilai yang cocok untuk catatan dalam pertama.

Meskipun LEFT JOIN atau RIGHT JOIN operator dapat bersarang di dalam suatu INNER JOIN, yang sebaliknya tidak benar. Operator INNER JOIN tidak dapat bersarang di dalam LEFT JOIN atau RIGHT JOIN.
contoh
kode:
SELECT Employee.Username, Project.ProjectName
DARI Karyawan RIGHT JOIN Proyek
ON Employee.EmployeeID = Project.EmployeeID;
Output:
Nama ProjectName

Jack Smith Kerja keras
Herman Allen Hardwork
Jill Swafford Kerja keras
Bob Thornton Kerja keras
Mike Sosebee Grindstone
Jill Swafford Grindstone
Zack Womble Kerja keras
NULL Dokumen
NULL Dailytasks

(9 baris (s) terpengaruh)
penjelasan:

Ini contoh RIGHT JOIN mengembalikan nama semua proyek, apakah atau tidak salah satu karyawan yang saat ini bekerja pada mereka, tetapi dengan nama-nama karyawan mana yang berlaku.

Contoh di atas adalah berbeda dengan contoh INNER JOIN yang hanya mengembalikan catatan-catatan di mana data di bidang bergabung adalah sama (catatan saja yakni untuk karyawan saat ini terlibat dalam proyek-proyek).
Language (s): MS SQL Server

 

E. Full Join

 

Contoh ini menggambarkan penggunaan tindakan BERGABUNG LENGKAP.
Query ini mengambil nama event semua dan tempat di mana mereka terjadi. Tempat yang melekat pada nama event jika nilai lapangan "VenueNo" adalah sama di kedua tabel. Jika tidak ada tempat yang sesuai untuk acara, maka NULL ditempatkan di sampingnya. Demikian juga, jika event terkait untuk Abdya venue "t ditemukan, NULL ditempatkan di sebelah kiri itu.

pilih e1 "EVENT_NAME", v2.. "Venue"
dari "peristiwa" e1
luar penuh bergabung "tempat" v2
pada (e1. "VenueNo" = v2 "VenueNo".)
order by e1 "EVENT_NAME" asc, v2.. "Venue" asc