عبارت های CREATE و ALTER در SQL – راهنمای جامع


در این نوشته دستور CREATE در SQL و چیزهایی که با آن میتوانید بسازید را مرور خواهیم کرد. همچنین با دستور ALTER آشنا خواهیم شد که برای ایجاد تغییراتی در پایگاه داده استفاده میشود.
اغلب سیستمهای پایگاه داده روشی برای ایجاد اشیای مختلف از طریق یک رابط WYSIWYG ارائه کردهاند. برای نمونه «اسکیوال سرور مایکروسافت» ابزار (SQL Server Management Studio (SSMS را پیشنهاد میکند.
SSMS نوعی بازنمایی گرافیکی از سیستم پایگاه داده در اختیار شما قرار میدهد. بدین ترتیب میتوانید در پایگاه داده به گردش پرداخته و جداول و موارد دیگر را مشاهده کنید.
علیرغم داشتن ابزاری مانند SSMS که باعث شده کارهای مختلف آسانتر شوند. دلایل خوبی وجود دارد که بخواهیم برخی کارها را به صورت برنامهنویسی شده انجام دهیم. برخی از این دلایل در ادامه فهرست شدهاند:
- ممکن است اپلیکیشن شما به کاربران امکان ایجاد لحظهای اشیای پایگاه داده را ارائه کند.
- ممکن است چندین محیط مختلف (مانند محیط توسعه، گسترش و پروداکشن) داشته باشید. بدین ترتیب اجرای اسکریپتهای مختلف بر روی این 3 محیط متفاوت به صورت برنامهنویسی شده، بسیار آسانتر و کم خطاتر از وضعیتی خواهد بود که بخواهید 3 بار به طور مستقل از طریق SSMS یا سیستم معادل آن در سرورهای دیگر تغییرات را روی پایگاههای داده مختلف پیاده کنید. این وضعیت به خصوص در مواردی که دامنه تغییرات گسترده باشند، نمود بیشتری مییابد.
- ممکن است به SSMS یا معادل آن در سیستم پایگاه داده دیگر دسترسی نداشته باشید.
خوشبختانه SQL چندین دستور SQL دارد که به شما مکان ایجاد اشیای پایگاه داده از جمله خود پایگاه داده، جداول و موارد دیگر را به صورت برنامهنویسی شده میدهد.
در ادامه برخی از دستورات CREATE را ارائه کردهایم که از سوی SQL سرور پشتیبانی میشوند:
CREATE AGGREGATE
CREATE APPLICATION ROLE
CREATE ASSEMBLY
CREATE ASYMMETRIC KEY
CREATE BROKER PRIORITY
CREATE CERTIFICATE
CREATE COLUMNSTORE INDEX
CREATE CONTRACT
CREATE CREDENTIAL
CREATE CRYPTOGRAPHIC PROVIDER
CREATE DATABASE
CREATE DATABASE AUDIT SPECIFICATION
CREATE DATABASE ENCRYPTION KEY
CREATE DEFAULT
CREATE ENDPOINT
CREATE EVENT NOTIFICATION
CREATE EVENT SESSION
CREATE FULLTEXT CATALOG
CREATE FULLTEXT INDEX
CREATE FULLTEXT STOPLIST
CREATE FUNCTION
CREATE INDEX
CREATE LOGIN
CREATE MASTER KEY
CREATE MESSAGE TYPE
CREATE PARTITION FUNCTION
CREATE PARTITION SCHEME
CREATE PROCEDURE
CREATE QUEUE
CREATE REMOTE SERVICE BINDING
CREATE RESOURCE POOL
CREATE ROLE
CREATE ROUTE
CREATE RULE
CREATE SCHEMA
CREATE SEARCH PROPERTY LIST (Transact-SQL)
CREATE SEQUENCE (Transact-SQL)
CREATE SERVER AUDIT
CREATE SERVER AUDIT SPECIFICATION
CREATE SERVICE
CREATE SPATIAL INDEX
CREATE STATISTICS
CREATE SYMMETRIC KEY
CREATE SYNONYM
CREATE TABLE
CREATE TRIGGER
CREATE TYPE
CREATE USER
CREATE VIEW
CREATE WORKLOAD GROUP
CREATE XML INDEX
CREATE XML SCHEMA COLLECTION
در این نوشته قصد نداریم همه دستورات فوق را تک به تک بررسی کنیم؛ اما در ادامه برخی از مهمترین دستورهای CREATE در SQL را به همراه مثالهای عملی توضیح خواهیم داد.
دستور Create Database
شما با استفاده از دستور Create Database میتوانید یک پایگاه داده در SQL بسازید.
ساختار SQL
CREATE DATABASE database_name;
کد نمونه
این عبارت یک پایگاه داده به نام Payroll میسازد. از آنجا که به هیچ آرگومانی اشاره نشده است، فایلهای داده پایگاه داده و لاگهای تراکنشها به صورت خودکار در موقعیت پیشفرض ایجاد میشوند.
CREATE DATABASE Payroll;
افزودن آرگومان
چندین آرگومان اختیاری وجود دارند که میتوانید به همراه دستور CREATE DATABASE ارسال کنید. برای این که فهرست کامل و موارد استفاده آرگومانهای سیستم پایگاه داده مورد استفاده خود را بدانید باید به مستندات آن مراجعه کنید؛ اما در ادامه مثالی از آرگومانهایی که در زمان ایجاد پایگاه داده با استفاده از SQL سرور مایکروسافت پشتیبانی میشود، ارائه شده است.
کد نمونه
در این مثال ما نام و موقعیت فایلهای داده پایگاه داده و لاگهای تراکنش آن را ذکر میکنیم. همچنین میتوانیم اندازه اولیه این فایلها (با استفاده از آرگومان SIZE)، بیشینه اندازهای که میتوانند رشد کنند (با آرگومان MAXSIZE) و میزان رشد هر فایل (با استفاده از FILEGROWTH) را نیز تعیین کنیم.
USE master GO CREATE DATABASE Payroll ON ( NAME = Payroll_dat, FILENAME = 'c:\program files\microsoft sql server\mssql\data\payrolldat.mdf', SIZE = 20MB, MAXSIZE = 70MB, FILEGROWTH = 5MB ) LOG ON ( NAME = 'Payroll_log', FILENAME = 'c:\program files\microsoft sql server\mssql\data\payroll.ldf', SIZE = 10MB, MAXSIZE = 40MB, FILEGROWTH = 5MB ); GO
توجه داشته باشید که در SQl سرور مایکروسافت کلیدواژه GO پایان یک دسته از دستورات را اعلام میکند. استفاده از این کلیدواژه در MySQL و دیگر سیستمهای پایگاه داده ضروری نیست. در ادامه دستور CREATE TABLE را بررسی میکنیم.
دستور CREATE TABLE
شما با استفاده از دستور CREATE TABLE میتوانید جدول در پایگاه داده ایجاد کنید.
ساختار SQL
CREATE TABLE table_name (column_name_1 datatype, column_name_2 datatype, ... );
مثال
CREATE TABLE Individual (IndividualId int, FirstName Varchar(255), LastName Varchar(255), UserName Char(10) );
نتیجه
خروجی دستور فوق یک جدول خالی خواهد بود. شما میتوانید با استفاده از عبارت INSERT دادههایی به این جدول اضافه کنید.
IndividualId | FirstName | LastName | UserName |
---|---|---|---|
انواع داده
احتمالاً متوجه شدید که ما به طور صریح، نوع دادهای که در جدول خود استفاده خواهیم کرد را در دستور CREATE TABLE تعیین کردیم. دلیل این امر آن است که وقتی یک ستون ایجاد میکنید باید به پایگاه داده بگویید که در این ستون چه نوع دادههایی را نگهداری خواهید کرد.
نوع دقیق دادهها و شیوه بیان دقیق آن در سیستمهای مختلف پایگاه داده متفاوت است؛ اما به طور کلی گونههای مختلف سیستمهای SQL از انواع رشتههای با اندازه ثابت (char)، رشتههای با طول متغیر (varchar)، مقادیر تاریخ/زمان (datetime)، اعداد و اعداد صحیح (bigint, int, smallint, tinyint, numeric) را پشتیبانی میکنند. انواع داده پایهای که در اسکیوال سرور وجود دارند را در ادامه ارائه کردهایم:
مقادیر عددی دقیق
bigint | numeric |
bit | smallint |
decimal | smallmoney |
int | tinyint |
money |
مقادیر عددی تقریبی
float | real |
تاریخ و زمان
date | datetimeoffset |
datetime2 | smalldatetime |
datetime | time |
رشتههای کاراکتری
char | varchar |
text |
رشتههای کاراکتری یونیکد
nchar | nvarchar |
ntext |
باینری
binary | varbinary |
image |
انواع داده دیگر
cursor | timestamp |
hierarchyid | uniqueidentifier |
sql_variant | xml |
table | Spatial Types |
در هر حال اگر در مورد این که کدام نوع داده از سوی سیستم داده شما پشتیبانی میشود و یا چگونه میتوانید در این سیستم آن را اعلام کنید، مطمئن نیستید، بهتر است به مستندات آن مراجعه کنید. در بخش بعدی با استفاده از دستور CREATE INDEX یک اندیس برای جدول خود ایجاد میکنیم.
دستور CREATE INDEX
از دستور CREATE INDEX برای ایجاد اندیس برای جدولهای SQL استفاده میشود. اندیسها بدین منظور ایجاد میشوند تا امکان جستجوی جدول تسهیل شود. اندیس پایگاه داده مانند فهرست یک کتاب است. با استفاده از بخش فهرست هر کتابی میتوانیم بدون این که مجبور باشیم کل کتاب را ورق بزنیم، بدانیم که اطلاعات مورد نیاز ما در کدام صفحه کتاب قرار دارند. اندیس پایگاه داده نیز به اپلیکیشنهایی که از آن استفاده میکنند، کمک میکند که دادهها را بدون نیاز به اسکن کل جدولها، پیدا کنند.
اندیسها ممکن است تأثیر اندک منفی بر روی عملکرد پایگاه داده داشته باشند، بنابراین باید اندیسها را تنها روی جدولها و ستونهایی ایجاد کنید که به طور مکرر مورد جستجو واقع میشوند.
برای نمونه اگر کاربران اپلیکیشن شما در اغلب موارد فیلد LastNAme را جستجو میکنند، در این صورت ایجاد اندیس برای این ستون بسیار مناسب خواهد بود. با استفاده از دستور CREATE INDEX میتوانید یک اندیس بسازید.
ساختار SQL
CREATE INDEX index_name ON table_name (column_name);
مثال
CREATE INDEX IndividualIndex ON Individual (LastName);
حال که با شیوه ایجاد جدول در پایگاه داده آشنا شدیم، در ادامه روش تغییر دادن آنها را نیز مرور میکنیم.
دستور Alter Table
از دستور Alter Table میتوان برای ایجاد تغییرات مختلف در یک جدول پایگاه داده استفاده کرد.
افزودن ستون
یکی از مواردی که ممکن است بخواهیم در جدول تغییر دهیم این است که یک ستون جدید به آن اضافه کنیم
ساختار SQL
ALTER TABLE table_name ADD column_name datatype;
عبارت نمونه SQL
در دستور نمونه زیر یک ستون به نام age به جدول Individual اضافه میکنیم.
ALTER TABLE Individual ADD age int;
تغییر نوع داده
یکی دیگر از تغییراتی که ممکن است لازم باشد در یک جدول ایجاد کنیم، تغییر دادن نوع داده یک ستون آن است.
ساختار SQL
ALTER TABLE table_name ALTER COLUMN column_name datatype;
عبارت نمونه SQL
در دستور نمونه زیر سعی میکنیم نوع داده ستون age را به صورت numeric تغییر دهیم.
ALTER TABLE Individual ALTER COLUMN age numeric;
حذف ستون
حذف (Drop) یک ستون یعنی آن ستون را از پایگاه داده پاک یا delete کنیم.
ساختار SQL
از دستور DROP COLUMN به همراه نام ستونی که میخواهیم حذف شود استفاده میکنیم.
ALTER TABLE table_name DROP COLUMN column_name;
دستور نمونه SQL
برای مثال در دستور زیر، ستون age را از ستونی که در بخش قبلی اضافه کردیم، حذف میکنیم.
ALTER TABLE Individual DROP COLUMN age;
بدین ترتیب به پایان این بخش از معرفی دستورهای SQL میرسیم.
اگر این نوشته مورد توجه شما واقع شده است، پیشنهاد میکنیم موارد زیر را نیز ملاحظه کنید:
- پایگاه داده و سیستم های مدیریت اطلاعات
- عبارت Join و انواع مختلف آن در SQL — راهنمای جامع
- آموزش کار با دستورات پایگاه داده در SQL Server
- عبارت های Insert ،Update و Delete در SQL
- ابزارها و راهکارهای مدیریت وبسایتها
- معرفی زبان SQL
- آموزش SQL Server Management Studio | کامل، رایگان و گام به گام
==