مشاوره و پشتیبانی #پایگاه داده #هوش تجاری

۱۷ مطلب با کلمه‌ی کلیدی «SELECT» ثبت شده است

DataDictionaryهای مربوط به TableSpaceها

دیتادیکشنری جداولی هستند که به صورت پیش‌فرض در اوراکل وجود دارند و ساختار دیتابیس رو نگه‌داری می‌کنند. اونایی که اولشون DBA است جدول هستند و اونایی که اولشون V است VIEW هستند.

یه وضعیتی روی TableSpaceها وجود داره که شما می‌تونید به وسیله دیتا دیکشنری اسم همه TableSpaceهاتون رو پیدا کنید:

نکته: با دستور DESCRIB می‌توانید ساختار یک جدول را ببینید. وقتی می‌خوایم ساختار جداول دیتادیکشنری رو ببینیم از این دستور پر کاربرد استفاده می‌کنیم.

SQL> DESCRIB DBA_TABLESPACES;
Name Null? Type
----------------------------------------- -------- ---------------
 TABLESPACE_NAME                            NOT NULL  VARCHAR2(30)
BLOCK_SIZE NOT NULL NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NOT NULL NUMBER
MAX_EXTENTS NUMBER
MAX_SIZE NUMBER
PCT_INCREASE NUMBER
MIN_EXTLEN NUMBER
STATUS VARCHAR2(9)
CONTENTS VARCHAR2(9)
LOGGING VARCHAR2(9)
FORCE_LOGGING VARCHAR2(3)
EXTENT_MANAGEMENT VARCHAR2(10)
ALLOCATION_TYPE VARCHAR2(9)
PLUGGED_IN VARCHAR2(3)
SEGMENT_SPACE_MANAGEMENT VARCHAR2(6)
DEF_TAB_COMPRESSION VARCHAR2(8)
RETENTION VARCHAR2(11)
BIGFILE VARCHAR2(3)
PREDICATE_EVALUATION VARCHAR2(7)
ENCRYPTED VARCHAR2(3)
COMPRESS_FOR VARCHAR2(30)

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

نمایش لیست تمام کاربران

برای نمایش لیست تمام کاربران می‌توانید از کوئری زیر استفاده کنید:

select * from all_users;

و برای لیست کردن تمام یوزرهای بانک‌اطلاعاتی از جدول dba_users کوئری بگیرید:

select * from dba_users;
۰۸ ارديبهشت ۹۴ ، ۲۰:۳۵ ۰ نظر
مهدی غفاری

جستجوی انعطاف‌پذیر

نکته: دیتابیس اوراکل قابلیت PREPARE STATEMENT رو ساپورت میکنه

هرگاه بخواهیم در دستور SELECT خود، از کاربر ورودی دریافت نماییم، از & استفاده می‌کنیم. برای این مثال، از جدول PERSON استفاده خواهیم‌کرد.

دستور زیر تمام رکورد‌های جدول PERSON را به شرطی که فیلد NAME آن مساوی با ورودی کاربر باشد لیست می‌کند. دقت داشته باشید، بعد از اجرای کوئری پایگاه‌داده از شما مقدار ورودی را خواهد پرسید، به دستور زیر توجه کنید:

در پرس‌وجوی فوق از کاربر ورودی گرفته می‌شود، سپس جستجو در جدول PERSON آغاز می‌گردد و در انتها خروجی را به کاربر نمایش می‌دهد:

SELECT * FROM T5 WHERE AGE = &PLEASE_ENTER_YOUR_AGE;
ENTER VALUE FOR PLEASE_ENTER_YOUR_AGE: 10
AGE NAME
---- ------------
10 HOSSEIN

حالا می‌خوام INJECT کنم، می‌بینید که INJECT را قبول میکنه!!

SELECT * FROM T5 WHERE AGE = &PLEASE_ENTER_YOUR_AGE;
ENTER VALUE FOR PLEASE_ENTER_YOUR_AGE: 10 OR 1=1
AGE NAME
---- ----------
50 HAMID
20 AKBAR
10 HOSSEIN
30 HOSSEIN
15 AKBAR

در حقیقت عمل prepare statement‌ هم همینه یعنی پارامترها جدا میره سمت دیتابیس و دستور sql جدا میره سمت دیتابیس

نکته: من از قصد علامت & رو گذاشتم تا SQL INJECT رو قبول کنه ولی در فصل‌های آینده به این موضوع می‌رسیم که چجوری جلوی INJECT را در PREPARE STATEMENT بگیریم و دیگه دستور SQL رو به عنوان ورودی نگیره(پشت & یه علامت دیگه می‌ذاریم):

۰۱ ارديبهشت ۹۴ ، ۲۰:۵۵ ۰ نظر
مهدی غفاری

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

این تابع طول یک رشته را بر می‌گرداند. به مثال زیر توجه نمایید.

SELECT NAME, LENGTH(NAME) FROM PERSON;

در دستور فوق بوسیله‌ی تابع LENGTH، طول داده‌های فیلد NAME از جدول PERSON را به دست می‌آوریم. پاسخ را در زیر مشاهده می‌کنید.

NAME     LENGTH(NAME)
-------- -------------
MOHAMMAD 8
MAHDI 5
MOHSEN 6
FARZAD 6
EHSAN 5

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

توابع ریاضی - EXP, Log, Ln

EXP

شما می‌توانید بوسیله‌ی این تابع از فرمول e استفاده نمایید. لازم به ذکر است که، e یک عدد ثابت ریاضی می‌باشد (e = 2.71828…). این تابع عدد e را به توان x می‌رساند. به دستور زیر توجه کنید.

SELECT NUM_1, EXP(NUM_1) FROM NUMBERS;
NUM_1 EXP(NUM_1)
----- ----------
15 3269017.37
5 148.413159
51 1.44093E+22
46 9.4961E+19
28 1.4463E+12
37 1.1719E+16

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

توابع ریاضی - Power, ABS, SQRT, Sign, Mod

برخی از مواقع، بنا به موقعیت کاری، بکار‌گیری محاسبات ریاضی در پایگاه داده‌ها امری الزامی است. بنابراین برخی از این توابع را به شما معرفی می‌کنیم. در این قسمت از جدول NUM_TEST استفاده می‌نماییم.

B A
5 -5.65
5.22 6.1
66.6 11
8 .33
-3 -10
-7 1.598

نوع داده‌های این جدول شامل موارد زیر می‌باشد.

  • فیلد A از نوع FLOAT
  • فیلد B از نوع FLOAT

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

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

این تابع، قطعه‌ای از داده‌های فیلد مورد نظر را نشان می‌دهد. SUBSTR دارای سه آرگومان می‌باشد.

  • آرگومان اول: فیلد مورد نظر را جستجو می‌کند.
  • آرگومان دوم: مکان اولین کاراکتر را مشخص می‌کند.
  • آرگومان سوم: تعداد کاراکتری است، که باید انتخاب شود.

مثال۱:

به دستور زیر دقت کنید:

SELECT FAMILY, SUBSTR(FAMILY, 2, 3) FROM PERSON;

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

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

در تابع REPLACE می‌توان کاراکتری را به جای کاراکتری دیگر جایگزین نمود. این تابع دارای حداقل دو و حداکثر سه آرگومان می‌باشد. آرگومان اول فیلد مورد نظر را جستجو و آرگومان دوم، کلید جست‌و‌جو است. آرگومان سوم کاراکتر جایگزین می‌باشد. توجه داشته باشید که آرگومان سوم اختیاری است. به مثال زیر دقت کنید.

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
SELECT NAME, REPLACE(NAME, 'MO', '##') FROM PERSON;

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

توابع پردازش رشته‌ - Lower, Upper, Initcap, Trim

LOWER

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

SELECT NAME, LOWER(NAME) LOW_NAME FROM T2;

نکته: منظورمون از LOW_NAME یک اسم مجازیه که برای این کوئری انتخاب کرده‌ایم تا نتایج کوئری در این فیلد نمایش داده شوند.

کوئری فوق، داده‌های فیلد NAME را تبدیل به حروف کوچک می‌کند. نتیجه‌ی کوئری بالا را در زیر ببینید:

NAME     LOW_NAME
-------- -----------
MOHAMMAD mohammad
MAHDI mahdi
MOHSEN mohsen
FARZAD farzad
EHSAN ehsan

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

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

بوسیله‌ی این تابع، می‌توان دو فیلد را به یکدیگر متصل نمود. این تابع معادل عملگر اتصال ( || ) است. حال در زیر برای شما مثالی می‌زنم:

SELECT CONCAT(ID, NAME) JAM
FROM NUMBERS;

دستور بالا فیلد ID و NAME را به یکدیگر متصل کرده و نام مستعار آن را TOTAL قرار داده‌است. نتیجه‌ی پرس‌وجو را در زیر مشاهده کنید.

JAM
----------------------
1
2 MAHDI

همانظور که گفتم این تابع معادل عملگر || است:

SELECT ID || NAME FROM HOLO;

ID||NAME
-----------------------------
1
2MAHDI
SELECT ID || NAME JAM FROM HOLOL;

JAM
-----------------------------
1
2MAHDI

نکته: در SQL SERVER‌ به جای || باید AS بذاریم، در حقیقت لهجه دیتابیس‌ها در SQL باهم فرق دارد.

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