ساخت جدول
دستور زیر جدولی به اسم 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