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

این تابع کاراکتر معادل عدد را، برمی‌گرداند. برای فهمیدن اینکه هر عدد چه کاراکتری را برمی‌گرداند به جدول کدهای ASCII مراجعه کنید(یا در یک ادیتور متن کلید ALT را نگه‌داشته و عدد مورنظر را تایپ کنید)

SELELCT * FROM HOLO;
ID NAME
------- ----------
1
2 MAHDI

در حقیقت SELECT‌ زیر به CHR میگه که ID ها کد ASCII هستند و CHR کاراکتر معادل اعداد رو برمی‌گردونه:

SELECT CHR(ID) FROM HOLO;

CHR(
----

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

عملگر 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 مشکلاتی ایجاد می‌شود.

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

توابع گروهی - 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;

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

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