SQL
Տվյալների բազաներ
Տվյալների բազան տվյալների որոշակի ձևով կազմակերպված համախումբ է, որում տվյալները պահպանվում են համաձայն նախապես որոշված նշանակման։
Ավանդական «թղթյա» տվյալների բազաներն ունեն մի շարք թերություններ, օրինակ՝
- պահանջվում են ֆիզիկական մեծ տարածքներ,
- անհրաժեշտ տվյալները գտնելու համար պահանջվում է բավականաչափ երկար ժամանակ,
- դարակները և կարգացանկերը կարգավորված վիճակում պահպանելու համար պետք է ծավալուն աշխատանք կատարել և մեծ ջանքեր գործադրել։
Տվյալների էլեկտրոնային բազաները թույլ են տալիս լուծել բոլոր այդպիսի խնդիրները։ Առավել լայն կիրառություն են գտել տվյալների ռելյացիոն բազաները։ Ռելյացիոն բազաներում ինֆորմացիան բաժանված է տրամաբանորեն կապակցված համեմատաբար փոքր և, դրա հետևանքով, ավելի հեշտ ղեկավարվող մասերի, որոնք կոչվում են աղյուսակներ։ Աղյուսակները իրենց կազմակերպման մակարդակի շնորհիվ պարզեցնում են բազայի ուղեկցումը և ապահովում դրա առավել օպտիմալ գործարկումը։
Հատուկ գրականությունում աղյուսակի տողը անվանում են գրանցում (record), իսկ սյունակը՝ դաշտ (field)
Ռելյացիոն է կոչվում այն տվյալների բազան, որը բաղկացած է տրամաբանորեն փոխկապակցված բաղադրիչներից, որոնք կոչվում են աղյուսակներ։
Աղյուսակը բազաներում տվյալների պահպանման հիմնական միավորն է։ Ռելյացիոն բազաներում ղեկավարման հատուկ համակարգի միջոցով ապահովվում են տվյալների հետ տարբեր գործառնությունների կատարման հնարավորություններ։ Այդ համակարգերը կոչվում են տվյալների բազայի կառավարման ռելյացիոն համակարգեր - ՏԲԿՌՀ։ ՏԲԿՌՀ-ների առավել խոշոր արտադրողներն են Oracle, Microsoft, Informix, Sybase և IBM ֆիրմաները։
Ռելյացիոն բազաներում աղյուսակների տրամաբանական փոխկապակցվությունը (ինչպես սովորաբար ասում են՝ աղյուսակները գտնվում են հարաբերությունների (relations) մեջ և այդ պատճառով կոչվում են աղյուսակ-հարաբերություններ) թույլ է տալիս մեկ հարցման միջոցով գտնել բոլոր անհրաժեշտ տվյալները, որոնք կարող են պարունակվել մի քանի աղյուսակներում։
Տվյալների բազաների SQL լեզու
SQL-ը կամ հարցումների կառուցվածքավորված լեզուն ստանդարտ լեզու է, որը նշանակված է տվյալների ռելյացիոն բազաների հետ փոխգործակցելու համար։ Դրա նախատիպը մշակվել էր IBM-ում, դոկտոր Կոդդի (E.F.Codd) “Ռելյացիոն մոդելի օգտագործումը տվյալների բաժանված բանկերում” հոդվածի հիման վրա, յոթանասունական թվականներին։ SQL-ի առաջին ծրագրային արտադրանքը՝ Oracle ՏՌԲԿՀ-ն (տվյալների ռելյացիոն բազայի կառավարման համակարգ), ստեղծվեց 1979 թ. Relational Software, Inc. կորպորացիայի (հետագայում այն վերաանվանվեց Oracle Corporation) կողմից։ Ծրագրային արտադրանքի շուկայում այդ ՏՌԲԿՀ-ն մեծ հաջողությունը ստիպեց մյուս խոշոր ֆիրմաներին (Sybase, Informix, Microsoft) թողարկել SQL-ի վրա հիմնված ՏՌԲԿՀ-ների սեփական տարբերակները։ Քանի որ SQL-ը այն ժամանակ նորույթ էր, և դեռ ստեղծված չէին ստանդարտներ, ապա յուրաքանչյուր ֆիրմա արտադրում էր ՏՌԲԿՀ SQL-ի սեփական իրացումով։ Միայն 1989 թ. ANSI-ն (American National Standards Institute) մշակեց SQL-ի համընդհանուր ստանդարտը։ Սակայն այն հաշվի չէր առնում SQL-ի տեխնիկական կառուցվածքը, և անցումը լեզվի մեկ իրացումից մյուսին բավականաչափ բարդ էր։ 1992 թ. ստեղծվեց ստանդարտ, որը ընդգրկում է SQL-ի հնարավորին չափ շատ ընդլայնումները։ Այն անվանում են SQL92 կամ SQL2։ Նշենք, որ SQL2-ի մեծ ծավալի պատճառով ՏՌԲԿՀ-ները, որոնք իրացնում են լրիվ ստանդարտը, բավականաչափ բարդ են և աշխատատար։
SQL լեզվի հրամանների տեսակները
SQL-ն ունի հրամանների վեց հիմնական խմբեր՝
- DDL (Data Definition Language) - տվյալների սահմանման լեզվի հրամաններ։
- DML (Data Manipulation Language) - տվյալների փոխակերպումների (մանիպուլյացիաների) լեզվի հրամաններ։
- DQL (Data Query Language) – հարցումների լեզվի հրամաններ։
- DCL (Data Control Language) – տվյալների ղեկավարման լեզվի հրամաններ։
- DAC - Տվյալների ադմինիստրացման հրամաններ։
- TCC - Տրանզակցիաների ղեկավարման հրամաններ։
1. Տվյալների սահմանման հրամանների միջոցով օգտվողները կարող են ստեղծել և փոփոխել տվյալների օբյեկտների կառուցվածքը, օրինակ՝ ստեղծել և հեռացնել աղյուսակներ։ Այդ խմբի հիմնական հրամանները հետևյալներն են
2. Այս խմբի հրամանները օգտագործվում են բազայի օբյեկտների (օրինակ՝ աղյու-սակների) որոշ բնութագրիչները փոփոխելու համար։ Հիմնականում օգտագործվում են հետևյալ երեք հրամանները
3. Հարցումների լեզուն ընդգրկում է ընդամենը մեկ հրաման՝
Այդ հրամանը իր բազմաթիվ օպցիաներով և նախադասություններով (այսինքն՝ բառ-բանալիներով և օպերատորներով, որոնց միջոցով կառուցվում են ընտրության որոշակի պայմաններ) օգտագործվում է տվյալների ռելյացիոն բազային հարցումներ ձևավորելու համար, ընդ որում՝ հարցումները կարող են լինել ինչպես պարզ և անորոշ, այնպես էլ բարդ և լիովին որոշակի (կոնկրետ)։ Հարցումը - դիմում է տվյալների բազային՝ համապատասխան ինֆորմացիա ստանալու նպատակով։
4. Տվյալների ղեկավարման լեզվի հրամաններն են՝
Որպես կանոն, այդ հրամանները օգտագործվում են տվյալների հասանելիության հետ կապված օբյեկտների ստեղծման համար և, բացի այդ, թույլ են տալիս վերահսկողություն սահմանել օգտվողների միջև արտոնությունների բաշխման նկատմամբ։
5. Տվյալների ադմինիստրացման հրամաններ են՝
- start audit,
- stop audit։
Դրանք թույլ են տալիս հսկել կատարվող գործողությունները և վերլուծել տվյալների բազայի գործառնությունները։ Պետք չէ շփոթել տվյալների ադմինիստրացում և բազայի ադմինիստրացում գաղափարները։ Բազայի ադմինիստրացումը տվյալների բազայի ընդհանուր ղեկավարումն է և ի նկատի ունի բոլոր մակարդակների հրամանների օգտագործում։
6. Տրանզակցիաների կառավարման հրամաններն են՝
- commit,
- rollback,
- savepoint,
- set transaction։
SQL լեզվի իրացումների մեծամասնությունը թույլ է տալիս գրանցել հրամանների օպերատորները ինչպես մեծատառերով, օրինակ՝ CREATE TABLE, այնպես էլ փոքրատառերով՝ create table։
Օպերատորներ
Օպերատոր | Նկարագրություն | Օրինակ |
---|---|---|
= | Հավասար է | Author = 'Alcott' |
<> | Հավասար չէ (շատ ՏԲԿՀ-եր <>-ի փոխարեն սատարում են != գրելաձևը ) | Dept <> 'Sales' |
> | Մեծ է | Hire_Date > '2012-01-31' |
< | Փոքր է | Bonus < 50000.00 |
>= | Մեծ է կամ հավասար | Dependents >= 2 |
<= | Փոքր է կամ հավասար | Rate <= 0.05 |
BETWEEN | Որոշակի արժեքների միջակայք | Cost BETWEEN 100.00 AND 500.00 |
LIKE | Սիմվոլային փաթերնի համընկում | First_Name LIKE 'Will%' |
IN | Հավասար է մի քանի հնարավոր արժեքներից մեկին | DeptCode IN (101, 103, 209) |
IS կամ IS NOT | Համեմատում null արժեքի հետ | Address IS NOT NULL |
AS | Կիրառվում է դուրս բերված տվյալների դիտարկման ժամանակ աղյուսակի կամ սյան անվանումը փոխելու համար | SELECT employee AS 'department1' |
Պրոցեդուրային ընդլայնումներ
Քանի որ SQL-ը չի համարվում պրոցեդուրային ծրագրավորման լեզու ( այսինքն չկան ցիկլերի, պայմանական օպերատորների օգտագործման հնարավորություններ), տարբեր կազմակերպությունների կողմից թողարկվող SQL ընդլայնումները վերաբերվում էին պրոցեդուրային ընդայնումներին։ Գրեթե ցանկացած ՏԲԿՀ-ում կիրառվում է իր պրոցեդուրային լեզուն։ SQL-ի պրոցեդուրային ընդլայնումների ստանդարտը ներկայացված է SQL/PSM սպեցիֆիկացիայում. Ստորև ներկայացված է հայտնի ՏԲԿՀ -երի համար պրոցեդուրային ընդլայնումները։
ՏԲԿՀ | Պրոցեդուրային ընդլայնման կարճ անվանում | Ամբողջական անվանում |
---|---|---|
InterBase/Firebird | PSQL | Procedural SQL |
IBM DB2 | SQL PL | SQL Procedural Language (ընդլայնում է SQL/PSM-ը); DB2 պրոցեդուրաները կարող են գրվել սովորական ծրագրավորման լեզուներով՝ C, Java և այլն։ |
MS SQL Server/ Sybase ASE |
Transact-SQL | Transact-SQL |
MySQL | SQL/PSM | SQL/Persistent Stored Module |
Oracle | PL/SQL | Procedural Language/SQL (հիմնված է Ada լեզվի վրա) |
PostgreSQL | PL/pgSQL | Procedural Language/PostgreSQL Structured Query Language (շատ նման է Oracle PL/SQL-ին) |