توابع گروهی - 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 را مشاهده کنید.

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

توابع زبان SQL در اوراکل

تمام دیتابیس‌ها یسری FUNCTIONها دارند که ما می‌توانیم از این فانکشن‌ها استفاده کنیم.

فانکشن‌ها قطعه کدهایی هستند، که از پیش تعریف شده‌اند تا شما را در امور مختلف یاری نمایند. لازم به ذکر است شما می‌توانید در زبانی دیگر، به نام PL-SQL توابعی را به دلخواه، طراحی و در دستورات SQL از آن استفاده نمایید. فانکشن‌ها، موارد زیر را شامل می‌شوند:

  • فانکشن‌های پردازش‌رشته،
  • فانکشن‌های ریاضی،
  • فانکشن‌های تاریخ و زمان،
  • فانکشن‌های جمعی،
  • و سایر فانکشن‌ها

همچنین این فانکشن‌ها ۲ گروه عمده رو تشکیل می‌دهند:

  1. فانکشن‌های یک RESULTای
    1. یعنی وقتی فانکشن رو روی یک جدول صدا می‌کنیم فقط یک RESULT برمی‌گردونه
  2. فانکشن‌های چند RESULTای
    1. یعنی وقتی فانکشن رو روی یک جدول صدا می‌کنیم به ازای هر رکورد یک RESULT جدید برمی‌گردونه

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

اوراکل یکی از پر تعدادترین فانکشن‌ها را در میان بانک‌های‌اطلاعاتی دارد. بعد از اوراکل MYSQL و بعد از اون DB2 و بعد از DB2 پرتعداترین فانکشن را MS SQL SERVER دارد.

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

عملگر 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;

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

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

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

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