logo

SQL КЛАУЗИ

  • SQL клаузата ни помага да извлечем набор или пакети от записи от таблицата.
  • SQL клаузата ни помага да зададем условие за колоните или записите на таблица.

Различните клаузи, налични в езика за структурирани заявки, са както следва:

  1. WHERE КЛАУЗА
  2. ГРУПИРАНЕ ПО КЛАУЗА
  3. С КЛАУЗА
  4. ПОРЪЧКА ПО КЛАУЗА

Нека видим всяка клауза една по една с пример. Ще използваме 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 няма да се показва според условията.

Ще получите следния изход:

SQL КЛАУЗИ

Според очаквания резултат се показват само тези записи, при които заплатата на служител е по-голяма от 50 000. Има шест записа в таблицата на служителя, които отговарят на даденото условие.

Пример 2:

Напишете заявка за актуализиране на записа на служителя и задайте актуализираното име като „Harshada Sharma“, където името на града на служителя е Jaipur.

Запитване:

 mysql> UPDATE employees SET Name = 'Harshada Sharma' WHERE City = 'Jaipur'; 

SQL КЛАУЗИ

Горната заявка ще актуализира името на служителя на „Harshada Sharma“, където градът на служителя е Джайпур.

За да проверим дали записите са актуализирани или не, ще изпълним заявка за избор.

 mysql> SELECT * FROM employees; 

SQL КЛАУЗИ

Има само един запис в таблицата на служителя, където градът на служителя е „Джайпур“. ID на записа е 3, което отговаря на даденото условие. Следователно, според даденото условие, името на служителя с идентификатор на служител 3 вече е променено на „Harshada Sharma“.

Пример 3:

Напишете заявка за изтриване на запис на служител, където датата на присъединяване на служителя е „2013-12-12“.

Запитване:

 mysql> DELETE FROM employees WHERE Date_of_Joining = '2013-12-12'; 

SQL КЛАУЗИ

Горната заявка ще изтрие подробностите за служителя, чиято дата на присъединяване е „2013-12-12“.

За да проверим резултатите от горната заявка, ще изпълним заявката за избор.

 mysql> SELECT *FROM employees; 

SQL КЛАУЗИ

Има само един запис в таблицата на служителя, където датата на присъединяване на служителя е „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; 

Горната заявка ще покаже всички записи от таблицата на служителите, но групирани по възрастова колона.

Ще получите следния изход:

SQL КЛАУЗИ

Пример 2:

Напишете заявка за показване на всички записи от таблицата на служителите, групирани по предназначение и заплата.

Запитване:

 mysql> SELECT * FROM employees GROUP BY Salary, Designation; 

Горната заявка ще покаже всички записи от таблицата на служителите, но групирани по колоната за заплата и назначение.

Ще получите следния изход:

SQL КЛАУЗИ

Примери за групиране по клауза с използване на агрегатни функции

Пример 1:

Напишете заявка, за да посочите броя на служителите, работещи по конкретно назначение, и групирайте резултатите по предназначение на служителя.

разлика между гигабайт и мегабайт

Запитване:

 mysql> SELECT COUNT (E_ID) AS Number_of_Employees, Designation FROM employees GROUP BY Designation; 

Горната заявка ще покаже обозначението със съответния брой служители, работещи по това обозначение. Всички тези резултати ще бъдат групирани по колоната за обозначение.

Ще получите следния изход:

SQL КЛАУЗИ

Според очаквания резултат се показва обозначението със съответния брой служители.

Пример 2:

Напишете заявка за показване на сумата от заплатата на служител според града, групирана по възраст на служителя.

Запитване:

 mysql> SELECT SUM (Salary) AS Salary, City FROM employees GROUP BY City; 

Горната заявка първо ще изчисли сумата на заплатите, работещи във всеки град, и след това ще покаже сумата на заплатата със съответната заплата, но групирана по възрастова колона.

Ще получите следния изход:

SQL КЛАУЗИ

Според очаквания резултат се показва сумата на заплатата на служителя според града, към който служителят принадлежи. Ако двама служители принадлежат към един и същи град, тогава те ще бъдат в една група.

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; 

Ще получите следния изход:

SQL КЛАУЗИ

Горният резултат показва, че името на служителя, заплатата и града на служител, където заплатата на служителя е по-голяма от 40 000, групирани по предназначение. (Служителите с подобно предназначение се поставят в една група, а тези с друго предназначение се поставят отделно).

Пример 2:

Напишете заявка за показване на имената на служителите и обозначението, когато сумата на заплатата на служител е по-голяма от 45 000 и групирайте резултатите по град.

опа концепция в java

Запитване:

 mysql> SELECT Name, Designation, SUM (Salary) AS Salary FROM employees GROUP BY City HAVING SUM (Salary) > 45000; 

Ще получите следния изход:

SQL КЛАУЗИ

Горният резултат показва името на служителя, длъжността и заплатата на служителя. Сумата на заплатата е по-голяма от 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.

Ще получите следния изход:

SQL КЛАУЗИ

Според очаквания резултат, записите се показват във възходящ ред според назначението на служителя.

Пример 2:

Напишете заявка за показване на името и заплатата на служителя във възходящ ред на заплатата на служителя от таблицата на служителите.

Запитване:

 mysql> SELECT Name, Salary FROM employees ORDER BY Salary ASC; 

Тук, в заявка SELECT, клауза ORDER BY се прилага към колоната „Заплата“, за да сортирате записите. Използвахме ключовата дума ASC, за да сортираме заплатата на служителя във възходящ ред.

Ще получите следния изход:

всички главни букви команда excel
SQL КЛАУЗИ

Всички записи се показват във възходящ ред на заплатата на служителя.

Пример 3:

Напишете заявка за сортиране на данните в низходящ ред на името на служителя, съхранено в таблицата на служителите.

Запитване:

 mysql> SELECT * FROM employees ORDER BY Name DESC; 

Тук сме използвали клаузата ORDER BY със заявката SELECT, приложена към колоната Име, за да сортираме данните. Използвахме ключовата дума DESC след клаузата ORDER BY, за да сортираме данните в низходящ ред.

Ще получите следния изход:

SQL КЛАУЗИ

Всички записи се показват в низходящ ред на името на служителя.