SQL е езикът на структурните заявки. Той е създаден специално за управление и достъп до данни, съхранявани в релационни бази данни. Първото търговско начинание, което използва SQL, беше Oracle, който все още има своя език за заявки SQL * Plus като основа на цялата си система за управление на релационни бази данни (RDMS).
Днес MySQL, SQL Server, SAP и Sybase използват SQL за достъп до база данни. В това ръководство ще ви дадем стандартната версия на SQL команди, като обърнем особено внимание на реализацията на Oracle в SQL * Plus.
ИЗБОР НА РЕДАКТОРА: Препоръчваме инструментите за управление на инфраструктурата SolarWinds да следят всичките ви инструменти на Microsoft, включително SQL Server. Имате нужда от набор от помощни програми за мониторинг, които могат да взаимодействат, за да покриете всички съоръжения, които поддържат вашата релационна база данни.
Релационни бази данни
SQL управлява релационни бази данни. Релационна база данни съдържа таблици, които са разделени, за да се намали повторението на данните. Процесът на вземане на решение за правилното групиране на категории данни се нарича „нормализиране.„В някои случаи исканията за производителност могат да диктуват, че таблиците работят по-добре, ако не са напълно нормализирани. Този процес се нарича „денормализация“ и е рядко срещано явление.
Всяка таблица се нуждае от колона, която идентифицира уникално всеки ред. Това се нарича „първичен ключ.“Другите таблици, които могат да се присъединят към този обект, трябва да съдържат препратка към първичния ключ във всеки запис. Тази справка се нарича „чужд ключ.” Ти присъединяване таблици заедно, като съвпадат чуждия ключ в една таблица с първичния ключ в друга. Това действие се извършва с SQL. Диаграмата за връзка между лицата е полезна справка, когато решавате как да структурирате SQL израза.
За да ускорите достъпа, нормално е да поставите ан индекс на всеки основен ключ в базата данни. Възможно е също така да се съхраняват често използвани съединения за създаване на виртуални таблици, които се наричат „гледки.”
Още един обект на база данни е a тригер. Това е парче SQL, което се стартира всеки път, когато се добави стойност в колона или се промени. Задействането ще актуализира стойностите в колона в друга таблица или в други колони в същата таблица. Това се случва, ако в колоната, върху която е поставен спусъка, се добави или промени стойност. Той може също да ограничи стойностите, които могат да бъдат въведени в колона.
DQL, DDL, DCL и DML
SQL включва четири подмножества от команди. Това са Език за запитване на данни (DQL), Език за описание на данните (DDL), Език за контрол на данните (DCL), и Език за манипулиране на данни (ГСД).
В повечето проекти Администратор на база данни (DBA) е единственият член на екипа, който има привилегиите да използва DDL. Тази командна група създава, променя и изпуска таблици, индекси, тригери и изгледи.
ГСД се използва за добавяне, промяна или премахване на записи от таблици в базата данни. Достъпът до тези SQL функции обикновено е ограничен за поддръжка на персонал или старши, отговорни членове на потребителската общност.
DQL се използва за генериране на отчети от базата данни. Този набор от команди се използва от програмисти и може да бъде предоставен на крайните потребители, за да могат да изпълняват свои собствени заявки.
Управлението на потребителските привилегии се съхранява в същата база данни като данните. Достъпът до тези таблици обаче обикновено е ограничен до DBA. Управлението на потребителския достъп се осъществява чрез DCL.
Има една полезна SQL команда, която не попада в класификациите на DQL, DDL, DCL или DML. Това е “описвам”, Което обикновено се изпълнява като DESC. Това показва структурата на обект в базата данни. В случай на таблица, тя ще покаже списък с колони и типа данни и размера на всяка. Той ще покаже SQL, създал изглед или тригер, и ще покаже колоните, които участват в даден индекс.
Релационни оператори
Теорията зад релационните бази данни беше дефинирана от Е. Ф. Код през 1970 г. В определението на Codd се крие изискване за инструмент за запитвания, който трябва да реализира осем основни релационни операции. Това са:
- SELECT
- ПРОЕКТ
- ПРИСЪЕДИНЯВАНЕ
- КАТАЛОГ
- СЪЮЗ
- INTERSECT
- рАЗЛИКА
- РАЗДЕЛЯМ
Необходимо е да овладеете всяка от тези операции, за да получите ефективен достъп до данни от релационна база данни. Те са обяснени по-долу.
SELECT
Първоначално бе извикан SELECT ОГРАнИЧАВАТ. Това е възможността за извличане на един запис или група съвпадащи записи от таблица в базата данни. Както и да е теоретична операция, SELECT е името на основната команда във всяка реализация на SQL. В действителност, всички извличане на данни се изпълнява със SELECT. Командата е толкова мощна, че може да бъде модифицирана по много, много начини. Повечето от SQL, които ще трябва да научите, са “клаузите” на SELECT оператор.
ПРОЕКТ
PROJECT е способността да се изолира колона (или „атрибут“) в таблица. Това винаги се реализира с оператор SELECT.
ПРИСЪЕДИНЯВАНЕ
ПРИСЪЕДИНЕТЕ свързване на таблици на общ атрибут. Използвате чуждия ключ в една таблица, за да съответства на стойностите на първичния ключ в друга таблица. Актът ефективно унифицира две таблици временно. Това се реализира като клауза в оператор SELECT. Свързването между две таблици автоматично ще остави всички записи, които не се появяват в двете поддържащи таблици. „външно съединение“Ще покаже записи, които нямат съвпадение в другата таблица, като полетата, които е трябвало да бъдат предоставени от другата таблица, оставят празни.
КАТАЛОГ
ПРОДУКТът е известен още като „пъти.”Това се реализира като SELECT оператор, който черпи данни от две таблици, но не посочва съединяването между тях. В реалния живот има много малко практически причини, поради които някой някога да изпълнява времена на две маси. Обикновено е предупредителен знак, че сте написали клауза JOIN лошо. Резултатът от ПРОДУКТ е, че всеки квалифициращ запис в една таблица съвпада с всеки квалификационен запис в другата таблица. Така че, ако създадете SELECT оператор от две таблици, всяка от които има десет записа, резултатите ще бъдат общо 100 записа.
СЪЮЗ
UNION е общ оператор в теорията на множествата. Ако имате два комплекта, съюзът комбинира всички членове на двата набора. Дублирането се премахва от резултатите. В SQL това се реализира от ИЛИ Булев оператор.
INTERSECT
INTERSECT е другият основен оператор на теорията на множествата. Ако имате два множества, пресечната точка описва тези обекти, които са членове на двата множества. Всеки предмет, който е член само на един от двата набора, е изключен от резултатите. В SQL това се реализира от И Булев оператор.
рАЗЛИКА
Разликата е известна още като „минус”И в нотация се представя със знака минус (“ – ”). Има няколко начина за прилагане на РАЗЛИКА. Тя може да бъде създадена чрез включване на Boolean НЕ в критериите за подбор и той може да бъде изпълнен и от a МИНУС оператор, последвано от подзапитване.
РАЗДЕЛЯМ
DIVIDE е необичайна операция, която подобно на ПРОДУКТ има много малко практически приложения. Codd разглежда DIVIDE като киселинен тест на всяка релационна система и нейния инструмент за запитвания, така че всяко SQL внедряване включва тази способност само за да се класира за титлата „релационна“. В действителност никога няма да я използвате. Прилагането на DIVIDE изисква серия от подзапроси, които се подават в МИНУС в Oracle SQL * Plus и an С ИЗКЛЮЧЕНИЕ оператор в някои други реализации на SQL, като SQL Server и PostgreSQL.
Булови оператори
Джордж Бул е британски математик, починал през 1864 г. Той изобретява булева алгебра, която няма практическо приложение, докато полетата на информатиката и релационните бази данни не се появят в края на 20 век. Булева алгебра е централна за операциите на SQL – можете да напишете само най-основните SQL заявки, без да използвате логическа логика. Булева логика също подкрепя всички търсачки. Ключовите булеви оператори в SQL са:
- И
- ИЛИ
- НЕ
Друг причудлив викториански британец, за който трябва да знаете, е Август де Морган. Той излезе с наблюдение за трансформацията в булева теория на множествата, за което всеки SQL програмист трябва да е наясно. Това е, че НЕ може да промени начина на работа на И и ИЛИ. Кратката версия е, че трябва да внимавате как използвате скоби във вашите изявления, за да избегнете нежелани последствия. Така че „и“ и „или“ също трябва да се считат за важни булеви оператори в SQL.
И
И изпълнява INTERSECT в теорията на множествата. Ако искате да извадите записи от база данни, които съответстват само на две изисквания, а не само на един от тези съставни критерии, тогава трябва да използвате И. Например, можете да стартирате бизнес със семена и вашата база данни съдържа таблица, която съхранява всичките ви семена с техните атрибути. Клиент се обажда и иска само жълти бегонии. Така че, вие бихте търсили вашата база данни вид = „бегония“ И цвят = „жълт“ за да получите правилния каталог на семена.
ИЛИ
ИЛИ ви дава всички членове на две групи – това е СЪЮЗЪТ в теорията на множествата. Така че, в вашата база данни за семена, ако сте пуснали заявка: видове = „бегония“ ИЛИ цвят = „жълт“, бихте получили резултати, включващи жълти рози, жълта бегония, розови бегонии и жълти нарциси. В този пример жълтите бегонии се класират два пъти. В релационната теория трябва да се върне само един запис. За щастие, SQL включва квалификатора DISTINCT, така че влизайки ИЗБЕРЕТЕ ДИСТАНЦИЯ * ОТ цветя, КОИТО видове = „бегония“ ИЛИ цвят = „жълт“, този запис с жълта бегония ще се появи само веднъж.
НЕ
НЕ е лесно да се разбере. Той изключва резултатите, които следващото твърдение би довело до: И НЕ, ИЛИ НЕ. На практика почти никога няма да използвате „ИЛИ НЕ“ в заявка. Ако вашият клиент за семена искаше друг цвят бегония, различен от жълт, вие ще използвате видове = „бегония“ И НЕ цвят = „жълт“ за да изберете продукти, които да предложите.
Скоби
Според закона на Де Морган:
„Отрицанието на дизъюнкцията е съединението на отрицанията; и отричането на конюнкцията е дизюнкция на отрицанията. “.
На обикновен английски език използвайте скоби внимателно в SQL израза, когато също така включвате НЕ, за да предотвратите трансформацията на вашите ИН в ИЛИ и обратно. Условията за подреждане заедно могат също да съкратят критериите ви за избор. Например, НЕ (видове = „бегония“ И цвят = „жълт“) е същото като НЕ видове = „бегония“ ИЛИ НЕ цвят = „жълт“.
Извличане на записи
Различните SQL реализации използват различен синтаксис, но в това ръководство ще следваме SQL * Plus на Oracle. Основната структура на избор на SQL данни е:
SELECT
ОТ
SQL – това е командата за транзакции (TRANSACTION). Тя позволява на потребителите да извършват група от операции като една цялостна транзакция, която може да бъде отменена, ако се наложи. SQL е мощен език за управление на релационни бази данни и е от съществено значение за много бизнеси и организации. Необходимо е да се научите на основните команди и оператори, за да можете да използвате SQL ефективно и да управлявате данните си по ефективен начин.