КомпютриТипове файлове

SQL важно: описание, примери, свойства

Често, когато използвате SQL за извличане на данни от таблиците, потребителят получава излишни данни е наличието на абсолютно идентични на дублиращи се редове. За да се избегне тази ситуация, използвайте SQL отделен аргумент в изречението Select. В тази статия ще обсъдим примери за използването на този аргумент, както и ситуации, в които молбата следва да се остави на произвола на аргумента.

Преди да продължим да разгледа конкретни примери, да създаде база данни изисква няколко таблици.

маса подготовка

Представете си, че имаме базата данни се съхраняват информация за тапет, представена в две таблици. Тази таблица Oboi (тапети) на полетата за идентификационен (уникален идентификатор), от типа (вида на тапети. - хартия, винил и т.н.), цвят (цвят), а структура (структура) и цена (цена). И маса Ostatki (остатъци) с id_oboi полета (препратка към уникалния идентификатор в таблицата Oboi) и броят (броят на ролките на склад).

Попълнете таблицата с данни. В таблицата се добавят тапета 9 записи:

Oboi

идентификатор

тип

цвят

структура

цена

1

хартия

многоцветен

релефни

56.9

2

хартия двуслойна

бежов

гладък

114,8

3

винил

оранжев

релефни

504

4

руно

бежов

релефни

1020.9

5

хартия двуслойна

бежов

гладък

150,6

6

хартия

многоцветен

гладък

95.4

7

винил

кафяв

гладък

372

8

руно

бял

релефни

980,1

9

кърпа

розов

гладък

1166.5

В таблицата с останките - и девет записи:

Ostatki

id_oboi

броене

1

8

2

12

3

24

4

9

5

16

6

7

7

24

8

32

9

11

Ние пристъпи към описанието на различен ред в SQL.

Поставете различими Select клаузата

отделен аргумент трябва да бъде поставен веднага след Изберете ключова дума в заявките. Той се прилага за всички колони, посочени в изречение Select, тъй като той ще бъде изключен от крайния резултат на заявката е абсолютно еднакви низове. По този начин, след като е достатъчно да се уточни при писане на SQL «изберете различен» поискване. Изключение е използването на различни вътрешни обобщаващи функции, които изглеждат най-малко по-късно.

Трябва да се помни, че повечето от базата данни и не разпознава типа на вашата заявка:

SELECT важно Ostatki.Count, важно Oboi. *

ОТ Oboi

INNER JOIN Ostatki ON Oboi.id = Ostatki.id_oboi

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

Приложение отделни заявки в стандарт

Очевидно е, че с подходящи структурни маси строителни и попълването им в рамките на една маса изключени ситуацията, когато има абсолютно еднакви низове. Поради това, изпълнението на заявката «Изберете различен *» с извадка от една таблица е непрактично.

Представете си ситуация, когато ние трябва да знаем какъв тип имаме тапети, само за удобство, за да сортирате по тип:

SELECT Oboi.type

ОТ Oboi ред по вид

И ще видите резултатите:

тип

хартия

хартия

хартия двуслойна

хартия двуслойна

винил

винил

кърпа

руно

руно

Както се вижда в таблицата има дублиращи се редове. Ако добавим предложението Изберете различен:

SELECT важно Oboi.type

ОТ Oboi ред по вид

ние получите резултат, без повторение:

тип

хартия

хартия двуслойна

винил

кърпа

руно

По този начин, ако правилно въвеждане на данни в таблицата, а след това веднага след телефонно обаждане или искане на купувачите можем да отговорим, че течен тапет, фибростъкло и акрил тапета на разположение в магазина не са. Като се има предвид, че обхватът на магазини обикновено не се ограничава до сто тапети, видите списъка на не-уникални видове ще бъде доста трудоемко.

Прилагане на различни функции в агрегат

SQL отделен аргумент може да се използва всякакъв агрегат функция. Но за нейното прилагане на Мин и Макс няма да има ефект, но при изчисляването на сумата или на средната стойност е рядко ситуация, в която никой не би трябвало да се вземе предвид повторенията.

Да предположим, че искате да проверите капацитета на нашия склад и да изпратите тази заявка, изчислява общият брой на намотки в наличност:

SELECT сума (Ostatki.count)

ОТ Ostatki

Заявка ще даде отговор 143. Ако, обаче, ние ще се промени на:

SELECT сума (важно Ostatki.count)

ОТ Ostatki

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

Най-често се използва в SQL отделна функция граф. Така че, ние можем лесно да разберем колко уникални видове тапети, ние нямаме:

SELECT брой (важно Oboi.type)

ОТ Oboi

И да получите резултат от 5 - обикновена хартия и двуслоен винил и нетъкан текстил. Със сигурност всички видели рекламите, като например: "Само ние имаме над 20 различни видове тапети," което означава, че този магазин е не само няколко десетки роли и разнообразие от тапети съвременните видове.

Интересно е, че в една и съща заявка, можете да зададете множество функции като граф приписват отделни, и без него. Това е единствената ситуация, в която различими Select'e могат да присъстват няколко пъти.

Кога да се откаже от използването на аргумента

От използването на SQL отделен аргумент трябва да бъде изоставена в един от двата случая:

  1. Вие се извърши избор на маси и сме уверени в уникалната стойност на всеки. В този случай, използването на аргумента е неуместно, тъй като това е един допълнителен товар на сървъра или клиента (в зависимост от вида на СУБД).
  2. Страхувате ли се от загуба на вашите данни. Нека да обясня.

Да предположим, че шефът ви моли да се изброят на тапета, че имате, с посочване на само две колони - вида и цвета. По навик, ви дам един аргумент различен:

SELECT важно Oboi.type, Oboi.color

ОТ Oboi

ORDER BY Oboi.type

И - да загубите някои данни:

тип

цвят

хартия

многоцветен

хартия двуслойна

бежов

винил

кафяв

винил

оранжев

кърпа

розов

руно

бежов

руно

бял

То може да създаде впечатление, че тапетите за хартия (конвенционална и двуслоен) ние сме само един ум, в действителност, дори и в нашата малка масичка на две статия (доведе без отчетлив):

тип

цвят

хартия

многоцветен

хартия

многоцветен

хартия двуслойна

бежов

хартия двуслойна

бежов

винил

кафяв

винил

оранжев

кърпа

розов

руно

бял

руно

бежов

Поради това, както в писмен вид всяко искане с ясно изразена необходимостта аргумент да бъде внимателен и компетентен да вземе решение за неговото прилагане, в зависимост от задачата.

алтернатива важно

Противно на аргумента различен - Всички аргумент. В исковата си молба, се съхраняват на дублиращи се редове. Но тъй като базата данни по подразбиране и намира, че е необходимо да се покажат всички ценности, аргументът Всички - тя е по-скоро квалификационен мач от действителния аргумент функция. Надяваме се, че вече сте разбрали, че отделен (SQL) се използва. Описание ви даде пълна информация за възможността за използване на този аргумент при решаване на различни проблеми. В крайна сметка, както се оказа, дори и такъв прост аргумент в жалбата си крие много осезаем възможност от загуба на някои данни и показване на неточна информация.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 bg.birmiss.com. Theme powered by WordPress.