دستورات تعریف در بانک اطلاعاتی
دستورات تعریف بانک اطلاعاتی شامل: Create table ،Alter table ،Drop table ،Create index ،Drop index است. در این نوشته به بررسی دستورات Create table ،Alter table ،Drop table ،Create index ،Drop index در پایگاه دادهها میپردازیم.
پیشنهاد نویسنده: در ارتباط با عملگرها در پایگاه داده بخوانید.
دستورات تعریف در بانک اطلاعاتی
دستور Create Table در پایگاه داده
با این دستور میتوان یک جدول مبنا ساخت. جدول مبنا جدولی است مستقل و نامدار.
Create table s
(s# char(5) NOTNULL,
sname char (20) NOTNULL
status smallint,
city char(15) NOTNULL,
primary key (s#))
دستور Alter Table در پایگاه داده
با این دستور می توان تغییراتی در یک جدول ایجاد کرد.
مثال 1:
ALTER TABLE S ADD DISCOUNT SMALLINT
مثال 2:
Alter table SP Modify(S# char(10));
پیشنهاد نویسنده: نرمال سازی در بانک اطلاعاتی را بخوانید.
دستور Drop Table در پایگاه داده
برای از بین بردن یک جدول استفاده میشود.
Drop table S
نکته: دستور Drop به صورت فیزیکی جدول مذکور را با تمام اطلاعات موجود در آن حذف میکند. اگر بخواهیم خود جدول باقی مانده و فقط دادههای درون آن از بین برود از دستور Delete استفاده میکنیم.
- Restric
- Cascade
دستور Create Index در پایگاه داده
برای ایجاد اندیس در دستههای جدول استفاده میشود.
Create Index SN on S(sname, city) or Create Index SN on S(sname Desc)
دستور Drop Index در بانک اطلاعاتی
با این دستور اندیس ایجاد شده حذف میشود.
Drop Index Sn
دستور SELECT در بانک اطلاعاتی
این دستور وظیفهی انتخاب رکوردها و ستونها را از جداول بانک اطلاعاتی شما بر عهده دارد.
نام فیلد ها Select نام جدول from شرط جستجو where
مثال:
Select S.S# , S.status From s Where city =‘C2’
کلمات کلیدی Between و In در دستور Select
به کمک between میتوان وجود یک مقدار در یک محدوده و به کمک in میتوان وجود یک مقدار را در مجموعهای از مقادیر بررسی کرد.
Select P# , color , weight From P Where weight between 16 , 19
مثال برای In
Select P# , weight From P Where weight in (12,16,17)
کلمه کلیدی Like در دستور Select
از عملگر Like در قسمت شرطی برای الگوی خاصی از جستجو مورد استفاده قرار میگیرد. عملگر درصد (%) به جای مجموعهای از کاراکترها و عملگر زیر خط (_) به جای یک کاراکتر میآید.
Select * From P Where pname like ‘C%’ or ------> not like
مثال برای Like با عملگر (_):
Select pname From p Where pname like ‘C__’
پرس و جوهای مبتنی بر پیوند جدولها
پیوند نوعی پرس و جو است که طی آن عمل بازیابی از بیش از یک جدول انجام میپذیرد.
Select S.S# , S.city , P.P# , P.city From S,P Where S.city=P.city
Select متداخل
میتوان در درون یک دستور select، دستور select دیگری را نیز تعریف کرد.
Select sname from s
Where s# in (select S# from SP
where p#=‘P2’)
کلمه Group By و Having در دستور select
Select P# from SP Group By P# Having count (*)>1
کلمه Exists در دستور Select پایگاه داده
فرم کلی آن به صورت exists (select * From …) است. چنین عبارتی به مقدار درست انجام میشود، اگر مجموعه حاصل از ارزیابی پرس و جوی داخلی تهی نشود.
Select sname from s Where exists (select * from SP where S#=S.S# AND P#=‘P2’)
ALL و ANY و در دستور select
عملگر ALL برای مقایسه «همه مقادیر» و عملگر ANY برای «هر یک از مقادیر» استفاده میشود.
مثال برای ANY
Select pname from P Where weight =ANY (11,13,15,17,19)
مثال برای ALL
Select Sname from S Where status > ALL (select status from S where city =‘C2’)
دستور Insert در پایگاه داده
برای درج رکورد از دستور Insert استفاده میشود.
Insert Into P(P#,City,weight) value (‘P7’,’C1’,’24’)
برای یادگیری مباحث بیشتر پایگاه داده کتاب پایگاه دادهی پیشرفته را بخوانید. اگر سوالی در ارتباط با مسائل مربوط به پایگاه داده دارید در بخش نظرات این نوشته برای ما بنویسید.



















در کدهای Select، استفاده از Like چه تفاوتی با In داره؟
دستور LIKE برای جستجو بر اساس الگوهای متنی (با استفاده از کاراکترهای جایگزین مانند % و _) استفاده میشود، در حالی که IN برای بررسی وجود یک مقدار در یک لیست مشخص از مقادیر به کار میرود.
اگه یک جدول چند Primary Key داشته باشه چه مشکلی پیش میاد؟
اگر یک جدول چند کلید اصلی (Primary Key) داشته باشد، این موضوع از نظر پایگاه دادهای امکانپذیر نیست و هر جدول فقط میتواند یک کلید اصلی داشته باشد. اما میتوان از کلیدهای ترکیبی (Composite Key) برای ایجاد یک کلید اصلی منحصر به فرد از ترکیب چند ستون استفاده کرد.
برای بهینهسازی سرعت جستجو، بهتره چندتا ایندکس تعریف کنیم یا فقط یکی کافیه؟
برای بهینه سازی سرعت جستجو، تعداد ایندکسها به ساختار داده و نوع کوئریهای شما بستگی دارد. معمولاً تعریف ایندکسهای مناسب بر روی ستونهایی که در شرطهای WHERE یا JOIN استفاده میشوند، میتواند تاثیر زیادی داشته باشد.
وقتی از Alter Table استفاده میکنیم، تغییرات روی دادههای قبلی هم تأثیر میذاره؟
بله، دستور ALTER TABLE تغییرات را روی ساختار جدول اعمال میکند و این تغییرات معمولاً بر روی دادههای موجود نیز تأثیر میگذارند.
چه زمانی بهتره از Create Index استفاده کنیم و چه زمانی نه؟
استفاده از CREATE INDEX زمانی مفید است که نیاز به بهبود سرعت جستجو در ستونهایی دارید که به طور مکرر در شرطهای WHERE یا JOIN استفاده میشوند. اما باید توجه داشت که ایجاد ایندکسها میتواند سرعت عملیات درج و بهروزرسانی را کمی کاهش دهد.
تفاوت بین استفاده از IN و EXISTS در کوئریها چیست؟
با سلام، IN معمولاً برای مقایسه با یک لیست از مقادیر استفاده میشود، در حالی که EXISTS برای بررسی وجود رکوردهایی که شرط خاصی را برآورده میکنند، به کار میرود و میتواند در برخی موارد، بسته به ساختار دادهها، عملکرد بهتری داشته باشد.
دستور Select با شرط Like در دیتابیسهای بزرگ چهقدر کارایی دارد؟
با سلام. دستور Select با شرط Like در دیتابیسهای بزرگ میتواند کند باشد، به خصوص اگر از علامتهای عام (*) در ابتدای الگو استفاده شود. برای بهبود کارایی، بهتر است از ایندکسگذاری مناسب و محدود کردن جستجو استفاده کنید.
حذف Index چه تأثیری روی عملکرد پرسوجوها میگذارد؟
با حذف ایندکس، سرعت پرس و جوهایی که از این ایندکس استفاده میکردند، کاهش مییابد. در واقع، حذف ایندکس میتواند باعث شود که پایگاه داده برای یافتن دادهها، کل جدول را اسکن کند.
در دستور Alter Table چه محدودیتهایی برای تغییر نوع دادهها وجود دارد؟
سلام، در دستور Alter Table، محدودیتهایی برای تغییر نوع دادهها وجود دارد که به نوع پایگاه داده و تغییرات مورد نظر بستگی دارد. به طور کلی، تغییر نوع دادهها ممکن است منجر به از دست رفتن دادهها یا نیاز به تبدیل دادهها شود.
آیا امکان بازیابی جدولی که با Drop حذف شده وجود دارد؟
با سلام. خیر، به طور معمول بازیابی جدولی که با دستور Drop حذف شده، امکانپذیر نیست، مگر اینکه از قبل پشتیبانگیری (backup) انجام داده باشید.