Cara membuat kueri dalam database SQL Server 2017.
Salah satu pertanyaan paling dasar yang dapat Anda lakukan adalah seperti ini:
SELECT * FROM TableName;
Kueri ini mengembalikan semua data dari tabel tertentu. TableName
adalah nama tabel yang ingin Anda kueri. Yang perlu Anda lakukan adalah menggantinya dengan nama tabel di database Anda, menjalankan kueri, dan isi tabel itu akan ditampilkan.
Database kami terdiri dari tiga tabel. Masing-masing berisi data. Mari kita lihat apa yang ada di setiap tabel.
Para Artists
tabel:
SELECT * FROM Artists;Hasil
ArtistId ArtistName ActiveFrom -------- ---------------------- ------------------------ 1 Iron Maiden 1975-12-25T00:00:00.000Z 2 AC/DC 1973-01-11T00:00:00.000Z 3 Allan Holdsworth 1969-01-01T00:00:00.000Z 4 Buddy Rich 1919-01-01T00:00:00.000Z 5 Devin Townsend 1993-01-01T00:00:00.000Z 6 Jim Reeves 1948-01-01T00:00:00.000Z 7 Tom Jones 1963-01-01T00:00:00.000Z 8 Maroon 5 1994-01-01T00:00:00.000Z 9 The Script 2001-01-01T00:00:00.000Z 10 Lit 1988-06-26T00:00:00.000Z 11 Black Sabbath 1968-01-01T00:00:00.000Z 12 Michael Learns to Rock 1988-03-15T00:00:00.000Z 13 Carabao 1981-01-01T00:00:00.000Z 14 Karnivool 1997-01-01T00:00:00.000Z 15 Birds of Tokyo 2004-01-01T00:00:00.000Z 16 Bodyjar 1990-01-01T00:00:00.000Z 16 row(s) returned Executed in 1 ms
Albums
tabel:
SELECT * FROM Albums;Hasil
AlbumId AlbumName ReleaseDate ArtistId GenreId ------- ------------------------ ------------------------ -------- ------- 1 Powerslave 1984-09-03T00:00:00.000Z 1 1 2 Powerage 1978-05-05T00:00:00.000Z 2 1 3 Singing Down the Lane 1956-01-01T00:00:00.000Z 6 3 4 Ziltoid the Omniscient 2007-05-21T00:00:00.000Z 5 1 5 Casualties of Cool 2014-05-14T00:00:00.000Z 5 1 6 Epicloud 2012-09-18T00:00:00.000Z 5 1 31 Somewhere in Time 1986-09-29T00:00:00.000Z 1 1 32 Piece of Mind 1983-05-16T00:00:00.000Z 1 1 33 Killers 1981-02-02T00:00:00.000Z 1 1 34 No Prayer for the Dying 1990-10-01T00:00:00.000Z 1 1 35 No Sound Without Silence 2014-09-12T00:00:00.000Z 9 4 36 Big Swing Face 1967-06-01T00:00:00.000Z 4 2 37 Blue Night 2000-11-01T00:00:00.000Z 12 4 38 Eternity 2008-10-27T00:00:00.000Z 12 4 39 Scandinavia 2012-06-11T00:00:00.000Z 12 4 40 Long Lost Suitcase 2015-10-09T00:00:00.000Z 7 4 41 Praise and Blame 2010-06-26T00:00:00.000Z 7 4 42 Along Came Jones 1965-05-21T00:00:00.000Z 7 4 43 All Night Wrong 2002-05-05T00:00:00.000Z 3 2 44 The Sixteen Men of Tain 2000-03-20T00:00:00.000Z 3 2 20 row(s) returned Executed in 1 ms
Genres
tabel:
SELECT * FROM Genres;Hasil
GenreId Genre ------- ------- 1 Rock 2 Jazz 3 Country 4 Pop 5 Blues 6 Hip Hop 7 Rap 8 Punk 8 row(s) returned Executed in 1 ms
Dalam ketiga kasus, kueri kami sama. Satu-satunya yang berubah adalah nama tabelnya.
Ini adalah salah satu pertanyaan paling dasar yang bisa kita lakukan. Ini hanya mengembalikan semua baris dan semua kolom dari satu tabel.
Kami dapat memodifikasi kueri ini dalam beberapa cara untuk mengembalikan hanya data yang ingin kami lihat. Di bawah ini adalah beberapa cara umum yang dapat kami lakukan untuk memodifikasi kueri untuk mengembalikan hasil yang kami butuhkan dengan tepat.
Tentukan kolom
Alih-alih menggunakan tanda bintang (*
) untuk mengembalikan semua kolom, Anda dapat secara eksplisit menyatakan hanya kolom yang ingin Anda kembalikan.
SELECT AlbumId, AlbumName, ArtistId FROM Albums;Hasil
AlbumId AlbumName ArtistId ------- ------------------------ -------- 1 Powerslave 1 2 Powerage 2 3 Singing Down the Lane 6 4 Ziltoid the Omniscient 5 5 Casualties of Cool 5 6 Epicloud 5 31 Somewhere in Time 1 32 Piece of Mind 1 33 Killers 1 34 No Prayer for the Dying 1 35 No Sound Without Silence 9 36 Big Swing Face 4 37 Blue Night 12 38 Eternity 12 39 Scandinavia 12 40 Long Lost Suitcase 7 41 Praise and Blame 7 42 Along Came Jones 7 43 All Night Wrong 3 44 The Sixteen Men of Tain 3 20 row(s) returned Executed in 1 ms
Persempit Kriteria
Anda dapat menambahkan WHERE
klausa untuk mengembalikan hanya baris yang cocok dengan kriteria yang Anda berikan.
SELECT AlbumId, AlbumName, ArtistId FROM Albums WHERE ArtistId = 1;Hasil
AlbumId AlbumName ArtistId ------- ----------------------- -------- 1 Powerslave 1 31 Somewhere in Time 1 32 Piece of Mind 1 33 Killers 1 34 No Prayer for the Dying 1 5 row(s) returned Executed in 1 ms
Bergabung dengan Meja Lain
Anda dapat menggunakan gabungan untuk mengembalikan hasil dari beberapa tabel yang berbagi data. Inilah yang dimaksud dengan hubungan. Secara khusus, gabungan biasanya digunakan di mana kunci asing dari satu tabel cocok dengan kunci utama tabel lainnya.
SELECT AlbumId, AlbumName, ArtistName FROM Albums INNER JOIN Artists ON Albums.ArtistId = Artists.ArtistId WHERE ReleaseDate < '1980-01-01';Hasil
AlbumId AlbumName ArtistName ------- --------------------- ---------- 2 Powerage AC/DC 3 Singing Down the Lane Jim Reeves 36 Big Swing Face Buddy Rich 42 Along Came Jones Tom Jones 4 row(s) returned Executed in 1 ms
Anda akan melihat bahwa WHERE
klausa masih berfungsi pada kolom yang sebenarnya tidak termasuk dalam output. Dalam hal ini, itu diterapkan ke ReleaseDate
kolom, meskipun kami tidak menyertakan kolom tersebut dalam hasil.
Anda juga akan melihat bahwa kami memenuhi syarat kedua ArtistId
kolom dengan nama tabel (yaitu Albums.ArtistId
dan Artists.ArtistId
). Kita harus melakukan ini agar SQL Server mengetahui tabel mana yang kita rujuk saat mereferensikan kolom itu. Beberapa pengembang basis data menganggap praktik yang baik untuk memenuhi syarat semua nama kolom di semua kueri SQL, namun ini lebih merupakan kasus preferensi pribadi atau konvensi pengkodean khusus proyek.
Tambahkan Alias
Anda juga dapat menambahkan alias tabel ke kueri Anda untuk membuat kode lebih ringkas. Misalnya, Anda dapat memberikan Artists
alias ar
dan Albums
alias al
(atau string lain yang Anda suka).
Anda dapat menggunakan alias ini untuk memenuhi syarat nama kolom. Berikut kueri yang sama seperti di atas, tetapi dengan semua nama kolom memenuhi syarat dengan alias tabel:
SELECT al.AlbumId, al.AlbumName, ar.ArtistName FROM Albums al INNER JOIN Artists ar ON al.ArtistId = ar.ArtistId WHERE al.ReleaseDate < '1980-01-01';Hasil
AlbumId AlbumName ArtistName ------- --------------------- ---------- 2 Powerage AC/DC 3 Singing Down the Lane Jim Reeves 36 Big Swing Face Buddy Rich 42 Along Came Jones Tom Jones 4 row(s) returned Executed in 1 ms
Anda juga dapat menetapkan alias ke kolom (bukan hanya tabel). Kami melakukan ini pada contoh berikutnya.
Format Tanggal
Ada banyak cara yang berbeda bahwa tanggal dan waktu dapat diperlakukan dalam database. Di SQL Server ada tipe data yang berbeda untuk menyimpan tanggal (seperti date
, time
, datetime
, smalldatetime
, dll) dan ada banyak fungsi berbeda untuk menangani tanggal (misalnya SYSDATETIME()
, GETDATE( )
, CURRENT_TIMESTAMP
, dll).
Dalam contoh ini, kita akan menggunakan YEAR()
berfungsi untuk mengembalikan hanya bagian tahun dari tanggal.
SELECT AlbumName, YEAR(ReleaseDate) AS Year FROM Albums;Hasil
AlbumName Year ------------------------ ---- Powerslave 1984 Powerage 1978 Singing Down the Lane 1956 Ziltoid the Omniscient 2007 Casualties of Cool 2014 Epicloud 2012 Somewhere in Time 1986 Piece of Mind 1983 Killers 1981 No Prayer for the Dying 1990 No Sound Without Silence 2014 Big Swing Face 1967 Blue Night 2000 Eternity 2008 Scandinavia 2012 Long Lost Suitcase 2015 Praise and Blame 2010 Along Came Jones 1965 All Night Wrong 2002 The Sixteen Men of Tain 2000 20 row(s) returned Executed in 1 ms
Dalam contoh ini kami juga menetapkan alias ke kolom. Lebih khusus, kami menetapkan alias untuk hasil YEAR()
fungsi, yang kita lewati ReleaseDate
kolom sebagai argumen.
Hal lain tentang contoh ini adalah bahwa kami menggunakan AS
kata kunci saat menetapkan alias. Ini opsional, dan kita juga bisa menggunakan AS
kata kunci saat menetapkan alias ke tabel pada contoh sebelumnya.
Tentang SQL dan Transact-SQL
Kueri di atas (dan kueri lainnya dalam tutorial ini) ditulis dalam Structured Query Language (SQL). Lebih khusus lagi, SQL Server menggunakan Transact-SQL (terkadang disingkat menjadi T-SQL ), yang merupakan ekstensi milik Microsoft dan Sybase untuk SQL.
SQL adalah bahasa kueri standar yang digunakan pada sebagian besar sistem manajemen basis data relasional. Ini adalah standar dari American National Standards Institute (ANSI), dan Organisasi Internasional untuk Standardisasi (ISO).
Sementara sebagian besar kueri dasar akan bekerja di sebagian besar basis data relasional, beberapa kueri mungkin perlu sedikit dimodifikasi saat porting antara satu sistem basis data dan sistem basis data lainnya. Misalnya, Anda mungkin memiliki skrip yang berjalan di SQL Server. Anda juga dapat menggunakan skrip tersebut di MySQL, namun, Anda mungkin perlu mengubah beberapa hal sebelum berhasil dijalankan.
Skrip SQL dalam tutorial ini hanya menunjukkan contoh kecil dari hal-hal yang dapat Anda lakukan dengan SQL. Untuk informasi lebih lanjut, lihat Tutorial SQL saya atau kunjungi Referensi Microsoft Transact-SQL.