آموزش جامع SQL Server (جلسه ۱۵)
1398/04/30 17:08 , میلاد صاحب نظر

آموزش جامع SQL Server (جلسه ۱۵)

دستور DROP TABLE در SQL Server

گاهی، لازم است یک جدول که دیگر استفاده‌ای ندارد را حذف کنید. برای این منظور، از کد DROP TABLE به این شکل استفاده می‌کنیم:

DROP TABLE [IF EXISTS]  [database_name.][schema_name.]table_name;

در این syntax:

  • ابتدا، نام جدولی که قرار است حذف شود مشخص شده است.

  • بعد، نام پایگاه داده‌ای که جدول در آن قرار دارد و نام شمایی که جدول به آن تعلق دارد مشخص شده‌اند. نوشتن نام پایگاه داده انتخابی است. اگر آن را ننویسید، دستور DROP TABLE جدول موجود در پایگاه داده فعلی (که متصل یا connected است) را حذف می‌کند.

  • در آخر، از دستور IF EXISTS برای حذف جدول فقط در صورت وجود داشتن آن استفاده شده است. دستور IF EXISTS از زمان انتشار SQL Server 2016 13.x پشتیبانی می‌شود. اگر جدولی را حذف کنید که وجود ندارد، سیستم ارور می‌دهد. دستور IF EXISTS به صورت مشروط جدول را در صورت وجود داشتن حذف می‌کند.

وقتی SQL Server یک جدول را حذف می‌کند، همچنین تمام داده‌ها، triggerها، ویژگی‌ یا constraintها و مجوزهای جدول را نیز حذف می‌کند. علاوه بر این، SQL Server به صورت خودکار viewها و stored procedureهایی که به جدول حذف شده اشاره می‌کنند را حذف نمی‌کند.

در نتیجه، باید خودتان باید به صورت دستی این اشیاء مرتبط را حذف کنید، باید از دستور DROP VIEW و DROP PROCEDURE استفاده کنید.

SQL Server به شما اجازه می‌دهد تا چندین جدول را به صورت هم‌زمان با استفاده از دستور DROP TABLE به شکل زیر حذف کنید:

DROP TABLE [database_name.][schema_name.]table_name_1,
             [database_name.][schema_name.]table_name_2,
                  ...
             [database_name.][schema_name.]table_name_n;     

مثال‌های دستور DROP TABLE در SQL Server

اجازه دهید چند مثال با استفاده از دستور DROP TABLE حل کنیم.

الف) حذف جدولی که وجود ندارد

کد زیر جدولی به نام revenues در شمای Sales را حذف می‌کند:

DROP TABLE IF EXISTS sales.revenues;

 در این مثال، جدول revenues وجود ندارد. چون از عبارت IF EXISTS استفاده شده است، کد به درستی اجرا شده و جدول حذف نمی‌شود.

ب) حذف یک جدول

کد زیر یک جدول جدید به نام delivery در شمای sales ایجاد می‌کند:

CREATE TABLE sales.delivery (
    delivery_id INT PRIMARY KEY,
    delivery_note VARCHAR (255) NOT NULL,
    delivery_date DATE NOT NULL
);

برای حذف جدول delivery، باید از کد زیر استفاده کنید:

DROP TABLE sales.delivery;
پ)حذف یک جدول با ویژگی کلید foreign key

کد زیر دو جدول جدید به نام‌های supplier_groups و suppliers را در شمای procurement ایجاد می‌کند:

CREATE SCHEMA procurement;
GO
 
CREATE TABLE procurement.supplier_groups (
    group_id INT IDENTITY PRIMARY KEY,
    group_name VARCHAR (50) NOT NULL
);
 
CREATE TABLE procurement.suppliers (
    supplier_id INT IDENTITY PRIMARY KEY,
    supplier_name VARCHAR (50) NOT NULL,
    group_id INT NOT NULL,
    FOREIGN KEY (group_id) REFERENCES procurement.supplier_groups (group_id)
);

اجازه دهید سعی کنیم جدول supplier_groups را حذف کنیم:

DROP TABLE procurement.supplier_groups;

SQL Server ارور زیر را می‌دهد:

Could not drop object 'procurement.supplier_groups' because it is referenced by a FOREIGN KEY constraint.

SQL Server به شما اجازه نمی‌دهد جدولی را که دارای یک کلید خارجی است را حذف کنید. برای حذف این جدول، باید ابتدا ویژگی foreign key یا جدولی که این جدول به آن اشاره می‌کند را حذف کنید.

در این مورد، باید ویژگی foreign key را در جدول suppliers یا ابتدا جدول suppliers را قبل از حذف جدول supplier_groups حذف کنید.

DROP TABLE procurement.supplier_groups;
DROP TABLE procurement.suppliers;

اگر از یک کد DROP TABLE برای حذف هر دو جدول استفاده می‌کنید، همان‌طور که در کد زیر مشاهده می‌کنید، جدول اشاره کننده باید اول در لیست قرار داده شود:

DROP TABLE procurement.suppliers, procurement.supplier_groups;

در نتیجه، در این قسمت چگونگی استفاده از دستور DROP TABLE برای حذف یک یا چند ستون از یک پایگاه داده را آموختید.

دستور TRUNCATE TABLE در SQL Server

گاهی، می‌خواهید تمام ردیف‌های یک جدول را حذف کنید. در این مورد، معمولاً از دستور DELETE بدون عبارت WHERE استفاده می‌کنید.

مثال زیر یک جدول جدید به نام customer_groups ایجاد کرده و چند ردیف به آن اضافه می‌کند:

CREATE TABLE sales.customer_groups (
    group_id INT PRIMARY KEY IDENTITY,
    group_name VARCHAR (50) NOT NULL
);
 
INSERT INTO sales.customer_groups (group_name)
VALUES
    ('Intercompany'),
    ('Third Party'),
    ('One time');

برای حذف تمام ردیف‌ها از جدول customer_groups، از دستور DELETE به شکل زیر استفاده می‌شود:

DELETE FROM sales.customer_groups;

علاوه بر دستور DELETE FROM می‌توانید از دستور TRUNCATE TABLE برای حذف تمام ردیف‌ها از یک جدول استفاده کنید.

کد زیر syntax دستور TRUNCATE TABLE را نشان می‌دهد:

TRUNCATE TABLE [database_name.][schema_name.]table_name;

در این syntax، ابتدا نام جدولی که می‌خواهید تمام ردیف‌های آن حذف شوند را مشخص می‌کنید. سپس، نام پایگاه داده‌ای که جدول در آن قرار دارد مشخص می‌شود. نام پایگاه داده انتخابی است. اگر آن را ننویسید، کد جدول موجود در پایگاه داده connectted فعلی را حذف می‌کند.

کد زیر ابتدا چند ردیف به جدول customer_groups اضافه کرده و سپس تمام ردیف‌های آن را با استفاده از دستور TRUNCATE TABLE حذف می‌کند:

INSERT INTO sales.customer_groups (group_name)
VALUES
    ('Intercompany'),
    ('Third Party'),
    ('One time');   
 
TRUNCATE TABLE sales.customer_groups;

دستور TRUNCATE TABLE شبیه به دستور DELETE بدون بارت WHERE است. به هر حال، دستور TRUNCATE سریع‌تر اجرا شده و از منابع log سیستمی و تراکنش کمتری استفاده می‌کند.

TRUNCATE TABLE در برابر DELETE

دستور TRUNCATE TABLE دارای مزیت‌های زیر نسبت به کد DELETE است:

۱)از log تراکنش کمتری استفاده می‌کند

کد DELETE ردیف‌ها را یک به یک حذف کرده و یک ورودی در log تراکنش باری هر ردیف حذف شده ایجاد می‌کند.

از طرف دیگر، دستور TRUNCATE TABLE داده‌ها را با استفاده از روش عدم اختصاص صفحات داده استفاده شده برای ذخیره داده‌های جدول، حذف کرده و فقط عدم اختصاص‌های صفحات را در logهای تراکنش وارد می‌کند.

۲)از قفل‌های کمتری استفاده می‌کند

وقتی کد DELETE با استفاده از یک قفل ردیف اجرا می‌شود، هر ردیف در جدول برای حذف شدن قفل می‌شوند. دستور TRUNCATE TABLE جدول و صفحات را قفل می‌کند، نه هر ردیف را.

۳)ریست شدن Identity

اگر جدولی که قرار است truncate شود دارای یک ستون identity باشد، وقتی داده توسط دستور TRUNCATE TABLE حذف می‌شود، شمارنده برای آن ستون به مقدار اولیه ریست می‌شود اما برای دستور DELETE این‌گونه نیست.

به این شکل، در این قسمت چگونگی استفاده از دستور TRUNCATE TABLE برای حذف تمام ستو‌ن‌ها از یک جدول به صورت سریع و کاراتر را آموختید.

 

دستور SELECT INTO در SQL Server

دستور SELECT INTO یک جدول جدید ایجاد می‌کند و ردیف‌ها را به وسیله query وارد آن جدول می‌کند.

کد SELECT INTO  در زیر، جدول destination را ایجاد کرده و ردیف‌ها را با توجه به شرط درون WHERE از جدول source به درون جدول Destination کپی می‌کند:

SELECT 
    select_list
INTO 
    destination
FROM 
    source
[WHERE condition]

اگر می‌خواهید بخشی از داده‌ها را از جدول source کپی کنید، باید از دستور WHERE برای مشخص کردن اینکه کدام ردیف‌ها باید کپی شوند، استفاده کنیم.

به طور مشابه، می‌توانید مشخص کنید که کدام ستون‌ها از جدول source باید در جدول Destination کپی شوند و ستون‌ها باید در لیست انتخابی یا select list قرار گیرند.

توجه کنید که دستور SELECT INTO ویژگی‌هایی مانند primary key و indexها را از جدول Source در جدول Destination کپی نمی‌کند.

مثال‌های SELECT INTO در SQL Server

اجازه دهید چند مثال برای استفاده از دستور SELECT INTO حل کنیم.

الف) استفاده از دستور SELECT INTO برای کپی کردن جدول درون یک پایگاه داده

اول، یک شمای جدید برای ذخیره کرده جدول جدید ایجاد کنید.

CREATE SCHEMA marketing;
GO

دوم، جدول marketing.customers را همانند جدول Sales.customers ایجاد کنید و تمام ردیف‌ها را از جدول sales.customers به جدول marketing.customers کپی کنید:

SELECT 
    *
INTO 
    marketing.customers
FROM 
    sales.customers;

سوم، داده‌ها را از جدول marketing.customers با استفاده از query بگیرید تا مطمئن شوید کپی درست انجام شده است:

SELECT 
    *
FROM 
    marketing.customers;

تصویر زیر خروجی را نشان می‌دهد:

نتایج

ب) استفاده از دستور SELECT INTO برای کپی کردن جدول بین چند پایگاه داده

ابتدا، یک پایگاه داده جدید به نام TestDb برای آزمایش ایجاد کنید:

CREATE DATABASE TestDb;
GO

سپس، Sales.customers را از پایگاه داده فعلی (یعنی Bikestores) به درون جدول TestDb.dbo.customers کپی کنید. این دفعه، فقط شماره شناسایی، نام، نام خانوادگی و ایمیل مشتریانی که در کالیفرنیا هستند را کپی می‌کنیم:

SELECT    
    customer_id, 
    first_name, 
    last_name, 
    email
INTO 
    TestDb.dbo.customers
FROM    
    sales.customers
WHERE 
    state = 'CA';

بعد، داده‌ها را با استفاده از query از جدول TestDb.dbo.customers برای اطمینان از درستی کپی به دست می‌آوریم:

SELECT 
    * 
FROM 
    TestDb.dbo.customers;

بخشی از نتایج به شرح زیر هستند:

نتایج

در نتیجه، به این شکل چگونگی استفاده از دستور SELECT INTO برای کپی کردن یک جدول درون یک پایگاه داده یا بین چند پایگاه داده را آموختید.

 

 

بازنویسی نام جدول در SQL Server

در این بخش، چگونگی بازنویسی نام یک جدول را با استفاده از Transact SQL و SQL Server Management Studio را خواهید آموخت.

بازنویسی نام جدول در SQL Server با استفاده از Transact SQL

SQL Server هیچ دستور مستقیمی برای بازنویسی نام یک جدول ندارد. به هر حال، یک stored procedure به نام sp_rename فراهم شده است که به شما اجازه می‌دهد نام جدول را تغییر دهید.

کد زیر syntax استفاده از sp_rename برای تغییر نام جدول را نشان می‌دهد:

EXEC sp_rename 'old_table_name', 'new_table_name'

توجه کنید که هر دو نام‌های قدیمی و جدید جدولی که نام آن تغییر کرده است باید درون تک کوتیشن‌ها قرار گیرند.

اجازه دهید مثال زیر را بررسی کنیم.

ابتدا، یک جدول جدید به نام sales.contr برای ذخیره داده‌های قراردادهای فروش ایجاد کنیم:

CREATE TABLE sales.contr (
    contract_no INT IDENTITY PRIMARY KEY,
    start_date DATE NOT NULL,
    expired_date DATE,
    customer_id INT,
    amount DECIMAL (10, 2)
); 

سپس، از sp_rename برای بازنویسی نام جدول Sales.contr به contracts در شمای sales استفاده می‌کنیم:

EXEC sp_rename 'sales.contr', 'contracts';

SQL Server پیغام زیر را بازمی‌گرداند:

Caution: Changing any part of an object name could break scripts and stored procedures.

به هر حال، نام جدول با موفقیت بازنویسی شد.

بازنویسی نام جدول با استفاده از SSMS

روش دیگر برای بازنویسی نام یک جدول، استفاده از تابع فراهم شده توسط SQL Server Management Studio است.

مثال زیر چگونگی بازنویسی نام جدول product_history به product_archive را نشان می‌دهد.

ابتدا، روی نام جدول کلیک راست کرده و از منوی گزینه Rename را انتخاب کنید:

روی نام جدول کلیک راست کرده و از منوی گزینه Rename را انتخاب کنید

سپس، نام جدید جدول را تایپ کنید (مثلاً product_archive) و Enter را بزنید:

نام جدید جدول را تایپ کنید (مثلاً product_archive) و Enter را بزنید

به این صورت، چگونگی بازنویسی نام یک جدول در یک پایگاه داده با استفاده از stored procedure به نام sp_rename و SQL Server Management Studio را آموختید.

جداول موقت در SQL Server

جداول موقت (Temporary Tables) جداولی هستند که موقتاً در SQL Server وجود دارند.

جداول موقت برای ذخیره مجموعه نتایج آنی که چندین بار نیاز به دسترسی به آن‌ها وجود دارد، مفید هستند.

ایجاد جداول موقت

SQL Server دو روش برای ایجاد جداول موقت از طریق دستورهای SELECT INTO و CREATE TABLE فراهم کرده است.

ایجاد جداول موقت با استفاده از دستور SELECT INTO

اولین روش برای ایجاد یک جدول موقت، استفاده از دستور SELECT INTO به شکل زیر است:

SELECT 
    select_list
INTO 
    temporary_table
FROM 
    table_name
....

نام جدول موقت با یک علامت # شروع می‌شود. برای مثال، دستور زیر یک جدول موقت با استفاده از دستور SELECT INTO ایجاد می‌کند:

SELECT
    product_name,
    list_price
INTO #trek_products --- temporary table
FROM
    production.products
WHERE
    brand_id = 9;

در این مثال، ما یک جدول موقت به نام trek_products# با دو ستون مشتق شده از لیست انتخاب دستور SELECT ایجاد کردیم. این دستور جدول موقت را ایجاد کرده و داده‌ها را از جدول production.products درون جدول موقت پر می‌کند.

وقتی دستور را اجرا می‌کنید، می‌توانید نام جدول موقت ایجاد شده را در پایگاه داده سیستم به نام tempdb مشاهده کنید، که می‌توانید از طریق SQL Server Management Studio با استفاده از مسیر:

System Databases>tempdb>Temporary Tables به آن دسترسی یابید که در تصویر زیر هم نشان داده شده است:

System Databases>tempdb>Temporary Tables

همان‌طور که به وضوح از تصویر مشخص است، جدول موقت همچنین شامل دنباله‌ای از اعداد به عنوان یک پسوند است. این یک شناساگر منحصر به فرد برای جدول موقت است.

چون چندین اتصال پایگاه داده می‌توانند جداول موقت با نام یکسان ایجاد کنند، SQL Server به صورت خودکار این عدد منحصر به فرد را به انتهای نام جدول موقت پیوست می‌کند تا بین جداول موقت تفاوت ایجاد کند.

ایجاد جداول موقت با استفاده از دستور CREATE TABLE

دومین روش برای ایجاد یک جدول موقت، استفاده از دستور CREATE TABLE است:

CREATE TABLE #haro_products (
    product_name VARCHAR(MAX),
    list_price DEC(10,2)
);

این دستور دارای syntax یکسان با فرآیند ایجاد یک جدول معمولی است. به هر حال، نام جدول موقت با یک علامت # آغاز می‌شود.

پس از ایجاد جدول موقت، می‌توانید داده‌ها را همانند یک جدول معمولی به این جدول وارد کنید:

INSERT INTO #haro_products
SELECT
    product_name,
    list_price
FROM 
    production.products
WHERE
    brand_id = 2;

مسلماً، می‌توانید در همین session برای داده‌های آن query بنویسید:

نتایج

به هر حال، اگر یک اتصال دیگر را باز کنید و سعی کنید برای جداول بالا query بنویسید، با ارور زیر مواجه خواهید شد:

Invalid object name '#haro_products'.

دلیل این است که جداول موقت فقط درون Session که در آن ایجاد شده‌اند قابل دسترسی هستند.

جداول موقت جهانی

گاهی، ممکن است بخواهید یک جدول موقتی ایجاد کنید که در بین چندین اتصال قابل دسترسی باشد. در این مورد، می‌توانید از جداول موقت جهانی استفاده کنید.

بر خلاف یک جدول موقتی معمولی، نام جدول موقتی جهانی با یک علامت ## آغاز می‌شود.

دستور زیر ابتدا یک جدول موقت جهانی به نام heller_products## ایجاد کرده و سپس داده‌ها را از جدول production.products به داخل این جدول پر می‌کند:

CREATE TABLE ##heller_products (
    product_name VARCHAR(MAX),
    list_price DEC(10,2)
);
 
INSERT INTO ##heller_products
SELECT
    product_name,
    list_price
FROM 
    production.products
WHERE
    brand_id = 3;

حالا، می‌توانید از هر session به جدول heller_products## دسترسی داشته باشید.

حذف جداول موقت

حذف خودکار

SQL Server وقتی یک اتصال که در آن یک جدول موقت ایجاد شده است بسته شود، SQL Server به صورت خودکار آن جدول موقت را حذف می‌کند.

زمانی که یک اتصال که یک جدول موقت جهانی را ایجاد کرده است بسته شود و queryهای مرتبط با آن جدول از اتصالات دیگر کامل شوند، SQL Server آن جدول موقت جهانی را حذف می‌کند.

حذف دستی

از اتصالی که در آن جدول موقت ایجاد شده است، می‌توانید به صورت دستی جدول موقت را با استفاده از دستور DROp TABLE حذف کنید:

DROP TABLE ##table_name;

به این شکل، در مورد جداول موقت SQL Server و چگونگی ایجاد و حذف آن‌ها همه چیز را آموختید.

هم معنی یا synonym در SQL Server

در این قسمت، در مورد هم معنی یا synonym در SQL Server و چگونگی ایجاد هم معنی‌ها برای اشیاء پایگاه داده خواهید آموخت.

یک هم معنی یا synonym در SQL Server چیست؟

در SQL Server، هم معنی یا synonym در واقع یک alias یا نام جایگزین برای یک شیء پایگاه داده (مانند یک جدول، view، stored procedure، تابع تعریف شده توسط کاربر و دنباله یا sequence) است. اگر به درستی از  Synonym استفاده کنید، مزیت‌های خیلی زیادی دارد.

Syntax دستور CREATE SYNONYM در SQL Server

برای ایجاد یک synonym، از دستور CREATE SYNONYM به شکل زیر استفاده می‌شود:

CREATE SYNONYM [ schema_name_1. ] synonym_name 
FOR object;

شیء به شکل زیر است:

[ server_name.[ database_name ] . [ schema_name_2 ]. object_name   

در این syntax:

  • ابتدا، شیء مورد نظری که می‌خواهید به آن یک synonym اختصاص دهید را در مقابل دستور FOR می‌نویسیم.

  • سپس، نام synonym را پس از کلیدواژه‌های CREATE SYNONYM می‌نویسیم.

توجه کنید شیئی که برای آن synonym ایجاد می‌کنید لازم نیست حتماً در زمانی که synonym ایجاد می‌شود وجود داشته باشد.

مثال‌های دستور CREATE SYNONYM در SQL Server

اجازه دهید چند مثال برای استفاده از دستور CREATE SYNONYM حل کنیم تا بهتر آن را درک کنیم.

الف) ایجاد یک synonym درون یک پایگاه داده

مثال زیر از دستور CREATE SYNONYM برای ایجاد یک synonym برای جدول Sales.orders استفاده می‌کند:

CREATE SYNONYM orders FOR sales.orders;

وقتی synonym به نام orders ایجاد شد، می‌توانید آن را به هر جایی که از شیء هدف استفاده کرده‌اید (یعنی جدول Sales.orders) رفرنس کنید.

برای مثال، query زیر از synonym به نام orders به جای جدول Sales.orders استفاده می‌کند:

SELECT * FROM orders;
ب) ایجاد یک synonym برای یک جدول در یک پایگاه داده دیگر

ابتدا، یک پایگاه داده جدید به نام Test ایجاد کنید و پایگاه داده فعلی را روی test تنظیم کنید:

CREATE DATABASE test;
GO
 
USE test;
GO

سپس، یک شمای جدید به نام purchasing درون پایگاه داده test ایجاد کنید:

CREATE SCHEMA purchasing;
GO

بعد، یک جدول جدید در شمای purchasing از پایگاه داده Test ایجاد کنید:

CREATE TABLE purchasing.suppliers
(
    supplier_id   INT
    PRIMARY KEY IDENTITY, 
    supplier_name NVARCHAR(100) NOT NULL
);

پس از آن، از پایگاه داده Bikestores، یک synonym برای جدول purchasing.suppliers در پایگاه داده test ایجاد کنید:

CREATE SYNONYM suppliers 
FOR test.purchasing.suppliers;

در آخر، از پایگاه داده Bikestores، با استفاده از synonym به نام suppliers به جدول test.purchasing.suuppliers اشاره کنید:

SELECT * FROM suppliers;

لیست کردن همه synonymهای یک پایگاه داده

می‌توانید همه synonymهای یک پایگاه داده را با استفاده از Transact-SQL و SQL Server Management Studio مشاهده کنید.

الف) لیست کردن synonymها با استفاده از دستور Transact-SQL

برای لیست کردن همه synonymهای پایگاه داده فعلی، می‌توانید برای catalog view به نام sys.synonyms به شکل زیر query‌ بنویسید:

SELECT 
    name, 
    base_object_name, 
    type
FROM 
    sys.synonyms
ORDER BY 
    name;

خروجی به این شکل است:

نتایج

ب) لیست کردن synonymها با استفاده از SQL Server Management Studio

از SQL Server Management Studio، می‌توانید تمام Synonymهای پایگاه داده فعلی را از طریق نقطه synonyms همان‌طور که در تصویر زیر نشان داده شده است مشاهده کنید:

می‌توانید تمام Synonymهای پایگاه داده فعلی را از طریق نقطه synonyms همان‌طور که در تصویر زیر نشان داده شده است مشاهده کنید

حذف یک Synonym

برای حذف یک Synonym، از دستور DROP SYNONYM با syntax زیر استفاده می‌کنیم:

DROP SYNONYM [ IF EXISTS ] [schema.] synonym_name  

در این syntax:

  • ابتدا، نام Synonym که می‌خواهید حذف کنید را پس از کلیدواژه‌های DROP SYNONYM مشخص می‌شود.

  • سپس، از دستور IF EXISTS برای حذف شرطی Synonym فقط در صورت وجود داشتن استفاده می‌شود. حذف یک Synonym غیر موجود بدون استفاده از دستور IF EXISTS باعث بروز یک ارور می‌شود.
مثال حذف synonymها

مثال زیر از دستور DROP SYNONYM برای حذف Synonym به نام orders استفاده می‌کند:

DROP SYNONYM IF EXISTS orders;

چه موقع از Synonymها استفاده می‌کنیم؟

شرایطی وجود دارند که می‌توانید در آن‌ها به خوبی از Synonymها استفاده کنید.

۱)ساده‌سازی نام‌های شیء

اگر از یک پایگاه داده دیگر به یک شیء اشاره کنید (حتی از یک سرور راه دور)، می‌توانید یک Synonym در پایگاه داده خود ایجاد کرده و به این شیء رفرنس دهید، درست مثل اینکه در پایگاه داده خودتان قرار دارد.

۲)فعال کردن تغییر یکپارچه نام شیء

وقتی می‌خواهید نام یک جدول یا هر شیء دیگری مانند stored procedure، view، تابع تعریف شده توسط کاربر یا دنباله یا sequence را تغییر دهید، باید اشیاء پایگاه داده موجود که به این جدول اشاره می‌کنند را به صورت دستی تغییر دهید تا نام جدید را نمایش دهد.

علاوه بر این، همه برنامه‌های فعلی که از این جدول استفاده می‌کنند نیز باید تغییر یابند و احتمالاً لازم است دوباره کامپایل شوند. برای پرهیز از تمام این کارهای سخت، می‌توانید نام جدول را بازنویسی کنید و یک synonym برای آن ایجاد کنید تا عملکرد برنامه‌های موجود خوب و مناسب باقی بماند.

مزایای synonymها

اگر به درستی از Synonym استفاده کنید، از این مزیت‌ها برخوردار خواهید شد:

  • یک لایه انتزاعی روی اشیاء پایه فراهم می‌شود.

  • نام‌های طولانی مانند with_schema.and_object_name به یک alias ساده تبدیل می‌شوند.

  • در زمانی که نام اشیاء پایگاه داده را بازنویسی می‌کنید (مثلاً جداول، viewها، stored procedureها، توابع ایجاد شده توسط کاربر و دنباله یا Sequenceها) امکان سازگاری رو به عقب (backward compatibility) برای برنامه‌های موجود فراهم می‌کند.

به این شکل، در مورد synonymها در SQL Server و چگونگی استفاده موثر از آن‌ها برای برنامه‌ها را آموختید.

از آخرین دوره های آموزشی و تخفیف ها مطلع شوید

با تکمیل فرم زیر ، از اخبار و اطلاعات به روز برنامه نویسی و تکنولوژی عقب نمانید

آخرین مطالب

آموزش جامع SQL Server (جلسه ۱۲)
آموزش جامع SQL Server (جلسه ۱۲)

دستور UPDATE در SQL Server برای تغییر داده‌های موجود در یک جدول، از دستور UPDATE به شکل زیر استفاده ...

آموزش جامع SQL Server (جلسه ۱۵)
آموزش جامع SQL Server (جلسه ۱۵)

دستور DROP TABLE در SQL Server گاهی، لازم است یک جدول که دیگر استفاده‌ای ندارد را حذف کنید. برای ...

آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)
آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)

بخش اول از آخرین مبحث دوره جامع آموزش SQL Server در جلسه قبلی بررسی شد. این مبحث که ...

آخرین دیدگاه ها

دیدگاه خود را درباره این پست بنویسید

فرم ارسال نظرات