- SQL клаузата ни помага да извлечем набор или пакети от записи от таблицата.
- SQL клаузата ни помага да зададем условие за колоните или записите на таблица.
Различните клаузи, налични в езика за структурирани заявки, са както следва:
- WHERE КЛАУЗА
- ГРУПИРАНЕ ПО КЛАУЗА
- С КЛАУЗА
- ПОРЪЧКА ПО КЛАУЗА
Нека видим всяка клауза една по една с пример. Ще използваме MySQL база данни за писане на заявките в примери.
1. КЛАУЗА WHERE
Клауза WHERE в SQL се използва със заявката SELECT, която е една от командите на езика за манипулиране на данни. Клаузите WHERE могат да се използват за ограничаване на броя на редовете, които да се показват в набора от резултати, като цяло това помага при филтрирането на записите. Той връща само тези заявки, които отговарят на специфичните условия на клаузата WHERE. Клаузата WHERE се използва в израза SELECT, UPDATE, DELETE и др.
Клауза WHERE със заявка SELECT
Символът звездичка се използва с клауза WHERE в заявка SELECT за извличане на всички стойности на колони за всеки запис от таблица.
Синтаксис на клауза where със заявка за избор за извличане на всички стойности на колони за всеки запис от таблица:
случай на превключване на java
SELECT * FROM TABLENAME WHERE CONDITION;
Ако според изискването искаме да извлечем само селективни колони, тогава ще използваме синтаксиса по-долу:
SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLENAME WHERE CONDITION;
Помислете за таблицата на служителите със следните данни:
E_ID | Име | Заплата | град | Обозначаване | Дата на присъединяване | Възраст |
---|---|---|---|---|---|---|
1 | Сакши Кумари | 50 000 | Мумбай | Ръководител проект | 20.06.2021 г | 24 |
2 | Теясвини Найк | 75 000 | Делхи | Системен инженер | 2019-12-24 | 23 |
3 | Ануджа Шарма | 40 000 | Джайпур | Управител | 2021-08-15 | 26 |
4 | Анушка Трипати | 90 000 | Мумбай | Софтуерни тестери | 2021-06-13 | 24 |
5 | Руча Джагтап | 45 000 | Бангалор | Ръководител проект | 2020-08-09 | 23 |
6 | Рутуджа Дешмукх | 60 000 | Бангалор | Управител | 2019-07-17 | 26 |
7 | Гласът на Бавискар | 55 000 | Джайпур | Системен инженер | 2021-10-10 | 24 |
8 | Има Шейх | 45 000 | Пуна | Софтуерен инженер | 2020-09-10 | 26 |
9 | Свати Кумари | 50 000 | Пуна | Софтуерни тестери | 2021-01-01 | 25 |
10 | Маюри Пател | 60 000 | Мумбай | Ръководител проект | 2020-10-02 | 24 |
единадесет | Симран Хана | 45500 | Колхапур | HR | 2019-01-02 | 26 |
12 | Шивани Ваг | 50500 | Делхи | Разработчик на софтуер | 2016-09-10 | 25 |
13 | Киран Махешвари | 50 000 | Нашик | HR | 2013-12-12 | 23 |
14 | Теджал Джайн | 40 000 | Делхи | Ръководител проект | 2017-11-10 | 25 |
петнадесет | Мохини Шах | 38 000 | Пуна | Разработчик на софтуер | 2019-03-05 | двадесет |
Пример 1:
Напишете заявка, за да извлечете всички онези записи на служител, чиято заплата е по-голяма от 50 000.
Запитване:
mysql> SELECT * FROM employees WHERE Salary > 50000;
Горната заявка ще покаже всички онези записи на служител, където заплатата на служителя е по-голяма от 50 000. Заплата под 50 000 няма да се показва според условията.
Ще получите следния изход:
Според очаквания резултат се показват само тези записи, при които заплатата на служител е по-голяма от 50 000. Има шест записа в таблицата на служителя, които отговарят на даденото условие.
Пример 2:
Напишете заявка за актуализиране на записа на служителя и задайте актуализираното име като „Harshada Sharma“, където името на града на служителя е Jaipur.
Запитване:
mysql> UPDATE employees SET Name = 'Harshada Sharma' WHERE City = 'Jaipur';
Горната заявка ще актуализира името на служителя на „Harshada Sharma“, където градът на служителя е Джайпур.
За да проверим дали записите са актуализирани или не, ще изпълним заявка за избор.
mysql> SELECT * FROM employees;
Има само един запис в таблицата на служителя, където градът на служителя е „Джайпур“. ID на записа е 3, което отговаря на даденото условие. Следователно, според даденото условие, името на служителя с идентификатор на служител 3 вече е променено на „Harshada Sharma“.
Пример 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“. ID на записа е 13, което отговаря на даденото условие. Следователно според даденото условие служителят с идентификатор на служител 13 сега се изтрива от таблицата на служителя.
2. ГРУПИРАНЕ ПО КЛАУЗА
Клаузата Group By се използва за подреждане на подобни видове записи в групите в езика за структурирани заявки. Клаузата Group by в езика за структурирани заявки се използва с оператор Select. Групиране по клауза се поставя след клаузата where в SQL оператора. Клаузата Group By се използва специално с функцията за обобщаване, т.е. max (), min (), avg (), sum (), count () за групиране на резултата въз основа на една или повече от една колона.
Синтаксисът на клаузата Group By:
SELECT * FROM TABLENAME GROUP BY COLUMNNAME;
Горният синтаксис ще избере всички данни или записи от таблицата, но ще подреди всички тези данни или записи в групите въз основа на името на колоната, дадено в заявката.
Синтаксисът на клаузата Group By с агрегатни функции:
SELECT COLUMNNAME1, Aggregate_FUNCTION (COLUMNNAME) FROM TABLENAME GROUP BY COLUMNNAME;
Нека разберем клаузата Group By с помощта на примери.
Разгледайте таблицата на служителите със следните данни:
E_ID | Име | Заплата | град | Обозначаване | Дата на присъединяване | Възраст |
---|---|---|---|---|---|---|
1 | Сакши Кумари | 50 000 | Мумбай | Ръководител проект | 20.06.2021 г | 24 |
2 | Теясвини Найк | 75 000 | Делхи | Системен инженер | 2019-12-24 | 23 |
3 | Ануджа Шарма | 40 000 | Джайпур | Управител | 2021-08-15 | 26 |
4 | Анушка Трипати | 90 000 | Мумбай | Софтуерни тестери | 2021-06-13 | 24 |
5 | Руча Джагтап | 45 000 | Бангалор | Ръководител проект | 2020-08-09 | 23 |
6 | Рутуджа Дешмукх | 60 000 | Бангалор | Управител | 2019-07-17 | 26 |
7 | Гласът на Бавискар | 55 000 | Джайпур | Системен инженер | 2021-10-10 | 24 |
8 | Има Шейх | 45 000 | Пуна | Софтуерен инженер | 2020-09-10 | 26 |
9 | Свати Кумари | 50 000 | Пуна | Софтуерни тестери | 2021-01-01 | 25 |
10 | Маюри Пател | 60 000 | Мумбай | Ръководител проект | 2020-10-02 | 24 |
единадесет | Симран Хана | 45500 | Колхапур | HR | 2019-01-02 | 26 |
12 | Шивани Ваг | 50500 | Делхи | Разработчик на софтуер | 2016-09-10 | 25 |
13 | Киран Махешвари | 50 000 | Нашик | HR | 2013-12-12 | 23 |
14 | Теджал Джайн | 40 000 | Делхи | Ръководител проект | 2017-11-10 | 25 |
петнадесет | Мохини Шах | 38 000 | Пуна | Разработчик на софтуер | 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. С КЛАУЗА:
Когато трябва да поставим условия в колоната на таблицата, използваме клаузата WHERE в SQL. Но ако искаме да използваме някакво условие за колона в клаузата Group By по това време, ще използваме клаузата HAVING с клаузата Group By за условията на колоната.
Синтаксис:
TABLENAME GROUP BY COLUMNNAME HAVING CONDITION;
Разгледайте таблицата на служителите със следните данни:
E_ID | Име | Заплата | град | Обозначаване | Дата на присъединяване | Възраст |
---|---|---|---|---|---|---|
1 | Сакши Кумари | 50 000 | Мумбай | Ръководител проект | 20.06.2021 г | 24 |
2 | Теясвини Найк | 75 000 | Делхи | Системен инженер | 2019-12-24 | 23 |
3 | Ануджа Шарма | 40 000 | Джайпур | Управител | 2021-08-15 | 26 |
4 | Анушка Трипати | 90 000 | Мумбай | Софтуерни тестери | 2021-06-13 | 24 |
5 | Руча Джагтап | 45 000 | Бангалор | Ръководител проект | 2020-08-09 | 23 |
6 | Рутуджа Дешмукх | 60 000 | Бангалор | Управител | 2019-07-17 | 26 |
7 | Гласът на Бавискар | 55 000 | Джайпур | Системен инженер | 2021-10-10 | 24 |
8 | Има Шейх | 45 000 | Пуна | Софтуерен инженер | 2020-09-10 | 26 |
9 | Свати Кумари | 50 000 | Пуна | Софтуерни тестери | 2021-01-01 | 25 |
10 | Маюри Пател | 60 000 | Мумбай | Ръководител проект | 2020-10-02 | 24 |
единадесет | Симран Хана | 45500 | Колхапур | HR | 2019-01-02 | 26 |
12 | Шивани Ваг | 50500 | Делхи | Разработчик на софтуер | 2016-09-10 | 25 |
13 | Киран Махешвари | 50 000 | Нашик | HR | 2013-12-12 | 23 |
14 | Теджал Джайн | 40 000 | Делхи | Ръководител проект | 2017-11-10 | 25 |
петнадесет | Мохини Шах | 38 000 | Пуна | Разработчик на софтуер | 2019-03-05 | двадесет |
Пример 1:
Напишете заявка за показване на името на служителите, заплатата и града, където максималната заплата на служителя е по-голяма от 40 000 и групирайте резултатите по предназначение.
Запитване:
mysql> SELECT Name, City, MAX (Salary) AS Salary FROM employees GROUP BY Designation HAVING MAX (Salary) > 40000;
Ще получите следния изход:
Горният резултат показва, че името на служителя, заплатата и града на служител, където заплатата на служителя е по-голяма от 40 000, групирани по предназначение. (Служителите с подобно предназначение се поставят в една група, а тези с друго предназначение се поставят отделно).
Пример 2:
Напишете заявка за показване на имената на служителите и обозначението, когато сумата на заплатата на служител е по-голяма от 45 000 и групирайте резултатите по град.
опа концепция в java
Запитване:
mysql> SELECT Name, Designation, SUM (Salary) AS Salary FROM employees GROUP BY City HAVING SUM (Salary) > 45000;
Ще получите следния изход:
Горният резултат показва името на служителя, длъжността и заплатата на служителя. Сумата на заплатата е по-голяма от 45 000 групирани по град. (Служителите с подобни градове се поставят в една група, а тези с различен град, които не са подобни, се поставят отделно).
4. ПОРЪЧКА ПО КЛАУЗА
Винаги, когато искаме да сортираме нещо в SQL, използваме клаузата ORDER BY. Клаузата ORDER BY в SQL ще ни помогне да сортираме данните въз основа на конкретна колона на таблица. Това означава, че всички данни, съхранени в конкретната колона, върху която изпълняваме клаузата ORDER BY, ще бъдат сортирани. Стойностите на съответните колони ще бъдат показани в последователността, в която сме получили стойностите в предишната стъпка.
Както всички знаем, сортирането означава или във ВЪЗХОДЯЩ, или в НИЗХОДЯЩ РЕД. По същия начин ORDER BY CLAUSE сортира данните във възходящ или низходящ ред според нашите изисквания. Данните ще бъдат сортирани във възходящ ред, когато ASC ключова дума се използва с ORDER по клауза и the Ключова дума DESC ще сортира записите в низходящ ред.
По подразбиране сортирането в SQL ще се извършва с помощта на клаузата ORDER BY във ВЪЗХОДЯЩ ред, ако не сме споменали реда на сортиране.
Преди да преминем към примера на клаузата ORDER BY за сортиране на записите, първо ще разгледаме синтаксиса, така че ще ни бъде лесно да преминем през примера.
Синтаксис на клаузата ORDER BY без ключова дума asc и desc:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMNAME;
Синтаксис на клаузата ORDER BY за сортиране във възходящ ред:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME ASC;
Синтаксис на клаузата ORDER BY за сортиране в низходящ ред:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME DESC;
Да приемем, че имаме таблица на служителите със следните данни:
E_ID | Име | Заплата | град | Обозначаване | Дата на присъединяване | Възраст |
---|---|---|---|---|---|---|
1 | Сакши Кумари | 50 000 | Мумбай | Ръководител проект | 20.06.2021 г | 24 |
2 | Теясвини Найк | 75 000 | Делхи | Системен инженер | 2019-12-24 | 23 |
3 | Ануджа Шарма | 40 000 | Джайпур | Управител | 2021-08-15 | 26 |
4 | Анушка Трипати | 90 000 | Мумбай | Софтуерни тестери | 2021-06-13 | 24 |
5 | Руча Джагтап | 45 000 | Бангалор | Ръководител проект | 2020-08-09 | 23 |
6 | Рутуджа Дешмукх | 60 000 | Бангалор | Управител | 2019-07-17 | 26 |
7 | Гласът на Бавискар | 55 000 | Джайпур | Системен инженер | 2021-10-10 | 24 |
8 | Има Шейх | 45 000 | Пуна | Софтуерен инженер | 2020-09-10 | 26 |
9 | Свати Кумари | 50 000 | Пуна | Софтуерни тестери | 2021-01-01 | 25 |
10 | Маюри Пател | 60 000 | Мумбай | Ръководител проект | 2020-10-02 | 24 |
единадесет | Симран Хана | 45500 | Колхапур | HR | 2019-01-02 | 26 |
12 | Шивани Ваг | 50500 | Делхи | Разработчик на софтуер | 2016-09-10 | 25 |
13 | Киран Махешвари | 50 000 | Нашик | HR | 2013-12-12 | 23 |
14 | Теджал Джайн | 40 000 | Делхи | Ръководител проект | 2017-11-10 | 25 |
петнадесет | Мохини Шах | 38 000 | Пуна | Разработчик на софтуер | 2019-03-05 | двадесет |
Пример 1:
Напишете заявка за сортиране на записите във възходящ ред на обозначението на служителите от таблицата на служителите.
Запитване:
mysql> SELECT * FROM employees ORDER BY Designation;
Тук, в заявка SELECT, клауза ORDER BY се прилага към колоната „Designation“ за сортиране на записите, но не използвахме ключовата дума ASC след клаузата ORDER BY, за да сортираме във възходящ ред. Така че по подразбиране данните ще бъдат сортирани във възходящ ред, ако не посочим ключова дума asc.
Ще получите следния изход:
Според очаквания резултат, записите се показват във възходящ ред според назначението на служителя.
Пример 2:
Напишете заявка за показване на името и заплатата на служителя във възходящ ред на заплатата на служителя от таблицата на служителите.
Запитване:
mysql> SELECT Name, Salary FROM employees ORDER BY Salary ASC;
Тук, в заявка SELECT, клауза ORDER BY се прилага към колоната „Заплата“, за да сортирате записите. Използвахме ключовата дума ASC, за да сортираме заплатата на служителя във възходящ ред.
Ще получите следния изход:
всички главни букви команда excel
Всички записи се показват във възходящ ред на заплатата на служителя.
Пример 3:
Напишете заявка за сортиране на данните в низходящ ред на името на служителя, съхранено в таблицата на служителите.
Запитване:
mysql> SELECT * FROM employees ORDER BY Name DESC;
Тук сме използвали клаузата ORDER BY със заявката SELECT, приложена към колоната Име, за да сортираме данните. Използвахме ключовата дума DESC след клаузата ORDER BY, за да сортираме данните в низходящ ред.
Ще получите следния изход:
Всички записи се показват в низходящ ред на името на служителя.