29
1) Жеке (PRIVATE) – синонимдер нақты пайдаланушының сұлбасында
көрінеді және тек пайдаланушының өзі үшін ғана, сонымен қатар ол өзі
сәйкес рұқсатттылықтарды берген адамға ғана қолжетімді.
2) Ортақ (PUBLIC) – бұл синонимдердің иелері – арнайы
пайдаланушылар тобы – PUBLIC, соның
нәтижесінде бұл синонимдер
деректер қорының барлық пайдаланушылары үшін қолжетімді.
Синонимдерді жасау.
Жеке синонимдерді жасау үшін CREATE SYNONYM мүмкіндігіне ие
болу керек, басқа пайдаланушның сұлбасында синоним құру құқығын алу
үшін CREATE ANY SYNONYM мүмкіндігі керек. Ортақ синоним құру үшін
CREATE PUBLIC SYNONYM мүмкіндігі керек.
Синонимдерді құру үшін CREATE SYNONYM немесе CREATE
PUBLIC SYNONYM конструкциялары пайдаланылады, ол құрылып отырған
синонимнің түріне де байланысты. Нақты нысан болған кезде мүмкіндікке
қолжтеркізу міндетті емес.
CREATE SYNONYM [имя_синонима] FOR[имя_объекта]
CREATE PUBLIC SYNONYM [имя_синонима] FOR [имя_объекта]
Синонимдерд жою.
Пайдаланушы өз сұлбасында синонимнің кез келген бөігін жоя алады.
Басқа пайдаланушының сұлбасында жеке синонимді жою үшін DROP ANY
SYNONYM мүмкіндігі керек, ал ортақ синонимді жою үшін – DROP PUBLIC
SYNONYM мүмкіндігі керек.
Жою үшін – DROP SYNONYM оператры қолданылады. Ортақ
синонимді жою үшін - DROP PUBLIC SYNONYM. Мысалы, ертеректе
жаалған синонимддері жояйық:
DROP SYNONYM SYN_ALL_ORACLE_USERS;
DROP PUBLIC SYNONYM SYNP_ALL_ORACLE_USERS
Функцияларға негізделген индектер.
UPPER (column_name) немесе LOWER (column_name)
кілттік сөздері
арқылы жарияланған Function-based индекстері іздестіру регистрына
тұрақсыздықты қолдануға мүмкіндік береді. Мысалы, келесі индекс:
CREATE INDEX upper_last_name_idx
ON employees (UPPER(last_name))
Сұрау үдерісін жеңілдетеу үшін:
SELECT * FROM employees WHERE UPPER(last_name) = 'KING'
Oracle сервері кепілдік бере отырып, индексті пайдаланылуы үшін
(толық сканерлеудің орнына кестелер), функцияның мәні келесі сұрауларда
анықталмаған болып табылады. Мысалы, келесі доменда индексті
пайдалануға кепілдік береді, алайда WHERE
сипатынсыз Oracle сервері
кестенің толық маскасын орындауға мүмкіндік береді:
SELECT * FROM employees WHERE UPPER (last_name) IS NOT NULL
30
ORDER BY UPPER (last_name)
Oracle сервері DESC арқылы
function-based
индекстері ретінде
белгіленген колонналар арқылы өңдейді. DESC арқылы белгіленген
колонналар ағымдағы емес ретпен саналады.
Индексті жою үшін DROP INDEX командасы пайдаланылады
DROP INDEX upper_last_name_idx
SQL тілінде деректерді модификациялау құралы.
Деректерді
модификациялау болуы мүмкін үш операцияны бөледі: қою (вставка),
өзгерту және жою. Бұл бөлімде осы операциялар SQL тілінің құралдары
арқылы қалай жасалатыны көрсетіледі.
Мәнді кестеге қою.
Мәнді кетеге қарапайым қою.
Мәнді кетеге қою үшін
SQL-оператор
INSERT қызмет етеді. Бұл операторда екі форма бар, ол кестенің барлық
бағаналарына мән тиесілі ме, соған байланысты. Егер барлық бағандардың
мәндері көрсетілсе, онда оператор келесі түрге ие болады:
INSERT INTO hr.employees VALUES(900, 'Ivan', 'Ivanov',
Upper(substr('Ivan',1,1) || 'Ivanov'), '555-55-55',sysdate,
'SH_CLERK', null, null,null, null);
Егер, қандай да бір бағана үшін деректер жоқ болса, онда жіберілетін
мәндер үшін NULL кілттік сөзін пайдалануға болады:
Кеңейтілген оператор INSERT пайдалануға болады.
INSERT [conditional_insert_clause]
[insert_into_clause values_clause] (subquery)
[ALL|FIRST] [WHEN condition THEN] [insert_into_clause
values_clause] [ELSE] [insert_into_clause values_clause]
Бірнеше жолды бір кестеге буақыттық шартты қоюды орындау
INSERT
ALL
(
SELECT
операторының
командасынада
қатысу
міндетті
)
командасының көмегімен жүруі мүмкін
CREATE table tab1 (f1 number, f2 varchar2(255));
Table created.
INSERT ALL
INTO tab1 (f1,f2) VALUES (1,'One')
INTO tab1 (f1,f2) VALUES (2,'Two')
INTO tab1 (f1,f2) VALUES (3,'Three')
SELECT * FROM DUAL;
Егер басқа кесетеден үлкен көлемді
деректерді көшіру талап етілсе,
онда олардың мәндерін SELECT операторының көмегімен алуға болады.
INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM employees WHERE job_id LIKE '%REP%';
31
Мұндай жағдайда VALUES кілттік сөзі SELECT операторының
құрамына кіретініне назар аударыңыз.
Деректердің өзгеруі.
Бар деректердің мәндері SQL-операторының UPDATE көмегімен
өзгертілуі мүмкін. Назарға алу керек, бұл мықты команда және оның
абайлап пайдалану керек.
Келесі мысалды қарастырайық.
Қызметкердің нөмірі мен жаңа жалақысы туралы ақпарат сұрайтын
Oracle
SQL командасын жазайық, және де алынған ақпараттың негізінде
кестеге өзгеріс енгізейік hr.employees (бұл қызметкер үшін жалақыны
өзгерткен). Қызметкерің нөмірі employee_id бағанасында, ал жалақысы —
salary бағанасында көрсетілген.
Ескерту:
жіберіледі, алдымен жаңа жалақы туралы сұрау, ал содан соң
– бағанның аты туралы сұрау.
Осы өзгерісті енгізе отырып, сіз қате жібердіңіз және WHERE сөйлемі
туралы ұмытып кеттіңіз дейік. Соңында, егер
salary
бағанының шектеуі
бұзылса (мысалы, уникальдылығы бойынша шектеу), онда барлық
EMPLOYEES
кестесіндегі
salary
бағанында ионитордан енгізілген бір мән болады.
Достарыңызбен бөлісу: