قاعده کلید یکتا (UNIQUE)

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

مثال۱:

CREATE TABLE TEST
(ID NUMBER UNIQUE,
TELL NUMBER DEFAULT 22222,
ADDRESS VARCHAR2(10));

ادامه مطلب...
۲۹ فروردين ۹۴ ، ۰۱:۳۸ ۰ نظر
مهدی غفاری

قاعده CHECK

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

مثال:

CREATE TABLE T3(ID NUMBER, NAME VARCHAR2(20), PHONE VARCHAR2(20), CONSTRAINT HOOHOO CHECK(PHONE LIKE '0__________'));

در این جدول دیگر نمی‌توان در فیلد PHONE هر داده‌ای را وارد کرد و حتماً باید با فرمت صحیح داده را وارد کرد تا درج اطلاعات انجام بشه:

INSERT INTO T3 VALUES(1, 'MAHDI', '091212312');
*
ERROR at line 1:
ORA-02290: CHECK CONSTRAINT (MGHAFFARI.HOOHOO) violated'
INSERT INTO T3 VALUES(1, 'MAHDI', '09121231234');

نکته: قاعده CHECK بار پردازشی بسیار زیادی بر روی دیتابیس اعمال می‌کند.

ادامه مطلب...
۲۹ فروردين ۹۴ ، ۰۱:۱۵ ۰ نظر
مهدی غفاری

قاعده کلید خارجی

کلید خارجی در حقیقت ممانعت می‌کنه از ایجاد اشکال منطقی (به عنوان مثال: ممانعت می‌کنه از اینکه ما بتوانیم id ای در سطح جدول person وارد کنیم که refrence آن در جدول info نباشه):

در حالتی که کلید خارجی را تعریف می‌کنیم تعریف نوع DATATYPE فیلد وابسته نیازی نیست:

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

ادامه مطلب...
۲۸ فروردين ۹۴ ، ۲۰:۲۹ ۰ نظر
مهدی غفاری

نحوه انتخاب فریم‌ورک در جاوا

وقتی شما تو موقعیت انتخاب فریم‌ورک قرار می‌گیرین به غیر از مسائل نوع پروژه، قیمت، تعداد نفرات، سخت‌افزار سرور و اجبار در Application Server باید به نوع DataBase نیز توجه کنید که در این مورد شما به عنوان یک برنامه‌نویس حق نظر دادن در مورد معماری و نوع DB رو ندارید و در مورد انتخاب فریم‌ورک با توجه به اجبارهای موارد ذکر شده در بالا صحبت می‌کنم:

ادامه مطلب...
۲۶ فروردين ۹۴ ، ۱۶:۰۷ ۰ نظر
مهدی غفاری

دلیل استفاده نکردن از JOIN در اوراکل

یادآوری

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

مثال:

CRAETE TABLE T2(ID NUMBER PRIMARY KEY, NAME VARCHAR2(20));

به چند چیز باید توجه کنیم(چون ID به عنوان PRIMARY KEY) تعریف شده):

  • ID نمی‌تونه NULL باشه
  • ID نمی‌تونه تکراری باشه
INSERT INTO T2(ID, NAME) VALUES(1, 'MAHDI');

همونطور که در زیر می‌بینید با یکسان قرار دادن ID پایگاه داده خطایی به ما برمی‌گرداند:

INSERT INTO T2(ID, NAME) VALUES(1, 'EHSAN');
*
ERROR at line 1:
ORA-00001: unique constraint (MGHAFFARI.SYS_C0010911) violated

حالا ID احسان رو می‌ذاریم ۲ و INSERT رو انجام می‌دیم:

INSERT INTO T2(ID, NAME) VALUES(1, 'EHSAN');
*
ERROR at line 1:
ORA-00001: unique constraint (MGHAFFARI.SYS_C0010911) violated

وحالا می‌خوایم ID رو NULL رد کنیم:

INSERT INTO T2(NAME) VALUES('EHSAN');
*
ERROR at line 1:
ORA-01400: cannot insert NULL into (MGHAFFARI.SYS_C0010911) violated

همونطور که می‌بینید نمی‌تونیم مقدار NULL رد کنیم.

ادامه مطلب...
۲۲ فروردين ۹۴ ، ۱۶:۲۲ ۰ نظر
مهدی غفاری

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

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

  • عدم هیچ مقدار
  • کلید یکتا
  • کلید اصلی (کلید داخلی)
  • ارجاعی (کلید خارجی)
  • ارزیابی

قاعده عدم هیچ مقدار (NOT NULL)

در برخی از مواقع، فیلد یا فیلد‌هایی که تعریف می‌کنید نباید مقدار هیچ را بپذیرند. برای محدود کردن این قبیل فیلد‌ها، از گزینه‌ای به نام NOT NULL استفاده می‌نماییم. اگر در ساخت فیلدها، از قاعده‌ی NOT NULL استفاده نکنید، پایگاه داده‌ها به طور پیش فرض مقدار NULL را برای آن فیلد، در نظر می‌گیرد. NULL به معنای آن است که، فیلد می‌تواند مقداری را در بر نگیرد. NOT NULL عکس NULL عمل می‌کند و بدان معنی است که هیچ‌گاه نمی‌توان آن فیلد را خالی رد کرد، دستور زیر را مشاهده نمایید:

CREATE TABLE TEST(ID NUMBER NOT NULL, TELL NUMBER DEFAULT 22222, ADDRESS VARCHAR2(10));

قاعده کلید یکتا (UNIQUE)

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

CREATE TABLE TEST(ID NUMBER UNIQUE, TELL NUMBER DEFAULT 22222, ADDRESS VARCHAR2(10));

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

CRAETE TABLE TEST(ID NUMBER CONSTRAINT UQ_TEST_ID UNIQUE, TELL NUMBER DEFAULT 22222, ADDRESS VARCHAR2(10));

ادامه مطلب...
۲۲ فروردين ۹۴ ، ۱۴:۱۶ ۰ نظر
مهدی غفاری

نام‌گذاری موجودیت‌های بانک‌اطلاعاتی

جهت نام‌گذاری جداول، دید‌ها، فیلد‌ها، مخزن‌ها و ... باید به موارد زیر دقت فرمائید:

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

  • در نام‌گذاری دقت فرمائید تا نامی واضح برای موجودیت (جداول، دید‌ها، فیلد‌ها، مخزن‌ها و ...) انتخاب کنید.
  • از وارد‌نمودن فاصله در نام موجودیت‌ها جداً خودداری کنید.
  • به جای فاصله از (_) استفاده کنید.
  • برای نامگذاری از حروف الفبا و اعداد استفاده کنید.
  • هیچ‌گاه نام مورد نظر را با عدد شروع نکنید.
  • زمانی که مشغول نامگذاری هستید، CAPS LOCK خود را روشن نمایید.
  • حداکثر طول نام 30 کاراکتر باشد.
  • از کلمات رزرو شده استفاده نکنید.

نکته: در مورد این کلمات در فصل‌های آینده بحث خواهیم کرد. برای روشن‌تر شدن موضوع مثال‌هایی در همین قسمت ارائه می‌کنیم.

چند نمونه از کلمات رزرو شده عبارتند از:

  • SELECT
  • TABLE
  • USER
  • VIEW
  • UPDATE
  • INSERT
  • و..

جهت نام‌گذاری کلید‌داخلی و خارجی از فرمول زیر استفاده کنید:

نام جدول ID_

جهت روشن‌تر شدن موضوع فرض می‌کنیم دو جدول به نام‌های T1 و T2 وجود‌ دارد. جدول T1 دارای یک کلید خارجی از جدول T2 است. در این صورت می‌بایست نام‌گذاری‌ها به شکل زیر باشند.

  • کلید داخلی جدول T1: ID_T1
  • کلید داخلی جدول T2: ID_T2
  • کلید خارجی جدول T1: ID_T2
۲۲ فروردين ۹۴ ، ۱۲:۳۰ ۰ نظر
مهدی غفاری

انواع DataTypeها در اوراکل

بانک اطلاعاتی برای نگهداری داده‌های مختلف نوع‌های مختلفی از فیلد را به شما ارائه می‌کند:

مثال:

CREATE TABLE T1(ID NUMBER(10,10), NAME VARCHAR2(20));
  • نوع داده‌ای NUMBER

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

ID ما که از جنس NUMBER است، میتونه ۲تا پارامتر بگیره اولین پارامتر یعنی ۱۰ رقم صحیح و دومین پارامتر یعنی ۱۰ رقم اعشاری

نکته: اوراکل حداکثر توانایی نگه‌داری ۳۲ رقم رو داره

  • نوع داده‌ای VARCHAR2

جهت نگهداری اطلاعات رشته‌ای با طول متغییر می‌توانید از نوع VARCHAR2 استفاده کنید.

SIZE در این نوع کاراکتر به صورت رقم در جلوی آن مشخص می‌شود.

  • نوع داده‌ای NVARCHAR2

همانند VARCHAR2 می‌باشد. و جهت نگهداری متون چینی، ژاپنی، پارسی، عربی و... می‌توانید از این نوع داده استفاده نمایید.

  • نوع داده‌ای CHAR

جهت نگهداری اطلاعات رشته‌ای با طول ثابت می‌توانید از نوع CHAR استفاده کنید.

CHAR هم  SIZE می‌گیره

  • نوع داده‌ای NCHAR

همانند CHAR می‌باشد. و جهت نگهداری متون چینی، ژاپنی، پارسی، عربی و ... می‌توانید از این نوع داده استفاده نمایید.

فرق VARCHAR و CHAR

CHAR طول ثابت داره یعنی اگه ما داده‌ای در آن ذخیره کنیم که مثلا ۴ حرف باشه در حالتی که سایز وارده به CHAR رو ۲۰ کاراکتر مشخص کرده‌ایم، ۱۶ کاراکتر برای ما خالی رد می‌شه و حجمی اضافه‌تر از داده ما را ذخیره می‌کند.

اما در VARCHAR و NVARCHAR سایز ما اگر کمتر از مقدار وراد شده باشد به همون میزان کاراکتر وارده سایز جمع می‌شود.

مثال

معمولاً برای داده جنسیت ما از CHAR استفاده می‌کنیم، به عنوان مثال Female می‌شه 0 و Male می‌شه 1 و 2 هم وضعیت مجهول جنسیت رو برای ما مشخص می‌کنه، در این مورد به جای استفاده از CHAR می‌توان از NUMBER هم استفاده کرد.

نکته: برای زمان‌هایی که می‌خواهیم مقادیر TRUE, FALSE در دیتابیس وارد کنیم استفاده از CHAR توصیه می‌شود.

  • نوع داده‌ای DATE

جهت نگهداری اطلاعات تاریخی می‌توانید از نوع DATE استفاده کنید.

نکته: اوراکل تاریخ شمسی رو پشتیبانی می‌کنه

  • نوع داده‌ای CLOOB

جهت نگهداری اطلاعات رشته‌ای طولانی می‌توانید از نوع CLOB استفاده کنید.

  • نوع داده‌ای BLOOB

همانند CLOB بوده و جهت نگهداری متون چینی، ژاپنی، پارسی، عربی، ... می‌توانیدازاین نوع داده استفاده نمایید.

 

۲۲ فروردين ۹۴ ، ۰۹:۲۳ ۰ نظر
مهدی غفاری

زبان SQL - قسمت دوم

ساخت جدول

دستور زیر جدولی به اسم PERSON با فیلدهای ID, NAME, AGE با نوع‌های مشخص ایجاد می‌کند(ID, AGE اطلاعات عددی نگه‌می‌دارن و NAME اطلاعات رشته‌ای، همچنین این جدول در یوزر MGHAFFARI ساخته شده است):

SQL> CREATE TABLE PERSON(ID NUMBER, NAME VARCHAR2(20), AGE NUMBER);

Table created.
SQL> show user;
USER is "MGHAFFARI"

ورود اطلاعات

برای ورود اطلاعات از دستور INSERT به شکل زیر استفاده می‌کنیم:

SQL> INSERT INTO PERSON(ID, NAME, AGE) VALUES(1, 'MAHDI', 21);

1 row created.

SQL> INSERT INTO PERSON(ID, NAME, AGE) VALUES(2, 'EHSAN', 22);

1 row created.

SQL> INSERT INTO PERSON(ID, NAME, AGE) VALUES(3, 'FARZAD', 25);

1 row created.

برای نمایش اطلاعات از دستور SELECT استفاده می‌کنیم:

SQL> SELECT * FROM PERSON;

ID NAME AGE
---------- -------------------- ----------
1 MAHDI 21
1 EHSAN 22
1 MAHDI 21
2 EHSAN 22
3 FARZAD 25

نکته: حتما بعد از INSERT اطلاعات عمل COMMIT را انجام دهید وگرنه TRANSACTION بعد از بستن محیط یا هر اتفاقی ROLLBACK میشه.

نکته: برای دستورات CREATE نیازی به COMMIT نیست و فقط برای دستوراتی که مستقیماً با DATA طرف هستند و درج یا آپدیتی انجام می‌دهند باید عمل COMMIT صورت گیرد.

نکته: MGHAFFARI تا قبل از ایجاد جدول و ورود داده فقط یوزر بود ولی بعد از ایجاد جدول و ورود داده SCHEMA شد.

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

SELECT * FROM SCHEMA_NAME.OBJECT_NAME;

به عنوان مثال برای SELECT PERSON از یوزر SYSTEM به صورت زیر عمل می‌کنیم:

SQL> connect system;
Enter password:
Connected.
SQL> SELECT * FROM MGHAFFARI.PERSON; ID NAME AGE
---------- -------------------- ----------
1 MAHDI 21
1 EHSAN 22
1 MAHDI 21
2 EHSAN 22
3 FARZAD 25

ادامه مطلب...
۲۱ فروردين ۹۴ ، ۱۱:۲۱ ۰ نظر
مهدی غفاری

زبان SQL - قسمت اول

ساخت کاربر

کاربران موجودیت‌هایی هستند، که اجازه ورود به پایگاه داده‌ای اوراکل را دارند. نحوه‌ی نگارش دستور ساخت کاربر به اشکال ذیل می‌باشد.

CREATE USER user_name
IDENTIFIED BY my_pass;

در قسمت CREATE USER، نام کاربر و IDENTIFIED BY، رمز ورود کاربر وارد می‌گردد.
با استفاده از دستور CREATE USER یک کاربر به نام ریحانه، با رمز ورود ABC بسازید.

SQL> CREATE USER MAHDI
2 IDENTIFIED BY ABCD;

User created.

SQL>

با استفاده از دستور SHOW USER  نام کاربر متصل به بانک‌اطلاعاتی را نمایش داده می‌شود.

SQL> SHOW USER;
USER is "SYS"
SQL>

در حال حاضر کاربر SYSTEM به بانک اطلاعاتی متصل است.

حذف کاربر

برای حذف یک کاربر از دستور DROP USER استفاده می‌شود. نگارش این دستور به شکل زیر است.

DROP USER user_name;

در صورت استفاده از CASCADE در دستور DROP USER، کاربر با تمام ملحقات مربوطه(تمامی جداول، دیدها و ...) حذف می‌گردد.

SQL> DROP USER MAHDI CASCADE;

User dropped.

SQL>

ادامه مطلب...
۱۹ فروردين ۹۴ ، ۱۵:۳۷ ۳ نظر
مهدی غفاری