۶ مطلب با کلمه‌ی کلیدی «CREATE TABLE» ثبت شده است

عملگر IS Null و IS NOT NULL

توجه داشته باشید بسیاری از کاربران مقدار NULL را با فضای خالی Space)، 0) و یا کلمه NULL (به صورت رشته ای) اشتباه می‌گیرند، در واقع در بانک اطلاعاتی به مقدار فیلدی NULL گفته می‌شود که در هنگام وارد کردن رکورد‌ها مقدار آن فیلد توسط کاربر خالی رها شود. برای مثال از جدول PERSON استفاده می‌کنیم.

نکته: برای پیدا کردن فیلدهای NULL در دیتابیس باید به طور مشخص از دستور IS NULL استفاده می‌شود.

CREATE TABLE HOLO(ID NUMBER, NAME VARCHAR2(20));
INSERT INTO HOLO VALUES(1, NULL);
INSERT INTO HOLO VALUES(2, 'MAHDI');
SELECT * FROM HOLO WHERE NAME IS NULL;
ID        NAME
--------- ---------------
1

IS NOT NULL

عملگر NOT، می‌تواند با IS NULL همراه گردد. دستور IS NOT NULL بر عکس دستور IS NULL عمل می‌کند، و داده‌هایی را به شما نشان می‌دهد که مقدار آن‌ها NULL نباشد. به مثال زیر توجه کنید.

SELECT * FROM HOLO WHERE NAME IS NOT NULL;
ID             NAME
-------------- --------
2 MAHDI

نکته: کوئری‌هایی مانند زیر در دیتابیس اوراکل اشتباه‌اند:

SELECT * FROM HOLO WHERER NAME = NULL;
۳۰ فروردين ۹۴ ، ۱۴:۰۰ ۰ نظر
مهدی غفاری

رفع مشکل استفاده از توابع گروهی

در مورد توابعی مانند تابع soundex چون به ازای هر رکورد یک result برمی‌گردونند پس نوشتن کوئری‌هایی مانند زیر مشکلی ندارد:

SELECT SOUNDEX(NAME), NAME FROM T2;
SOUN NAME
----- ------------
A256 MOHAMMAD
J130 MAHDI
S500 MOHSEN
C540 FARZAD
A400 EHSAN

ولی در مورد تابع‌های تک RESULT ای مثل SUM مشکلاتی ایجاد می‌شود.

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

دستور DEFAULT

دستور CREATE را در زیر مشاهده کنید. در این دستور مقدار 222 پیش فرض فیلد ID می‌باشد. پیش فرض به معنای آن است که هرگاه مقداری برای فیلد ID تعین نشد مقدار پیش فرض تعریف شده، در فیلد قرار می‌گیرد.

CREATE TABLE D1(ID NUMBER DEFAULT 222);

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

ALTER TABLE D1 ADD NAME VARCHAR2(20);
INSERT INTO D1(NAME) VALUES('MAHDI');
SELECT * FROM D1;
ID NAME
--------- -------------
222 MAHDI
INSERT INTO D1(ID, NAME) VALUES(NULL, 'MAHDI');
SELECT * FROM D1;
ID NAME
--------- -------------
222 MAHDI
MAHDI

نکته: توجه کنید حتی اگه ID رو NULL رد کنیم (به هر شکل) مقدار DEFAULT اعمال نمی‌شه و فقط زمانی مقدار DEFAULT اعمال میشه که در دستور INSERT فیلد ما ID حظور نداشته باشد.

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

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

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

مثال۱:

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

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

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

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

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

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

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

زبان 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

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