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) – տվյալների ղեկավարման լեզվի հրամաններ:
- Տվյալների ադմինիստրացման հրամաններ:
- Տրանզակցիաների ղեկավարման հրամաններ:
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-ին) |