- СКЛ клаузула нам помаже да преузмемо скуп или снопове записа из табеле.
- СКЛ клаузула нам помаже да наведемо услов за колоне или записе табеле.
Различите клаузуле доступне у језику структурираних упита су следеће:
- ГДЕ КЛАУЗУЛА
- ГРУПА ПО КЛАУЗУЛИ
- ХАВИНГ КЛАУЗУЛА
- РЕД ПО КЛАУЗУЛИ
Хајде да видимо сваку клаузулу једну по једну са примером. Користићемо МиСКЛ базу података за писање упита у примерима.
подешавања веб претраживача
1. КЛАУЗУЛА ГДЕ
Клаузула ВХЕРЕ у СКЛ-у се користи са упитом СЕЛЕЦТ, који је једна од наредби језика за манипулацију подацима. Клаузуле ВХЕРЕ се могу користити за ограничавање броја редова који ће бити приказани у скупу резултата, генерално помаже у филтрирању записа. Враћа само оне упите који испуњавају специфичне услове клаузуле ВХЕРЕ. ВХЕРЕ клаузула се користи у СЕЛЕЦТ, УПДАТЕ, ДЕЛЕТЕ наредби итд.
ВХЕРЕ клаузула са СЕЛЕЦТ упитом
Симбол звездице се користи са клаузулом ВХЕРЕ у СЕЛЕЦТ упиту за преузимање свих вредности колона за сваки запис из табеле.
Синтакса клаузуле вхере са упитом за одабир за преузимање свих вредности колона за сваки запис из табеле:
SELECT * FROM TABLENAME WHERE CONDITION;
Ако у складу са захтевом желимо да преузмемо само селективне колоне, користићемо доњу синтаксу:
SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLENAME WHERE CONDITION;
Размотрите табелу запослених са следећим подацима:
Е_ИД | Име | Плата | Цити | Ознака | Датум приступања | Старост |
---|---|---|---|---|---|---|
1 | Саксхи Кумари | 50000 | Мумбаи | Вођа пројекта | 2021-06-20 | 24 |
2 | Тејасвини Наик | 75000 | Делхи | Систем инжењер | 2019-12-24 | 23 |
3 | Ануја Схарма | 40000 | Јаипур | Менаџер | 2021-08-15 | 26 |
4 | Анусхка Трипатхи | 90000 | Мумбаи | Тестери софтвера | 2021-06-13 | 24 |
5 | Руцха Јагтап | 45000 | Бангалоре | Вођа пројекта | 2020-08-09 | 23 |
6 | Рутуја Десхмукх | 60000 | Бангалоре | Менаџер | 2019-07-17 | 26 |
7 | Бавискаров глас | 55000 | Јаипур | Систем инжењер | 2021-10-10 | 24 |
8 | Ту је Шеик | 45000 | Пуне | Софтверски инжењер | 2020-09-10 | 26 |
9 | Свати Кумари | 50000 | Пуне | Тестери софтвера | 2021-01-01 | 25 |
10 | Маиури Пател | 60000 | Мумбаи | Вођа пројекта | 2020-10-02 | 24 |
Једанаест | Симран Кханна | 45500 | Колхапур | ХР | 2019-01-02 | 26 |
12 | Схивани Вагх | 50500 | Делхи | Програмер | 2016-09-10 | 25 |
13 | Киран Махесхвари | 50000 | Насхик | ХР | 2013-12-12 | 23 |
14 | Тејал Јаин | 40000 | Делхи | Вођа пројекта | 2017-11-10 | 25 |
петнаест | Мохини Схах | 38000 | Пуне | Програмер | 2019-03-05 | двадесет |
Пример 1:
Напишите упит да бисте преузели све оне записе о запосленом где је плата већа од 50000.
упит:
mysql> SELECT * FROM employees WHERE Salary > 50000;
Горњи упит ће приказати све оне записе о запосленом код којих је плата већа од 50000. Плата испод 50000 неће бити приказана према условима.
Добићете следећи излаз:
Према очекиваном резултату, приказују се само они записи где је плата запосленог већа од 50000. У табели запосленог постоји шест записа који задовољавају дати услов.
Пример 2:
Напишите упит за ажурирање евиденције запосленог и поставите ажурирано име као „Харсхада Схарма“ где је назив града запосленог Џајпур.
упит:
mysql> UPDATE employees SET Name = 'Harshada Sharma' WHERE City = 'Jaipur';
Горњи упит ће ажурирати име запосленог у „Харсхада Схарма“, где је град запосленог Џајпур.
Да бисмо проверили да ли су записи ажурирани или не, покренућемо упит за одабир.
mysql> SELECT * FROM employees;
Постоји само један запис у табели запослених где је град запосленог „Џајпур“. Ид записа је 3, што задовољава дати услов. Дакле, према датом услову, име запосленог са ИД-ом запосленог 3 је сада промењено у 'Харсхада Схарма'.
Пример 3:
Напишите упит за брисање записа запосленог где је датум придруживања запосленог „2013-12-12“.
упит:
mysql> DELETE FROM employees WHERE Date_of_Joining = '2013-12-12';
Горњи упит ће избрисати податке о запосленику чији је датум придруживања '2013-12-12'.
Да бисмо проверили резултате горњег упита, извршићемо упит за одабир.
mysql> SELECT *FROM employees;
Постоји само један запис у табели запослених где је датум придруживања запосленог '2013-12-12'. Ид записа је 13, што задовољава дати услов. Дакле, према датом услову, запослени са ИД-ом 13 сада се брише из табеле запосленог.
2. ГРУПА ПО КЛАУЗУЛИ
Клаузула Гроуп Би се користи за распоређивање сличних врста записа у групе у језику структурираних упита. Клаузула Гроуп би у језику структурираних упита користи се са наредбом Селецт. Група по клаузула се поставља после клаузуле вхере у СКЛ наредби. Клаузула Гроуп Би се посебно користи са агрегатном функцијом, тј. мак (), мин (), авг (), сум (), цоунт () за груписање резултата на основу једне или више колона.
Синтакса групе по клаузули:
SELECT * FROM TABLENAME GROUP BY COLUMNNAME;
Горња синтакса ће изабрати све податке или записе из табеле, али ће све те податке или записе распоредити у групе на основу назива колоне датог у упиту.
Синтакса групе по клаузули са агрегатним функцијама:
SELECT COLUMNNAME1, Aggregate_FUNCTION (COLUMNNAME) FROM TABLENAME GROUP BY COLUMNNAME;
Хајде да разумемо клаузулу Гроуп Би уз помоћ примера.
Размотрите табелу запослених са следећим подацима:
Е_ИД | Име | Плата | Цити | Ознака | Датум приступања | Старост |
---|---|---|---|---|---|---|
1 | Саксхи Кумари | 50000 | Мумбаи | Вођа пројекта | 2021-06-20 | 24 |
2 | Тејасвини Наик | 75000 | Делхи | Систем инжењер | 2019-12-24 | 23 |
3 | Ануја Схарма | 40000 | Јаипур | Менаџер | 2021-08-15 | 26 |
4 | Анусхка Трипатхи | 90000 | Мумбаи | Тестери софтвера | 2021-06-13 | 24 |
5 | Руцха Јагтап | 45000 | Бангалоре | Вођа пројекта | 2020-08-09 | 23 |
6 | Рутуја Десхмукх | 60000 | Бангалоре | Менаџер | 2019-07-17 | 26 |
7 | Бавискаров глас | 55000 | Јаипур | Систем инжењер | 2021-10-10 | 24 |
8 | Ту је Шеик | 45000 | Пуне | Софтверски инжењер | 2020-09-10 | 26 |
9 | Свати Кумари | 50000 | Пуне | Тестери софтвера | 2021-01-01 | 25 |
10 | Маиури Пател | 60000 | Мумбаи | Вођа пројекта | 2020-10-02 | 24 |
Једанаест | Симран Кханна | 45500 | Колхапур | ХР | 2019-01-02 | 26 |
12 | Схивани Вагх | 50500 | Делхи | Програмер | 2016-09-10 | 25 |
13 | Киран Махесхвари | 50000 | Насхик | ХР | 2013-12-12 | 23 |
14 | Тејал Јаин | 40000 | Делхи | Вођа пројекта | 2017-11-10 | 25 |
петнаест | Мохини Схах | 38000 | Пуне | Програмер | 2019-03-05 | двадесет |
Пример 1:
Напишите упит да бисте приказали све записе табеле запослених, али групишите резултате на основу колоне старости.
упит:
mysql> SELECT * FROM employees GROUP BY Age;
Горњи упит ће приказати све записе табеле запослених, али груписане по колони старости.
Добићете следећи излаз:
Пример 2:
Напишите упит за приказ свих записа табеле запослених груписаних по називу и платама.
упит:
mysql> SELECT * FROM employees GROUP BY Salary, Designation;
Горњи упит ће приказати све записе табеле запослених, али груписане по колони плата и ознака.
Добићете следећи излаз:
Примери клаузуле Гроуп Би која користи агрегатне функције
Пример 1:
Напишите упит да бисте навели број запослених који раде на одређеној ознаци и групишите резултате према ознаци запосленог.
упит:
mysql> SELECT COUNT (E_ID) AS Number_of_Employees, Designation FROM employees GROUP BY Designation;
Горњи упит ће приказати ознаку са одговарајућим бројем запослених који раде на тој ознаци. Сви ови резултати биће груписани у колони за означавање.
Добићете следећи излаз:
Према очекиваном резултату, приказује се ознака са одговарајућим бројем запослених.
Пример 2:
Напишите упит да бисте приказали збир плате запосленог према граду групиран према старости запосленог.
упит:
mysql> SELECT SUM (Salary) AS Salary, City FROM employees GROUP BY City;
Горњи упит ће прво израчунати збир плата које раде у сваком граду, а затим ће приказати збир плата са одговарајућом платом, али груписан по колони старости.
Добићете следећи излаз:
Према очекиваном резултату, приказује се збир плате запослених према граду коме запослени припада. Ако два запослена припадају истом граду, онда ће бити у једној групи.
3. ИМАЈУЋИ КЛАУЗУЛУ:
Када треба да поставимо било који услов на колону табеле, користимо клаузулу ВХЕРЕ у СКЛ-у. Али ако желимо да користимо било који услов за колону у клаузули Гроуп Би у то време, користићемо клаузулу ХАВИНГ са клаузулом Гроуп Би за услове колоне.
Синтакса:
TABLENAME GROUP BY COLUMNNAME HAVING CONDITION;
Размотрите табелу запослених са следећим подацима:
Е_ИД | Име | Плата | Цити | Ознака | Датум приступања | Старост |
---|---|---|---|---|---|---|
1 | Саксхи Кумари | 50000 | Мумбаи | Вођа пројекта | 2021-06-20 | 24 |
2 | Тејасвини Наик | 75000 | Делхи | Систем инжењер | 2019-12-24 | 23 |
3 | Ануја Схарма | 40000 | Јаипур | Менаџер | 2021-08-15 | 26 |
4 | Анусхка Трипатхи | 90000 | Мумбаи | Тестери софтвера | 2021-06-13 | 24 |
5 | Руцха Јагтап | 45000 | Бангалоре | Вођа пројекта | 2020-08-09 | 23 |
6 | Рутуја Десхмукх | 60000 | Бангалоре | Менаџер | 2019-07-17 | 26 |
7 | Бавискаров глас | 55000 | Јаипур | Систем инжењер | 2021-10-10 | 24 |
8 | Ту је Шеик | 45000 | Пуне | Софтверски инжењер | 2020-09-10 | 26 |
9 | Свати Кумари | 50000 | Пуне | Тестери софтвера | 2021-01-01 | 25 |
10 | Маиури Пател | 60000 | Мумбаи | Вођа пројекта | 2020-10-02 | 24 |
Једанаест | Симран Кханна | 45500 | Колхапур | ХР | 2019-01-02 | 26 |
12 | Схивани Вагх | 50500 | Делхи | Програмер | 2016-09-10 | 25 |
13 | Киран Махесхвари | 50000 | Насхик | ХР | 2013-12-12 | 23 |
14 | Тејал Јаин | 40000 | Делхи | Вођа пројекта | 2017-11-10 | 25 |
петнаест | Мохини Схах | 38000 | Пуне | Програмер | 2019-03-05 | двадесет |
Пример 1:
Напишите упит за приказ имена запослених, плате и града у којем је максимална плата запосленог већа од 40000 и групишите резултате према ознакама.
упит:
mysql> SELECT Name, City, MAX (Salary) AS Salary FROM employees GROUP BY Designation HAVING MAX (Salary) > 40000;
Добићете следећи излаз:
Горњи излаз показује да је име запосленог, плата и град запосленог где је плата већа од 40000 груписане по ознаци. (Запослени са сличном ознаком се стављају у једну групу, а они са другом ознаком одвојено).
Пример 2:
Напишите упит за приказ имена запослених и ознаке где је збир плате запосленог већи од 45000 и групишите резултате по градовима.
упит:
mysql> SELECT Name, Designation, SUM (Salary) AS Salary FROM employees GROUP BY City HAVING SUM (Salary) > 45000;
Добићете следећи излаз:
Горњи излаз показује име запосленог, ознаку и плату запосленог. Збир плата је већи од 45000 груписаних по градовима. (Запослени са сличним градовима су смештени у једну групу, а они са другим градом нису слични одвојено).
4. РЕДОВАЊЕ ПО КЛАЗУ
Кад год желимо да сортирамо било шта у СКЛ-у, користимо клаузулу ОРДЕР БИ. Клаузула ОРДЕР БИ у СКЛ-у ће нам помоћи да сортирамо податке на основу одређене колоне табеле. То значи да ће сви подаци ускладиштени у одређеној колони на којој извршавамо ОРДЕР БИ клаузулу бити сортирани. Одговарајуће вредности колона ће бити приказане у редоследу у којем смо добили вредности у ранијем кораку.
Као што сви знамо, сортирање значи или у растућем или падајућем РЕДОСРЕДУ. На исти начин, ОРДЕР БИ ЦЛАУСЕ сортира податке у растућем или опадајућем редоследу према нашем захтеву. Подаци ће бити сортирани узлазним редоследом кад год се АСЦ кључна реч се користи са клаузулом ОРДЕР би, а ДЕСЦ кључна реч сортираће записе у опадајућем редоследу.
Подразумевано, сортирање у СКЛ-у ће бити обављено коришћењем ОРДЕР БИ клаузуле у растућем редоследу ако нисмо споменули редослед сортирања.
Пре него што пређемо на пример ОРДЕР БИ клаузуле за сортирање записа, прво ћемо погледати синтаксу тако да ће нам бити лако да прођемо кроз пример.
Синтакса ОРДЕР БИ клаузуле без кључне речи асц и десц:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMNAME;
Синтакса ОРДЕР БИ клаузуле за сортирање у растућем редоследу:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME ASC;
Синтакса ОРДЕР БИ клаузуле за сортирање у опадајућем редоследу:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME DESC;
Узмите у обзир да имамо табелу запослених са следећим подацима:
Е_ИД | Име | Плата | Цити | Ознака | Датум приступања | Старост |
---|---|---|---|---|---|---|
1 | Саксхи Кумари | 50000 | Мумбаи | Вођа пројекта | 2021-06-20 | 24 |
2 | Тејасвини Наик | 75000 | Делхи | Систем инжењер | 2019-12-24 | 23 |
3 | Ануја Схарма | 40000 | Јаипур | Менаџер | 2021-08-15 | 26 |
4 | Анусхка Трипатхи | 90000 | Мумбаи | Тестери софтвера | 2021-06-13 | 24 |
5 | Руцха Јагтап | 45000 | Бангалоре | Вођа пројекта | 2020-08-09 | 23 |
6 | Рутуја Десхмукх | 60000 | Бангалоре | Менаџер | 2019-07-17 | 26 |
7 | Бавискаров глас | 55000 | Јаипур | Систем инжењер | 2021-10-10 | 24 |
8 | Ту је Шеик | 45000 | Пуне | Софтверски инжењер | 2020-09-10 | 26 |
9 | Свати Кумари | 50000 | Пуне | Тестери софтвера | 2021-01-01 | 25 |
10 | Маиури Пател | 60000 | Мумбаи | Вођа пројекта | 2020-10-02 | 24 |
Једанаест | Симран Кханна | 45500 | Колхапур | ХР | 2019-01-02 | 26 |
12 | Схивани Вагх | 50500 | Делхи | Програмер | 2016-09-10 | 25 |
13 | Киран Махесхвари | 50000 | Насхик | ХР | 2013-12-12 | 23 |
14 | Тејал Јаин | 40000 | Делхи | Вођа пројекта | 2017-11-10 | 25 |
петнаест | Мохини Схах | 38000 | Пуне | Програмер | 2019-03-05 | двадесет |
Пример 1:
Напишите упит да бисте сортирали записе у растућем редоследу ознаке запосленог из табеле запослених.
упит:
mysql> SELECT * FROM employees ORDER BY Designation;
Овде у СЕЛЕЦТ упиту, ОРДЕР БИ клаузула се примењује на колону 'Десигнатион' за сортирање записа, али нисмо користили кључну реч АСЦ после ОРДЕР БИ клаузуле за сортирање у растућем редоследу. Дакле, подразумевано, подаци ће бити сортирани у растућем редоследу ако не наведемо кључну реч асц.
Добићете следећи излаз:
У складу са очекиваним резултатом, записи се приказују растућим редоследом према називу запосленог.
Пример 2:
Напишите упит за приказ имена и плате запосленог у растућем редоследу плате запосленог из табеле запослених.
упит:
убаците у тастатуру
mysql> SELECT Name, Salary FROM employees ORDER BY Salary ASC;
Овде у СЕЛЕЦТ упиту, ОРДЕР БИ клаузула се примењује на колону 'Плата' да би се сортирали записи. Користили смо кључну реч АСЦ да сортирамо плату запосленог у растућем редоследу.
Добићете следећи излаз:
Сви записи се приказују у растућем редоследу плате запосленог.
Пример 3:
Напишите упит да бисте сортирали податке у опадајућем редоследу имена запосленог који је ускладиштен у табели запослених.
упит:
mysql> SELECT * FROM employees ORDER BY Name DESC;
Овде смо користили клаузулу ОРДЕР БИ са упитом СЕЛЕЦТ примењеном на колону Наме за сортирање података. Користили смо кључну реч ДЕСЦ после клаузуле ОРДЕР БИ да сортирамо податке опадајућем редоследу.
Добићете следећи излаз:
Сви записи се приказују у опадајућем редоследу имена запосленог.