۱۳۰ مطلب با موضوع «Database :: Oracle DBA» ثبت شده است

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

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

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

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

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

توابع گروهی - Sum, Avg, Max, Min

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

SQL> SELECT * FROM PERSON;

NAME FAMILY AGE ID-PERSON
-------- ----------- ------------- ----------
MOHAMMAD GHAFFARI 23 1
MAHDI GHAFFARI 21 2
MOHSEN GHAFFARI 19 3
FARZAD KARKHANI 26 4
EHSAN JALALI 23 5

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

توابع پردازش رشته - Soundex

نوع: فانکشن چند RESULT ای (به ازای هر رکورد یک مقداری بر می‌گرداند)

دسته: فانکشن‌های پردازش رشته

این فانکشن تلفظ یک رشته را بر می‌گرداند. به عبارت دیگر، اگر به دنبال کلمه‌ای می‌گردید، که تلفظ درست آن را نمی‌دانید، می‌توانید از این تابع استفاده کنید.

مثال:

CREATE TABLE T2(NAME VARCHAR2(20));
INSERT INTO T2 VALUES ('MAHDI');
INSERT INTO T2 VALUES ('EHSAN');
INSERT INTO T2 VALUES ('FARZAD');
COMMIT;

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

تغییر داده‌ها با استفاده از UPDATE

دستور UPDATE این امکان را به شما می‌دهد تا بتوانید، داده‌های مورد نظرتان را تغییر دهید. برای مثال از جدول PERSON استفاده می‌کنیم.

SELECT *
FROM PERSON;
NAME       FAMILY                AGE  ID_PERSON
---------- ------------ ------------ -----------
MOHAMMAD GHAFFARI 23 1
MAHDI GHAFFARI 21 2
MOHSEN GHAFFARI 19 3
FARZAD KARKHANI 25 4
EHSAN JALALI 23 5

حال با استفاده از دستور UPDATE، افرادی را که نام آن‌ها EHSAN می‌باشد را تغییر، و ALI را جایگزین آن می‌نماییم.

UPDATE PERSON
SET NAME = 'ALI';
WHERE NAME = 'EHSAN';
1 row updated.

جدول PERSON را مشاهده کنید.

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

عملگر NOT NULL

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

نکته: با قرار دادن مقدار NULL در فیلدی آن فیلد بدون هیچ مقدار است و هیچ به این ترتیب آن فیلد هیچ سایزی را در برنمی‌گیرد.

مثال۱:

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

مثال ۲:

CREATE TABLE MYPER(ID NUMBER NOT NULL);

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

دستور 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 حظور نداشته باشد.

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

سطوح دسترسی

می‌خواهیم در مورد مفاهیم oracle users, security, administration صحبت کنیم.

اگر محتوایی در داخل یوزر است (schema باشه یوزر) بدون cascade یوزر پاک نمی‌شه و حتماً باید با عمل cascade یوزر پاک بشه.

drop user mghaffari cascade;

اوراکل روی بحث محدودیتهای دسترسی در دسته دوم قرار دارد.

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

قاعده 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 داشته باشد و با ایجاد کلید خارجی ما در حقیقت به صورت پیش‌فرض به کلید اصلی آن جدول لینک می‌شویم اگر می‌خواهید به فیلد خاصی از جدول مرجع فیلد را لینک کنید نام فیلد مربوطه را در داخل پرانتز می‌نویسیم.

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

دلیل استفاده نکردن از 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 رد کنیم.

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