Заявки към бази даннии екипът Select, MySQL, Статии, Програмиране - C програмиране,
Заявки към база данни и командата Избор.
Нямам намерение да се задълбочавам в езика SQL, можете да прочетете за него във всяко ръководство за SQL Server, MySQL основно поддържа всички основни команди на стандарта ANSI 92, но командата Select заслужава да й се посвети отделна глава. Командата Select се използва за заявка към база данни за извличане на информация от нея. Синтаксисът на командата е както следва:
SELECT [STRAIGHT_JOIN] [DISTINCT ALL] select_expression. [ОТ таблици. [WHERE where_definition] [ГРУПИРАНЕ ПО колона. ] [ПОРЕД ПО колона [ASC DESC], . ] HAVING full_where_definition [LIMIT [offset,] rows] [PROCEDURE procedure_name]] [INTO OUTFILE 'file_name'. ]
Както можете да видите от горното, заедно с командата Select се използват ключови думи, чието използване значително влияе върху реакцията на сървъра.Нека разгледаме всяка от тях.
РАЗЛИЧЕН..Пропускане на редове, където всички избрани полета са идентични, т.е. елиминира дублирането на данни.
WHERE.Клауза на командата Select, която ви позволява да зададете предикати, чието условие може да е вярно или невярно за всеки ред в таблицата. Извличат се само онези редове, за които такова изявление е вярно. Например:
SELECT u_id,lname от издатели WHERE city ='Ню Йорк';
Връща колоните u_id и lname от таблицата на издателите, чиято стойност е в колоната city-New York. Това позволява на заявката да бъде по-конкретна.
Релационни оператори.Релационният оператор е математически символ, който указва специфичен тип сравнение между две стойности. Релационните оператори, налични в MySQL, са:
= Равно на > По-голямо от = По-голямо или равно на Не е равно на Тези оператори имат значения по подразбиране за числови стойности.
Да предположим, че искате да видите всички клиенти с рейтинг, по-голям от 200. Тъй като 200 е скаларна стойност, като стойността в колоната с рейтинг, можете да използвате релационен оператор, за да ги сравните.
ИЗБЕРЕТЕ * ОТ Клиенти WHERE рейтинг > 200;
Булеви оператори.Основните булеви оператори също се разпознават в MySQL. Булевите изрази са верни или неверни, като предикатите. Булевите оператори свързват една или повече стойности true/false и произвеждат една стойност true или false. Стандартните булеви оператори, разпознати в SQL са: И, ИЛИ и НЕ.
Да приемем, че искате да видите всички клиенти в Далас, които имат рейтинг над 200:
ИЗБЕРЕТЕ * ОТ Клиенти WHERE град = 'Далас' И рейтинг > 200;
При използване на оператора И и двете условия трябва да бъдат изпълнени, тоест всички клиенти от Далас, чийто рейтинг е по-голям от 200, трябва да бъдат избрани.
Когато използвате оператора ИЛИ, трябва да е изпълнено едно от условията, например:
ИЗБЕРЕТЕ * ОТ Клиенти WHERE град = 'Далас ' ИЛИ рейтинг > 200;
В този случай всички клиенти от Далас и всички с рейтинг над 200 ще бъдат избрани, дори и да не са от Далас.
NOT може да се използва за обръщане на булеви стойности Примерна заявка с NOT:
ИЗБЕРЕТЕ * ОТ Клиенти WHERE град = 'Далас' ИЛИ НЕ рейтинг > 200;
Тази заявка ще избере всички клиенти в Далас и всички клиенти, чийто рейтинг е под 200. В тази заявка операторът NOT се прилага само към израза с рейтинг >200. Можете да направите по-сложна заявка:
SELECT * FROM Customers WHERE NOT( city = 'Dallas' OR rating > 200 );
В товазаявката НЕ се прилага към двата израза в скоби. В този случай сървърът чете изразите в скоби, определя дали city = 'Dallas' или rating > 200. Ако някое от условията е вярно, Булевият израз в скобите е верен. Въпреки това, ако булевият израз в скобите е верен, предикатът като цяло е фалшив, тъй като NOT преобразува вярно в фалшиво и обратно.Тоест всички клиенти извън Далас с рейтинг под 200 ще бъдат избрани.
IN.Операторът IN дефинира набор от стойности, в които дадена стойност може или не може да бъде включена. Например, заявка
ИЗБЕРЕТЕ * ОТ Продавачи WHERE град = 'Барселона' ИЛИ град = 'Лондон';
може да се пренапише по-просто:
ИЗБЕРЕТЕ * ОТ Търговци КЪДЕ град В („Барселона“, „Лондон“);
IN дефинира набор от стойности, като използва имената на членовете на набора, оградени в скоби и разделени със запетаи.След това изследва различните стойности на посочените, търсейки съвпадение със стойностите в набора. Ако това се случи, тогава предикатът е верен. Когато наборът съдържа числови стойности, а не знаци, единичните кавички се пропускат.
МЕЖДУ.Операторът BETWEEN е подобен на оператора IN. За разлика от уточняването чрез числа от набор, както прави IN, BETWEEN дефинира диапазон, чиито стойности трябва да намаляват, за да стане предикатът верен. Трябва да въведете ключовата дума BETWEEN с начална стойност, ключова дума AND и крайна стойност. За разлика от IN, BETWEEN е чувствителен към реда и първата стойност в клаузата трябва да бъде първата стойност по азбучен или цифров ред. Например:
ИЗБЕРЕТЕ * ОТ Продавачи WHERE comm BETWEEN .10 AND .12; ИЗБЕРЕТЕ * ОТ Продавачи КЪДЕ град МЕЖДУ „Берлин“ И „Лондон“;
LIKE.LIKE се прилага само за полета от тип CHAR или VARCHAR, с които се използва за намиране на поднизове. Тези. той търси в полето със знаци, за да види дали част от неговия низ отговаря на условието.Като условие той използва заместващи знаци - специални знаци, които могат да съвпадат с всичко. Има два вида заместващи символи, използвани с LIKE:
долната черта ( _ ) замества всеки отделен знак.
Знак '%', заместващ произволен брой знаци. Ако зададем следните условия:
SELECT * FROM Customers WHERE fname LIKE 'J%';
тогава ще бъдат избрани всички клиенти, чиито имена започват с J: Джон, Джери, Джеймс и т.н.
БРОЙ.Агрегирана функция, която брои стойностите в колона или броя на редовете в таблица. Когато работите с колона, тя използва DISTINCT като аргумент:
ИЗБЕРЕТЕ БРОЯ ( DISTINCT snum ) ОТ поръчки; При броене на редове има синтаксиса:
ИЗБЕРЕТЕ БРОЯ (*) ОТ Клиенти;
ГРУПИРАЙ ПО. Клаузата GROUP BY ви позволява да дефинирате подмножество от стойностите в определено поле по отношение на друго поле и да приложите обобщена функция към подмножеството. Това прави възможно комбинирането на полета и агрегатни функции в една клауза SELECT. Да предположим например, че искате да намерите най-голямата сума покупки, получена от всеки продавач. Можете да направите отделна заявка за всяко от тях, като изберете MAX() от таблицата за всяка стойност на полето. GROUP BY ще ви позволи да ги поставите всички в една команда:
ИЗБЕРЕТЕ snum, MAX (amt) FROM Orders GROUP BY snum;
ИМАЩ. HAVING дефинира критериите, използвани за премахване на определени групи от изхода, точно както клаузата WHERE прави за отделни редове. Например:
ИЗБЕРЕТЕcid,cname,price,max(price) //max() също е обобщена функция ОТ клиенти, ИМАЩИ max(price)>500; HAVING работи подобно на WHERE, но не можете да използвате агрегатни функции с WHERE.
ORDER BY.Тази команда подрежда изхода на заявката според стойностите в броя на избраните колони. Няколко колони са подредени една в друга, точно както при GROUP BY.
СЪЩЕСТВУВА.Използва се в подзаявки.
SELECT cnum, cname, city FROM Customers WHERE EXISTS (SELECT * FROM Customers WHERE city = " San Jose'); Взема подзаявка като аргумент и я оценява като вярна, ако произвежда някакъв резултат, или като невярна, ако не. Това е различно от другите предикатни изявления по това, че не може да бъде неизвестно. Например, можем да решим дали да извлечем някои данни от таблицата Customers, ако и само ако един или повече от клиентите в тази таблица са в Сан Хосе.
UNION.UNION се различава от подзаявките по това, че никоя от двете (или повече) заявки не се контролира от друга заявка. Всички заявки се изпълняват независимо една от друга и изходът им вече е комбиниран. Например:
SELECT snum, ime FROM Salespeople WHERE city = 'London' UNION SELECT cnum, cname FROM Customers WHERE city = 'London'; Клаузата UNION комбинира резултата от две или повече SQL заявки в един набор от редове и колони.
DESC,ASC.DESC-DESCEDENT,Показване на данните в обратен ред (по азбучен и цифров ред).По подразбиране е ASC.
Е, това е всичко накратко MySQL поддържа почти всички основни команди на SQL Server, така че можете да прочетете повече за командата SELECT във всеки учебник по езика SQL.