Мазмұнға өту

SQL

Уикипедия — ашық энциклопедиясынан алынған мәлімет
10:46, 2024 ж. наурыздың 14 кезіндегі KoishymanovaG (талқылау | үлесі) жасаған нұсқа
SQL
бағдарламалау парадигмасы Multi-paradigm
Пайда болды 1974
Дамытушы/дизайнері Donald D. Chamberlin
Raymond F. Boyce
Бағдарламалық жасақтама дамытушысы ISO/IEC
Бағдарламалық жасақтама рилизіSQL:2011/ 2011
Теру жүйесі Static, strong
Имплементациялары Many
Бағдарламалық жасақтама тілінің диалекттері SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003, SQL:2008, SQL:2011
Бұған ықпал етті Datalog
Ықпалы CQL, LINQ, Windows PowerShell[1]
Операциялық жүйесі Cross-platform
Веб-сайты ISO/IEC 9075-1:2008: Information technology – Database languages – SQL – Part 1: Framework (SQL/Framework).
SQL
Файл кеңейтімі:.sql
MIME түрі:application/x-sql
Дамытқан мекеме атауы:ISO/IEC
Формат типі:Database
Қалып(тар)ы:ISO/IEC 9075

SQL (ағылш. Structured Query Language, «құрылымдық сұрау тілі») — тиісті дерекқорды басқару жүйесімен басқарылатын реляциялық дерекқорда деректерді құру, өзгерту және басқару үшін қолданылатын декларативті бағдарламалау тілі.

Бұл, ең алдымен, реляциялық мәліметтер базасында сақталған деректерді сипаттауға, өзгертуге және алуға арналған ақпараттық-логикалық тіл. Жалпы жағдайда, SQL (бірқатар заманауи кеңейтімдерсіз) тьюрингте толық емес бағдарламалау тілі болып саналады, бірақ сонымен бірге SQL/PSM спецификациясының тіл стандарты оның процедуралық кеңейтілу мүмкіндігін қарастырады.

Бастапқыда SQL пайдаланушының дерекқормен жұмыс істеуінің негізгі әдісі болды және келесі операциялар жиынтығын орындауға мүмкіндік берді:

  • деректер базасында жаңа кесте құру;
  • кестеге жаңа жазбалар қосу;
  • жазбаларды өзгерту;
  • жазбаларды жою;
  • бір немесе бірнеше кестеден жазбаларды іріктеу (берілген шартқа сәйкес);
  • кесте құрылымдарын өзгерту.

Уақыт өте келе SQL күрделене түсті — жаңа конструкциялармен байытылды, жаңа сақталған объектілерді сипаттауға және басқаруға мүмкіндік берді (мысалы, индекстер, көріністер, триггерлер және сақталған процедуралар) — және бағдарламалау тілдеріне тән белгілерді ала бастады.

Барлық өзгерістерімен SQL қолданбалы бағдарламалық жасақтаманың мәліметтер базасымен өзара әрекеттесуінің ең кең таралған лингвистикалық құралы болып қала береді. Сонымен қатар, қазіргі заманғы ДҚБЖ, сондай-ақ ДҚБЖ қолданатын Ақпараттық жүйелер пайдаланушыға сұраныстарды визуалды құрудың дамыған құралдарын ұсынады[2].

Тарихы

Алғашқы әзірлемелер

Дональд Чемберлин (Дональд Д. Чемберлин) және Раймонд Бойс 1972 жылы Нью-Йорктегі симпозиумда кездескеннен кейін Э.Коддтан реляциялық модель туралы білгеннен кейін реляциялық мәліметтер базасының тілінде жұмыс істей бастады. Чемберлиннің естеліктеріне сәйкес, бұл «аян» болды. Авторлар күрделі сұрауларды ұсыну үшін Э.Кодд ұсынған реляциялық алгебра мен реляциялық есептеудің экспрессивтілігі мен компамдылығына таң қалды. Код операциялардың математикалық белгілері бар символдық жазбаны қолданды, бірақ Чемберлен мен Бойс тілді кез-келген қолданушы тіпті бағдарламалау дағдылары мен математика білімі жоқ адамдар қолдана алатындай етіп жасағысы келді[3][4].

Кодда симпозиумынан кейін Чемберлин мен Бойс келесі жылды тіл дизайнындағы эксперименттерде өткізді. Олардың алғашқы әрекеті SQUARE тілі болды (Relational Environment - тегі арнайы сұраулар), бірақ ол жоғарғы және төменгі математикалық белгілерге байланысты практикалық қолдануда күрделі болды.

1973 жылы Сан-Хосе ғылыми-зерттеу зертханасына көшкеннен кейін Чемберлин мен Бойс SEQUEL деп аталатын мүлдем жаңа тілде жұмыс істей бастады (құрылымдық Structured English QUEry Language ағылшын тілінен, «құрылымдық сұраныстардың ағылшын тілі»). Авторлар кішкене тәжірибеден кейін тіпті қарапайым қолданушылар (мысалы, бухгалтерлер, инженерлер, сәулетшілер, қала жоспарлаушылар[5]) сұраныстарды қарапайым ағылшын тілінде жазылғандай оқи алады деп үміттенді. Тіл «декларативті» деп аталды, өйткені ол осы ақпаратты іздеудің егжей-тегжейлі жоспарын емес, қажетті нәтижені сипаттады. Декларативті сұранысты егжей-тегжейлі орындау жоспарына аударумен арнайы оңтайландырушы компилятор айналысуы керек еді[3].

SEQUEL туралы алғашқы жалпыға қол жетімді мақала 1974 жылы жарық көрді[6]. Бір айдан кейін Рэй Бойс қайтыс болды. Ол қайтыс болғаннан кейін SEQUEL тілі IBM System R жобасының бөлігі ретінде дамуын жалғастырды. Пэт Селингер (Pat Selinger) құндылық оптимизаторын (cost-based optimizer) әзірлеумен айналысты, Раймонд Лори (Raymond Lorie) сұраныстарды құрастырумен айналысты.

1977 жылы авторлар Ұлыбританияның Hawker Siddeley авиакомпаниясының заңгерінен осы компанияның «SEQUEL» сауда маркасына иелік ететіндігі туралы хат алды. Тіл атауын SQL-ге дейін қысқарту туралы шешім қабылданды (Structured Query Language, «құрылымдық сұрау тілі»)[7]. Дегенмен, SEQUEL-дің бастапқы атауы SQL аббревиатурасының қазіргі айтылуына әсер етті.

Жаңа тілді қолдайтын алғашқы ДҚБЖ 1979 жылы Relational Software компаниясының (кейіннен компаниейacle компаниясы болған) VAX машиналары үшін Oracle V2 және System/R негізіндегі IBM фирмасының system/38 болды.

Бастапқыда SQL термині аббревиатура болды, бірақ 1986 жылғы ANSI бірінші ресми стандартында «құрылымдық тіл» деген тіркес еш жерде айтылмаған және тіл «Database Language — SQL» деп аталған[8]. Келесі ISO/IEC 9075:1989 және ISO/IEC 9075:1992 стандарттарында «Database Language — SQL» орнына «Database Language SQL» немесе жай «language SQL» атауы қолданылған[9]. Алайда ISO/IEC 9075-1:2011 стандартының сипаттамасында ISO сайтында «ISO/IEC 9075 defines Structured Query Language (SQL)» көрсетілген.

SQL мұндай мақсаттағы жалғыз тіл емес еді. Калифорния Беркли университетінде Коммерциялық емес Ingres ДҚБЖ (қазіргі уақытта танымал коммерциялық емес PostgreSQL ДҚБЖ-ның алыс атасы) әзірленді, ол реляциялық ДҚБЖ болды, бірақ өзінің QUEL тілін қолданды, ол SQL тілімен салыстырғанда оны қолдайтын ДҚБЖ саны бойынша бәсекелестікке төтеп бере алмады. Пайдаланушының дерекқорға қол жетімділігін қамтамасыз етудің балама тәсілі ретінде 1970 жылдары пайда болған QBE әдісі де қарастырылды, кейіннен бірқатар интеграцияланған деректерді басқару орталарында модификацияланған түрде пайда болды, бірақ ешқашан АЛМАСТЫРЫЛМАДЫ, тек SQL-ді толықтырды.

Стандарттау

1980 жылдардың басында әр түрлі өндірушілердің ДҚБЖ-нің бірнеше нұсқалары болғандықтан, олардың әрқайсысының сұраныс тілін өзіндік жүзеге асыруы болғандықтан, бір ДҚБЖ-дан екіншісіне ауысуға кепілдік беретін тіл стандартын әзірлеу туралы шешім қабылданды (егер олар осы стандартты қолдайтын болса).

1983 жылы Халықаралық стандарттау ұйымы (ISO) және Американдық ұлттық стандарттар институты (ANSI) SQL тілінің стандартын жасауға кірісті. Көптеген консультациялар мен бірнеше алдын — ала нұсқалардан бас тартқаннан кейін, 1986 жылы ANSI ANSI X3.135-1986 құжатында сипатталған «Database Language-SQL» (SQL мәліметтер базасының тілі) деп аталатын стандарттың алғашқы нұсқасын ұсынды[8]. Бейресми түрде бұл SQL-86 стандарты sql1 деп аталды. Бір жылдан кейін ISO 9075-1987 стандартының сол атаумен нұсқасы аяқталды. Бұл стандартты әзірлеу TC97 Техникалық комитетінің (ағылш. Technical Committee tc97), оның қызметі ақпаратты есептеу және өңдеу процестері болды (ағылш. Computing and Information Processing). Бұл SC21 кіші комитеті деп аталатын оның бөлімшесі (ағылш. Subcommittee SC21), стандарттың дамуын қадағалады, бұл SQL1 (SQL-86) үшін ISO және ANSI стандарттарының сәйкестігінің кепілі болды.

Sql1 стандарты екі деңгейге бөлінді. Бірінші деңгей бүкіл құжатты сипаттайтын екінші деңгейдің ішкі жиыны болды. Яғни, мұндай құрылым SQL1 стандартының барлық сипаттамалары 1 деңгейге жатпайтындығын қарастырды. Осылайша, осы стандартты қолдайтынын мәлімдеген жеткізуші оның SQL тілін іске асыруына сәйкес келетін деңгейді талап етуі керек еді. Бұл стандартты қабылдау мен қолдауды едәуір жеңілдетті, өйткені өндірушілер оны қолдауды екі кезеңде жүзеге асыра алды.

Уақыт өте келе стандартқа бірнеше ескертулер мен тілектер жинақталды, әсіресе деректердің тұтастығы мен дұрыстығын қамтамасыз ету тұрғысынан, нәтижесінде 1989 жылы бұл стандарт sql89 атауын ала отырып кеңейтілді. Атап айтқанда, оған бастапқы және сыртқы кілттер тұжырымдамасы қосылды. Құжаттың ISO нұсқасы ISO 9075:1989 «database language SQL with Integrity Enhancements» деп аталды (SQL мәліметтер базасының тілі тұтастықты бақылауды қосады). Сонымен қатар, ANSI нұсқасы да аяқталды.

1987 жылы sql1 стандартында жұмыс аяқталғаннан кейін бірден sql89 стандартын алмастыратын стандарттың жаңа нұсқасында жұмыс басталды, ол sql2 деп аталды, өйткені сол кезде құжаттың қабылданған күні белгісіз болды. Осылайша, іс жүзінде sql89 және sql2 қатар дамыды. Стандарттың жаңа нұсқасы 1992 жылы sql89 стандартын ауыстыру арқылы қабылданды. Sql92 деп аталатын жаңа стандарт негізінен sql1 стандартының кеңеюі болды, ол Нұсқаулықтың алдыңғы нұсқаларында бар көптеген толықтыруларды қамтыды[9].

SQL1 сияқты, SQL92 де бірнеше деңгейге бөлінді, бірақ біріншіден, деңгейлер саны екіден үшке дейін өсті, екіншіден, олар реттік сандардың орнына атаулар алды: бастапқы (ағылш. entry), орта (ағылш. Intermediate), толық (ағылш. full). «Толық» деңгей, sql1-дегі 2-деңгей сияқты, бүкіл стандартты білдіреді. «Бастапқы» деңгей «орташа» деңгейдің ішкі жиыны болды, өз кезегінде «толық» деңгейдің ішкі жиыны болды. «Бастапқы» деңгей sql1 стандартының 2 деңгейімен салыстырылды, бірақ бұл деңгейдің сипаттамалары біршама кеңейтілді. Осылайша, стандарттар деңгейлерін қосу тізбегі келесідей болды: SQL1 1 деңгей → SQL1 2 деңгей → sql92 «бастапқы»→ Sql92 «орташа» → Sql92 «толық».

Sql92 стандартын қабылдағаннан кейін оған тілдің функционалдығын кеңейтетін тағы бірнеше құжаттар қосылды. Сонымен, 1995 жылы SQL/CLI стандарты қабылданды (Call Level Interface, қоңырау деңгейінің интерфейсі), кейіннен CLI95 деп өзгертілді. Келесі жылы PSM-96 деп аталатын SQL/PSM (Persistent Stored Modules, үнемі сақталатын Модульдер) стандарты қабылданды.[12]

Келесі стандарт SQL болды: 1999 (SQL3). Қазіргі уақытта 2003 жылы қабылданған стандарт бар (SQL:2003) кейінірек енгізілген шағын модификациялармен (SQL:2008). Стандарт нұсқаларының тарихы:

Тіл элементтері

This chart shows several of the SQL language elements that compose a single statement.

SQL тілі келесі тіл элементтеріне бөлінген:

Сипаттамасы

SQL тілі келесі бөлімдердің жиынтығынан құралады:

  • операторлар;
  • инструкциялар;
  • және есептуіш функциялары.

Дереккөздер

  1. Paul, Ryan A guided tour of the Microsoft Command Shell. Ars Technica. Тексерілді, 10 сәуір 2011.
  2. https://peter.eisentraut.org/blog/2023/06/01/sql-2023-is-out
  3. a b Chamberlin, Donald (2012). "Early History of SQL". IEEE Annals of the History of Computing. 34 (4): 78—82.
  4. https://api.semanticscholar.org/CorpusID:1322572
  5. Donald D. Chamberlin, Raymond F. Boyce. SEQUEL: A structured English query language // Proceedings of the SIGFIDET '74. — N. Y.: AC, 1974. — С. 249—264.
  6. https://dx.doi.org/10.1145%2F800296.811515
  7. Andy Oppel. Databases Demystified. — San Francisco, CA: McGraw-Hill Osborne Media. — С. 90—91. — ISBN 0-07-146960-5.
  8. a b https://archive.org/details/federalinformati127nati/
  9. a b http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt