4)
Бөлімшелердің атауын сол жақтан «_» символы арқаылы, енгізілетін
атау қосымша символдармен бірге
20
символдан аспайтындай етіп қою
керек.
SELECT LPAD(department_name, 20 ,'_')
FROM departments;
5) Символдар регистрін түрлендірудің үш функциясын пайдаланыңыз
a)
SELECT 'The job id for '|| UPPER(last_name) || ' is ' || LOWER(job_id) AS
"EMPLOYEE DETAILS"
FROM employees;
b)
SELECT employee_id, UPPER(last_name), department_id
FROM employees
35
WHERE INITCAP(last_name) = 'Higgins';
6) Даталармен жұмыс.
a) Аптаның күнін анықтау үшін TO_CHAR функциясын мына түрде
пайдаланыңыз:
SELECT TO_CHAR(to_date('26.12.2012','dd.mm.yyyy'), 'd')
FROM DUAL;
Нәтижесінде апта күндерінің реттік нөмірін аламыз: 1-ден 7-ге дейін.
Қандай күнді бірінші деп санайтыны NLS_TERRITORY параметріне
байланысты болады.
b)
«Осы аптаның бірінші күні қайсы күн» деген сұраққа мысан сұрауды
толтырыңыз:
SELECT TRUNC(to_date('21.11.2011','dd.mm.yyyy'),'D') FROM DUAL;
c)
Ағымдағы жылды енгізіңіз
SELECT EXTRACT ( YEAR FROM SYSTIMESTAMP ) FROM dual;
d)
Есептеңіз
SELECT MONTHS_BETWEEN (DATE '2013-03-01', DATE '2014-02-28')
FROM dual;
e)
Уақыт моментін беру форматын ДҚ, ДҚБЖ және жеке сеанстар үшін
орындауға болады. DATE типіне жақын сұрауларды орындаңыз:
SQL> SELECT value FROM nls_session_parameters
2> WHERE parameter = 'NLS_DATE_FORMAT';
VALUE
----------------------------------------
DD-MON-RR
SQL> SELECT SYSDATE FROM dual;
SYSDATE
---------
14-SEP-09
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD
HH24:MI:SS';
Session altered.
7) Деректерді қайта түрлендіру.
a) выдайте дату по формату
SELECT employee _id, TO_CHAR(hire_date, 'MM/YY') Month_Hired
FROM employees
WHERE last_name = 'Higgins';
Егер сіз апта күндері бойынша қайта сұрыптағыңыз келсе, онда
ORDER BY-ға назар аударамыз, мысалы:
ORDER BY TO_CHAR(hire_date-1 ,'D');
b) Формат бойынша қызметкерлердің жалақысын үлестіріңіз
SELECT employee _id, TO_CHAR(salary, '$99,999.00') SALARY
FROM employees
WHERE last_name = 'Smit';
c) Форматтардың алуан түрін пайдаланыңыз.
SELECT employee_ID, TO_CHAR(hire_date, 'DD, MM, Mon, Month, YYYY, Year,
Day, DY, Q')
36
AS "All"
FROM Employees;
Мысалдар:
SELECT ename, comm, NVL ( comm, 0 ) FROM emp;
SELECT comm, sal, COALESCE ( comm, sal ) FROM emp;
8) Мәнді шартты қою функциялары.
a) COMMISSION_PCT кколоннасын тексеріңіз. Егер мән табылса, онда
екінші көрсеткіш SAL+COMM қайтып оралады. Егер COMMISSION_PCT
колонкасының құрамында NULL мәні бар болса, онда үшінші көрсеткіш SAL
қайтып оралады.
SELECT last_name, salary, commission_pct,
NVL2(commission_pct, 'SAL+COMM', 'SAL') income
FROM employees
WHERE department_id IN (50, 80);
b) Екі көрсеткішті пайдаланыңыз
SELECT first_name, LENGTH(first_name) "expr1",
last_name, LENGTH(last_name) "expr2",
NULLIF(LENGTH(first_name), LENGTH(last_name)) result
FROM employees;
с) Сұрауды орындаңыз – егер COMM комиссиялық шығындардың мәні
null тең болса, ол көрінеді. Егер COMMISSION_PCT мәні null тең болса, онда
SALARY жалақысы көрсетіледі. Егер COMMISSION_PCT және SALARY
мәндері null тең болса, онда 10 мәні беріледі:
SELECT last_name, employee_id,
COALESCE(TO_CHAR(commission_pct), TO_CHAR(manager_id) ,
'No commission and no manager') comm
FROM employees;
9) Шартты сұраулар жасаңыз.
a) Коэффиценттерге тәуелді түрде жалақыны есептеңіз
SELECT last_name, job_id, salary,
CASE job_id
WHEN 'IT_PROG' THEN 1.10*salary
WHEN 'ST_CLERK' THEN 1.15*salary
WHEN 'SA_REP' THEN 1.20*salary
ELSE salary
END "REVISED_SALARY"
FROM employees;
b) Жолдар (қызметкерлер) мен бағаналардың (бөлімшенің атауы)
қиылысқан жеріне осы бөлімшенің қызметкерінің жалақысын қою керек (тек
10, 20, 30 бөлімшелері үшін ғана).
SELECT сұрауарының базалық синтаксисі.
Oracle SQL бар стандарт
саласына сәйкес келеді. Дамып келе жатқан стандартпен бірге SQL бойынша
стандарттарды жасау жөніндегі жұмыс комитеті Oracle корпарациясының
белсенді
қатысуының
арқасында
қамтамасыз
етіледі.
Мұндай
жалпымойындатылған комитет болып Стандарттардың Америкалық Ұлттық
37
Институты (ISO) табылады. ANSI де, ISO да реляциондық деректер базасы
үшін стандарт ретінде SQL қабылдаған.
SELECT операторында ANSI SQL салыстырғанда мынадай қосымша
мүмкіндіктер бар:
1)
NULL таңдау тізімінде.
2)
Сұрау сұраудан (SELECT FROM (SELECT….)).
3)
Оператордың IN сол бөлігі ANSI SQL бірлік сипатынан
айырмашылығы тізімде бейнеленуі мүмкін.
4)
Тек бағана ғана емес, сондай-ақ кез келген бейнелеу LIKE операторы
арқылы пайдаланылуы мүмкін.
5)
Тек жеке бағана ғана емес, кез келген өрнек, IS NULL және IS NOT
NULL салыстырғанда оператор ретінде қолданылуы мүмкін.
6)
ORDER BY сөйлемінде құрамында таңдау тізіміндегі бағаналардың
тек қана аты, бүркеншек аты бойынша айырмашылық көрсететін кез келген
FROM сөйлемі бар кез келген құрамы қолданылауы мүмкін.
7)
GROUP BY сөйлемінде құрамында таңдау тізіміндегі бағаналардың
тек қана аты, бүркеншек аты бойынша айырмашылық көрсететін кез келген
FROM сөйлемі бар кез келген құрамы қолданылауы мүмкін.
8)
Салынған агрегатты функциялар MIN(MAX(col1)) (салым деңгейі 2-
ден көп емес).
9)
Ішкі байланыс операторы (+).
10)
Ағаш тәрізді сұраулар.
-
таңдау тізімінде NULL-мәні болады;
-
FROM сөйлемінде ішкі сұрау көрсетілген;
-
IN операторының сол жағында екі бағанадан тұратын тізім
көрсетілген, ал оң жақта – екі бағананы кері қайтатын тізі тұр;
-
LIKE
операторымен
құрамында
бағананың
сілтемесі
бар
'%'||ename2||'%', сипаттама бейнеленген.
11)
IS NOT NULL салыстыру операторымен sal+sal2 сипаты
пайдаланылады.
12)
Іріктеу sal+sal2 сипатының мәні бойынша жүзеге асады.
Oracle-дағы SELECT командасының базалық синтаксисі келесідей
түрде болады:
SELECT [DISTINCT] список_столбцов
FROM источник WHERE фильтр BY выражение_сортировки
LIKE операторын қолданудың ерекшеліктері. Метасимволдарды
қиыстыру
. «%» және «_» символдарын литеральды символдармен
қиыстыруға болады. Слайдтағы мысал екінші әрібі – «А» болатын барлық
қызметкерлердің тектерінің шығуын көрсетеді.
ESCAPE опциясы.
Егер іздестіру метасимволдар арқылы емес, «%»
және «_» нақты символдары жүргізілмесе, онда ESCAPE опциясын
пайдалану қажет. Бұл опция символ береді, ол метасимволды қарапайым
38
символға айналдырады. Келесі SQL командасы құрамында «SA _» бар
барлық қызметкерлерді тегін сұрайды.
SELECT employee_id, last_name, job_id
FROM employees WHERE job_id LIKE '%SA\_%' ESCAPE '\';
ESCAPE опциясына кері қисық сызық белгісі (\) берілген. Шаблонда
қисық сықыз астын сыз белгісімен (_) бірге келетін болғандықтан, Oracle
сервері астын сызу белгісін метасимвол түрінде емес, әріп ретінде
қабылдайды.
Мәліметтер
қорынан
мүлдем
пайдаланылмайтын
жолдардың
сұрауларын орындау үшін, Oracle-да арнайы DUAL кестесі жасалған (SQL
Server-де ол қарастырылмаған). Бұл кестеде – бір ғана DUMMY бағаны
жалғыз x мәнімен. Кестенің осы қызметтік кестені пайдаланатын сұрау
былай көрінуі мүмкін:
SELECT 10*15 FROM DUAL;
Оператаорлардың басымдылықтары.
Бір пердиката логикалық
операторлар келесі ретпен орындалады: алдымен NOT операторы
орындалады, содан соң – AND және содан кейін ғана – OR операторы.
Операторлардың орындалу ретін өзгерту үшін жақашарды қолдануға рұқсат
беріледі.
AND операторының басымдылықтарының мысалы:
1)
Біріншісі – AD_PRES мансабы және 15000 артық жалақы.
2)
Екіншісі – SA_REP мансабы.
Осылайша, SELECT командасы былайша жазылады:
«Жолды таңдау, егер қызметкер – AD_PRES және $15000 артық
жалақы тапса немес ол – SA_REP».
SELECT
last_name,
job_id,
salary
FROM
employees
WHERE
job_id='SA_REP' OR job_id='AD_PRES' AND salary>15000
Жақшаларды пйдалану мысалы.
Бұл мысалда екі шарт бар:
1)
бірнішісі – AD_PRES немесе SA_REP масабы,
2)
екіншісі – 15000 артық жалақы.
Сәйкесінше, SELECT командасы келесі түрмен оқылады:
«Жоды таңдау, егер қызметкер – AD_PRES немесе SA_REP және ол
$15000 артық жалақы алса».
SELECT
last_name,
job_id,
salary
FROM
employees
WHERE
(job_id='SA_REP' OR job_id='AD_PRES') AND salary>15000;
Достарыңызбен бөлісу: |