ساخت جدول

دستور زیر جدولی به اسم 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> UPDATE MGHAFFARI.PERSON SET AGE=90 WHERE AGE = 21;

2 rows updated SQL> COMMIT;
Commit complete.

SQL> SELECT * FROM MGHAFFARI.PERSON;

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

حذف اطلاعات

برای حذف رکورد به صورت زیر عمل می‌کنیم:

SQL> CONNECT MGHAFFARI
Enter password:
Connected.
SQL> SHOW USER;
USER is "MGHAFFARI"
SQL> DELETE FROM PERSON WHERE AGE=25;

1 row deleted.

SQL> COMMIT;
Commit complete.

SQL> SELECT * FROM PERSON
2 ;
ID NAME AGE
---------- -------------------- ----------
1 MAHDI 90
1 EHSAN 22
1 MAHDI 90
2 EHSAN 22

SQL>

دستور WHERE

WHERE رو می‌تونید تو دستورات DELETE, UPDATE, SELECT استفاده کنید:

SQL> SELECT * FROM PERSON WHERE AGE=90;
ID NAME AGE
---------- -------------------- ----------
1 MAHDI 90
1 MAHDI 90

OR

SQL> SELECT * FROM PERSON WHERE AGE=90 OR NAME='EHSAN';
ID NAME AGE
---------- -------------------- ----------
1 MAHDI 90
1 EHSAN 22
1 MAHDI 90
2 EHSAN 22

نکته: ورود رشته همیشه در داخل تک کوتیشن است.

AND

SQL> SELECT * FROM PERSON WHERE AGE=90 AND NAME='EHSAN';

no rows selected

کوچکتر، بزرگتر

SQL> SELECT * FROM PERSON WHERE AGE>90;

no rows selected
SQL> SELECT * FROM PERSON WHERE AGE<90;
ID NAME AGE
---------- -------------------- ----------
1 EHSAN 22
2 EHSAN 22

کوچکتر مساوی، بزرگتر مساوی

SQL> SELECT * FROM PERSON WHERE AGE>=90;

ID NAME AGE
---------- -------------------- ----------
1 MAHDI 90
1 MAHDI 90

SQL> SELECT * FROM PERSON WHERE AGE<=90;
ID NAME AGE
---------- -------------------- ----------
1 MAHDI 90
1 EHSAN 22
1 MAHDI 90
2 EHSAN 22

مخالف

۲ نوع علامت گذاری برای مخالف داریم:

SYNTAX VISUALBASIC

SQL> SELECT * FROM PERSON WHERE AGE<>90;
ID NAME AGE
---------- -------------------- ----------
1 EHSAN 22
2 EHSAN 22

SYNTAX C BASE FAMILY

SQL> SELECT * FROM PERSON WHERE AGE!=90;
ID NAME AGE
---------- -------------------- ----------
1 EHSAN 22
2 EHSAN 22

نکته: این ۲ تا هیچ فرقی باهم ندارند.

LIKE

در LIKE ما پترنی را به عنوان الگو در SELECT مشخص می‌کنیم:

SQL> SELECT * FROM PERSON WHERE NAME LIKE 'M____';
ID NAME AGE
---------- -------------------- ----------
1 MAHDI 90
1 MAHDI 90

 دستور بالا دنبال کسانی می‌گرده که اول اسمشون با M شروع میشه و ۵ حرفی هستند.

SQL> SELECT * FROM PERSON WHERE NAME LIKE 'M___I';
ID NAME AGE
---------- -------------------- ----------
1 MAHDI 90
1 MAHDI 90

همجنین دستور بالا دنبال افرادی می‌گرده  که اسمشون ۵ حرفیه و اول اسمشون M و آخر I هستش.

SQL> SELECT * FROM PERSON WHERE NAME LIKE 'M%I';
ID NAME AGE
---------- -------------------- ----------
1 MAHDI 90
1 MAHDI 90

نکته: _ (آندرلاین) یعنی به ازای هر _ (آندرلاین) میتونه هر کاراکتری باشه، % (درصد) به معنی هر چندتا کاراکتر است.

دستور زیر اولین حرفش M، دومین حرفش مجهول سومین حرفش H چهارمین حرفش مجهول و از اون به بعد میتونه هر چندتا کاراکتر که میتونه باشه:

SQL> SELECT * FROM PERSON WHERE NAME LIKE 'M_H_I%';
ID NAME AGE
---------- -------------------- ----------
1 MAHDI 90
1 MAHDI 90