برای نمایش لیست تمام کاربران میتوانید از کوئری زیر استفاده کنید:
select * from all_users;
و برای لیست کردن تمام یوزرهای بانکاطلاعاتی از جدول dba_users کوئری بگیرید:
select * from dba_users;
برای نمایش لیست تمام کاربران میتوانید از کوئری زیر استفاده کنید:
select * from all_users;
و برای لیست کردن تمام یوزرهای بانکاطلاعاتی از جدول dba_users کوئری بگیرید:
select * from dba_users;
خیلی خوشحال میشدم تو این نوشتهها یه جاوای درست و حسابی هم میگفتم که باهم وارد jdbc بشیم و برخورد jdbc با type date رو بررسی کنیم. چون همیشه تو برنامهنویسی جاوا برنامهنویسها تاریخ و زمان رو یا string میگیرن یا long، همیشه هم تو سطح اوراکل همه چیز رو اونجوری که دوست دارن میگیرن (البته اگه دیتابیس دست خودشون باشه)، به هر حال یه نقطهای باید باشه که این ۲ تا رو به طور صحیح به هم وصل کنه.
جدول زیر در این پست مفروض است:
END_DATE | START_DATE |
02-May-90 | 02-May-89 |
10-May-89 | 04-May-89 |
10-May-90 | 04-May-89 |
04-Apr-89 | 04-Apr-89 |
04-May-89 | 04-Apr-89 |
10-May-89 | 04-Apr-89 |
10-May-91 | 04-Apr-89 |
این جدول T_DATE نام دارد. نوع دادههای این جدول شامل موارد زیر میباشد.
یسری قواعد جامعیتی در بانکاطلاعاتی اوراکل وجود داره که شما میتونید از اونها در این بانک استفاده کنید کار این قواعد اینه که شما هرچی خواستید رو نتونید به عنوان داده در بانک وارد کنید.
مثال:
CRAETE TABLE T2(ID NUMBER PRIMARY KEY, NAME VARCHAR2(20));
به چند چیز باید توجه کنیم(چون ID به عنوان PRIMARY KEY) تعریف شده):
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 رد کنیم.
شما میتوانید بر روی یک جدول، قواعد جامعیتی(محدودیت) ایجاد نمایید، این قواعد مقابل نام فیلد تعریف میشوند. بدون استفاده از محدودیتها مدیریت دادهها مشکل و گاهی اوقات غیر ممکن خواهدشد.
قواعد جامعیتی پنج نوع میباشند که عبارتند از:
در برخی از مواقع، فیلد یا فیلدهایی که تعریف میکنید نباید مقدار هیچ را بپذیرند. برای محدود کردن این قبیل فیلدها، از گزینهای به نام NOT NULL استفاده مینماییم. اگر در ساخت فیلدها، از قاعدهی NOT NULL استفاده نکنید، پایگاه دادهها به طور پیش فرض مقدار NULL را برای آن فیلد، در نظر میگیرد. NULL به معنای آن است که، فیلد میتواند مقداری را در بر نگیرد. NOT NULL عکس NULL عمل میکند و بدان معنی است که هیچگاه نمیتوان آن فیلد را خالی رد کرد، دستور زیر را مشاهده نمایید:
CREATE TABLE TEST(ID NUMBER NOT NULL, TELL NUMBER DEFAULT 22222, ADDRESS VARCHAR2(10));
به هر فیلدی که مقدار تکراری را قبول نکند، کلید یکتا گفته میشود. این کلید در مواردی مثل شماره شناسنامه یا کد ملی که هر فردی شمارهای مخصوص به خود دارد، کاربرد فراوان دارد. در یک جدول میتوان بیش از یک فیلد را، به عنوان کلید یکتا برگزید. این قاعده را با عبارت UNIQUE تعریف میکنند. در دستور زیر نحوهی استفاده از دستور UNIQUE را مشاهده میکنید.
CREATE TABLE TEST(ID NUMBER UNIQUE, TELL NUMBER DEFAULT 22222, ADDRESS VARCHAR2(10));
برای نمایش یک پبغام در هنگام وقوع خطا در هر یک از قواعد جامعیتی از دستور CONSTRAINT استفاده میشود. به این صورت که کلمه نوشتهشده بعد از آن، همان پیغامی است که میخواهیم چاپ شود و کلمه بعدی مشخصکننده خطایی است که باید چکشود.
CRAETE TABLE TEST(ID NUMBER CONSTRAINT UQ_TEST_ID UNIQUE, TELL NUMBER DEFAULT 22222, ADDRESS VARCHAR2(10));
بانک اطلاعاتی برای نگهداری دادههای مختلف نوعهای مختلفی از فیلد را به شما ارائه میکند:
مثال:
CREATE TABLE T1(ID NUMBER(10,10), NAME VARCHAR2(20));
جهت نگهداری اطلاعات عددی که شامل صفر، اعداد مثبت و منفی میشود میتوانید از نوع Number استفاده کنید. این نوع داده ای حداکثر می تواند 38 رقم مخلوط اعشار و صحیح را در خود نگهداری کند.
ID ما که از جنس NUMBER است، میتونه ۲تا پارامتر بگیره اولین پارامتر یعنی ۱۰ رقم صحیح و دومین پارامتر یعنی ۱۰ رقم اعشاری
نکته: اوراکل حداکثر توانایی نگهداری ۳۲ رقم رو داره
جهت نگهداری اطلاعات رشتهای با طول متغییر میتوانید از نوع VARCHAR2 استفاده کنید.
SIZE در این نوع کاراکتر به صورت رقم در جلوی آن مشخص میشود.
همانند VARCHAR2 میباشد. و جهت نگهداری متون چینی، ژاپنی، پارسی، عربی و... میتوانید از این نوع داده استفاده نمایید.
جهت نگهداری اطلاعات رشتهای با طول ثابت میتوانید از نوع CHAR استفاده کنید.
CHAR هم SIZE میگیره
همانند CHAR میباشد. و جهت نگهداری متون چینی، ژاپنی، پارسی، عربی و ... میتوانید از این نوع داده استفاده نمایید.
CHAR طول ثابت داره یعنی اگه ما دادهای در آن ذخیره کنیم که مثلا ۴ حرف باشه در حالتی که سایز وارده به CHAR رو ۲۰ کاراکتر مشخص کردهایم، ۱۶ کاراکتر برای ما خالی رد میشه و حجمی اضافهتر از داده ما را ذخیره میکند.
اما در VARCHAR و NVARCHAR سایز ما اگر کمتر از مقدار وراد شده باشد به همون میزان کاراکتر وارده سایز جمع میشود.
مثال
معمولاً برای داده جنسیت ما از CHAR استفاده میکنیم، به عنوان مثال Female میشه 0 و Male میشه 1 و 2 هم وضعیت مجهول جنسیت رو برای ما مشخص میکنه، در این مورد به جای استفاده از CHAR میتوان از NUMBER هم استفاده کرد.
نکته: برای زمانهایی که میخواهیم مقادیر TRUE, FALSE در دیتابیس وارد کنیم استفاده از CHAR توصیه میشود.
جهت نگهداری اطلاعات تاریخی میتوانید از نوع DATE استفاده کنید.
نکته: اوراکل تاریخ شمسی رو پشتیبانی میکنه
جهت نگهداری اطلاعات رشتهای طولانی میتوانید از نوع CLOB استفاده کنید.
همانند CLOB بوده و جهت نگهداری متون چینی، ژاپنی، پارسی، عربی، ... میتوانیدازاین نوع داده استفاده نمایید.
دستور زیر جدولی به اسم 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
کاربران موجودیتهایی هستند، که اجازه ورود به پایگاه دادهای اوراکل را دارند. نحوهی نگارش دستور ساخت کاربر به اشکال ذیل میباشد.
CREATE USER user_name
IDENTIFIED BY my_pass;
در قسمت CREATE USER، نام کاربر و IDENTIFIED BY، رمز ورود کاربر وارد میگردد.
با استفاده از دستور CREATE USER یک کاربر به نام ریحانه، با رمز ورود ABC بسازید.
SQL> CREATE USER MAHDI
2 IDENTIFIED BY ABCD;
User created.
SQL>
با استفاده از دستور SHOW USER نام کاربر متصل به بانکاطلاعاتی را نمایش داده میشود.
SQL> SHOW USER;
USER is "SYS"
SQL>
در حال حاضر کاربر SYSTEM به بانک اطلاعاتی متصل است.
برای حذف یک کاربر از دستور DROP USER استفاده میشود. نگارش این دستور به شکل زیر است.
DROP USER user_name;
در صورت استفاده از CASCADE در دستور DROP USER، کاربر با تمام ملحقات مربوطه(تمامی جداول، دیدها و ...) حذف میگردد.
SQL> DROP USER MAHDI CASCADE;
User dropped.
SQL>
شما در محیط SQL Plus میتوانید از دستوراتی به جز دستورات SQL استفاده نمایید. این دستورات را محیط SQL Plus در اختیار شما قرار دادهاست.
دستور PROMPT برای نمایش یک متن در خروجی استفاده میشود.
SQL> PROMPT SALAM
SALAM
دستور SET TIME ON باعث میشود تا در خط فرمان شما زمان جاری سیستم اضافه گردد.
SQL> SET TIME ON;
05:45:39 SQL>
05:45:45 SQL>
دستور SET TIME OFF باعث میشود تا خط فرمان شما به حالت اولیه باز گردد (حالتی که زمان جاری سیستم نمایش داده نمیشود).
05:45:45 SQL> SET TIME OFF;
SQL>
SQL>
در این فایلها اطلاعاتی نگهداری میشوند که اوراکل از آنها برای پیکربندی بانک اطلاعاتی استفاده میکند.
از جمله نام بانک اطلاعاتی، اندازه حافظه ای که Instance از آن استفاده میکند، محل Control File ها، تنظیمات سایر زبانهایی که پشتیبانی میشوند و غیره. هنگامی که Instance راه اندازی میشود از این فایل برای پیکربندی حافظه SGA و فرایندهای پس زمینه استفاده میگردد.
علاوه بر این، در این فایل صدها پارامتر دیگر نیز وجو دارد که اوراکل از آن ها در مواقع مورد نیاز استفاده میکند. به هنگام ایجاد بانک اطلاعاتی و با تغییر مقادیر پیکربندی اطلاعات، این فایل نیز بروز میشود. ترتیب پارامتر ها و کوچک و بزرگ بودن حروف هیچ تاثیری در این فایل ندارد.
از اوراکل 8i به بعد، پارامترهای مربوط به بانک اطلاعاتی از قبیل نام بانک اطلاعاتی، پارامترهای مرتبط با حافظه، محل Control Fileها و غیره، در فایلی به نام PFILE که مخفف Parameter File می باشد، ذخیره می شوند.
این فایل یک فایل استاتیک بوده و توسط هر ویرایشگری مانند Notepad قابل ویرایش است.
این فایل تنها به هنگام راه اندازی بانک اطلاعاتی خوانده شده و پس از آن در صورتی که تغییری در این فایل ایجاد شود، تا زمانی که Instance مجدداً راه اندازی نشود، تغییرات در آن اعمال نخواهد شد.
همچنین در صورتی که به هنگام راه اندازی بانک اطلاعاتی تغییری در پارامترهای راه اندازی ایجاد شود، این تغییرات در PFILE ثبت نمی شوند.
با توجه به محدودیت های فوق، از اوراکل 9i و به بعد، فایلی به نام SPFILE که مخفف Server Parameter File می باشد، معرفی شد.
این فایل توسط هیچ ویرایشگری قابل ویرایش نبوده و تنها با استفاده از دستور ALTER SYSTEM میتوان مقادیر پارامترهای آن را تغییر داد.
فایل SPFILEORCL.ORA مخزن خود را از مسیر زیر باز کنید:
$Oracle_home/DataBase/product/11.2.0/dbhome_1/database/SPFILEORCL.ORA
با مقداردهی دوباره متغیرهای این فایل میتوان فضای SGA و PGA را تغییر داد. از اونجایی که این فایل یک فایل باینری است تغییر آن ابزار مناسب آن را میخواد که آن را در اختیار نداریم.
نکته: از اونجایی که اسم دیتابیس ما ORCL است این فایل به اسم SPFILEORCL نشان داده شده است.
برای تغییر این فایل از اوراکل خواهش میکنیم بیخیال SPFILE بشه و از روی SPFILE برای ما یک PFILE ایجاد کند:
CREATE PFILE FROM SPFILE;
زمانی که این دستور را اجرا میکنیم یک فایل جدید در همان مسیر SPFILE برای ما ساخته میشود به نام INITorcl.ORA با بازکردن این فیال با یک ادیتور متن خواهید دید که این فایل دیگر یک فایل باینری نیست. برای تغییر فضای SGA و PGA دنبال ۲ متغیر sga_target, pga_aggregate_target بگردید و آنها را مجدد مقداردهی کنید.