Tampilan mewakili tabel virtual . Anda dapat menggabungkan beberapa tabel dalam satu tampilan dan menggunakan tampilan untuk menyajikan data seolah-olah data tersebut berasal dari satu tabel.
Prosedur tersimpan menggunakan parameter untuk melakukan suatu fungsi ... apakah itu memperbarui dan menyisipkan data, atau mengembalikan nilai tunggal atau kumpulan data.
Membuat Tampilan dan Prosedur Tersimpan - memiliki beberapa informasi dari Microsoft tentang kapan dan mengapa menggunakannya.
Katakanlah saya memiliki dua tabel:
tbl_user
, Dengan kolom: user_id
, user_name
,user_pw
tbl_profile
, Dengan kolom: profile_id
, user_id
,profile_description
Jadi, jika saya menemukan diri saya banyak bertanya dari tabel-tabel itu ... daripada melakukan join di SETIAP bagian SQL, saya akan mendefinisikan tampilan seperti:
CREATE VIEW vw_user_profile
AS
SELECT A.user_id, B.profile_description
FROM tbl_user A LEFT JOIN tbl_profile B ON A.user_id = b.user_id
GO
Jadi, jika saya ingin permintaan profile_description
oleh user_id
di masa depan, semua harus saya lakukan adalah:
SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
Kode itu dapat digunakan dalam prosedur tersimpan seperti:
CREATE PROCEDURE dbo.getDesc
@ID int
AS
BEGIN
SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
END
GO
Jadi, nanti, saya bisa menelepon:
dbo.getDesc 25
dan saya akan mendapatkan deskripsi untuk user_id
25, di mana 25
adalah parameter Anda.
Jelas ada lebih banyak detail, ini hanya ide dasarnya.
Banyak info tersedia di sini
Ini ringkasan yang bagus:
Prosedur Tersimpan:
Pemandangan:
sumber
Pertama, Anda perlu memahami, bahwa keduanya adalah hal yang berbeda.
Stored Procedures
paling baik digunakan untukINSERT-UPDATE-DELETE
pernyataan. SedangkanViews
digunakan untukSELECT
pernyataan. Anda harus menggunakan keduanya.Dalam pandangan Anda tidak dapat mengubah data.Beberapa database memiliki Tampilan yang dapat diperbarui di mana Anda dapat menggunakannyaINSERT-UPDATE-DELETE
diViews
.sumber
Tampilan SQL adalah tabel virtual, yang didasarkan pada kueri SQL SELECT. Tampilan mereferensikan satu atau beberapa tabel database yang sudah ada atau tampilan lain. Ini adalah snap shot dari database sedangkan prosedur tersimpan adalah sekelompok pernyataan Transact-SQL yang dikompilasi menjadi satu rencana eksekusi.
View sederhana menampilkan data yang disimpan dalam tabel database sedangkan prosedur tersimpan adalah sekelompok pernyataan yang dapat dieksekusi.
Tampilan lebih cepat karena menampilkan data dari tabel yang direferensikan sedangkan prosedur penyimpanan mengeksekusi pernyataan sql.
Periksa artikel ini: Lihat vs Prosedur Tersimpan . Persis apa yang Anda cari
sumber
sumber
Tampilan adalah cara sederhana untuk menyimpan kompleks
SELECT
dalam database.Prosedur penyimpanan digunakan ketika SQL sederhana saja tidak cukup. Prosedur penyimpanan berisi variabel, loop, dan panggilan ke prosedur tersimpan lainnya. Ini adalah bahasa pemrograman, bukan bahasa kueri.
Tampilan bersifat statis. Anggap saja sebagai tabel baru dengan tata letak tertentu dan data di dalamnya dibuat dengan cepat menggunakan kueri yang Anda buat dengannya. Seperti pada tabel SQL apa pun, Anda dapat mengurutkan dan memfilternya dengan
WHERE
,GROUP BY
danORDER BY
.Tergantung pada apa yang Anda lakukan.
Tergantung pada database. Tampilan sederhana hanya menjalankan kueri dan memfilter hasilnya. Tapi database seperti Oracle memungkinkan untuk membuat tampilan "terwujud" yang pada dasarnya adalah tabel yang diperbarui secara otomatis ketika data yang mendasari tampilan berubah.
Tampilan terwujud memungkinkan Anda membuat indeks pada kolom tampilan (terutama pada kolom yang dihitung yang tidak ada di mana pun dalam database).
Saya tidak mengerti apa yang Anda bicarakan.
sumber
Selain komentar di atas, saya ingin menambahkan beberapa poin tentang Views.
sumber
Mahesh tidak sepenuhnya benar ketika dia menyarankan agar Anda tidak dapat mengubah data dalam satu tampilan. Begitu pula dengan pandangan patrick
CREATE View vw_user_profile AS Select A.user_id, B.profile_description FROM tbl_user A left join tbl_profile B on A.user_id = b.user_id
SAYA BISA memperbarui data ... sebagai contoh, saya dapat melakukan salah satu dari ini ...
Update vw_user_profile Set profile_description='Manager' where user_id=4
atau
Update tbl_profile Set profile_description='Manager' where user_id=4
Anda tidak dapat MASUKKAN ke tampilan ini karena tidak semua bidang di semua tabel ada dan saya berasumsi bahwa PROFILE_ID adalah kunci utama dan tidak boleh NULL. Namun terkadang Anda dapat MENYISIPKAN ke tampilan ...
Saya membuat tampilan pada tabel yang ada menggunakan ...
Create View Junk as SELECT * from [TableName]
KEMUDIAN
Insert into junk (Code,name) values ('glyn','Glyn Roberts'), ('Mary','Maryann Roberts')
dan
DELETE from Junk Where ID>4
Baik INSERT dan DELETE bekerja dalam kasus ini
Jelas Anda tidak dapat memperbarui bidang apa pun yang digabungkan atau dihitung tetapi tampilan apa pun yang hanya tampilan lurus harus dapat diperbarui.
Jika tampilan berisi lebih dari satu tabel maka Anda tidak bisa menyisipkan atau menghapus tetapi jika tampilan adalah subset dari satu tabel saja maka Anda biasanya bisa.
sumber
Perbedaan utamanya adalah ketika Anda membuat kueri tampilan, maka definisinya ditempelkan ke dalam kueri Anda. Prosedur juga dapat memberikan hasil kueri, tetapi dikompilasi dan untuk lebih cepat. Opsi lainnya adalah tampilan yang diindeks ..
sumber
@Patrick benar dengan apa yang dia katakan, tetapi untuk menjawab pertanyaan Anda yang lain, Tampilan akan dibuat sendiri di Memori, dan tergantung pada jenis Gabungan, Data dan jika ada agregasi yang dilakukan, itu bisa menjadi View yang haus memori.
Prosedur yang disimpan melakukan semua pemrosesannya baik menggunakan Tabel Hash Temp misalnya # tmpTable1 atau dalam memori menggunakan @ tmpTable1. Bergantung pada apa yang ingin Anda perintahkan.
Prosedur Tersimpan seperti Fungsi, tetapi disebut Langsung dengan namanya. alih-alih Fungsi yang sebenarnya digunakan di dalam kueri itu sendiri.
Jelas sebagian besar tabel memori waktu lebih cepat, jika Anda tidak mengambil banyak data.
sumber