Основни SQL команди, ако познавате кожен програмист. Мова запитване SQL

SQL често се нарича моето есперанто за системи за управление на бази данни (СУБД). Всъщност светът няма език за работа с бази данни (БД), тъй като настилката беше широко използвана в програмите. Първият стандартен сол се появява през 1986 г. и тази година, като спечели жестоко признание. Възможно е да спечелите няколко часа работа с нерелационна СУБД. На vіdmіnu vіd іnshih progrаmіnі zasobіv, като, yak movi Si ta Kobol, yakí това е прерогатив на програмисти-професионалисти, sql zastosovuєtsy fahivtsy от различни области. Програмисти, администратори на СУБД, бизнес анализатори - всички те успешно обработват данни за допълнителен sql. Познаването на значението на езика е скъпо за всеки, който има майка вдясно от базата данни.

В тези статии можем да разгледаме основното разбиране на SQL. Да кажем, че това е праистория (и rozvієmo може би клонче от митове). Ще се запознаете с релационния модел и ще можете да усвоите първите умения за работа с SQL, които ще ви помогнат в по-нататъшното овладяване на езика.

Какво е важно да научите SQL? Струва си да се сблъскате с това, че доколкото можете дълбоко, вие избирате да се ровите в същността. За да станеш професионалист, трябва да си много богат. Mova SQL се появява през 1974 г. като предмет на малка дългосрочна работа, която се формира от 23 страни и от тих празник, дълъг път към развитие. Текстът на официалния стандарт - официалният документ "международният стандартен език за база данни sql" (наречен sql-92) - за отмъщение на шестстотин страни, но няма нищо за специфичните характеристики на версиите на sol, внедрени в СУБД от Microsoft , oracle, sybase, че в. Mova nastílki rezvinenii i raznomanіtniy, scho е по-просто от pererahuvannya yogo possibilites vimagatime kílkoh статии в списанието и ако изберете всичко, което е написано по темата за sol, тогава ще видите богата библиотека от томове.

Все пак за един голям ползвател не е задължително да познава SQL все по-добре. Като турист, облегнат назад в страната, де rozmovlyayut невеж език, достатъчно е да научите само малко от научените думи и правилата на граматиката, така че в sql - знаейки, че не е богат, можете да otrimuvat безлични банални резултати. В тази статия ще разгледаме основните SQL команди, правилата за задаване на критерии за избор на данни и ще покажем как да оценим резултатите. В резултат на това можете самостоятелно да създавате таблици и да въвеждате информация в тях, да добавяте данните и да практикувате със звуците. Тези знания могат да станат основа за по-нататъшно самостоятелно овладяване на SQL.

Какво е SQL?

sql - това е специален непроцедурен език, който ви позволява да описвате данни, да събирате и събирате информация от релационни СУБД. Специализация означава, че няма повече задания за работа в БД; не е възможно да се създаде цялостна система за приложение само с помощта на mov - за което е необходимо да се използват други mov, в които е възможно да се използват sql-команди. Този SQL се нарича още допълнителен инструмент за обработка на данни. Допълнителният език е по-малко вероятно да бъде спечелен от комплекса с друг език.

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

Най-голямата сила на SQL е възможността за достъп до релационни бази данни. Много е важно да знаете кой да казва "DB, която се обработва от SQL" и "релационна база данни" - синоними. Обаче изведнъж променяте мнението си, че между тях има разлика. Стандартът sql-92 няма отношение към термина.

Какво е релационна СУБД?

Без да навлизаме в подробности, релационната СУБД е система, базирана на релационен модел за управление на данни.

Концепцията за релационния модел е разпространена за първи път в работата на д-р Е. Ф. Код, публикувана през 1970 г. Описал е математически апарат за структуриране на данни и тяхното управление, както и абстрактен модел за представяне на всяка реална информация. Необходимо е потребителите на БД да проверяват специфичните характеристики на спестяванията от тяхната информация. В резултат на това вътрешната структура на базата данни беше променена (например с метода за подобряване на кода на фърмуера), беше необходимо да се преработят приложните програми, но не беше възможно да се постави в логическата линия на деня промени. Релационният модел позволи поверителността на спестяванията на данни на еднакви приложни програми. Всъщност моделът по никакъв начин не показва как информацията се събира и осъществява достъп. По-малко вероятно е да се страхувате, тъй като тази информация се получава от човек. Началото на появата на релационен модел, очевидно променяйки съзнанието към управлението на данни: от наука се превърна в наука, което доведе до революционно развитие на кухнята.

Основни понятия на релационния модел

Zgіdno z релационен модел, vídnoshnja (релация) - tse deyak таблица с данни. Vіdshenie mozhe майка един или kіlka атрибути (знак), vіdpovіdnіh stovptsієї tabіlі, аз deyak множество (може би, празни) данни, е набори от tsіh атрибути (их се наричат ​​n-арни кортежи или записи) и vidpovіdnih редове в таблици.

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

Нека да разгледаме един пример. Нека отидем в домейна Дните на понеделник, за да отмъстим за значението на понеделник към седмицата. Ако промените атрибута DayDay, който съответства на домейна, тогава във всеки кортеж можете да видите синьото в колоната DayDay, можете да имате една от заменените стойности. Не се допуска появата на значението на Síchen chi Kíshka.

Разкриване на уважение: атрибут ob'yazkovo дължи майка на една от разрешените стойности. Zavdannya odrazu kílkoh стойност оградена. В този ранг престъплението може да зависи от стойността на атрибута на реалния домейн, виновен за dorimuvatisya mind yogo atomicity. Tse означава, че разлагането е неприемливо, т.е. не може да бъде разделено на по-големи части, без да се загуби основният смисъл. Например, ако стойността на атрибута наведнъж пропусна понеделник и вторник, тогава би било възможно да видите две части, като запазите първия ден - Денят на Tyzhnya; оттук нататък стойността на атрибута вече не е атомарна. Ако обаче искате да опитате да разделите значението на "понеделник" на части, тогава ще трябва да въведете okremih букви - от "P" до "K"; последният смисъл е изразходван, значението на "понеделник" е атомно.

Vídnosini moyut іnshі власти. Най-значимата от тях е математическата сила на затворените операции. Tse означава, че в резултат на vikonannya, независимо дали е операция на щорите, може да се появи нов затвор. Tsya мощност позволява vykonannі математически операции на vídnosіnami otrimuvat perebachuvaní резултати. Освен това е възможно да се представи операцията от гледна точка на абстрактни отклонения от различни нива на инвестиция.

В работата си д-р Код назовава набор от осем оператора, който приема името релационна алгебра. Операторите Chotiri - общо, логическо умножение, разлика и Decartive tvir - бяха прехвърлени от традиционната теория за множествеността; Други оператори са създали специално за обработката на воднозин. Дистанционните роботи на д-р Код, Крис Дейта и други бивши работници бяха оборудвани с допълнителни оператори. По-нататък в тази статия ще бъдат разгледани три релационни оператора - производство (проект), обмен (избиране или ограничаване) и гняв (присъединяване).

sql този релационен модел

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

За съжаление, несъвместимостта между sql и релационния модел доведе до безлична неразбираемост и супер-котка през последните няколко години. Ale oskílki основната тема на статията е развитието на SQL, а не релационния модел, тези проблеми не се разглеждат тук. Въпрос е само да запомните кои термини се използват в SQL и в релационния модел, кои са дефинициите. Dalí в statti vikoristovuvatimutsya само условия, приети в sql. Вместо входове, атрибути и кортежи, ще присвоим техните SQL аналози: таблици, колони и редове.

Статичен и динамичен sql

Може би вече знаете същите термини, като статичен и динамичен SQL. sql-data е статичен, тъй като се компилира и оптимизира на етапа, който води до разработването на програмата. Вече предложихме една от формите на статичен sql, ако говорим за внедряване на sql-команди в програми на C или Cobol (за такива приложения другото име е sql имплементация). Подобно на вас, предполагам, динамичните sql данни се компилират и оптимизират за часа на програмата. Като правило, zvichayny koristuvachі zastosovuyut най-динамичния sql, който ви позволява да пиете vodpovidno до палави нужди. Една от алтернативите за динамични sql заявки е интерактивно или неинтерактивно повикване (можете да наречете специален термин - directsql), ако заявките, които са принудени да обработват, се въвеждат в интерактивен режим от терминала. Между статичния и динамичния SQL има разлики в синтаксиса на застоялите конструкции и характеристиките на визуализацията, хранителният протео излиза извън обхвата на статистиката. Значително по-малко, но яснотата на разбирането се дава чрез гледане на директни sql-заявки, но това не ви позволява да научите как да пишете sql като програмисти и още повече kіntsevyh koristuvachіv.

Як vivchati sql

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

Shchob vykonati be-yakí dії в sql, vikonati viraz my sql. Има няколко вида вируси, сред които можете да видите три основни групи: ddl-команди (език за дефиниране на данни - моето описание на данните), dml-команди (език за манипулиране на данни - моето манипулиране на данни) и контрол върху данните. В този ранг sql има три различни movs.

Команда преместване на описанието на данните

Нека да разгледаме една от основните ddl-команди за създаване на таблица (Създаване на таблица). SQL има таблици с типове декали, като основните са два типа: база (основа) и избор (изгледи). Основни е таблици, които се свеждат до наистина важни данни; вибиркови - това са "виртуални" таблици, които се създават на базата на информация, взета от базовите таблици; за corystuvachіv форми изглеждат като zvichaynі таблици. Командата за създаване на таблица се разпознава за създаване на базови таблици.

В командата за създаване на таблица посочете името на таблицата, посочете списъка с колони и типовете данни, които да се съхраняват в тях. Тъй като параметрите могат да бъдат и други neobov'yazykoví елементи, нека първо да разгледаме основните параметри. Нека ви покажа най-простата синтактична форма за командата:

създаване на таблица Іm'yaTablesі (Stovpets TypeData) ;

създаване и таблица - всички ключови думи sql; Іm'yaTables, Stovpets и TypeData - ce формални параметри, zamіst kahіh koristuvach schorazu за въвеждане на действителната стойност. Параметри Stovpets i Type Данните се поставят на кръглата параван. В SQL кръглите арки звучат победоносно за групиране на четири елемента. В момента на смрадта позволяват уговаряне на срещи за срещата. Знакът "точка със запетая", който стои в kіnci, е разпределител на команди. Вин е виновен за завършването на моя sql.

Нека разгледаме един пример. Нека е необходимо да се създаде таблица за събиране на данни за всички zustrіchі (назначения). За което в SQL въведете командата:

създайте уговорки за маса (дата_дата на среща);

След тази команда ще бъде създадена таблица за имената на срещите, де е една стъпка appointment_date, която може да записва данни от тип дата. Резултатите все още не са въведени, броят на редовете в таблицата е равен на нула (за помощта на командата за създаване на таблица се дава само обозначението на таблицата; реалните стойности се въвеждат от командата за вмъкване, които се разглеждат по-нататък).

Параметрите appointments и appointment_date се наричат ​​идентификатори, строфите се използват за задаване на имена за конкретни обекти на базата данни, а за времена - подходящи са имена за таблици и колони. SQL има два типа идентификатори: фиксирани (обикновени) и видими (разделени). Видимите идентификатори лежат в подножието на крака и в тях е защитен регистърът на знаците, които са победоносни. Първичните идентификатори не се виждат с други общи знаци, така че писменият регистър не е защитен. В тази статия има само zvichayny идентификатори.

Символи, yakí vykorovuyutsya за pobudov _identifiers, дължат да podpídat пеят правила. В типичните идентификатори могат да се пишат само букви (не obov'yazykovo латиница, но други азбуки), цифри и символ на буквата. Идентификаторът не е виновен за мъгливи препинателни знаци, интервали или специални знаци (#, @, % или!); Освен това VIN не може да започва с цифри, а със символа на суфикса. За идентификатори можете да използвате други SQL ключови думи, но не се препоръчва да работи. Идентификатор на заданията за разпознаване на действителния обект, така че може да бъде уникален (в границите на контекста на песента) im'ya: не е възможно да се създаде таблица с имена, тъй като тя вече е записана в базата данни; в една таблица не са възможни майки с еднакви имена. Преди речта, моля, уведомете ме, че назначенията и назначенията са едни и същи имена за sql. Не е възможно да се създаде нов идентификатор само чрез промяна на буквения регистър.

Ако искате таблица с повече от един stovpets, е практично да озвучите нуждите на таблиците с броя на stovptsy. Командата за създаване на такава таблица изглежда така:

създаване на таблица NameTable (StowDataType [ (, StovDataType ]]);

Квадратни дъги на vikoristan за именуване на neobov'yazykovyh елементи, образно заместващи елементи, като може да бъде обръщане на еднонишкови конструкции (с въвеждането на истинска sql-команда, нито тези, нито други дъги са зададени). Този синтаксис ви позволява да зададете дали броят на изразите. Дайте уважение, че има запетая пред друг елемент. Ако списъкът има няколко параметъра, тогава вонята се напоява един по един с бучки.

създаване на таблица appointments2 (appointment_date дата, appointment_time време, описание varchar (256));

Тази команда създава таблицата appointments2 (новата таблица е отговорност на майката с друго име, но таблицата appointments вече е в базата данни). Подобно на първата таблица, последната има колона appointment_date за записване на датата на срещата; В допълнение, като се яви на appointment_time, за да запише тези срещи. Параметърът за описание е текстов низ с дължина до 256 знака. За този параметър е зададен тип varchar (съкратено от character varying), не се виждат символите за разстоянието, броя на местата, необходими за запис, но беше ясно, че описанието на заема е с три над 256 знака. Когато описвате параметър към тип символен низ (ако има други типове), се посочва стойността на параметъра. Стойността й е зададена на кръглите рамена на десничаря в името на типа.

Вероятно сте проявили уважение към факта, че двете дупета, гледани на командните бележки, са издадени по различен начин. Както в първата стъпка, екипът отново се поставя в единия ред, след това в другия, след първата отворена кръгла арка, записът продължава от нов ред и назначаването на стъпка на кожата започва от нов ред. SQL няма специални опции преди да се направи запис. Ще счупя рекорда в редове, за да ограбя йога четене zruchníshim. Mova sql ви позволява да пишете команди като разделяне на командата на редове и вмъкване на стъпки в редовете на кочана и опит между елементите на записа.

Сега, ако знаете основните правила, погледнете сгънатия край на таблицата с броя на колоните. В началото на статистиката bulo показва таблицата на служителите. Имам следните позиции: име, име, дата на работа, напускане, категория и заплата за работа. За да обозначите таблица, се използва следната SQL команда:

създаване на таблица служители (знак за фамилия (13) не null, знак за име (10) не null, hire_date date, клон_офис знак (15), grade_level smallint, десетична заплата (9, 2));

Екипът има куп нови елементи. Nasampered, tse viraz не е нула, каква е цената например на назначаването на колоните last_name и first_name. За помощта на подобни конструкции се питат помощниците, сякаш дават обувка на закъснелия дотриман. Тази опция е присвоена, че полетата last_name и first_name трябва да се актуализират автоматично при въвеждане; не е възможно да оставите празни колони празни (като цяло е логично: как можете да идентифицирате спътник, без да знаете името му?).

Освен това задната част има три нови типа данни: знак, smallint и decimal. Доси ми майже не говори за типи. Въпреки че в SQL няма релационни домейни, има няколко основни типа данни. Tsya іnformatsija vykoristovuєtsya при vidílennі памет и и ирівні стойности; списъкът с възможни стойности при въвеждане, контролът на типа prot в SQL е по-малко тежък, по-нисък при други ходове.

В SQL типовете данни могат да бъдат разделени на шест групи: символни низове, точни числови стойности, приблизителни числови стойности, битови низове, дати, часове и интервали. Ние pererakhuval всички raznovidi, prote в tsіy statti според съобщенията погледна само няколко от тях (битови редове, например, не стават от особен интерес за значителните потребители).

Преди речта, ако сте мислили, че да дадете един час - това е помилване, тогава сте имали милост. Преди групата (datetime) има повече типове данни в SQL, които са свързани с часа (такива параметри, като времеви интервали, се виждат в другата група). В предната част вече имаше два вида данни от групата дати - дата и час.

Следващият тип данни, както вече знаете, са символни промени (или просто varchar); vin лежи до група от символични редове. Ако varchar се използва за запазване на ред с променлив живот, тогава типът char, който се използва в третия пример, присвоява за запис на редове, който може да фиксира броя на знаците. Например колоната last_name ще има редове от 13 знака, независимо от действително въведените псевдоними, независимо дали е poe или penworth-chickering (например poe има 10 липсващи знака, запълнени с интервали).

Z look koristuvacha, varchar и char все още могат да усетят. Има ли нужда от въвеждане на две типита? Отдясно, на практика, трябва да има компромис между shvidkodієyu и спестяване на място на диска. Като правило, изборът на редове с фиксирана дожина дава вид печалба в сигурността на достъпа, когато е необходимо да се направи това, редовете на пространството на диска не са пестеливи. Също така, appointments2 за линията на кожата на коментарите може да бъде запазена с 256 знака или може да бъде нерационална; повечето от редовете ще бъдат значително по-къси. От друга страна, прякорите също имат значение, но за тях извикайте 13 символа по подходящ начин; за който ще харчи ще са минимални. Това е добро правило: ако видите, че дължината на реда се променя незначително или равномерно малка, тогава wink char; в други видове - varchar.

Идват два нови типа данни - smallint и decimal - за да се видят до група от точни числени стойности. smallint - това е кратко име под формата на малко цяло число (малко цяло число). SQL също има цели типове данни. Наличието на два подобни типа се обяснява по различни начини с икономията на пространството. В приложението стойностите на параметъра grade_level могат да бъдат представени с допълнително двуцифрено число, така че типът е smallint; prote на практика не зависи от факта, че максималните стойности могат да бъдат параметри. Ако няма такава информация, спрете цялото число. Истинската разлика, която се вижда при избора на параметри от тип smallint и integer, е, че диапазонът от стойности на тези параметри е индивидуален за платформата на кожата.

Десетичният тип данни, който звучи като победител за появата на финансови дисплеи, ви позволява да зададете шаблон с необходимия брой десетици. Oskílki tsey тип служат за точния цифров запис, vín гарантира точността на viconannі математически операции на десетки danim. Например, за десетки стойности, за да изберете типове данни от група от близки цифрови записи, например float (число с плаваща запетая - число с точка, което плава), то е закръглено до точката, така че тази опция не е подходящ за финансови rozrahunkіv. За обозначаване на параметри в десетичен тип е написана следната форма:

където p е броят на десетичните знаци, d е броят на ранговете след Komi. Заместник p трябва да запише общия брой значещи цифри в стойностите и да замени d - броя на цифрите след Коми.

Разделът „Създаване на таблици“ показва актуализираната версия на записа на командата за създадена таблица. Новите елементи и индикации имат формат за всички разглеждани типове данни (Принципите включват други типове данни, но те не се разглеждат).

От друга страна, можете да мислите, че синтаксисът на sql командите е твърде сгъваем. И лесно можете да го разберете по нов начин, като почтително вдигнахте задника си. На диаграмата се появява допълнителен елемент - вертикална характеристика; Vín служи за разграничаване на алтернативни дизайни. С други думи, ако се определи текстурата на кожата, е необходимо да изберете подходящия тип данни (както си спомняте, квадратните рамена представляват параметрите на необиан език, а фигурните рамена са конструкции, които могат да се повтарят по различен начин; реално sql команди, q специални символи не се изписват). Първата част от схемата за насочване има нови имена за типове данни, другата част има кратки имена; на практика можете да използвате тях.

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

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

създаване на таблица таблица (знак на колона (дължина) [ ограничение ] | променлив символ (дължина) [ ограничение ] | дата [ ограничение ] | време [ ограничение ] | цяло число [ ограничение ] | smallint [ ограничение ] | десетичен (точност, десетични знаци) [ ограничение ] | float ( точност ) [ ограничение ] [ ( , колона char ( дължина ) [ ограничение ] | varchar ( дължина ) [ ограничение ] | дата [ ограничение ] | време [ ограничение ] | int [ ограничение ] | smallint [ ограничение ] | dec (точност, десетични знаци) [ограничение] | float (точност) [ограничение])]);

тайно име sql

В началото на 70-те години. ibm започна практическо прилагане на модела на релационна база данни, застъпен от д-р Код. Доналд Чембърлин и група други spіvrobіtnikіv pіdrozdіlu обещаващ doslіdzhen създадоха прототип на филма, който otrimav име структуриран английски език за заявки (mova structurirovanіh english zapіv), или просто продължение. Дадохме вината за разширения и за допълнителна подкрепа. Нов вариант, предложен от ibm, изтриване на името sequel/2. Yogo беше избран като софтуерен интерфейс за проектиране на първата система от релационни бази данни от ibm - system / r. Поради правни нюанси те промениха името в ibm: replace sequel/2 win над sql (структуриран език за заявки). Съкращението Qiu често се произнася като "si-ku-el".

Здравейте всички! Днес съм възможно най-прост, особено за pochatkivtsiv, ще се опитам да ви разкажа за тях какво е SQLи за какво е необходимо вино. Въз основа на този материал вие също знаете какво е база данни, какво е система за управление на база данни, както и какво е SQL диалект, дори ако цялата статия ще бъде мотивирана да ви доведе гладко до разбирането на това какво е SQL.

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

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

Какво е база данни

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

Релационна база данни- Тази информация е подредена, свързана помежду си с пеещи водносинами. Сервира се на масата, в която и лежи цялата информация. И това е още по-важно, защото сега е ваша грешка да покажете текущата си база данни само като погледнете таблицата ( как да кажа в контекста на SQL), тогава. база данни zagalom - цената на масата. Без съмнение е още по-просто, но е по-добре да дадете двойка практическо разбиране на основата на данните.

Какво е SQL

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

А ето и една смутита: и как можем да се върнем при нея и да вземем информацията, от която се нуждаем?

За кого може да има специален инструмент и тук на помощ идва SQL, който е такъв инструмент, за чиято помощ трябва да манипулираме данни ( създаване, vyluchennya, vidalennya тънко.) в базата данни.

SQL (език за структурирани заявки) - Език на структурирани заявки, специални заявки са написани за допълнителна помощ ( така наречените SQL изрази) към базата данни с метода за извличане на данни от базата данни или за тяхното манипулиране.

Също така, obov'yazykovo varto е важно и тези, че базата данни и релационният модел се основава на теорията на множествата, тъй като може да бъде на базата на комбиниране на различни обекти в една цел и на базата на една цел, базата данни е просто и може да бъде в таблицата uvaz i. Важно е, че езиковите езици на SQL работят сами, с набор от данни, tobto. от маси.

Съответстващи материали по темата:

  • Създаване на база данни в Microsoft SQL Server – инструкции за начинаещи;
  • Добавяне на данни към таблици на Microsoft SQL Server - оператор INSERT INTO.

Какво е СУБД

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

Още по-накратко, това е просто файл, създаден в специален формат, самата база данни изглежда така ( повечето vipadkiv DB включва малък брой файлове, но в същото време не е толкова важно от другата страна).

Дадох демонстрацията, ако базата данни е файл в специален формат, тогава как да го създам? И тук грешката е в сгъването, дори просто така, без никакви инструменти за създаване на такъв файл, tobto. Не е възможна релационна база данни, с която е необходим специален инструмент за създаване и управление на базата данни, в противен случай, очевидно, за работа с тези файлове.

С такъв инструмент аз говоря СУБД е система за управление на база данни, съкратено СУБД

Как да използвате СУБД

Наистина е вярно да получите много различни СУБД, хората плащат за тях и харчат много пари за тях, така че говорите за пълнофункционални версии, но можете също да научите от себе си, така да се каже, „готино“ и безплатни издания, като, преди реч, вижте неподходящи за обучение.

В разгара на тяхната популярност можете да видите следните системи:

  • Microsoft SQL сървър- Tse система за управление на база данни от Microsoft. Той вече е популярен сред корпоративния сектор, особено сред страхотни компании. И не само СУБД - целият комплекс от добавки, който ви позволява да запазвате и променяте данни, да ги анализирате, да подобрявате сигурността на данните и много други;
  • База данни на Oracle- Tse система за управление на база данни от компанията Oracle. Це също е популярна СУБД, както и сред големите компании. По своите възможности функционалността на Oracle Database и Microsoft SQL Server може да се изравни, като има сериозни конкуренти един към един, а разнообразието от техните пълнофункционални версии вече е голямо;
  • MySQL- системата за управление на бази данни е същата като тази на компанията Oracle, но се разширява без разходи. MySQL придоби още по-голяма популярност в интернет сегмента, tobto. не всички сайтове в Интернет работят върху самия MySQL, с други думи, повечето сайтове в Интернет печелят над СУБД като начин за запазване на данни;
  • PostgreSQL- Системата за управление на бази данни Tsya също е безплатна и е още по-популярна и функционална.

Съответстващи материали по темата:

  • Инсталиран Microsoft SQL Server 2016 Express - приложение за инсталиране на некопиращо издание на Microsoft SQL Server под Windows;
  • Инсталиране на Microsoft SQL Server 2017 Express на Ubuntu Server - пример за инсталиране на некомерсиално издание на Microsoft SQL Server на Linux;
  • Инсталиране на PostgreSQL 11 на Windows - пример за инсталиране на PostgreSQL на Windows;
  • Инсталиране на MySQL на Windows - пример за инсталиране на MySQL на Windows;
  • Инсталиране и персонализиране на MySQL на Linux Mint - пример за инсталиране на MySQL на Linux;
  • Инсталиране на Oracle Database Express Edition 11g - пример за инсталиране на Oracle Database Express Edition на Windows ( статията е написана отдавна, но всичко ще бъде koris).

Dialect Move SQL (SQL разширение)

Mova SQL е същият стандарт, това е стандартът за имплементации във всички релационни бази данни, но за skin DBMS е разширение на този стандарт, това е и езикът за работа с данни, нарича се диалект на SQL, който , очевидно, се основава на SQL, но се надяваме повече възможности за ponotsіnnogo programvannya, освен това такъв вътрешен език ви дава възможност да вземете системна информация и да поискате SQL zapiti.

Axis deakí dialecti movi SQL:

  • Transact SQL(съкратено T-SQL) - хакнат от Microsoft SQL Server;
  • PL/SQL(Procedural Language / Structured Query Language) - хакване в Oracle Database;
  • PL/pgSQL(Procedural Language/PostGres Structured Query Language) – хакнат в PostgreSQL.

По такъв начин, ако СУБД трябва да легне, по някакъв разширен начин пишете SQL инструкции. Като говорим за прост SQL, например,

ИЗБЕРЕТЕ ProductId, ProductName ОТ Стоки

тогава, безумно, всички СУБД имат една и съща практика, дори SQL е стандартът.

Забележка! Най-простият SQL изисква избор на данни от една таблица, така че се показват две колони.

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

Например, специализирам в преместването на T-SQL и, както изглежда, работя с Microsoft SQL Server, оста вече е на повече от 8 години!

В желанието си, очевидно, работих и с други СУБД, за един час контролирах две програми, едната работеше с PostgreSQL, а другата, пеещо, вече разбрано, с Microsoft SQL Server.

От MySQL работих като част от поддръжката на сайтове и услуги. Е, имах възможност да работя върху Oracle Database в рамките на други проекти.

Групирах цялото си натрупване на информация в част от езика T-SQL на едно място, като издадох книги на едно място, така че, тъй като имате нужда да научите езика Transact-SQL (T-SQL), препоръчвам четейки моите книги:

  • The T-SQL Programmer's Way - Transact-SQL самочетец за начинаещи. В моя доклад докладвам за всички конструкции на филма и последователно преминавам от просто към сгъване. Подходящ за комплексно разработване на T-SQL филми;
  • Стилът на програмиране на T-SQL е в основата на правилното кодиране. Книгата се основава на подобряването на качеството на T-SQL кода ( за тези, които познават моя T-SQL, това е всичко. Искам да знам основите).

Ще разбера, сега разбирате какво е SQL и защо виното е необходимо, в следващите материали ще ви кажа как да създадете SQL, ще ви кажем как да използвате инструменти, за които е необходимо да спечелите и за коя СУБД, тъй като кожата СУБД може да ї іnstrumenti, шев за извеждане на нови статии в моите групи в социалните мрежи.

Mova изтегля в SQL бази данни винил 70-те. Това е прототипът на буквите на разширението на IBM и името SEQUEL (Structured English QUEry Language). SQL е отнел от себе си предимствата на релационния модел, основите, които се основават на математическия апарат на релационната алгебра и релационните изчисления, победили с малък брой оператори и прост синтаксис.

Заради себе си, езиковият език SQL се превърна в куп "де факто", а след това официално одобрен като езиков стандарт за работа с релационни бази данни, който се поддържа от всички водещи световни компании, които разработват технологии за бази данни. Vykoristannya разнообразие и ефективен стандартен език позволиха в Дания да осигурят високо ниво на независимост на приложните софтуерни системи, които се разработват в зависимост от конкретен тип победоносна СУБД, именно за да повишат нивото и унификацията на инструменталните методи за разработка на добавки, които работят с релационни бази данни.

Говорейки за езиковите стандарти на SQL, трябва да се отбележи, че повечето от тези търговски реализации може да са повече или по-малко в съответствие със стандарта. Това, очевидно, утежнява сумирането на системи, като vikoristovuyut различни диалекти на SQL. От друга страна, разширението на изпълнението на филма трябва да бъде включено в стандарта, а развитието на филма трябва да бъде включено преди новите издания на стандарта.

Move SQL е присвоен на голям брой книги, включително първоначалното разпознаване, някои от тях са изброени в списъка с литература на справочника, zokrema, първоначалното позоваване на специални задачи за практическото развитие на езика на SQL. При връзката с cim в помощника на света, това е не по-важно от най-важните особености на езика на mov, които могат да бъдат от значение за по-нататъшния анализ на материала.

8.1. SQL видимост в процедурния език за програмиране

Mova SQL - се нарежда в класа на непроцедурните езици за програмиране. В допълнение към универсалните процедурни ходове, които могат да се използват и за работа с бази данни, SQL ходът не е ориентиран към запис, а към умножение. Tse означава така. Как се формулира входната информация за SQL в подвижния SQL, подадена в базата данни? записи-кортежи odnієї chi kіlkoh tablіdnosin Като резултат анонимни кортежиполучената таблица в синьо. Ето защо в SQL резултатът от всяка операция върху входовете също е настройка. Zapit SQL да не поставя процедура, tobto. последователността от които е необходима за резултата и помислете, тъй като може да сте доволни от кортежа на резултантния изход, формулиран в термините на входа (чи вход) изхода.

8.2. Формуляри и части за съхранение SQL

Има две форми на mov SQL: интерактивен SQL

че vbudovaniya SQL.

Интерактивен SQL vykoristovuetsya за директно въвеждане, което otrimanya резултат от SQL zapitivachem в интерактивен режим.

Когато SQL се формира, той се състои от SQL команди, които се вмъкват в средата на програмите, сякаш са написани от някой друг (Pascal, C, C ++ и това). Необходимо е да се използват програми, написани на такива езици, по-трудни и ефективни, за да се осигури възможност за работа, за да им помогне с данни, които се записват в релационни бази данни, въпреки обаче въвеждането на допълнителни инструменти, които ще осигурят SQL интерфейс в моя ku vin vbudovuєtsya.

І интерактивен, а когато SQL звучи като този склад.

Мова Назначаване Даних– DDL (Data Definition Language), даващ възможност за създаване, промяна на видимостта на различни обекти на база данни (таблица, индекси, потребители, привилегии и др.).

Преди допълнителните функции за преместване на данни може да се включи DDL, както и обозначаването на целостта на данните,

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

език- DML (Език за манипулиране на данни),

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

Тим не е по-малък, не е два различни хода, а компоненти на един SQL.

8.3. Измийте тази терминология

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

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

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

8.4. Изберете данни. ОператорИЗБЕРЕТЕ

Най-простите SELECT заявки

Операторът SELECT (SELECT) на SQL преместването е най-важният и най-често срещаният оператор. Vín задания за избор на информация от таблицата на базата данни. Синтаксисът на оператора SELECT може да изглежда така.

ИЗБЕРЕТЕ< списък с атрибути>

ОТ< список таблиц>

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

Ключовата дума SELECT казва на СУБД, че предложението се основава на изтеглянето на информация. След думата SELECT, чрез която се променят имената на полетата (списъка с атрибути), вместо тях се заявяват те.

Ключовата дума obov'azkovym в говорната заявка SELECT е думата FROM (h). Ключовата дума FROM е последвана от списък с разпределения на имена на таблици, от които се показва информация.

Например,

ИЗБЕРЕТЕ ИМЕ, ФАМИЛИЯ ОТ УЧЕНИК;

SQL заявката е виновна, че завършва със знака "точка зад запетая". Hover пита за избор на всички стойности на полетата NAME и

ФАМИЛИЯ от таблици STUDENT.

Його резултат е таблица на обидния ум

Редът на насочване на колоните в тази таблица зависи от реда на полетата ИМЕ и ФАМИЛИЯ, посочени във входа, а не от реда им във входната таблица

СТУДЕНТ.

Жалко е, че резултатите от SQL-базата данни се отнемат от таблиците по напълно нов начин, за да се покаже важността на релационния подход. При

zokrema те могат да показват дублиращи се кортежи със същите стойности на атрибути.

Например, попитайте: „Вземете списък с имената на местата, в които живеят студентите, потърсете информация за яковете на масата STUDENT“, можете да напишете в такъв вид

ИЗБЕРЕТЕ ГРАД ОТ СТУДЕНТ;

Його резултатът ще бъде маса

Белгород

Можете да кажете, че тези таблици могат да имат еднакви редове. Вонята е с удебелен шрифт.

За изключване на резултата от SELECT - въвеждането на записи, които се повтарят, се използва ключовата дума DISTINCT. Например, той ще поиска от SELECT да избере едни и същи полета, DISTINCT ще включва дублиращи се редове, за които стойностите на всички избрани полета са идентични.

Въвеждането на израза SELECT, който се дефинира като ключовата дума WHERE (de), ви позволява да въведете ясен ум (предикат), който приема стойността true или nonsense за стойностите на полетата в таблицата с редове , пред който се използва операторът SELECT. Клаузата WHERE означава, че могат да бъдат избрани редове от определени таблици. Преди таблицата, която е резултат от заявката, са включени повече от три реда, за които умове (предикат), се присвоява на предложението WHERE, стойността е true.

Напишете заявка, кой победен избор на имена (ИМЕ) на всички ученици с псевдоним (ФАМИЛИЯ) Петров, информация за имената е в таблицата

ИЗБЕРЕТЕ ФАМИЛИЯ, ИМЕ

ОТ СТУДЕНТ

WHERE FURNAME = 'Петров';

Умовете, които са посочени в предложението WHERE, могат да имат същите операции, които са посочени от обидни оператори: = (равно), > (по-голямо),< (меньше), >= (Повече или едно),<= (меньше или равно), <>(Не е добре), както и логически оператори И, ИЛИ и НЕ.

Например за изтеглянето на имената и ранговете на студентите, ако отиват трета година и получават стипендия (размерът на стипендиите е по-голям от нула), ще изглежда като такъв ранг

ИЗБЕРЕТЕ ИМЕ, ФАМИЛИЯ ОТ УЧЕНИК

КЪДЕ КУРС = 3 И СТИПЕНДИЯ > 0;

8.5. Внедряване на операции на релационната алгебра с помощта на SQL ходове. SQL релационна сложност

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

Оператор на консолидация

Релационна алгебра: A UNION B SQL оператор:

ИЗБЕРЕТЕ * ОТ A

ИЗБЕРЕТЕ * ОТ B;

оператор на бягаща пътека

Релационна алгебра: A ПРЕКЪСВАНЕ B

SQL израз:

ИЗБЕРЕТЕ A. FIELD1, A. FIELD2, ...,

ОТ А, Б

КЪДЕ A. FIELD1=B. ПОЛЕ1 И А. ПОЛЕ2=Б. ПОЛЕ2 И …;

ИЗБЕРЕТЕ A.* ОТ A, B

КЪДЕ A.pk = B.pk;

Визуален оператор

Релационна алгебра: A МИНУС B SQL оператор:

ИЗБЕРЕТЕ * ОТ A

WHERE A.pk NOT IN (SELECT pk FROM B);

de A.pk и B.pk първични ключове на таблица A и B

Декартов оператор на създателя

Релационна алгебра: A TIMES B SQL оператор:

ОТ А, Б;

ИЗБЕРЕТЕ A. FIELD1, A. FIELD2, …, B. FIELD1, B. FIELD2, …

ОТ КРЪСТ Б;

проекционен оператор

Релационна алгебра: SQL израз:

ИЗБЕРЕТЕ РАЗЛИЧНИ X, Y, …, Z ОТ A;

Вибрационен оператор

Релационна алгебра: A WHERE θ SQL оператор:

ИЗБЕРЕТЕ * ОТ A

КЪДЕ θ;

Оператор θ-z'ednannya

Релационна алгебра: (A ПЪТИ B) WHERE θ SQL оператор:

ИЗБЕРЕТЕ A. FIELD1, A. FIELD2, …, B. FIELD1, B. FIELD2, …

ОТ А, Б

КЪДЕ θ;

ИЗБЕРЕТЕ A. FIELD1, A. FIELD2, …, B. FIELD1, B. FIELD2, …

ОТ A CROSS JOIN B WHERE θ;

Подилу оператор

Релационна алгебра: A(X,Y) DEVIDE BY B(Y) SQL оператор:

ИЗБЕРЕТЕ РАЗЛИЧНО A. X ОТ A

(ИЗБЕРЕТЕ *

(ИЗБЕРЕТЕ * ОТ A1

A1. X=A. X И A1. Y=B. Y));

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

Моля, бъдете внимателни, тъй като таблиците ще имат NULL -стойности в заявките за търсене (div. под раздел 9.1), всички заявки, изброени по-горе, може да са неправилни, т.к. НУЛА< >NULL и NULL = NULL са глупости.

Tse, prote, не е просто свободна нишка за релационната цялост на SQL, NULL сегменти на релационния модел не се поддържат.

Tsey podruchnik е shchos на kshtalt "към печата на моята памет" z mov SQL (DDL, DML), tobto. Тази информация, както се е натрупала в процеса на професионална дейност, постоянно се събира в главата ми. Tse за мен е достатъчен минимум, който е най-често срещаният при работа с бази данни. Поради необходимостта да публикувам повече нови SQL конструкции, призовавам за помощ библиотеката на MSDN и я пускам в Интернет. По мое мнение, вземете всичко в главата си доста гладко, това не се нуждае от особено много. Още по-добре е да знаете основните конструкции, защото смрад zastosovní практически в толкова богати релационни бази данни, като от Oracle, MySQL, Firebird. Vidminnosti са свързани главно с типовете данни, но те могат да бъдат модифицирани от детайлите. Основните конструкции на езика SQL не са толкова богати и за постоянна практика вонята бързо се забравя. Например, за създаване на обекти (таблица, индекс, индекс и т.н.) е достатъчен текстов редактор (IDE) за работа с база данни и няма нужда да използвате визуални инструменти за работа с специфичен тип база данни (MS SQL), Oracle, MySQL, Firebird, …). Удобно е, че целият текст е пред очите ви и не е необходимо да сортирате цифровите раздели, за да създадете например индекс или борса. В случай на последваща работа с базата данни, създаване, промяна и особено повторно създаване на обект за допълнителни скриптове, той ще се появи по-бързо, по-ниско, така да се каже, за работа във визуален режим. Също така, в режима на скриптове (vіdpovіdno, за подходяща точност), е по-лесно да зададете и контролирате правилата за именуване на обекти (моя субективна мисъл). Преди това скриптовете могат да бъдат ръчно настроени в различно време, ако промените, за да бродят в една база данни (например тестова), е необходимо да я прехвърлите по този начин в друга база данни (продуктивна).

Mova SQL е подразделен на няколко части, тук ще разгледам 2-те най-важни части:
  • DML – език за манипулиране на данни
    • SELECT - избор на данни
    • INSERT - вмъкване на нови данни
    • UPDATE - актуализация на данните
    • DELETE - изтриване на данни
    • СЛИВАНЕ - ядосан данич
защото Аз съм практик, тъй като подобна теория няма да е достатъчна за даден помощник, а всички конструкции са обяснени на практически приклади. Дотогава ме е грижа, че езиковото програмиране и особено SQL може да се овладее само на практика, като го изучавате самостоятелно и разберете какво да научите, ако спечелите този друг дизайн.

Този асистент е създаден според принципа стъпка по стъпка, tobto. необходимо е да прочетете yogo след това и след това да го поставите на чантата. И ако трябва да разберете повече за командата по-подробно, тогава потърсете конкретно търсене в Интернет, например от библиотеката на MSDN.

Точно преди написването на този помощник, базата данни на MS SQL Server версия 2014 беше тествана, за въвеждане на скриптове, аз проверих MS SQL Server Management Studio (SSMS).

Накратко за MS SQL Server Management Studio (SSMS)

SQL Server Management Studio (SSMS) е помощна програма за Microsoft SQL Server за конфигуриране, управление и администриране на компоненти на база данни. Тази помощна програма ще замени редактора на скриптове (който основно ще се използва от нас) и графичната програма, като работа с обекти и настройка на сървъра. Основният инструмент на SQL Server Management Studio е Object Explorer, който ви позволява да преглеждате, преглеждате сървърни обекти и също така да ги пазите. Този текст често се цитира от Wikipedia.

За да създадете нов редактор на скриптове, щракнете върху бутона Нова заявка:

За да промените базата данни за поточно предаване, можете да завъртите списъка, който виждате:

За да спечелите команда за песен (или група от команди), можете да я видите и да натиснете бутона „Изпълнение / Виконати“ или клавиша „F5“. По правило в момента има само една команда в редактора, в противен случай трябва да изберете всички команди, не е нужно да виждате нищо.

Ако искате да промените скриптовете, които специално създават обекти (таблици, колони, индекси), за да ги промените, редактирайте актуализацията от контекстното меню, като сте видели конкретната група (например Таблици), самата таблица или Stovpts група в другата.

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

Теория на Трохи

Релационна база данни (RDB, иначе в контекста просто база данни) е колекция от таблици, свързани една с друга. Казано направо, базата данни е файл, за който данните се записват от структуриран вид.

СУБД - Система за управление на бази данни, tobto. този комплекс от инструменти за работа с определен тип база данни (MS SQL, Oracle, MySQL, Firebird, ...).

Забележка
защото в живота, на римски език, ние казваме: „Oracle DB“ или просто наричаме „Oracle“, наистина изглеждайки като „Oracle DBMS“, тогава в контекста на този помощник понякога се използва терминът DB. От контекста, по мое мнение, би било разумно да го направя сам.

Таблица Стовпци, за да могат да се наричат ​​полета или колони, всички думи ще бъдат победоносни като синоними, които те си казват.

Таблицата е основният обект на RDB, всички данни на RDB се вземат в ред в колоните на таблицата. Редове, записи - също синоними.

За масите на кожата, като и нейните stovptsіv, се дават имена, какви години преди тях.
Името на обект (име на таблица, име на колона, име на индекс) в MS SQL може да има максимална дължина от 128 знака.

За финализиране– Имената на обекти в DB ORACLE могат да имат максимум 30 знака. Следователно за конкретна база данни е необходимо да се модифицират нейните собствени правила за именуване на обекти, за да се вмести в ограничението за брой знаци.

SQL - език, който ви позволява да пишете в базата данни пред СУБД. За конкретна СУБД езикът SQL може да има специфична реализация (собствен диалект).

DDL и DML - подмножество на SQL филма:

  • Mova DDL служи преди промяна на структурата на базата данни, tobto. за създаване/промяна/показване на таблици и връзки.
  • Mova DML ви позволява да манипулирате данни от таблици, т.е. h нейните редове. Vín ви позволява да избирате данни от таблицата, да добавяте нови данни в таблицата, както и да актуализирате и виждате основните данни.

Move SQL може да има 2 вида коментари (едноредови и многоредови):

Коментар на един ред
і

/* пореден коментар за грешка */

Vlasne, всичко ще е достатъчно за теорията.

DDL - Език за дефиниране на данни

Например, нека да разгледаме таблицата с данни за spivrobitnikov, в случай на програмист, който не е:

Различните колони на таблиците могат да имат следните имена: Персонален номер, PIB, Дата на раждане, E-mail, Posada, Vіddіl.

Кожата на тези stovptsіv може да се характеризира с вида на данните, които трябва да бъдат отмъстени в новото:

  • Персонален номер - цяло число
  • ПИБ - ред
  • Дата на раждане - дата
  • Имейл - ред
  • Посада - ред
  • Виддил - ред
Stovptsya тип - характеристика, как да говорим за тези, yakí dani може да спаси dans stovpets.

За начало ще бъде достатъчно да запомните само такива основни типове данни, които се разграничават в MS SQL:

Стойност Определено от MS SQL Описание
Ред от съблекалня varchar(N)
і
nvarchar(N)
За допълнителното число N можем да посочим максималната възможна дължина на реда за двоен ред. Например, ако искате да кажете, че стойността "PIB" може да съдържа максимум 30 знака, трябва да посочите типа nvarchar(30).
Разликата между varchar и nvarchar е, че varchar ви позволява да запазвате редове от ASCII формат, където един знак отнема 1 байт, а nvarchar взема редове от Unicode формат, когато знак отнема 2 байта.
Типът varchar може да бъде избран само по начин, по който сте 100% сигурни, че не е необходимо да записвате Unicode знаци в това поле. Например varchar може да се използва за запазване на имейл адреса, защото stink sing повече от ASCII символи.
Ред от фиксирани дожини знак (N)
і
nchar(N)
В реда от променливи дожини този тип се счита за един и същ, че редът от дожини е по-малък от N знака, той винаги ще бъде допълнен от дясната ръка до дожината N с интервали и ще бъде взет от базата данни при гледане , тобто. отнема точно N символа от базата данни (един знак отнема 1 байт за char и 2 байта за типа nchar). На практика рядко се знае, че този тип е претоварен и обикновено печели, печели по-важното във формата char(1). ако полето е един знак.
Цяло число вътр Датският тип ни позволява да пеем в стовпци повече от цяло число, както положително, така и отрицателно. За финал (не е толкова важно за нас сега) - диапазонът от числа, който позволява int тип -2 147 483 648 до 2 147 483 647. Изберете основния тип, който се използва за задаване на идентификатори.
Реч chi deisne номер плавам Ако говорите на обикновен език, това са числа, в които може да има дузина точки (запетая).
дата дата Ако в stovpts е необходимо да запазите само датата, тъй като тя се натрупва от три склада: числа, месеци и Roku. Napriklad, 15.02.2014 (Fierce 15, 2014). Датският тип може да бъде избран за „Дата на приемане“, „Дата на раждане“ и др. в тихи ситуации, ако за нас е важно да определим датата, но ако часът на склада не е важен за нас, можем да го оставим или да не го виждаме.
час време Датският тип може да бъде победен, така че е необходимо да се спаси повече от даден час от stovpts, tobto. Години, Хвилини, Секунди и Милисекунди. Например 17:38:31.3231603
Например, известният "Час на заминаване на полета".
дата този час Време за среща Този тип позволява едновременно запазване на датата и часа. Например 02/15/2014 05:38:31.323 PM
За дупето може, но датата е същият час, както трябва.
Прапор малко Датският тип е настроен ръчно да запазва стойността на формата „Tak“ / „Hi“, de „Tak“ се приема като 1, а „Hi“ се приема като 0.

Така че стойността на самото поле, въпреки че не е оградено, може да не е посочена, за стойността на полето е избрана ключовата дума NULL.

За целите на приложението, нека създадем тестова база данни, наречена Test.

Проста база данни (без посочване на допълнителни параметри) може да бъде създадена чрез изпълнение на следната команда:

СЪЗДАВАНЕ НА БАЗА ДАННИ Тест
Можете да видите базата данни с командата (ще ви защитим и от тази команда):

DROP DATABASE Тест
За да отидете в нашата база данни, можете да използвате командата:

Тест в САЩ
В противен случай изберете тестовата база данни от списъка в областта на менюто на SSMS. Когато работя с мен, най-често печеля от самия метод на превключване между бази.

Сега можем да създадем таблица в нашата база данни, описанията на vicorist изглеждат като воня, vicorist е изписал тези знаци на кирилица:

СЪЗДАВАНЕ НА ТАБЛИЦА [Записващи устройства]([Personnel Number] int, [PIB] nvarchar(30), [Pop Date] date, nvarchar(30), [Posada] nvarchar(30), [Viddil] nvarchar(30))
По този повод случайно поставяме имената на квадратната дъга […].

Але в базата данни за по-голяма яснота всички имена на обекти трябва да бъдат по-кратко зададени на латиница и да не пеят в имената на поляната. В MS SQL звучи в същото време думата започва с голяма буква, например, за полето "Personnel Number", можем да зададем името PersonnelNumber. Също така името може да бъде усукано с цифри, например PhoneNumber1.

Забележка
За някои СУБД можем да съкратим съществуващия формат за името "PHONE_NUMBER", например този формат често се използва в базата данни ORACLE. Естествено при задаването на името на полето не е необходимо да се избягват ключовите думи, които са избрани в СУБД.

По някаква причина можете да забравите за синтаксиса с квадратни арки и да видите таблицата [Spivrobitniki]:

ПАДВАЩА МАСА
Например, таблица с 3 работници може да се нарече „Служители“, а на нейните полета могат да бъдат дадени следните имена:

  • ID - персонален номер (идентификатор на повикващия)
  • Име - ПИБ
  • Рожден ден - дата на рожден ден
  • електронна поща
  • Позиция - Посада
  • Отдел - Виддил
Най-често срещаното име за полето за идентификатор е думата ID.

Сега нека създадем нашата таблица:

СЪЗДАВАНЕ НА ТАБЛИЦА Служители (ID int, Име nvarchar(30), Рождена дата, Имейл nvarchar(30), Позиция nvarchar(30), Отдел nvarchar(30))
За да зададете низовете за stowpci, можете да използвате опцията NOT NULL.

За вече основната таблица полетата могат да бъдат преназначени с помощта на обидни команди:





























Актуализация на ID поле ALTER TABLE Служители ALTER COLUMN ID int NOT NULL

Забележка
Основната концепция на SQL mov за повечето СУБД е оставена същата (мога да преценя за тази СУБД, за която имах шанс да подобря). Дефиницията на DDL в различни СУБД е свързана главно с типове данни (тук могат да бъдат прегледани не само имената им, но и подробностите за тяхното изпълнение), така че самата тя може да бъде прегледана три пъти и самата специфика на реализацията на езика SQL (това същността на командите е една и съща, но могат да бъдат малки разлики в диалекта, за съжаление няма един стандарт). С основите на SQL можете да превключвате от една СУБД към друга, т.к тогава трябва да научите повече за подробностите за внедряването на команди в новата СУБД. В повечето случаи ще бъде достатъчно просто да направите аналогия.

Създаване на таблица CREATE TABLE Служители (ID int, -- в ORACLE тип int - еквивалентно на number(38) Име nvarchar2(30), -- nvarchar2 в ORACLE, еквивалентно на nvarchar в MS SQL Дата на раждане, имейл n, позиция nvarchar2 (30) , отдел nvarchar2(30)); -- актуализиране на полета ID и Име (тук ALTER COLUMN се заменя с MODIFY(…)) ALTER TABLE Employees MODIFY(ID int NOT NULL,Name nvarchar2(30) NOT NULL); -- добавяне на PK (в който случай конструкцията изглежда като i в MS SQL, ще бъде показано по-долу) ALTER TABLE Employees ADD CONSTRAINT PK_Employees PRIMARY KEY(ID);
За ORACLE е vіdminnostі vіdminnostі vіdmіnnostі vіdnіzії іn varіzаtsії тип varchar2, yogo кодирането да попадне в DB и текстът може да бъде запазен, например, от кодирането UTF-8. На първо място, дължината на полето в ORACLE може да бъде зададена както в байтове, така и в знаци, за което са зададени допълнителните опции BYTE и CHAR, които се посочват след дължината на полето, например:

NAME varchar2(30 BYTE) -- Обхват на полето до 30 байта NAME varchar2 (30 CHAR) -- Интервал на полето до 30 знака
Като опция ще бъде възможно да изберете BYTE или CHAR заключвания, в случай на просто вмъкване в ORACLE тип varchar2(30), които да се съхраняват в корекцията на DB, така че понякога може да се посочи в заключванията на IDE. За един час можете лесно да се изгубите, тъй като типът ORACLE, като правило, използва типа varchar2 (и тук е вярно за един час, например, с UTF-8 кодиране), аз изрично ще предпиша CHAR (защото вие можете сами да извикате броя на редовете в символи).

Но в същото време в таблиците вече има yak-nebud данни, тогава за успешното въвеждане на команди е необходимо всички редове на таблицата да имат полетата ID и Name obov'yazkovo zapovneni. Ще го демонстрираме на примера, вмъкнете го в таблицата с данни в полетата ID, позиция и отдел, които могат да бъдат генерирани от следния скрипт:

INSERT Employees(ID,Position,Department) VALUES (1000,N"Директор",N"Администрация"), (1001,N"Програмист",N"ИТ"), (1002,N"Счетоводител",N"Счетоводство" ), (1003,N"Старши програмист",N"IT")
Понякога командата INSERT вижда и помилване, защото при вмъкване не са присвоили стойността на полето Име на полето за език.
Ако вече имаме данни в таблицата, тогава командата ALTER TABLE Employees ALTER COLUMN ID int NOT NULL беше успешна и командата ALTER TABLE Employees ALTER COLUMN Name int NOT NULL видя съобщение за извинение, че полето за име е NULL (не е присвоено) стойност.

Добавете стойност за полето Име и подновете въвеждането на данни:


Освен това опцията NOT NULL може да бъде победена всеки път, когато се създава нова таблица, т.е. в контекста на командата CREATE TABLE.

На гърба можем да видим таблицата за помощ на командата:

DROP TABLE Служители
Сега нека създадем таблица със задължителни за попълване колони ID и Name:

CREATE TABLE Employees(ID int NOT NULL, Име nvarchar(30) NOT NULL, Дата на рожден ден, Имейл nvarchar(30), Позиция nvarchar(30), Отдел nvarchar(30))
Възможно е също да се напише NULL след името, което означава, че в новите стойности NULL (непосочени) ще бъдат валидни, но тази работа не е задължително, така че характеристиката е дадена за разбиране.

Тъй като е необходимо да се направят необходимите stovpets neobov'yazkovym за zapovnennia, тогава следният команден синтаксис е победител:

ALTER TABLE Служители ALTER COLUMN Име nvarchar(30) NULL
Або е просто:

ALTER TABLE Служители ALTER COLUMN Име nvarchar(30)
С тази команда можем също да променим типа на полето на по-нисък тип сума или да променим втория. Например разширете полето Име до 50 знака:

ALTER TABLE Служители ALTER COLUMN Име nvarchar(50)

Първичен ключ

Когато таблиците се комбинират, е важно да има малък уникален stovpets или комбинация от stovptsiv, която е уникална за реда на кожата - за дадени уникални стойности можете недвусмислено да идентифицирате записа. Тази стойност се нарича първичен ключ на таблицата. За нашата таблица Служители на такива уникални стойности може да бъде присвоен идентификатор (който може да се използва като „Временен персонален номер на служителя“ - в нашия случай стойността е уникална за специалиста по кожата и не може да се повтаря).

Можете да създадете първия ключ към вече съществуващата таблица, като използвате допълнителната команда:

ALTER TABLE Employees ADD CONSTRAINT PK_Employees PRIMARY KEY(ID)
De "PK_Employees" tse іm'ya obmezhennya, scho vydpovidaє за първия ключ. Озвучете името на първичния ключ, префиксът „PK_“ се избира след всяко име на таблица.

Тъй като първият ключ се формира от dekilkoh полета, тогава тези полета трябва да бъдат повторно изобразени в арките, чрез които:

ALTER TABLE table_name ADD CONSTRAINT exchange_name PRIMARY KEY(field1,field2,…)
Varto означава, че в MS SQL полетата трябва да бъдат включени преди първичния ключ, поради характеристиката NOT NULL.

Също така, първият ключ може да бъде присвоен без забавяне в момента на създаване на таблицата, tobto. в контекста на командата CREATE TABLE. Да видим таблицата:

DROP TABLE Служители
И тогава нека създадем нейния, vikoristovuyuuchi обиден синтаксис:

CREATE TABLE Employees(ID int NOT NULL, Name nvarchar(30) NOT NULL, Virtual Hour, Email nvarchar(30), Position nvarchar(30), Department nvarchar(30), CONSTRAINT PK_Employees PRIMARY KEY на всички полета, като служител)
След създаването на халемото в таблицата с данни:

INSERT Employees(ID,Position,Department,Name) VALUES (1000,N"Директор",N"Администрация",N"Иванов И.И."), (1001,N"Програмист",N"ИТ",N" Петров П.П." ), (1002,N"Счетоводител",N"Счетоводство",N"Сидорив С.С."), (1003,N"Старши програмист",N"ИТ",N"Андреев А.А.")
Тъй като първият ключ на таблица е по-малък от стойността на една колона, можете да завъртите следния синтаксис:

CREATE TABLE Employees(ID int NOT NULL CONSTRAINT PK_Employees PRIMARY KEY, - може да бъде указано като характеристика на полето Име nvarchar(30) NOT NULL, Рождена дата, Имейл nvarchar(30), Позиция nvarchar(30), Отдел n
Можете и не можете да зададете истинското име на компанията, в който случай ще ви бъде присвоено системно име (например PK__Employee__3214EC278DA42077):

CREATE TABLE Employees(ID int NOT NULL, Име nvarchar(30) NOT NULL, Дата на рожден ден, Имейл nvarchar(30), Позиция nvarchar(30), Отдел nvarchar(30), PRIMARY KEY(ID))
Або:

CREATE TABLE Employees(ID int NOT NULL PRIMARY KEY, Име nvarchar(30) NOT NULL, Рождена дата, Имейл nvarchar(30), Позиция nvarchar(30), Отдел nvarchar(30))
Ale, препоръчвам bi за post_ynih таблици zavzhdya изрично зададен im'ya obmezhennya, т.к. за изричното им задаване и разбиране ще бъде по-лесно да извършвате манипулации с него, например можете да изработите следното:

ALTER TABLE Служители DROP CONSTRAINT PK_Employees
Но такъв кратък синтаксис, без присвояване на имена на границата, ръчно застосовува pіd време на създаване на таблицата с време на базата данни (времето на таблицата с време се основава на # chi ##), веднага щом съвпадението ще бъде видяно.

Вероятно

Веднага разгледахме напредващите команди:
  • СЪЗДАВАНЕ НА ТАБЛИЦА table_name (повторно появяване на полета от този тип, разграничаване) – служи, докато не бъде създадена нова таблица в поточната база данни;
  • ПАДВАЩА МАСА table_name – служи като отдалечена таблица от поточна база данни;
  • АЛТЕР ТАБЛИЦАиме_на_таблица ПРОМЯНА НА КОЛОНАТА im'ya_stovptsya ... – служи за актуализиране на типа на stovptsya или промяна на настройката му (например, за да зададете характеристиката NULL или NOT NULL);
  • АЛТЕР ТАБЛИЦАиме_на_таблица ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ im'ya_obezhennya ПЪРВИЧЕН КЛЮЧ(field1, field2,…) – добавяне на първичен ключ към вече съществуваща таблица;
  • АЛТЕР ТАБЛИЦАиме_на_таблица ОТПУСКАНЕ НА ОГРАНИЧЕНИЕ exchange_name - отдалечен обмен от таблици.

Trochs за timchas таблици

Virizka от MSDN. MS SQL Server има два типа часови таблици: локални (#) и глобални (##). Местните часови таблици са по-малко видими за техните създатели до края на сесията с екземпляра на SQL Server, точно както зловонието на творението преди. Таблиците с локален часовник се виждат автоматично, когато часовникът е включен в екземпляра на SQL Server. Глобалните часовникови таблици могат да се видят от всички времеви таблици, независимо дали са създадени след създаването на тези таблици и са видими, ако всички часовници, както се показват на таблиците, са включени в екземпляра на SQL Server.

Времевите таблици се създават в системната база данни tempdb, т.е. създавайки ги без да се виждат от основната база данни, в друга времева таблица, те са идентични с първичните таблици, могат да се видят с помощта на командата DROP TABLE. Най-често локалните (#) часовникови таблици печелят.

За да създадете график, можете да използвате командата CREATE TABLE:

СЪЗДАВАНЕ НА ТАБЛИЦА #Temp(ID int, име nvarchar(30))
Тъй като таблицата с време в MS SQL е подобна на основната таблица, тя може да се види и от самата команда DROP TABLE:

ТАБЛИЦА ЗА ПАДАНЕ #Темп

Така самата времева таблица (като оригиналната таблица) може да бъде създадена и незабавно заредена с данни, завъртани от победоносния синтаксис SELECT ... INTO:

ИЗБЕРЕТЕ ИДЕНТИФИКАТОР, Име В #Врем. ОТ Служители

Забележка
В различните СУБД внедряването на разписания може да бъде различно. Например в СУБД ORACLE и Firebird структурата на временните таблици се дължи, но беше определена по-късно от командата CREATE GLOBAL TEMPORARY TABLE от определените специфики за събиране на данни, вече беше необходимо да се провери средата на основните таблици и работете с него маса за чай.

Нормализиране на базата данни - разделяне на подтаблици (документи) и присвояване на връзки

Текущата ни таблица Служители може да не е достатъчна за тези, които могат да въведат произволен текст в полетата за позиция и отдел на сътрудника, който ще заплаша с помилвания през първата част на годината, така че като вино на един spіvrobіtnik можете да посочите, че беше просто „ІТ“, а за друг spіvrobіtnik, например, въведете IT-viddil, на третия IT. В резултат на това беше неразумно майката да е на увази потребител, или. какво направиха spіvrobіtniki, дадени от практикуващите на същото vіddіlu, какво koristuvach описа себе си и tse 3 различни vіddіlu? И още повече, според нас не можем правилно да групираме данните за такова име, де, възможно е, необходимо е да се покаже броят на spivrobitniks в анализа на кожното заболяване.

Друг недолик полигає у обсязи зберіганя циєї інформаціі я нейното дублуванем, тобто. за символ на кожата е необходимо да се посочи името на лицето, което се използва в базата данни за избор на символ на кожа за името на лицето.

Третият недолик е сгъваемостта на актуализирането на тези полета, като например промяна на името на растение, тъй като е необходимо да промените името „Програмист“ на „Млад програмист“. В този момент ще можем да правим промени в реда на кожата на таблицата, в същата позиция dorovnyu «Programist».

За да се избегнат тези недостатъци и се използва т.нар. нормализиране на базата данни - разделянето им на подтаблици, таблици dovidniki. Не е obov'yazkovo да се лъже в не-тройни теории и обрати, какво да си представим нормални форми, достатъчно е да разберем същността на нормализацията.

Нека създадем 2 таблици “Plant” и “Viddili”, първата се нарича Positions, а другата е Departments:

CREATE TABLE Positions(ID int IDENTITY(1,1) NOT NULL CONSTRAINT PK_Positions PRIMARY KEY, Name nvarchar(30) NOT NULL) CREATE TABLE Departments(ID int IDENTITY(1,1) NOT NULL CONSTRAINT PK_Departments PRIMARY ) NOT NULL)
С уважение, ние избрахме нова опция за ИДЕНТИЧНОСТ тук, така че тези, които са дадени в колоната ID, се номерират автоматично, започвайки от 1, от 1, след това. когато добавяте нови записи, те последователно се присвояват стойностите 1, 2, 3 и т.н. Такива полета се наричат ​​автоинкрементални. Една таблица може да има повече от едно IDENTITY поле, присвоено към нея и, като правило, не се изисква да има език, такова поле е първичен ключ за тази таблица.

Забележка
В различни СУБД внедряването на поливане от частно лице може да работи за него. В MySQL, например, такова поле е присвоено на допълнителната опция AUTO_INCREMENT. В ORACLE и Firebird преди това тази функционалност можеше да бъде емулирана за помощта на различни последователности (SEQUENCE). Доколкото знам, ORACLE добави опцията GENERATED AS IDENTITY веднага.

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

Полето Име на таблицата Позиции се зарежда с уникални стойности от полето Позиция на таблицата.
Същото е възможно и за таблицата Отдели:

INSERT Departments (Name) SELECT DISTINCT Department FROM Employees WHERE Department IS NOT NULL
Докато разглеждаме таблиците с позиции и отдели, можем също да номерираме стойностите, като напишем стойността в полето ID:

ИЗБЕРЕТЕ * ОТ позиции

ИЗБЕРЕТЕ * ОТ отдели

Данните от таблиците сега играят ролята на dovídnikov за главата на селището и viddіlіv. Сега ние искаме идентификатора на кацането и vіddіlіv. Създаваме нови полета в таблицата Служители, за да събираме тези идентификатори:

Добавете поле за ID на завода ALTER TABLE Служители ADD PositionID int -- добавете поле за ID на завода ALTER TABLE Служители ADD DepartmentID int
Видът на осъществимото поливане е по вина и на двамата, както в довидниците, в това tse int.

Също така е възможно да добавите количество поливане към таблицата в таблицата с една команда, като възкресите полетата, чрез които:

ALTER TABLE Служители ADD PositionID int, DepartmentID int
Сега ще запишем стойността (възможен обмен - FOREIGN KEY) за тези полета, за да не е възможно да се напише в дадените полета стойността, средната дневна стойност на ID, която е в полетата.

ALTER TABLE Employees ADD CONSTRAINT FK_Employees_PositionID FOREIGN KEY(PositionID) РЕФЕРЕНЦИИ Positions(ID)
Същите същите zrobimo за друго поле:

ALTER TABLE Employees ADD CONSTRAINT FK_Employees_DepartmentID FOREIGN KEY(DepartmentID) REFERENCES Departments(ID)
Вече е възможно да въведете допълнителна ID стойност за това поле от посочената дата. Очевидно, ако искате да спечелите нов рекорд или засаждането, ще бъде наша отговорност да добавим нов рекорд към крайната дата. защото растението, че плевелите вече са запазени в довидники в един единствен пример, след това за да промените името, достатъчно е да промените нейните тилки в довидник.

Im'ya possilnogo obezhennya, call, ê съхранение, той е сгънат от префикса "FK_", след това отидете im'ya tablesі след знака на знака на знака на полето idé im'ya, като поискате идентификатора на масата-додник.

Идентификатор (ID) трябва да се използва за вътрешни стойности, така че да се избират само думи за извиквания и тъй като стойността се взема там, в повечето случаи е абсолютно грешна, не е необходимо да се отървете от низовете в последователността от числа, Аз трябва да обвинявам в процеса на работа с таблицата, например, след като оставих записи от лекаря.

ALTER TABLE tbl ADD CONSTRAINT IM_ID FOREIGN KEY(field1, eld2,…) REFERENCES table_address(field1, eld2,…)
В този случай, в таблицата "table_domain", първият ключ от представяния е комбинация от полета за надписи (field1, field2, ...).

Добре, сега нека актуализираме полетата PositionID и DepartmentID със стойностите на ID от документите. Качете за този DML с командата UPDATE:

UPDATE e SET PositionID=(SELECT ID FROM Positions WHERE Name=e.Position), DepartmentID=(SELECT ID FROM Departments WHERE Name=e.Department) FROM Employees e
Чудим се на случилото се, vykonavshi попита:

ИЗБЕРЕТЕ * ОТ Служители

Това е всичко, полетата PositionID и DepartmentID, попълнени с различни позиции и други идентификатори, вече не са налични в полетата Position и Department в таблицата Employees, можете да видите тези полета:

ALTER TABLE Служители DROP COLUMN Позиция, отдел
Сега нашата таблица изглежда така:

ИЗБЕРЕТЕ * ОТ Служители

документ за самоличност Име рожден ден електронна поща PositionID ИД на отдел
1000 Иванов И.И. НУЛА НУЛА 2 1
1001 Петров П.П. НУЛА НУЛА 3 3
1002 Сидоров С.С. НУЛА НУЛА 1 2
1003 Андреев А.А. НУЛА НУЛА 4 3

Tobto. В резултат на това сме събрали информация за света. Сега, след числата, поставете тази променлива, можете недвусмислено да ги наименувате, vicorist стойности в таблиците-dodniks:

SELECT e.ID,e.Name,p.Name PositionName,d.Name DepartmentName FROM Служители e LEFT JOIN Отдели d ON d.ID=e.DepartmentID LEFT JOIN Позиции p ON p.ID=e.PositionID

В Object Inspector можем да включим всички обекти, създадени за тази таблица. Можете да извършвате различни манипулации с тези обекти - например да преименувате и премахвате обекти.

Също така е необходимо да се посочи, че масата може да бъде поискана сама за себе си, tobto. може да се направи рекурсивно със сила. За дупето добавяме още едно поле ManagerID към нашата таблица със спивробитници, тъй като е показателно за спивробитника, към който е поръчан този спивробитник. Създаваме поле:

ALTER TABLE Служители ADD ManagerID int
Това поле има валидна стойност NULL, полето ще бъде празно, тъй като например няма излишни номера над интервала.

Сега нека създадем FOREIGN KEY в таблицата Employees:

ALTER TABLE Employees ADD CONSTRAINT FK_Employees_ManagerID FOREIGN KEY (ManagerID) REFERENCES Employees(ID)
Нека сега създадем диаграма и да се удивим как разглеждаме връзките между нашите таблици:

В резултат на моя грешка ще се появи картината (таблицата Служители е свързана с таблиците Позиции и Отдели и също работи върху себе си):

Искаме да кажем, че ключовете, които изпращате, могат да включват допълнителни опции ON DELETE CASCADE и ON UPDATE CASCADE, искаме да говорим за тях, как да се държите, когато видите или актуализирате запис, как да го изпратите до таблицата с добавки. Ако тези опции не са посочени, тогава не можем да променим идентификатора в таблицата с дати на този запис, към който е изпратен от другата таблица, така че не можем да видим такъв запис от самата дата, докато не видим всички редове които се отнасят до този запис или Е, това е ново в тези редове, за да добавите повече значение.

За примера, нека пресъздадем таблицата от присвоените опции ON DELETE CASCADE за FK_Employees_DepartmentID:

DROP TABLE Employees CREATE TABLE Employees(ID int NOT NULL, Name nvarchar(30), Birthday date, Email nvarchar(30), PositionID int, DepartmentID int, ManagerID int, CONSTRAINT PK_Employees PRIMARYKEY IGN KEY (DepartmentID ) REFERENCES Departments(ID) ON DELETE CASCADE, CONSTRAINT FK_Employees_PositionID FOREIGN KEY(PositionID) REFERENCES Positions(ID), CONSTRAINT FK_Employees_ManagerID FOREIGN KEY (ManagerID) REFERENCES ,PositionID,DepartmentID,ManagerID )VALUES (1000,N"Ivanov I.I.","195 50219", 2, 1, NULL ), (1001,N"Петров П.П.","19831203",3,3,1003), (1002 ,N"Сидоров С.С.","19760607",1,2,1000) , (1003,N "Андреев A.A." , "19820417", 4,3,1000)
Видяхме, че е направено с ID 3 от таблицата на отделите:

DELETE Departments WHERE ID=3
Разглеждане на данните в таблицата Служители:

ИЗБЕРЕТЕ * ОТ Служители

документ за самоличност Име рожден ден електронна поща PositionID ИД на отдел ИД на мениджър
1000 Иванов И.И. 1955-02-19 НУЛА 2 1 НУЛА
1002 Сидоров С.С. 1976-06-07 НУЛА 1 2 1000

Подобно на Бачимо, получил 3 от таблицата на служителите, просто така се случи.

Опцията ON UPDATE CASCADE се държи по същия начин, но само когато стойността на ID се актуализира. Например, ако променим идентификатора на завода в контролния списък на posad, тогава в този случай DepartmentID на таблицата Employees ще бъде актуализиран с новата стойност на ID, както сме задали в контролния списък. Ale, в тази vipadka tse демонстрира да не вижда, защото колоната ID в таблицата Departments трябва да има опция IDENTITY, за да не ни позволи да атакуваме последващата заявка (променете ID на запис 3 на 30):

АКТУАЛИЗИРАНЕ на отдели SET ID=30 WHERE ID=3
Golovne zrozumit същността на tsikh 2 опции ON DELETE CASCADE и ON UPDATE CASCADE. Аз zastosovuyu tsі optsії дори рядко и препоръчвам да помислите добре, как да влезете в осъществимо obezhennya, tk. с непознат запис от таблицата на отчета, това може да доведе до големи проблеми и да създаде реакция на Ланцуг.

Бележка 3:

Разрешено добавяне/промяна на IDENTITY стойност SET IDENTITY_INSERT Отдели ON INSERT Отдели(ID,Name) VALUES(3,N"IT") -- предотвратяване на добавяне/промяна на IDENTITY стойност SET
Нека отново да почистим таблицата Employees с помощта на командата TRUNCATE TABLE:

СЪРЪЗНАТА ТАБЛИЦА Служители
Повтарям го отново в тези данни, преразглеждайки предната команда INSERT:

INSERT Employees (ID,Name,Birthday,PositionID,DepartmentID,ManagerID)VALUES (1000,N"Ivanov I.I.","19550219",2,1,NULL), (1001,N"Petrov P.P." ,"19831203",3 ,3,1003), (1002,N"Сидорив С.С.","19760607",1,2,1000), (1003,N"Андреев А.А.","19820417" ,4,3,1000)

Вероятно

В момента са ни известни още няколко DDL команди:
  • Добавяне на ИДЕНТИЧНОСТ към полето - позволява автоматично попълване на полето (име на поле) за таблицата;
  • АЛТЕР ТАБЛИЦАиме_на_таблица ДОБАВЯНЕ change_fields_with_characteristics – позволява добавяне на нови полета към таблицата;
  • АЛТЕР ТАБЛИЦАиме_на_таблица ПУСКАНЕ НА КОЛОНА list_of_fields - позволява ви да видите полета от таблици;
  • АЛТЕР ТАБЛИЦАиме_на_таблица ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ im'ya_obezhennya ВЪНШЕН КЛЮЧ(полета) ПРЕПРАТКИ doc_table(fields) – позволява ви да зададете връзка между таблица и doc таблица.

Други борси – УНИКАЛЕН, ПО ПОДРАЗБИРАНЕ, ПРОВЕРЕН

За помощта на УНИКАЛНО поливане можете да кажете каква стойност за линията на кожата в дадено поле или в набор от поливания може да бъде уникална. В случая на таблицата Employees можете също да поставите граница на полето Email. Само предварително запомнете имейл стойностите, сякаш все още не са присвоени:

АКТУАЛИЗИРАНЕ НА Служители SET Email=" [имейл защитен]„WHERE ID=1000 UPDATE Employees SET Email=" [имейл защитен]" WHERE ID=1001 UPDATE Employees SET Email=" [имейл защитен]„WHERE ID=1002 UPDATE Employees SET Email=" [имейл защитен] WHERE ID=1003
И сега можете да поставите на полето за уникалност на обмежването:

ALTER TABLE Служители ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ UQ_Employees_Email UNIQUE(Имейл)
Сега кореспондентът не може да влезе в една и съща електронна поща с няколко spivrobitniks.

Обменът на уникалност се нарича така - първо, префиксът “UQ_”, даде името на таблицата и след знака на подразделението на името на полето, сякаш се наслагва дадения обмен.

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

ALTER TABLE table_name ADD CONSTRAINT exchange_name UNIQUE(поле1,поле2,…)
За допълнителна помощ при добавяне към полето DEFAULT box, можем да зададем стойността за ключалката, така че да бъде представена в падащото меню, така че при вмъкване на нов запис полето да не бъде повторно изброено в списъка с полета на INSERT команда. Можете да инсталирате същата борса без посредник при сгъване на масите.

Нека добавим ново поле „Дата до получаване“ към таблицата Служители и го наименуваме HireDate и да кажем, че стойността за заключване на това поле ще бъде текущата дата:

ALTER TABLE Служители ADD HireDate date NOT NULL DEFAULT SYSDATETIME()
Ако HireDate вече съществува, тогава можете да промените следния синтаксис:

ALTER TABLE Служители ДОБАВЯНЕ ПО ПОДРАЗБИРАНЕ SYSDATETIME() ЗА HireDate
Тук не съм въвел името на obezhennya, т.к във vipadku DEFAULT, имах идея, че не е толкова критично. Но ако работите любезно, тогава, предполагам, не е нужно да се редите и да питате нормално име. Бийте се така:

ALTER TABLE Employees ADD CONSTRAINT DF_Employees_HireDate ПО ПОДРАЗБИРАНЕ SYSDATETIME() ЗА HireDate
Ако не е имало знак за това по-рано, когато го добавите към записа на кожата, в полето HireDate ще бъде вмъкната по-точна дата.

Когато добавяте нов запис, текущата дата също ще бъде вмъкната автоматично, но не можем изрично да зададем това. не е показано в списъка на stovptsіv. Показва се в приложението, без да се посочва полето HireDate в превода, стойността, която се добавя:

INSERT Employees(ID,Name,Email)VALUES(1004,N"Sergeev S.S."," [имейл защитен]")
Да видим какво се случи:

ИЗБЕРЕТЕ * ОТ Служители

документ за самоличност Име рожден ден електронна поща PositionID ИД на отдел ИД на мениджър Дата на наемане
1000 Иванов И.И. 1955-02-19 [имейл защитен] 2 1 НУЛА 2015-04-08
1001 Петров П.П. 1983-12-03 [имейл защитен] 3 4 1003 2015-04-08
1002 Сидоров С.С. 1976-06-07 [имейл защитен] 1 2 1000 2015-04-08
1003 Андреев А.А. 1982-04-17 [имейл защитен] 4 3 1000 2015-04-08
1004 Сергеев С.С. НУЛА [имейл защитен] НУЛА НУЛА НУЛА 2015-04-08

Преобразуването CHECK се проверява в този случай, ако е необходимо да се промени стойността, която трябва да се въведе в полето. Например, ние поставяме обмен на полето за номер на персонала, като mi є іdidentifier svrobіtnik (ID). За помощ на такъв обмен, да кажем, че числеността на персонала и виновните майки са от 1000 до 1999 г.:

ALTER TABLE Employees ADD CONSTRAINT CK_Employees_ID CHECK(ID BETWEEN 1000 AND 1999)
Обменът се нарича така сам по себе си, първо, има префикс "CK_", след това ще назовем таблицата и името на полето, върху яка се налага границата.

Нека се опитаме да вмъкнем неприемлив запис за повторна проверка, който обменът работи (може да вземем необходимото извинение):

INSERT Employees(ID,Email) VALUES(2000," [имейл защитен]")
И сега променяме стойността, която е вмъкната от 1500 и променяме записа, който ще бъде вмъкнат:

INSERT Employees(ID,Email) VALUES(1500," [имейл защитен]")
Можете също така да създадете УНИКАЛЕН и ПРОВЕРЕН обмен без да посочвате име:

ALTER TABLE Employees ADD UNIQUE (Email) ALTER TABLE Employees ADD CHECK (ID МЕЖДУ 1000 И 1999)
Но това все още е добра практика и е по-добре да го поставите пред ясен изглед, защото за да разберем по-късно, какво ще бъде по-важно, ще трябва да покажем обекта и да се чудим, за което ще отговаряме.

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

Аз, очевидно, всички борси могат да бъдат създадени наведнъж, когато таблиците се комбинират, но все още не е възможно. Да видим таблицата:

DROP TABLE Служители
І е възможно да я възстановите z usíma със създадените борси с една команда CREATE TABLE:

CREATE TABLE Employees(ID int NOT NULL, Name nvarchar(30), Birthday date, Email nvarchar(30), PositionID int, DepartmentID int, HireDate date NOT NULL DEFAULT SYSDATETIME(), -- за DEFAULT i z(ID), CONSTRAINT FK_Employees_DepartmentID FOREIGN KEY(DepartmentID) REFERENCES Departments(ID), CONSTRAINT FK_Employees_PositionID FOREIGN KEY(PositionID) REFERENCES Positions(ID), CONSTRAINT UQ_ yees_ID CHECK (ID BETWEEN 1000 AND 1999))

INSERT Employees (ID,Name,Birthday,Email,PositionID,DepartmentID)VALUES (1000,N"Ivanov I.I.","19550219"," [имейл защитен]",2,1), (1001,N"Петров П.П.","19831203"," [имейл защитен]",3,3), (1002,N"Сидоров С.С.","19760607"," [имейл защитен]",1,2), (1003,N"Андреев А.А.","19820417"," [имейл защитен]",4,3)

Трохи за индексите, които се създават, когато границите на PRIMARY KEY и UNIQUE се комбинират

Както можете да видите на екранната снимка, когато границите PRIMARY KEY и UNIQUE бяха комбинирани, автоматично бяха създадени индекси с еднакви имена (PK_Employees и UQ_Employees_Email). За заключване индексът за първичния ключ се създава като CLUSTERED, а индексът се разрешава като NONCLUSTERED. Varto казва, че разбирането на клъстерния индекс не е в СУБД на САЩ. Таблицата може да има повече от един групиран (CLUSTERED) индекс. CLUSTERED - означава, че записите на таблицата ще бъдат сортирани по този индекс, така че можете да кажете, че този индекс може да има директен достъп до всички данни на таблицата. Главният индекс на таблицата. Как да кажа по-грубо, индекс на цените, завинтване към масата. Клъстерен индекс - това е още по-трудна задача, която може да помогне за оптимизиране на пиенето, засега просто го запомнете. Ако искаме да кажем, че клъстерираният индекс на победител не е в първичния ключ, а за различен индекс, тогава когато първичните ключове се комбинират с виновния, посочете опцията NONCLUSTERED:

ALTER TABLE table_name ADD CONSTRAINT exchange_name PRIMARY KEY NONCLUSTERED(field1,field2,…)
Например индексът за обмен PK_Employees не е групиран, а индексът за обмен UQ_Employees_Email е групиран. Видяхме пред нас следното obezhennya:

ALTER TABLE Служители DROP CONSTRAINT PK_Employees ALTER TABLE Employees DROP CONSTRAINT UQ_Employees_Email
И сега ги създаваме с опциите CLUSTERED и NONCLUSTERED:

ALTER TABLE Employees ADD CONSTRAINT PK_Employees PRIMARY KEY NONCLUSTERED (ID) ALTER TABLE Employees ADD CONSTRAINT UQ_Employees_Email UNIQUE CLUSTERED (Email)
Сега, след като сме избрали селекцията от таблиците Employees, виждаме, че записите са сортирани зад клъстерирания индекс UQ_Employees_Email:

ИЗБЕРЕТЕ * ОТ Служители

документ за самоличност Име рожден ден електронна поща PositionID ИД на отдел Дата на наемане
1003 Андреев А.А. 1982-04-17 [имейл защитен] 4 3 2015-04-08
1000 Иванов И.И. 1955-02-19 [имейл защитен] 2 1 2015-04-08
1001 Петров П.П. 1983-12-03 [имейл защитен] 3 3 2015-04-08
1002 Сидоров С.С. 1976-06-07 [имейл защитен] 1 2 2015-04-08

Преди това, ако клъстерираният индекс беше индекс PK_Employees, стандартните записи бяха сортирани по полето ID.

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

За dovіdnikіv повикване dotsіlno, schob клъстерен индекс на подкани от първичния ключ, т.к. в заявките често искаме идентификатора на драйвера за отримуване, например именуване (Plant, Viddilu). Тук предполагаме, за това, което писах по-рано, че клъстерният индекс може да има директен достъп до таблиците с редове и звездите са ясни, че можем да вземем стойността на всяка таблица без допълнителни данни.

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

Inodes в таблиците създават ключ чрез сурогатно поле, у-оста на тази колона се използва за промяна на стойността на опцията CLUSTERED индекс за сурогатния първичен ключ и за указване на опцията NONCLUSTERED при съпоставяне на сурогатния първичен ключ.

Вероятно

На този етап се запознахме с обичайните типове борси, по най-простия им начин те се създават чрез команда като “ALTER TABLE im'ya_table_ADD CONSTRAINT im'ya_obrazhennia...”:
  • ПЪРВИЧЕН КЛЮЧ– първичен ключ;
  • ВЪНШЕН КЛЮЧ- Nalashtuvannya zv'yazkіv и контрол tíl_sností данни;
  • ЕДИНСТВЕН ПО РОДА СИ- ви позволява да създавате уникалност;
  • ПРОВЕРКА- ви позволява да коригирате коректността на въвеждане на данни;
  • ПО ПОДРАЗБИРАНЕ- позволява да зададете стойността за ключалката;
  • Също така имайте предвид, че всички съоръжения могат да се видят с победна команда “ АЛТЕР ТАБЛИЦАиме_на_таблица ОТПУСКАНЕ НА ОГРАНИЧЕНИЕ im'ya_obezhennya".
Така че често се натъквахме на тези индекси и сортирахме понятията за клъстер ( КЛУСТЕРИРАН) и неклъстер ( НЕКЛУСТЕРЕН) индекс.

Създаване на независими индекси

При самодостатъчност, тук те се трудят върху индексите, тъй като те са създадени за обмен на PRIMARY KEY и UNIQUE.

Индексите на полето или полетата могат да бъдат създадени с обидна команда:

CREATE INDEX IDX_Employees_Name ON Employees(Name)
Също така тук можете да посочите опциите CLUSTERED, NONCLUSTERED, UNIQUE и можете също така да посочите директното сортиране на полето ASC (чрез заключване) или DESC:

СЪЗДАВАНЕ НА УНИКАЛЕН НЕКЛУСТЕРИРАН ИНДЕКС UQ_Employees_EmailDesc НА Служители(Имейл DESC)
Под часа на създаване на неклъстъриран индекс опцията NONCLUSTERED може да бъде разрешена, т.к. няма да работи на uvazі за umovchannyam, тук няма да бъде показано просто, за да укажете позицията на опцията CLUSTERED и NONCLUSTERED в командата.

Можете да видите индекса с обидната команда:

DROP INDEX IDX_Employees_Name ON Employees
Прости индекси могат да бъдат създадени в контекста на командата CREATE TABLE, точно като индекс.

Например мога да видя отново таблицата:

DROP TABLE Служители
І тя е разрешима със създаването на борси и индекси с една команда CREATE TABLE:

CREATE TABLE Employees(ID int NOT NULL, Name nvarchar(30), Birthday date, Email nvarchar(30), PositionID int, DepartmentID int, HireDate date NOT NULL CONSTRAINT DF_Employees_HireDATE DEFAULT es PRIMARY KEY (ID), CONSTRAINT FK_Employees_DepartmentID FOREIGN KEY(De partmentID ) REFERENCES Departments(ID), CONSTRAINT FK_Employees_PositionID FOREIGN KEY(PositionID) loyees(ID), CONSTRAINT UQ_Employees_Email UNIQUE(Email), CONSTRAINT CK_Employees_ID CHECK(ID BETWEEN 1000 AND 1999), INDEX IDX_Employees_Name( Име))
Nasamkіnets се вмъква в таблицата на нашите spіvrobіtnikіv:

ВМЪКНЕТЕ Служители (ID,Име,Рожден ден,Имейл,ПозицияID,DepartmentID,ManagerID)СТОЙНОСТИ (1000,N"Ivanov I.I.","19550219"," [имейл защитен]",2,1,NULL), (1001,N"Петров П.П.","19831203"," [имейл защитен]",3,3,1003), (1002,N"Sidoriv S.S.","19760607"," [имейл защитен]",1,2,1000), (1003,N"Андреев А.А.","19820417"," [имейл защитен]",4,3,1000)
Допълнителни varto показват, че преди неклъстерния индекс можете да включите стойността след допълнителния запис на тях в INCLUDE. Tobto. в този случай INCLUDE-index трябва да бъде клъстерен индекс, но сега това не е индексът на прикачените файлове към таблицата, но необходимите стойности са прикрепени към индекса. Очевидно такива индекси могат също така да увеличат производителността на пиене на избор (SELECT), тъй като всички полета са изброени в индекса, тогава може да не е необходимо да търсите таблицата в индекса. Ale ce естествено допринася за индекса, т.к Стойностите на прехвърлените полета се дублират в индекса.

Virizka от MSDN.Общ команден синтаксис за съпоставяне на индекси

СЪЗДАВАЙТЕ [УНИКАЛЕН] [КЛУСТЕРИРАН | NONCLUSTERED] INDEX index_name ВКЛ (колона [ ASC | DESC ] [ ,...n ]) [ ВКЛЮЧВА (име_на_колона [ ,...n ]) ]

Вероятно

Индексите могат да променят сигурността на избора на данни (SELECT), но индексите могат да променят сигурността на таблиците за модифициране на данни, тъй като След модификация на кожата на системата ще е необходимо да се преработят всички индекси за конкретна таблица.

Bazhano в типа кожа, за да знаете оптималното решение, златната среда, ефективността на вибрирането и модификацията на тези камъни на плоската река. Стратегията за създаване на индекси и тяхното количество може да се дължи на различни фактори, например данните в таблиците често се променят.

Visnovok shodo DDL

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

Golovne - разберете същността и reshta практика.

Успех в овладяването на царството на чудодейния филм под името SQL.

Трябва ли „SELECT * WHERE a = b FROM c“ или „SELECT WHERE a = b FROM c ON *“?

Ако сте като мен, тогава изчакайте малко: SQL е едно от онези неща, които на пръв поглед изглеждат лесни (не се чете на английски!), но все пак трябва да потърся в Google кожата за проста заявка да знаете правилния синтаксис.


И след това се присъединява, агрегация, pidzapiti и излиза от билярда. Нещо като това:


SELECT members.firstname || " " || members.lastname AS "Пълно име" FROM заеми INNER JOIN членове ON members.memberid=borrowings.memberid INNER JOIN книги ON books.bookid=borrowings.bookid WHERE borrowings.bookid IN(SELECT bookid FROM books ) FROM books)) GROUP BY членове .firstname, members.lastname;

Буе! Така че, било то новак или създайте търговец на дребно от средно ниво, за да можете първо да стартирате SQL. Но не всичко е толкова лошо.


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


Не се изненадвайте от тези, че синтаксисът на SQL може да не се разпознава в различни бази данни, PostgreSQL е най-популярната статия за заявки. Практика практика с MySQL и други бази данни.

1. Три чаровни думи

SQL има много ключови думи, но SELECT , FROM и WHERE са практични за кожата. Trohi pіznіshe zrozumієte, че tsі три думи е най-фундаменталните аспекти на стимулиране zapitіv към основата, и други, сгъваеми zapiti, е по-малко от nadbudovy над тях.

2. Нашата база

Нека да разгледаме базата данни, така че ще спечелим като дупе за тази статия:







Имаме библиотека и хора. Има и специална таблица за изглед на видяните книги.

  • Таблицата "книги" събира информация за заглавието, автора, датата на публикуване и заглавието на книгата. Всичко е просто.
  • Таблицата "членове" съдържа имената и псевдонимите на всички хора, записали се в библиотеката.
  • Таблицата "заемане" събира информация за заемане на книга от библиотеката. Колоната bookid е преди идентификатора на заетата книга в таблицата „books“, а колоната memberid е преди конкретния човек в таблицата „members“. Можем също да видим датата, когато книгата трябва да бъде завъртяна.

3. Проста заявка

Нека започнем с проста молба: имаме нужда именаі идентификатори(id) всички книги, написани от автора „Дан Браун“


Искането ще бъде така:


ИЗБЕРЕТЕ bookid AS "id", заглавие FROM books WHERE author="Dan Brown";

И резултатът е такъв:


документ за самоличност заглавие
2 Изгубеният символ
4 Ад

Лесен за пиене. Нека погледнем по-отблизо, за да разберем какво се казва.

3.1 ОТ - повиквания за въвеждане на данни

В същото време може да е очевидно, но ОТ ще бъде още по-важно по-късно, ако преминем към деня на пиене.


FROM сочи към таблица, за която се изисква работа. Tse mozhe buti вече използва маса (както в случая на по-висока) или маса, настроена на много през деня или напитка.

3.2 КЪДЕ - кои данни се показват

WHERE просто се държи като филтър rowkivискаме да видим. Според нас искаме да имаме повече от 3 реда, което е посочено в колоната за автор от Дан Браун.

3.3 ИЗБЕРЕТЕ - според показаните данни

Сега, ако имаме всички колони, от които се нуждаем, от таблиците, от които се нуждаем, трябва да транскрибираме, само за да покажем самите данни. Нашият тип се нуждае само от имена и идентификатори на книги, също същите оберемоза помощ ИЗБЕРЕТЕ. В същото време можете да промените колоната на vicorist AS.


Цялата заявка може да се визуализира с помощта на прости диаграми:


4. Z'ednannya (Джойни)

Сега бихме искали да наименуваме (не очевидно уникални) всички книги на Дан Браун, сякаш са заети от библиотеката и ако книгите трябва да се сменят:


ИЗБЕРЕТЕ books.title КАТО „Заглавие“, borrowings.returndate КАТО „Дата на връщане“ ОТ заемите JOIN книги НА borrowings.bookid=books.bookid WHERE books.author="Дан Браун";

Резултат:


Заглавие дата на връщане
Изгубеният символ 2016-03-23 00:00:00
Ад 2016-04-13 00:00:00
Изгубеният символ 2016-04-19 00:00:00

Най-добрата заявка е подобна на предната за винеткаОТ раздели. Tse означава какво Ние вземаме данни от нашите таблици. Не се връщаме към таблицата „книги“, нито към таблицата „заеми“. Natomist mi beast to нови маси, scho скри z'ednannyam tsikh две маси.


borrowings JOIN books ON borrowings.bookid=books.bookid - проверете дали новата таблица е формирана чрез комбиниране на всички записи от таблиците "books" и "borrowings", в които са избрани стойности на bookid. Резултатът от такъв гняв ще бъде:



И тогава ще ви поканим на масата точно така, сякаш е по-добър пример. Tse означава, че когато правите маса, трябва да помислите как да проведете срещата. И тогава ще го разберем сами, сякаш говорим за „простата молба“ в параграф 3.


Нека опитаме още малко сгъване с две маси.


Сега искаме да премахнем имената и прякорите на хората, тъй като те са взети от библиотеката на книгата на автора Дан Браун.


Този път нека преминем нагоре и надолу по демонстрацията:


Крок Стъпка 1- Взимаме ли данни? За да вземем резултата, от който се нуждаем, трябва да комбинираме таблиците „член“ и „книги“ с таблицата „заеми“. Секцията JOIN изглежда така:


borrowings ПРИСЪЕДИНЕТЕ СЕ към книги НА borrowings.bookid=books.bookid ПРИСЪЕДИНЕТЕ СЕ към членове ON members.memberid=borrowings.memberid

Резултатът от поръчката може да бъде платен за possilannyam.


Крок 2- Какви данни се показват? Не е нужно да се гъделичкаме от тези данни, авторът на книгата е „Дан Браун“


WHERE books.author="Дан Браун"

Крок 3- Как се показват данните? Сега, ако почитта бъде отнета, е необходимо просто да я донесете на името на мълчаливия, който е взел книгите:


ИЗБЕРЕТЕ members.firstname КАТО „Собствено име“, members.lastname КАТО „Фамилия“

Супер! Загубихме по-малко от три склада и необходимостта да увеличим доставките, от които се нуждаем:


ИЗБЕРЕТЕ members.firstname КАТО „Собствено име“, members.lastname КАТО „Фамилия“ FROM заемки JOIN книги НА borrowings.bookid=books.bookid JOIN членове ON members.memberid=borrowings.memberid WHERE books.author="

Какво ще ни даде:


първо име фамилия
Майк Уилис
Елън Хортън
Елън Хортън

Чудодейно! Але, имената се повтарят (вонята е уникална). Скоро ще го поправим.

5. Агрегиране

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


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


ИЗБЕРЕТЕ members.firstname КАТО „Собствено име“, members.lastname КАТО „Фамилия“, count(*) КАТО „Брой заредени книги“ ОТ заемки ПРИСЪЕДИНЕНЕ към книги НА borrowings.bookid=books.bookid ПРИСЪЕДИНЕНЕ към членове НА members.memberid= . memberid WHERE books.author="Дан Браун" GROUP BY members.firstname, members.lastname;

Какво ще ни даде желания резултат:


първо име фамилия Брой заети книги
Майк Уилис 1
Елън Хортън 2

Може всички агрегации да вървят заедно от GROUP BY вирусаза. Tsya парче преправям масата, така че да може да бъде взето от масата на групата. Групата кожа съответства на уникалната стойност (или стойността на групата) на stompchik, която посочихме в GROUP BY. В нашето приложение ние преобразуваме резултата от миналото вдясно в група редове. Ние също така извършваме агрегиране от броя, като преобразуване на редица редове в целева стойност (в нашия случай има няколко реда). Тогава значението се приписва на групата кожа.


Кожен ред в резултат на агрегация на кожни групи.



Възможно е да се създаде логическо оформление, при което всички полета в резултата трябва или да бъдат посочени в GROUP BY, в противен случай може да се извърши агрегиране зад тях. Тъй като всички други полета могат да бъдат сортирани едно по едно в различни редове и дори да изберете SELECT "th", тогава е неразумно да е необходимо да се вземат възможните стойности.


В примера функцията за броене обработи всички редове (осцилаторите взеха предвид броя на редовете). Други функции на квадратната сума хи макс презаписват редовете, които не са присвоени. Например, ако искаме да разпознаем няколко книги, написани от автор на кожата, тогава е необходима следната заявка:


ИЗБЕРЕТЕ автор, сума (наличност) ОТ книги ГРУПИРАНЕ ПО автор;

Резултат:


автор сума
Робин Шарма 4
Дан Браун 6
Джон Грийн 3
Амиш Трипати 2

Тук функцията за сумиране само разширява колоната за запаси и увеличава сумата от всички стойности в групата на кожата.

6. Пийте


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

6.1 Двойна маса

Є попитайте как да завъртите колоната от високоговорители. Добър задник е да поискате миналото право за агрегиране. Като pídzapit, vín просто обърнете още една маса, за която можете да работите с нови заявки. Продължавайки напред надясно, тъй като искаме да разпознаем няколко книги, написани от автора на „Робин Шарма“, тогава един от възможните начини е да спечелите напитка:


ИЗБЕРЕТЕ * ОТ (ИЗБЕРЕТЕ автор, сума (наличност) ОТ книги ГРУПИРАНЕ ПО автор) AS резултати WHERE author="Robin Sharma";

Резултат:



Можете да го напишете като: ["Робин Шарма", "Дан Браун"]


2. Сега имаме най-добрия резултат за новата заявка:


SELECT title, bookid FROM books WHERE author IN (SELECT author FROM (SELECT author, sum(stock) FROM books GROUP BY author) AS results WHERE sum > 3);

Резултат:


заглавие bookid
Изгубеният символ 2
Кой ще плаче, когато умреш? 3
Ад 4

Tse same, scho:


ИЗБЕРЕТЕ заглавие, bookid FROM книги WHERE автор IN („Робин Шарма“, „Дан Браун“);

6.3 Други стойности

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


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


Средният kіlkіst може да бъде otrimati такъв ранг:


изберете avg(stock) от книги;

Какво ни дава:


7. Записващи операции

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

7.1 Актуализация

Синтаксисът за UPDATE е семантично избягал от четене. Единственото нещо, което трябва да направите, е да промените избора на SELECT колони "о, трябва да знаем SET".


Сякаш всички книги на Дан Браун са съсипани, необходимо е да нулирате стойността на числото. Заявката за кого ще бъде следната:


АКТУАЛИЗИРАНЕ на книги SET stock=0 WHERE author="Dan Brown";

КЪДЕ да ограбите същите, които бяха по-рано: изберете редове. Вместо SELECT, което е най-доброто време за четене, сега имаме SET. Сега обаче е необходимо да посочите не само името на колоната, но и нова стойност за името на колоната в избраните редове.


7.2 Изтриване

Заявете DELETE - просто поискайте SELECT или UPDATE без имена на колони. Сериозно. Както в случая с SELECT и UPDATE, блокът WHERE се запълва със същия: в избраните редове, така че е необходимо да се изтрие. Операцията на отдалеченост унищожава целия ред, така че няма смисъл да се казват okrem колоните. Така че, както виждаме, не за да анулира редица книги на Дан Браун, а вместо да видите всички записи, можете да създадете такава заявка:


ИЗТРИВАНЕ ОТ книги WHERE author="Dan Brown";

7.3 Поставете

Може би единственото нещо, което се взема предвид при други видове заявки, е INSERT. Форматът е:


INSERT INTO x (a, b, c) стойности (x, y, z);

De a, b, c наименувайте колоните, а x, y и z са стойностите, които трябва да поставите в колоните q в този ред. Ос, принципи и всичко.


Нека да разгледаме конкретен пример. Оста се зарежда от INSERT, което ще зареди цялата таблица "books":


ВМЪКНЕТЕ В книги (bookid,title,author,published,stock) ЦЕННОСТИ (1,"Потомък на Икшваку","Амиш Трипати","06-22-2015",2), (2,"Изгубеният символ"," Дан Браун","07-22-2010",3), (3,"Кой ще плаче, когато умреш?","Робин Шарма","06-15-2006",4), (4,"Ад" "Дан Браун", "05-05-2014",3), (5, "Вината в нашите звезди", "Джон Грийн", "01-03-2015",3);

8. Повторна проверка

Стигнахме до края, проповядвам малък тест. Вижте искането в началото на статията. Можете ли да се разобрате в новото? Опитайте да го разделите на секциите SELECT, FROM, WHERE, GROUP BY и погледнете другите подкомпоненти.


Оста на вината е по-удобна за четене:


SELECT members.firstname || " " || members.lastname AS "Пълно име" FROM заеми INNER JOIN членове ON members.memberid=borrowings.memberid INNER JOIN книги ON books.bookid=borrowings.bookid WHERE borrowings.bookid IN (ИЗБЕРЕТЕ bookid FROM books ) FROM books)) GROUP BY членове .firstname, members.lastname;

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


Резултат:


Пълно име
Линда Тайлър

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

Технологии