Кіріспе

Бір немесе бірнеше кестеден қатарлар жиынтығын қайтаратын SQL операторы – SQL SELECT операторы, бір немесе бірнеше кестеден қатарлар жиынтығын қайтарады. SELECT операторы бір немесе бірнеше дерекқоры кестелерінен немесе дерекқоры көріністерінен нөл немесе одан көп қатарларды алады. Көптеген қолданбаларда SELECT – деректерді манипуляциялау тілінің (DML) ең көп қолданылатын командасы. SQL декларативтік бағдарламалау тілі болғандықтан, SELECT сұраныстары нәтижелер жиынтығын көрсетеді, бірақ оны қалай есептеу керектігін көрсетпейді. Дерекқоры сұранысты "сұрау жоспарына" аударады, ол орындалу, дерекқоры нұсқалары және дерекқоры бағдарламалық жасақтамалары арасында өзгеруі мүмкін. Бұл мүмкіндік "сұрауты оңтайландырушы" деп аталады, өйткені ол қолданылатын шектеулер шегінде сұрау үшін ең жақсы орындау жоспарын табуға жауапты. SELECT операторында көптеген қосымша тармақтар бар:

SELECT тізімі – сұраныс қайтаратын бағандар немесе SQL өрнектер тізімі. Бұл шамамен реляциялық алгебраның проекция операциясы. AS опциясы SELECT тізіміндегі әрбір бағанға немесе өрнекке псевдоним береді. Бұл реляциялық алгебраның атауын өзгерту операциясы. FROM деректерді қай кестеден алу керектігін көрсетеді. WHERE қай қатарларды алу керектігін анықтайды. Бұл шамамен реляциялық алгебраның таңдау операциясы. GROUP BY қасиетті бөлісетін қатарларды топқа біріктіреді, содан кейін әр топқа жиынтық функция қолданылады. HAVING GROUP BY тармағымен анықталған топтардың арасынан таңдайды. ORDER BY қайтарылған қатарларды қалай реттеу керектігін көрсетеді.

Жолдар парақшасы

Жолдар парақшалау – дерекқорындағы сұраныстың барлық деректерінің бір бөлігін ғана шектеу және көрсетуге арналған тәсіл. Мыңдаған немесе жүздеген қатарларды бірден көрсету орнына, серверден тек бір бет (қатарлардың шектеулі жиынтығы, мысалы, 10 қатар) сұралады, ал пайдаланушы келесі бетті, содан кейін келесісін сұрау арқылы навигациялай бастайды. Бұл әсіресе веб-жүйелерде өте пайдалы, себебі клиент пен сервер арасында арнайы байланыс болмайды, сондықтан клиент сервердің барлық деректерін оқып, көрсету үшін күтуге қажеті жоқ.

RDBMS жеткізушілерінің терезесі функцияларын қолдау

Реляциялық деректер базалары мен SQL қозғалтқыштарының жеткізушілері терезе функцияларын іске асыруда үлкен айырмашылықтарға тап болады. Көптеген деректер базалары кем дегенде терезе функцияларының бір түрін қолдайды. Дегенмен, жақыннан қарап көрсек, көптеген жеткізушілер стандарттың тек бір бөлігін ғана іске асыратыны көрінеді. Мысалы, қуатты RANGE операторын қарастырайық. Оны толыққанды Oracle, DB2, Spark/Hive және Google BigQuery ғана қолдайды. Соңғы кезде жеткізушілер стандартқа жаңа кеңейтімдерді, мысалы, массивтік агрегация функцияларын қосты. Бұл үлестірілген файлдық жүйеге (Hadoop, Spark, Google BigQuery) қарсы SQL сұрауларын орындау кезінде ерекше пайдалы, себебі онда деректердің бірге орналасуына кепілдіктер үлестірілген реляциялық деректер базасына (MPP) қарағанда нашар. Деректерді барлық түйіндерге тең бөлудің орнына, үлестірілген файлдық жүйеге сұрау салуларды орындайтын SQL қозғалтқыштары деректердің бірге орналасуын қамтамасыз ету арқылы желідегі ауыр алмасуды талап ететін қымбат тұратын қосылулардан аулақ бола алады. Терезе функцияларында қолданылатын пайдаланушы анықтаған жиынтық функциялары да өте қуатты мүмкіндік болып табылады.