SQL Commands Cheat Sheet

SQL Commands Cheat Sheet

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 се крие изискване за инструмент за запитвания, който трябва да реализира осем основни релационни операции. Това са:

  1. SELECT
  2. ПРОЕКТ
  3. ПРИСЪЕДИНЯВАНЕ
  4. КАТАЛОГ
  5. СЪЮЗ
  6. INTERSECT
  7. рАЗЛИКА
  8. РАЗДЕЛЯМ

Необходимо е да овладеете всяка от тези операции, за да получите ефективен достъп до данни от релационна база данни. Те са обяснени по-долу.

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
ОТ

КЪДЕТО

Това ще ви даде списък със стойности от една колона в една таблица. Това е ПРОЕКТ релационна операция, дефинирана от Codd.

Можете да добавите колони към SELECT или да използвате оператора със заместващи знаци („*”), За да получите всички колони в таблицата:

ИЗБЕРЕТЕ *
ОТ

КЪДЕТО

Това е Код SELECT релационна операция. Без КЪДЕТО клауза, ще получите всеки запис в таблицата.

Множеството колони са разделени със запетаи („,"):

ИЗБЕРЕТЕ колона1, колона2, колона7
ОТ

КЪДЕТО

Най- КЪДЕТО клаузата избира конкретни записи. Това е най-важната цел на булевите оператори:

ИЗБЕРЕТЕ seed_num, seed_desc
ОТ семена
КЪДЕ видове = „бегония“ И цвят = „жълт“

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

Маси за присъединяване

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

Най-доброто ви ръководство за присъединяване е Диаграма на личностни отношения. Всичко, от което се нуждаете, за да създадете присъединяване, е да включвате повече от една таблица в ОТ клаузата на SELECT и не забравяйте да посочите свързващите колони в КЪДЕТО клауза. Имайте предвид, че някои таблици могат да използват едни и същи имена на колони. За да избегнете объркване, по-добре е да дадете всяка таблица в a псевдоним за да можете да идентифицирате източника на колоните, към които се позовавате в оператора SELECT:

ИЗБЕРЕТЕ a.seed_num, a.seed_desc, b.supplier_name
ОТ семена a, доставчици b
КЪДЕ a.species = "бегония" И a.color = "жълт"
И b.supplier_ID = a.supplier_ID

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

Въпреки че технически е възможно да се използва ИЛИ за присъединяване, по-обичайно е да се използва AND. Използвайте ИЛИ само за критерии за избор, а не за създаване на присъединяване.

подзаявки

Можете да използвате a SELECT изявление като източник на данни за главното SELECT и можете също да се присъедините към няколко SELECT изявления заедно с оператори, като например МИНУС. Тези случаи на допълнителни заявки, обслужващи главен оператор SELECT, се наричат ​​„подзаявки.”Когато създавате подзапитване, ключовата дума ПО може да бъде много полезен.

Например, ако искате само да получите жълти бегонии от доставчици в ЕС, можете да създадете списък със стойности ПО като:

ИЗБЕРЕТЕ a.seed_num, a.seed_desc, b.supplier_name
ОТ семена a, доставчици b
КЪДЕ a.species = "бегония" И a.color = "жълт"
И b.supplier_ID = a.supplier_ID
И b.supplier_country IN („Обединеното кралство“, „Франция“, „Германия“…)

Този списък на всички страни в ЕС ще се простира до 28 стойности и ще трябва да въведете всички от тях - „…“ в примера е само за краткост. В този пример ще трябва да преразгледате всичките си заявки и да променяте този списък със стойности всеки път, когато дадена държава се присъедини или напусне ЕС. По-ефикасно е да се създаде таблица на страните от ЕС и да се позове на това. След това трябва само да добавите или изтриете записи в една таблица, тъй като съставът на ЕС се променя.

В този сценарий ще създадете таблица, наречена EU_countries, с поле за държава_ID като основен ключ и колона с име на държава. Тогава можете да създадете подзапитване, за да създадете този списък с държави в ЕС:

ИЗБЕРЕТЕ a.seed_num, a.seed_desc, b.supplier_name
ОТ семена a, доставчици b
КЪДЕ a.species = "бегония" И a.color = "жълт"
И b.supplier_ID = a.supplier_ID
И b.supplier_country IN (ИЗБЕРЕТЕ име на държава от EU_countries)

Възможно е да се създаде поредица от вложени заявки, а някои SQL функции изискват поне два оператора SELECT. Например, ако искате да получите доставчици на семена извън ЕС, можете да използвате MINUS:

ИЗБЕРЕТЕ a.seed_num, a.seed_desc, b.supplier_name
ОТ семена a, доставчици b
КЪДЕ a.species = "бегония" И a.color = "жълт"
И b.supplier_ID = a.supplier_ID
МИНУС
ИЗБЕРЕТЕ c.seed_num, c.seed_desc, d.supplier_name
ОТ семена c, доставчици d, страни от ЕС e
ГДЕ d.supplier_country_ID = e.country_ID
И b.supplier_ID = a.supplier_ID

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

ГРУПИРАЙ ПО

Можете да получите SQL да събира данни за вас в процеса на обработка на заявка. Най- ГРУПИРАЙ ПО клаузата ви позволява да изчислявате статистически данни за групи записи. Например:

ИЗБЕРЕТЕ винено цвете, пребройте (1) екземпляра
ОТ семена
ГРУПА ПО видове

В този пример можете да видите функция, БРОЯ. Това изисква колона като параметър, но в този случай можете просто да й дадете знак, 1.  Този пример показва също, че можете да давате псевдоними на имена на колони. Няма кома между видовете и цветето в първия ред на SELECT. СУБД ще интерпретира тази втора дума като име на колоната, което ще се показва в изхода. В някои SQL реализации този псевдоним трябва да бъде в кавички, а в други трябва да бъде посочен от ключовата дума КАТО:

ИЗБЕРЕТЕ видове като "цвете", пребройте (1) КАТО "инстанции"
ОТ семена
ГРУПА ПО видове

Поставянето на смислено име в колона е особено важно, ако използвате функции в заявката си.

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

ПОДРЕДЕНИ ПО

Можете да определите изходната последователност на резултатите с ПОДРЕДЕНИ ПО клауза. Това ще покаже стойности във възходящ ред по подразбиране, но можете също да зададете да се показват записи в низходящ ред.

ИЗБЕРЕТЕ РАЗЛИЧНИ видове
ОТ семена
ПОРЪЧАЙТЕ ПО видове DESC

Ако имате няколко колони в изхода си, можете да номинирате всяка от тях за полето за поръчка. В повечето SQL реализации не е необходимо да въвеждате името на колоната в клаузата ORDER BY, а само номера на позицията на колоната, като например ПОРЪЧАЙТЕ ДО 2 когато искате втората колона в изхода да диктува реда на показване.

В този пример виждате DISTINCT опция на a SELECT, което има същия ефект като а ГРУПИРАЙ ПО. Ако обаче добавите агрегиращи функции към SELECT, ще трябва да използвате ГРУПИРАЙ ПО вместо DISTINCT.

SQL функции

Вече видяхте функцията COUNT. Има много други функции, налични във всички реализации на SQL. Това не са, строго казано SQL, а допълнителни помощни програми, добавени от създателя на SQL версията. Статистическите функции като средно, суми, макс и мин са общи за всички SQL аромати.

Механизми за контрол на потока, които като АКОпясък ДОКАТО цикли не съществуват в SQL. Условният избор обаче може да бъде реализиран чрез различни функции.

Comparitech SQL Cheat Sheet

Има дълъг списък от опции, които можете да поставите на оператора SELECT. Това кратко ръководство обхваща само основната структура на оператора SELECT, който е основният инструмент на SQL Език за запитване на данни. Можете да видите изчерпателен списък в Comparitech MySQL Cheat Sheet (PDF). Този лист включва също стандартните команди, използвани за езика за описание на данни на SQL, езика за контрол на данните и езика за манипулация на данните.

Brayan Jackson
Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me

About the author

Leave a Reply

Your email address will not be published. Required fields are marked *

7 + 2 =

Adblock
detector