Қоғам oracle деректер қорын басқару жүйелері



Pdf көрінісі
бет19/23
Дата29.03.2023
өлшемі0,98 Mb.
#173212
1   ...   15   16   17   18   19   20   21   22   23
Байланысты:
kt 2

 
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; 


Достарыңызбен бөлісу:
1   ...   15   16   17   18   19   20   21   22   23




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет