Пример за създаване на sql таблица. SQL - какво е, за какво е езикът и основни функции за начинаещи

Типът език, използван в конкретна СУБД, се нарича диалектSQL. Например диалектът на Oracle се нарича PL/ SQL; в MSSQLServer и DB2 се прилага диалектът Транзакция- SQL; в Interbase и Firebird – isql... Всеки SQL диалект е съвместим до известна степен със стандарта SQL, но може да има разлики и специфични езикови разширения, така че за да разберете синтаксиса на конкретен SQL оператор, първо трябва да погледнете Помогнеспецифична СУБД.

За операции с бази данни и таблици стандартът sql предоставя оператори:

Следва синтаксисът на SQL92 за тези оператори. Тъй като техният синтаксис в СУБД може да се различава от стандартния, се препоръчва да се обърнете към помощната система на СУБД по време на лабораторната работа.

Имената на обекти в базата данни (таблици, колони и т.н.) могат да се състоят от буквено-цифрови знаци и знак за долно подчертаване. Специалните символи (@ $ # и т.н.) обикновено показват специален тип таблица (системна, временна и т.н.). Не се препоръчва използването на национални (руски) знаци, интервали и запазени думи в имената, но ако те все още се използват, тогава такива имена трябва да бъдат записани в кавички ".." или в квадратни скоби [..].

По-нататък, когато се описват конструкциите на SQL изрази, ще се използват следните обозначения: в квадратни скоби се записват незадължителни части от конструкцията; алтернативните дизайни са разделени с вертикална лента | ; брекети() разпределяне на логически блокове на структурата; многоточие показва, че предишната част от структурата може да се повтаря много пъти. В него се записват "разширяеми" конструкции ъглови скоби < >.

Създаване на база данни

СЪЗДАЙТЕ БАЗА ДАННИ Име на база данни

Премахване на една или повече бази данни

ИЗПУСКАНЕ НА БАЗА ДАННИ Име на база данни[,Име на база данни…]

Деклариране на текущата база данни

ИЗПОЛЗВАЙТЕ Име на базата данни –-в SQL Server и MySQL

ЗАДАЙТЕ БАЗА ДАННИ име_ база_ данни - в Firebird

Създаване на таблица

СЪЗДАЙТЕ ТАБЛИЦА Име на таблица (

<описание_столбца> [, <описание на колона> |

<table_integrity_constraint>…]

< описание на колона>

Име на колона ТИП

(БЕЗ ДЕЙСТВИЕ | КАСКАДА | ЗАДАВАНЕ ПО ПОДРАЗБИРАНЕ | ЗАДАВАНЕ НА НУЛ)]

ТИПколоната може да бъде или стандартен тип данни (вижте таблица 1), или име на домейн (вижте раздел 6.2).

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

Описанието на изчислена колона в SQL Server е:

<описание_столбца> Име на колонаКАТО изразяване

Описание на изчислената колона в Жар птицаизглежда като:

<описание_столбца> Име на колонаИЗЧИСЛЕНО ОТ<израз>

MySQL 3.23 не поддържа изчислени колони.

< >

ОГРАНИЧЕНИЕ Integrity_constraint_name

(УНИКАЛЕН | ПЪРВИЧЕН КЛЮЧ) ( ключ_списък_списък_колони)

| ВЪНШЕН КЛЮЧ ( списък_ колони_FK)

ПРЕПРАТКИ Име на таблица(колона_списъкPK)

(БЕЗ ДЕЙСТВИЕ | КАСКАДА | ЗАДАВАНЕ ПО ПОДРАЗБИРАНЕ | ЗАДАВАНЕ НА НУЛ)]

(БЕЗ ДЕЙСТВИЕ | КАСКАДА | ЗАДАВАНЕ ПО ПОДРАЗБИРАНЕ | ЗАДАВАНЕ НА НУЛ)]

| ПРОВЕРЕТЕ ( условие_валидиране)

Някои СУБД позволяват декларирането на временни таблици (съществуващи само по време на сесия). В SQL Server имената на временните таблици трябва да започват с # (локални временни таблици, видими само за потребителя, който ги е създал) или ## (глобални таблици, видими за всички потребители); MySQL използва ключовата дума TEMPORARY за създаване на временни таблици, например:

СЪЗДАВАЙТЕВРЕМЕННОТАБЛИЦА… (За допълнителен синтаксис вижте СЪЗДАВАНЕ НА ТАБЛИЦА).

Промяна на структурата на таблицата

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

ПРОМЕНИ ТАБЛИЦА Име на таблица

Промяна на типа на колоната (в SQLServer и Firebird)

ПРОМЕНИ КОЛОНА Име на колонанов_ТИП

Промяна на типа, името и ограниченията на колоната (в MySQL)

ПРОМЯНА КОЛОНА Име на колона <описание на колона>

Добавете обикновена или изчислена колона

| ДОБАВЯНЕ<описание на колона>

Добавяне на ограничение за интегритет

| ДОБАВЯНЕ

<таблица_ограничение за целостта>

Изтриване на колона

| КОЛОНА ИЗПУСКАНЕ Име на колона

Премахване на ограничение за целостта

| ОТПУСКАНЕ ОГРАНИЧЕНИЕТО Integrity_constraint_name

Разрешаване или деактивиране на ограниченията за проверка на целостта

InMSSQLServer

| (ПРОВЕРКА | БЕЗ ПРОВЕРКА) ОГРАНИЧЕНИЕ

{Списък_на_име_ограничението на целостта| ВСИЧКИ)

Изпускане на маса

ИЗПУСКАНЕ МАСА Име на таблица



След това ще разгледаме как да декларираме декларативни ограничения за целостта, когато създаваме нови таблици с командата CREATETABLE или променяме структурата на съществуващи таблици с командата ALTERTABLE (те са описани по-подробно в раздел 4.2).

1. Задължително наличие на данни (NULL стойности)

Декларира се с думата NULL (колоната може да има празни клетки) или NOT NULL (тази колона е задължителна). По подразбиране е NULL.

Пример за създаване на таблица 7:

СЪЗДАВАЙТЕТАБЛИЦАклиенти (

Име на клиента НВЪРЧАР(60) НЕ НУЛИ,

Дата на раждане ДАТА НУЛА,

Телефон CHAR(12)); - също NULL по подразбиране

2. Стойност по подразбиране (ПО ПОДРАЗБИРАНЕ)

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

Нека разгледаме пример за създаване на таблица Поръчки(Поръчки). Колона Дата на поръчкаприема текущата дата по подразбиране, а колоната количество(число) по подразбиране е 0.

СЪЗДАЙТЕ ТАБЛИЦАПоръчки (

Номер на поръчката INT НЕ НУЛА, -- Номер на поръчка

Дата на поръчка ВРЕМЕ ЗА СРЕЩА НЕ НУЛА-- дата на поръчка

ПО ПОДРАЗБИРАНЕ GetDate (),

Функцията GetDate () връща текущата дата 8

количество SMALLINT НЕ НУЛА- количество стоки, ПО ПОДРАЗБИРАНЕ 0);

3. Деклариране на първични ключове (ОСНОВЕН КЛЮЧ)

Прост първичен ключ се декларира с думите PRIMARYKEY при създаването на таблицата. Например,

СЪЗДАВАЙТЕТАБЛИЦАПерсонал ( - таблица "Служители"

TabNum INTПЪРВИЧНИКЛЮЧ, - първичен ключ

WName НВЪРЧАР(40) НЕНУЛА, -- ПЪЛНО ИМЕ

... -- описание на други колони);

Съставният първичен ключ се декларира по различен начин:

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

СЪЗДАЙТЕ ТАБЛИЦАклиенти (

PasSeria ЦИФРОВО(4,0)НЕ НУЛА,-- серия паспорти

PasNumber ЦИФРОВО(6,0)НЕ НУЛА,-- стая паспорти

име НВЪРЧАР(40)НЕ НУЛА,

Телефон CHAR(12),

-- съставна декларация за първичен ключ

ОГРАНИЧЕНИЕКлиенти_ПК

ПЪРВИЧНИ КЛЮЧ(PasSeria, PasNumber));

-- метод 2 (PKдеклариран след създаване на таблица)

- първо създаваме таблица безPK

СЪЗДАВАЙТЕ ТАБЛИЦАклиенти (

PasSeria ЦИФРОВО(4,0)НЕ НУЛА,--серия паспорти

PasNumber ЦИФРОВО(6,0)НЕ НУЛА,--стая паспорти

Име на клиента НВЪРЧАР(40)НЕ НУЛА,

Телефон CHAR(12));

-- модификация масидобавете RK

ПРОМЕНИ ТАБЛИЦАКлиенти

ДОБАВЯНЕ ОГРАНИЧЕНИЕКлиенти_ПК

ПЪРВИЧНИ КЛЮЧ(PasSeria, PasNumber);

4. Уникалност на колоните (ЕДИНСТВЕН ПО РОДА СИ)

като Основен Ключпоказва, че колона или група от колони не могат да съдържат дублиращи се стойности, но не са PK... Всички колони, обявени за UNIQUE, трябва да бъдат NOTNULL. Пример за деклариране на проста уникална колона:

СЪЗДАЙТЕ ТАБЛИЦАСтуденти (

SCode INT ПЪРВИЧНИ КЛЮЧ, - сурогатен RK

FIO НВЪРЧАР(40) НЕ НУЛА, -- ПЪЛНО ИМЕ

Записна книга CHAR(6) НЕ НУЛА ЕДИНСТВЕН ПО РОДА СИ); - студент студентски номер

Пример за деклариране на съставно уникално поле:

СЪЗДАВАЙТЕ ТАБЛИЦАПерсонал (- маса " Работници"

TabNum INT ПЪРВИЧЕН КЛЮЧ, -- официален стая

WName НВЪРЧАР(40) НЕ НУЛИ, -- Пълно име

PasSeria ЦИФРОВО(4,0) НЕ НУЛИ, -- серия паспорти

PasNumber ЦИФРОВО(6,0) НЕ НУЛИ, -- стая паспорти

-- съобщение композитен единствен по рода си полета

ОГРАНИЧЕНИЕПерсонал_UNQ ЕДИНСТВЕН ПО РОДА СИ(PasSeria, PasNumber));

5. Ограничения На смисъл колона (ПРОВЕРКА)

Това ограничение ви позволява да зададете диапазон, списък или "маска" на логическите стойности на колоната.

Пример за създаване на таблица Работници(работници):

СЪЗДАВАЙТЕТАБЛИЦАработници (

- персонални номера 4-цифрени

TabNum INT ПЪРВИЧЕН КЛЮЧ

ПРОВЕРЕТЕ(TabNum МЕЖДУ 1000 И 9999),

име ВАРЧАР(60) НЕ НУЛИ, -- Пълно име служител

-- етажписмо " м" или " е"

Джентри CHAR(1) НЕ НУЛИ

ПРОВЕРЕТЕ(Джентри IN("m", "f")),

Възраст най-малко 14 години

Възраст SMALLINT НЕ НУЛА ПРОВЕРЕТЕ(Възраст> = 14),

- номер на удостоверение за пенсионно осигуряване (с маска)

PensionCert CHAR(14)

ПРОВЕРЕТЕ(PensionSert КАТО ""));

Този пример показва различни видове проверки. Диапазонът от валидни стойности се обозначава с МЕЖДУ... И; обичайни условия (като за колоната Възраст) използвайте знаци за сравнение =,<>, >, >=, <, <=, связанные при необходимости логическими операциямиAND,OR,NOT(например,Възраст> = 14И Възраст<=70); для указания списка допустимых значений используется предикатINи его отрицаниеNOTIN; конструкция

КАТО разрешена_маска_стойностС ИЗКЛЮЧЕНИЕ изключване_списък

се използва за задаване на маската на валидни стойности за колони на низове. Маската използва два специални знака: "%" - произволен подниз и "_" - всеки единичен знак. Клаузата EXCEPT е незадължителна.

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

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

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

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

ЕКИП ЗА СЪЗДАВАНЕ НА МАСА

Таблиците се създават с командата CREATE TABLE. Тази команда създава празна таблица - таблица без редове. Стойностите се въвеждат с помощта на командата DML INSERT (вижте Глава 15). Командата CREATE TABLE основно дефинира таблици чрез нея като описание на набор от имена на колони, посочени в определен ред. Той също така дефинира типове данни и размери на колони. Всяка таблица трябва да има поне една колона.

Синтаксисът на командата CREATE TABLE е CREATE TABLE ( [()], [()] ...); Както беше обсъдено в Глава 2, типовете данни варират значително от програма до програма. За да бъдат съвместими със стандарта, всички те трябва поне да поддържат стандарт от тип ANSI. Описано е в Приложение Б.

Тъй като интервалите се използват за разделяне на части от SQL команда, те не могат да бъдат част от името на таблица (или друг обект, като индекс). Долна черта (_) - Обикновено се използва за разделяне на думи в имената на таблици.

Значението на аргумента size зависи от типа данни. Ако не го посочите, вашата система ще присвои стойността автоматично. За числови стойности това е най-добрият вариант, тъй като в този случай всички ваши полове от този тип ще получат еднакъв размер, което ви освобождава от проблемите с общата им съвместимост (вижте Глава 14). Също така, използването на аргумента за размер с някои набори от числа не е съвсем ясен въпрос. Ако трябва да съхранявате големи номера, несъмнено ще трябва да се уверите, че подът е достатъчно голям, за да ги побере.

Един тип данни, за който основно трябва да зададете размер, е CHAR. Аргументът за размер е цяло число, което определя максималния брой знаци, които полето може да съдържа. Всъщност броят на знаците за поле може да бъде от нула (ако полето е NULL) до това число. По подразбиране аргументът за размер е 1, което означава, че полето може да съдържа само една буква. Това разбира се не е точно това, което искате.

Таблиците принадлежат на потребителя, който ги е създал, и имената на всички таблици, принадлежащи на този потребител, трябва да се различават една от друга, както и имената на всички колони в тази таблица. Отделни таблици могат да използват едни и същи имена на колони, дори ако са собственост на един и същ потребител. Пример за това е колоната град в таблицата Клиенти и в таблицата Продавачи. Потребителите на таблици, които не са собственици, могат да се позовават на тези таблици, като използват името на собственика на тези таблици, последвано от точка; например таблицата Employees, създадена от Smith, ще бъде наречена Smith.Employees, когато бъде препратена от друг потребител (разбираме, че Smith е идентификаторът на разрешението (ID). (ID), докладван от потребителя (вашият разрешен идентификатор е ваш в SQL). Този резултат е обсъден в Глава 2 и ще бъде продължен в Глава 22).

Тази команда ще създаде таблицата на продавачите: CREATE TABLE Saleepeople (snum integer, sname char (10), city char (10), comm declmal); Редът на колоните в таблицата се определя от реда, в който са изброени. Те не трябва да разделят колоната на прекъсвания на редове (което е за четливост), а са разделени със запетаи.

ИНДЕКСИ

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

Индексите са SQL инструмент, който е роден от самия пазар, а не от ANSI. Следователно самият стандарт ANSI в момента не поддържа индекси, въпреки че те са много полезни и широко използвани.

Когато създадете индекс на поле, вашата база данни запомня подходящия ред на всички стойности за това поле в паметта. Да предположим, че нашата таблица с клиенти има хиляди записи и искате да намерите клиент с номер = 2999. Тъй като редовете не са подредени, вашата програма ще сканира цялата таблица, ред по ред, като проверява всеки път, когато стойността на полето cnum е равна на стойността на 2999. Ако обаче в полето cnum е имало индекс, тогава програмата може да достигне номер 2999 директно от индекса и да даде информация как да намерите правилния ред в таблицата.

Докато индексът значително подобрява производителността на заявката, използването на индекс забавя до известна степен операциите за модификация на DML (като INSERT и DELETE), а самият индекс заема памет. Следователно, всеки път, когато създавате таблица, трябва да решите дали да я индексирате или не. Индексите могат да бъдат съставени от множество полета. Ако за един индекс са посочени повече от едно поле, второто се подрежда в рамките на първия, третото във втория и т.н. Ако ги разполагате с първото и последното в две различни полета на таблицата, можете да създадете индекс, който да подреди предишното поле в следващото. Това може да се направи независимо от начина, по който колоните са подредени в таблицата.

Синтаксисът за създаване на индекс обикновено е следният (не забравяйте, че това не е ANSI стандарт): CREATE INDEX НА

( [,] ...); Таблицата, разбира се, трябва вече да е създадена и трябва да съдържа колона за нея. Im an index не може да се използва за нищо друго в базата данни (от който и да е потребител). Веднъж създаден, индексът ще бъде невидим за потребителя. SQL решава кога е необходимо да се позовава на него и го прави автоматично. Ако например таблицата „Клиенти“ ще бъде най-често споменаваната в запитванията за продажби към собствената им клиентела, би било правилно да се създаде такъв индекс в полето snum на таблицата „Клиенти“. CREATE INDEX Clientgroup ON Клиенти (snum); Сега този продавач, който се занимава с тази маса, ще може много бързо да намери своя собствена клиентела.

УНИКАЛНОСТ НА ИНДЕКСА

Индексът в предишния пример за щастие не е задължен да бъде уникален, въпреки нашата забележка, че това е една от целите на индекса. Даден продавач може да има произволен брой клиенти. Това обаче няма да се случи, ако използваме ключовата дума UNIQUE преди ключовата дума INDEX. Полето cnum като първичен ключ ще бъде първият кандидат за уникален индекс: CREATE UNIQUE INDEX Custid ON Customers (cnum); ЗАБЕЛЕЖКА: Тази команда ще бъде отхвърлена, ако вече има идентични стойности в полето cnum. Най-добрият начин да се справите с индексите е да ги създадете веднага след създаването на таблицата и преди да бъдат въведени каквито и да е стойности. Също така имайте предвид, че за уникален индекс от повече от един пол, това е комбинация от стойности, всяка от които може да не е уникална.

Предишният пример е индиректен начин да накарате полето cnum да действа като първичен ключ на таблицата Customers. Базите данни действат по-пряко върху първичните и други ключове. Ще обсъдим това заключение допълнително в глави 18 и.

ИЗТРИВАНЕ НА ИНДЕКСИТЕ

Основният атрибут на индекса е той - така че може да бъде изтрит. Обикновено потребителите не знаят за съществуването на индекса. SQL автоматично открива дали на потребителя е разрешено да използва индекса и ако е така, позволява използването му. Въпреки това, ако искате да премахнете индекса, трябва да го знаете с него. Този синтаксис се използва за пускане на индекс: DROP INDEX; Изтриването на индекс не засяга съдържанието на полетата.

ПРОМЯНА НА ТАБЛИЦАТА СЛЕД СЪЗДАВАНЕТО Я

ALTER TABLE не е част от стандарта ANSI; но е широко достъпна и доста смислена форма, въпреки че възможностите й са малко ограничени. Използва се за промяна на дефиницията на съществуваща таблица. Обикновено добавя колони към таблицата. Понякога може да премахва или преоразмерява колони, а в някои програми да добавя или премахва ограничения (обсъдено в Глава 18). Типичният синтаксис за добавяне на колона към таблица е: ALTER TABLE
ДОБАВЯНЕ ; Колоната ще бъде добавена със стойност NULL за всички редове в таблицата. Новата колона ще стане последната колона в таблицата. Всъщност можете да добавите няколко нови колони наведнъж, като ги разделите със запетаи, с една команда. Възможно е изтриване или промяна на колони. Най-често промяната на колона може просто да бъде увеличаване на нейния размер или добавяне (премахване) на ограничение. Вашата система трябва да се увери, че промените не са в конфликт със съществуващите данни - например, когато се опитате да добавите ограничение към колона, която вече има стойност, и ако бъде нарушена, ограничението ще бъде отхвърлено. Най-добре е да проверите това. Най-малкото погледнете документацията на вашата система, за да видите дали тя гарантира, че това е причината. Поради нестандартния характер на командата ALTER TABLE, все пак трябва да погледнете този раздел от документацията на вашата система за специални случаи.

ALTER TABLE няма ефект, когато таблицата трябва да бъде отменена, но трябва да проектирате вашата база данни колкото е възможно повече, за да не й се доверявате твърде много. Промяната на структурата на таблицата, когато тя вече се използва, е опасна! Погледнете внимателно таблици, които като вторични таблици с данни, извлечени от друга таблица (вижте Глава 20), не работят правилно за дълго време и програмите, използващи вложен SQL (Глава 25), не се изпълняват правилно или винаги не работят правилно. В допълнение, промяната може да изтрие всички потребители, които имат разрешение за достъп до таблицата. Поради тези причини трябва да проектирате вашите таблици така, че да използвате ALTER TABLE само в краен случай.

Ако вашата система не поддържа ALTER TABLE или ако искате да избегнете използването й, можете просто да създадете нова таблица с необходимите промени при създаването и да използвате командата INSERT със заявка SELECT *, за да презапишете данните от старата таблица в него. Потребителите, на които е предоставен достъп до старата таблица (вижте Глава 22), трябва да получат достъп до новата таблица.

ИЗТРИВАНЕ НА ТАБЛИЦА

Трябва да сте собственик (т.е. създател) на таблицата, за да можете да я изтриете. Така че не се притеснявайте за случайно унищожаване на вашите данни, SQL първо ще изисква от вас да изчистите таблицата, преди да я изтриете от базата данни. Таблицата с редовете в нея не може да бъде изтрита. Вижте Глава 15 за подробности как да изтриете редове от таблица. Синтаксисът за отпадане на вашата таблица, ако приемем, че е празна, е: DROP TABLE< table name >; Когато издадете тази команда, таблицата вече не се разпознава от тях и няма такава команда, която може да бъде дадена на този обект. Трябва да се уверите, че тази таблица не се препраща от външен ключ към друга таблица (Външните ключове са разгледани в глава 19) и че не се използва в дефиницията на изглед (глава 20).

Тази команда всъщност не е част от стандарта ANSI, но като цяло се поддържа и е полезна. За щастие, той е по-прост и следователно по-последователен от ALTER TABLE. ANSI просто няма начин да идентифицира повредени или невалидни таблици.

РЕЗЮМЕ

Вече владеете свободно основите на дефинициите на данни. Можете да създавате, променяте и пускате таблици. Докато само първата от тези функции е част от официалния SQL стандарт, други ще се променят от време на време, особено ALTER TABLE. DROP TABLE ви позволява да се отървете от таблици, които не са полезни. Той унищожава само празни таблици и следователно не унищожава данни.

Вече знаете за индексите и как да ги създавате и изтривате. SQL не ви дава много контрол над тях, тъй като реализацията, която използвате, е доста добра при определяне колко бързо се изпълняват различните команди. Индексите са един от инструментите, който ви дава възможност да влияете директно върху производителността на вашите SQL команди. Тук сме разгледали индексите, за да ги разграничим от ограниченията, с които не бива да се бъркат. Ограниченията са тема на глава 18 и глава 19.

РАБОТА С SQL

1. Напишете клауза CREATE TABLE, която да изведе нашата таблица на клиенти.

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

3. Ако таблицата Orders вече е създадена, как можете да направите полето onum уникално (ако приемем, че всички текущи стойности са уникални)?

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

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

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

Основни понятия

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

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

Преминаване от ER диаграма към табличен модел

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

  1. Преобразувайте всички обекти в таблици.
  2. Преобразувайте всички атрибути в колони, тоест всеки атрибут на обект трябва да бъде съпоставен с името на колоната на таблицата.
  3. Преобразувайте уникалните идентификатори в първични ключове.
  4. Преобразувайте всички релации във външни ключове.
  5. Създайте SQL таблица.

Създаване на база

Първо трябва да стартирате MySQL сървъра. За да го стартирате, отидете в менюто "Старт", след това в "Програми", след това в MySQL и MySQL Server, изберете MySQL-Command Line-Client.

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

СЪЗДАЙТЕ БАЗА ДАННИ име на база данни.

Ограниченията за името на базата са както следва:

  • дължината е до 64 знака и може да включва букви, цифри, символи "" и "";
  • името може да започва с цифра, но трябва да съдържа букви.

Също така е необходимо да запомните общото правило: всяка заявка или команда завършва с разделител. В SQL е обичайно да се използва точка и запетая като разделител.

Сървърът трябва да посочи с коя база данни ще трябва да работи. За това е операторът USE. Това изявление има прост синтаксис: USE n име на база данни.

Създаване на SQL таблица

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

Създаване на таблица на SQL Server

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

СЪЗДАВАЙТЕ TADLE име_на таблица,(име на колона1 заглавие _колона2тип данни [ограничение_колона], [ограничение_таблица]).

Синтаксисът на тази команда трябва да бъде описан по-подробно:

  • Името на таблицата трябва да е с дължина до 30 знака и да започва с буква. Разрешени са само азбучни знаци, букви и символи "_", "$" и "#". Разрешено е използването на кирилица. Важно е да се отбележи, че имената на таблици не трябва да са същите като други имена на обекти или запазени думи от сървъра на база данни, като колона, таблица, индекс и т.н.
  • За всяка колона не забравяйте да посочите типа данни. Има стандартен набор, използван от повечето. Например Char, Varchar, Number, Date, Null тип и т.н.

  • Параметърът по подразбиране може да се използва за задаване на стойността по подразбиране. Това гарантира, че в таблицата няма нулеви стойности. Какво означава? Стойността по подразбиране може да бъде символ, израз, функция. Важно е да запомните, че този тип данни по подразбиране трябва да бъде същият като входния тип данни за колоната.
  • Ограниченията за всяка колона се използват за налагане на условия за цялост на данните на ниво таблица. Има и нюанси. Забранено е изпускането на маса, ако има други маси, зависими от нея.

Как да работим с основата

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

  • ПОКАЖ БАЗА ДАННИ - показва на екрана всички създадени SQL бази данни;
  • ПОКАЖИ ТАБЛИЦИТЕ - Изброява всички таблици за текуща базаданни, избрани от командата USE;
  • ОПИСВАМ име_на таблица- показва описание на всички колони в таблицата.
  • ALTER TABLE - позволява ви да промените структурата на таблицата.

Последната команда ви позволява да:

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

Синтаксисът на тази команда изглежда така: ALTER TABLE име_на таблица(| | | | [(АКТИВИРАНЕ | ИЗКЛЮЧВАНЕ) КОНСТАНТ име на ограничение ] | }.

Има и други команди:

  • RENAME - преименуване на таблица.
  • TRUNCATE TABLE - премахва всички редове от таблицата. Тази функция може да е необходима, когато е необходимо да се попълни отново таблицата, но не е необходимо да се съхраняват предишните данни.

Има и ситуации, когато структурата на базата данни е променена и таблицата трябва да бъде изтрита. За това има команда DROP. Разбира се, първо трябва да изберете базата данни, от която искате да изтриете таблицата, ако тя се различава от текущата.

Синтаксисът на командата е доста прост: DROP TABLE заглавие_таблици.

В SQL Access таблиците се създават и променят с помощта на същите команди, изброени по-горе.

С CREATE TABLE можете да създадете празна таблица и след това да я попълните с данни. Но това не е всичко. Можете също така веднага да създадете таблица от друга таблица. Като този? Тоест, възможно е да се дефинира таблица и да се попълни с данни от друга таблица. За това има специална ключова дума AS.

Синтаксисът е много прост:

  • СЪЗДАЙТЕ ТАБЛИЦА заглавие_таблици[(дефиниция на колона)] AS подзаявка;
  • дефиниция на колона -имена на колони, правила за интегритет на колоните на новосъздадената таблица и стойности по подразбиране;
  • подзаявка - връща редовете за добавяне към новата таблица.

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

Временни маси

Временните таблици са таблици, чиито данни се изтриват в края на всяка сесия или по-рано. Те се използват за записване на междинни стойности или резултати. Могат да се използват като работни листове. Можете да дефинирате временни във всяка сесия и можете да използвате техните данни само в текущата сесия. SQL временните таблици се създават по същия начин, както обикновено, с помощта на командата CREATE TABLE. За да покажете на системата, че таблицата е временна, трябва да използвате параметъра GLOBAL TEMPORARY.

Клаузата ON COMMIT задава продължителността на живота на данните в такава таблица и може да направи следното:

  • DELETE ROWS -Изчистване на временната таблица (изтриване на всички данни за сесията) след всяко приключване на транзакцията. Това обикновено е по подразбиране.
  • ЗАПАЗВАНЕ НА РЕДОВЕ -оставете данните за използване при следващата транзакция. Освен това можете да изчистите таблицата само след края на сесията. Но има някои особености. Ако транзакция се връща назад (ROLLBACK), таблицата ще бъде върната до състоянието в края на предишната транзакция.

Синтаксисът за създаване на временна таблица може да бъде представен по следния начин: CREATE TABLE заглавие_таблици,(заглавие_колона1тип данни [column_constraint], заглавие _колона2тип данни [ограничение_колона], [ограничение_таблица]).

Лекция

Създаване на база данни с помощта на SQL.

Манипулиране на данни в SQL

Езикът на SQL включва език за описание на данни, който ви позволява да управлявате таблици, и език за манипулиране на данни, който служи за управление на данни ( слайд 2 ).

17.1. Изграждане на бази данни с SQL

17.1.1. Командата за създаване на таблица е - СЪЗДАВАЙТЕТАБЛИЦА

Таблицата се създава с помощта на командата CREATE TABLE. Синтаксисът на обобщената команда е както следва (слайд 3).

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

table_name е идентификаторът на таблицата, която се създава, който обикновено се изгражда от името на базата данни, името на собственика на таблицата и собственото име на таблицата.Комбинацията от името на таблицата и нейния собственик трябва да бъде уникална в базата данни. Ако таблицата не е създадена в текущата база данни, името на базата данни трябва да бъде включено в нейния идентификатор.

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

table_constraint_define - Посочете някакво ограничение за интегритет на ниво таблица.

Описание на колоната

Както можете да видите от синтаксиса на командата CREATE TABLE, за всяка колона е посочена клауза<определение_столбца>, с помощта на който се задават свойствата на колоната. Изречението има следния синтаксис( слайд 3) :

Нека разгледаме целта и използването на параметрите.

Column_name е идентификатор, който определя името на колона на таблица.

тип данни - Указва типа данни на колоната. Ако при дефиниране на колона ограничение за съхранение на NULL стойности не е изрично посочено, тогава ще се използват свойствата на типа данни, т.е. ако избраният тип данни позволява съхраняване на стойности NULL, тогава колоната също ще може да съхранява NULL стойности. Ако при дефиниране на колона в командата CREATE TABLE съхранението на NULL стойности е изрично разрешено или отказано, свойствата на типа данни ще бъдат отменени от ограничението, зададено на ниво колона. Например, ако типът данни ви позволява да съхранявате стойности NULL и колоната е деактивирана на ниво колона, тогава опитът за вмъкване на стойност NULL в колоната ще бъде неуспешен.

column_constraint - Тази клауза определя ограниченията, които ще бъдат дефинирани за колоната. Синтаксисът на клаузата е както следва ( слайд 4 ):

Нека разгледаме целта на параметрите.

ОГРАНИЧЕНИЕ е незадължителна ключова дума, последвана от името на ограничението върху стойностите на колоната (име на_ограничението). Имената на ограниченията трябва да са уникални в базата данни.

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

NULL | NOT NULL - ключови думи, позволяващи (NULL) или забраняващи (NOT NULL) съхранение на NULL стойности в колоната. Ако не е посочена стойност по подразбиране за колона, вмъкването на ред с неизвестна стойност за колоната ще се опита да вмъкне стойност NULL в колоната. Ако ограничението NOT NULL е посочено за колоната, тогава опитът за вмъкване на реда ще бъде отхвърлен и потребителят ще получи съответното съобщение за грешка.

ПЪРВИЧЕН КЛЮЧ - дефиниция на първичния ключ на ниво една колона (т.е. първичният ключ ще се състои само от стойностите на една колона). Ако е необходимо да се формира първичен ключ на базата на две или повече колони, тогава такова ограничение за интегритет трябва да бъде определено на ниво таблица. Трябва обаче да се помни, че само един първичен ключ може да бъде създаден за всяка таблица.

УНИКАЛНО - индикация за създаване на УНИКАЛНО ограничение за целостта на колона, което ще гарантира уникалността на всяка отделна стойност в колона в рамките на тази колона. Няколко УНИКАЛНИ ограничения за целостта могат да бъдат създадени на таблица.

ВЪНШЕН КЛЮЧ ... РЕФЕРЕНЦИИ - индикация, че колоната ще служи като външен ключ за таблицата, чието име е посочено с помощта на параметъра<имя_главной_таблицы>.

(име_на_колона [, ..., n]) - колона или разделен със запетая списък с колони на основната таблица, включени в ограничението FOREIGN KEY. В този случай колоните, включени във външния ключ, могат да се отнасят само до колоните на първичния ключ или колони с ограничението UNIQUE на таблицата.

ПРИ ИЗТРИВАНЕ (КАСКАДНО | БЕЗ ДЕЙСТВИЕ) – Тези ключови думи определят действието, което трябва да се предприеме, когато даден ред бъде изтрит от основната таблица. Ако е посочена ключовата дума CASCADE, тогава когато се изтрие ред от основната (родителска) таблица, редът в зависимата таблица също ще бъде изтрит. Ако посочите ключовата дума NO ACTION в такъв случай, ще бъде изведена грешка. По подразбиране е НЯМА ДЕЙСТВИЕ.

ПРИ АКТУАЛИЗИРАНЕ (КАСКАДА | БЕЗ ДЕЙСТВИЕ) – Тези ключови думи определят действието, което трябва да се предприеме, когато ред в главната таблица е променен. Ако е посочена ключовата дума CASCADE, тогава когато се модифицира ред от основната (родителска) таблица, редът в зависимата таблица също ще бъде променен. Ако използвате ключовата дума NO ACTION в такъв случай, ще бъде изведена грешка. По подразбиране е НЯМА ДЕЙСТВИЕ.

CHECK е ограничение за целостта, което инициира контрол на стойностите, въведени в колона (или колони).

boolean_expression е булев израз, използван за ограничението CHECK.

Ограничения на ниво таблица

Синтаксисът на командата CREATE TABLE е да се използва клаузата<ограничение_таблицы>който дефинира ограниченията за целостта на ниво таблица. Синтаксисът на клаузата е както следва (слайд 5) .

Целта на параметрите е същата като предназначението на подобни параметри на офертата.<ограничение_столбца > ... Въпреки това в изречението<ограничение_таблицы>има някои нови опции:

column_name е колоната (или списък с колони), на която искате да наложите каквито и да е ограничения за целостта.

- метод за подреждане на данни в индекса. Индексът се създава, когато посочите ключовите думи PRIMARY KEY, UNIQUE. Ако е посочен ASC, данните в индекса ще бъдат сортирани във възходящ ред, ако е указан DESC, в низходящ ред. По подразбиране е ASC.

Примери за създаване на таблици

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

Таблицата "Студенти" се състои от следните колони:

ID_Student - INTEGER тип данни, уникален ключ;

Група_номер - тип данни CHAR, дължина 6;

слайд 6).

Адреси Телефон,наложени ограниченияНЕ НУЛИ

За създаване на таблицата "Дисциплини" беше използвана командата (слайд 7).

Таблицата съдържа 2 колони (документ за самоличност_ Дисциплина, име).

По колони документ за самоличност_ Дисциплина, именаложени ограниченияНЕ НУЛИ които забраняват въвеждането на ред, когато стойността на колоната е недефинирана.

Колона документ за самоличност_ Дисциплинадеклариран като първичен ключ и върху стойностите, въведени в колоната име,се налага условието за уникалност.

Таблицата "Study_plan" съдържа следните колони:

ID_Discipline - тип данни INTEGER;

Семестър - тип данни INTEGER;

Брой_часове - тип данни INTEGER;

Таблицата е създадена с помощта на следната команда (слайд 8).

За стойности на колони семестърформулиран е логически израз, който позволява да се въвеждат само стойности от 1 до 10.

Таблицата Pivot_Note се състои от следните колони:

ID_Student - INTEGER тип данни, уникална ключова колона;

ID_Plan - INTEGER тип данни, уникална ключова колона;

Оценка - тип данни INTEGER;

Дата_Дата - тип данни DATETIME;

ID_Teacher е тип данни INTEGER.

Таблицата е създадена с помощта на следната команда (слайд 9).

Налагат се ограничения върху всички колони на таблицатаНЕ НУЛИ които забраняват въвеждането на ред, когато стойността на колоната е недефинирана.

За стойности на колони Оценкаформулиран е логически израз, който позволява да се въвеждат само стойности от 0 до 5: 0 - неуспешно, 1 - успешно, 2 - незадоволително, 3 - задоволително, 4 - добро, 5 - отлично.

И накрая, нека изброим колоните "Personnel_Composition":

ID_Teacher - INTEGER тип данни, уникален ключ;

Фамилия - тип данни CHAR, дължина 30;

Име - тип данни CHAR, дължина 15;

Отчество - тип данни CHAR, дължина 20;

Позиция - тип данни CHAR, дължина 20;

Стол - тип данни CHAR, дължина 3;

Адрес - тип данни CHAR, дължина 30;

Телефон - тип данни CHAR, дължина 8.

Таблицата е създадена с помощта на следната команда (слайд 10).

За всички колони на таблицата, с изключение на колоните Адреси Телефон,наложени ограниченияНЕ НУЛИ които забраняват въвеждането на ред, когато стойността на колоната е недефинирана.

За таблиците "Study_plan" и "Pivot_sheet" трябва да бъдат изградени външни ключове, които свързват таблиците на базата данни "Session":

FK_discipline е външен ключ, който свързва таблиците "Curriculum_plan" и "Disciplines" чрез колоната ID_ на дисциплината;

FK_Human_Composition - външен ключ, свързващ таблиците "Curriculum_plan" и "Personnel_staff" от колоната ID_Teacher;

FK_Student - външен ключ, свързващ таблиците Pivot_notification и Students чрез колоната ID_Student;

FK_Plan е външен ключ, свързващ таблиците Pivot_notification и Training_plan по колона ID _план.

Ще разгледаме добавянето на външни ключове към таблиците по-късно, когато обсъждаме възможностите на командатаПРОМЕНИ ТАБЛИЦА.

17.1.2. Промяна на структурата на таблицата - команда ПРОМЕНИТАБЛИЦА

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

Специален екипПРОМЕНИ ТАБЛИЦА има за цел да промени структурата на таблицата. Може да се използва за промяна на свойствата на съществуващи колони, изтриване или добавяне на колони към таблицата и управление на ограниченията за целостта както на ниво колона, така и на ниво таблица, т.е. изпълнява следните функции:

Добавете нова дефиниция на колона към таблицата;

Премахване на колона от таблица;

Променете стойността по подразбиране за всяка колона;

Добавяне или премахване на първичния ключ на таблица;

Добавяне или премахване на външен ключ към таблица;

Добавяне или премахване на условие за уникалност;

Добавете или премахнете условие за стойност.

Обобщен команден синтаксисПРОМЕНИ ТАБЛИЦА представено на слайда (слайд 11).

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

Задаване на много командни параметри и ключови думиПРОМЕНИ ТАБЛИЦА подобно на присвояването на съответните командни параметри и ключови думиСЪЗДАЙТЕ ТАБЛИЦА (например синтаксисът на конструкцията<определение_столбца>съвпада със синтаксиса на подобна командна конструкцияСЪЗДАЙТЕ ТАБЛИЦА).

Основните режими на използване на командата ALTER TABLE са както следва:

Добавяне на колона;

Изтриване на колона;

Модификация на колоната;

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

Добавяне на колона

За да добавите нова колона, използвайте ключовата думаДОБАВЯНЕ последвано от дефиницията на колоната.

Нека добавим например към таблицата "Студенти" колоната "Година_на_прием" (слайд 12). След изпълнение на тази команда, друга колона ще бъде добавена към структурата на таблицата "Студент" със стойност по подразбиране, равна на текущата година (стойността по подразбиране се изчислява с помощта на две вградени функции -ГОДИНА () и GETDATE ()).

Модификация на колоната

За да промените съществуваща колона в таблица, използвайте ключовата думаПРОМЕНИ КОЛОНА ... Свойствата на колоната не могат да се променят, ако:

колоната участва в ограничение PRIMARY KEY или FOREIGN KEY;

колоната има CHECK или UNIQUE ограничения за целостта (изключението са колони с типове данни с променлива дължина, тоест типове данни, започващи с var);

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

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

Пример за промяна на колоната "Номер_група" на таблицата "Студенти" (тип данни INTEGER се заменя с CHAR) ( слайд 12).

Изтриване на колона

За да премахнете колона от таблица, използвайте клаузатаКОЛОНА ИЗПУСКАНЕ <имя_столбца>... Когато изтривате колони, имайте предвид, че не можете да изтривате колони с ограничения за целосттаПРОВЕРКА, ВЪНШЕН КЛЮЧ, УНИКАЛЕН или ПЪРВИЧЕН КЛЮЧ както и колони, за които са дефинирани стойности по подразбиране (под формата на ограничение за целостта на ниво колона или на ниво таблица).

Помислете например за командата за изтриване от таблицата "Студент" колоната "Година_прием" (слайд 12).

Тази команда няма да бъде изпълнена. е дефинирана по подразбиране при добавяне на колона.

Добавете ограничения на ниво таблица

За да добавите ограничения на ниво таблица, използвайте клаузатаДОБАВЯНЕ НА ОГРАНИЧЕНИЕ <имя_ограничения>.

Като пример, разгледайте командите за добавяне на външни ключове към таблиците на базата данни на сесията (слайд 13):

· добавяне на външни ключове към таблицата "Study_plan" (създаване на връзка с името FK _Дисциплина и връзка с името FK _ Състав_персонал);

· добавяне на външни ключове към таблицата Pivot_Note (създаване на връзка с името FK _Връзки за ученици и име FK _план).

По конструкцияДОБАВЯНЕ НА ОГРАНИЧЕНИЕ се създава ограничение с име. Трябва да се отбележи, че премахването на всяко ограничение на ниво таблица става само чрез неговото име, така че ограничението трябва да бъде наименувано (за да може да бъде премахнато).

Премахване на ограничения

За да премахнете ограничение за целостта от таблица, използвайте клаузатаОТПУСКАНЕ ОГРАНИЧЕНИЕТО <имя_ограничения>.

Премахването на ограничение за целостта е възможно само когато е наименувано (т.е<определение_ограничения>съдържа ограничения за именуванеОГРАНИЧЕНИЕ).

Изтриване на конструирана команда за външен ключ FK _Дисциплината от таблицата "Curriculum_plan" изглежда така (слайд 14).

На слайда ( слайд 14) показва премахването на изграденото по-рано ограничение върху стойността по подразбиране DEF _група_номер.

17.1.3. Отпадане на таблици - команда ИЗПУСКАЙТЕТАБЛИЦА

Изтриването на таблица се извършва с помощта на командатаИЗПУСКАНЕ НА ТАБЛИЦА ( слайд 14).

Единственият аргумент на командата указва името на таблицата, която ще бъде отхвърлена.

Операцията по изпускане на маса в някои случаи изисква известно внимание. Не може да се изпусне таблица, ако се използва ограничение за интегритет върху неяВЪНШЕН КЛЮЧ друга таблица се отнася: опит за изтриване на таблицата "Дисциплини" ще доведе до съобщение за грешка, т.к таблицата с дисциплини се позовава на таблицата "Curriculum_plan".

17.2. Управление на данни

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

17.2.1. Извличане на данни - команда ИЗБЕРЕТЕ

Основният инструмент за извличане на данни на езика SQL е командатаИЗБЕРЕТЕ ... С помощта на тази команда можете да получите достъп до данни, представени като колекция от таблици с почти всякаква сложност.

Най-често използваната е опростена версия на командатаИЗБЕРЕТЕ имащ следния синтаксис (слайд 15).

SELECT израз е разделена на отделни секции, всяка от които има свое предназначение. От горното синтактично описание може да се види, че са задължителни само секциите.ИЗБЕРЕТЕ и ОТ а останалите секции могат да бъдат пропуснати. Пълен списък с раздели е показан на слайда (слайд 15).

ИЗБЕРЕТЕ раздел

Основната цел на разделаИЗБЕРЕТЕ (един от двата задължителни раздела, които трябва да бъдат посочени във всяка заявка) - указване на набора от колони, върнати след изпълнение на заявката, т.е. появата на резултата. В най-простия случай се връща колона от една от таблиците, участващи в заявката. В по-сложни ситуации набор от стойности в колона се генерира в резултат на оценка на израз. Тези колони се наричат ​​изчислени колони и по подразбиране не са наименувани.

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

В допълнение към казаното, използвайки разделаИЗБЕРЕТЕ можете да ограничите броя на редовете, които ще бъдат включени в резултата от избора. Синтаксис на разделИЗБЕРЕТЕ следващия ( слайд 16).

Нека разгледаме целта на параметрите.

Ключови думи ВСИЧКИ | РАЗЛИЧЕН. При посочване на ключова думаВСИЧКО резултатите от заявката се извеждат всичкоредове, които отговарят на формулираните условия, като по този начин позволяват включването на идентични редове в резултата (подобието на редовете се определя на нивото на резултата от избора, а не на нивото на изходните данни). ПараметърВСИЧКО използва се по подразбиране.

Ако в заявка SELECT ключовата дума е посоченаРАЗЛИЧЕН , то повече от един дублиран ред няма да бъдат включени в резултата от избора. По този начин всеки върнат ред ще бъде уникален. В този случай уникалността на ред се определя на нивото на редовете на резултата от селекцията, а не на нивото на изходните данни. Ако в резултата от избора са включени две колони, уникалността ще се определя от стойностите на двете колони. Поотделно стойностите в първата и втората колона могат да се повтарят, но комбинацията от стойности в двете колони трябва да бъде уникална. Подобни правила важат за повече колони.

Помислете за резултата от използването на ключови думиВСИЧКИ и РАЗЛИЧНИ използвайки примера за избор на колоните за семестър и отчитане от таблицата "Study_plan" на базата данни "Session" ( слайд 17 ). Първо, нека изпълним заявка, указваща ключовата думаВСИЧКО ... Фрагмент от резултата е показан на слайда. Сега нека заменим ключовата думаВСИЧКИ на DISTINCT ... В този случай резултатът от заявката, показан на слайда, е редове, съдържащи едни и същи стойности в колоните, включени само веднъж. Този резултат трябва да показва само наличието на различни форми на отчитане в семестри.

КлючдумаTOP n. Използването на ключовата дума TOP n, където n е числова стойност, ви позволява да изберете не всички линии в резултата, а само първите n. В този случай се избират първите редове от резултата от избора, а не оригиналните данни. Следователно наборът от редове в резултат на селекцията при определяне на ключовата дума TOP може да се промени в зависимост от реда на сортиране. Ако заявката използва секциятаКЪДЕТО , тогава ключовата дума TOP работи с набора от редове, върнати след прилагане на булевото условие, дефинирано в секциятаКЪДЕТО.

Нека демонстрираме използването на ключовата дума TOP (пързалка18 )

В този пример от таблицата Студентиот базата данни на сесията бяха избрани първите 5 реда.

Можете също да изберете не фиксиран брой редове, а определен процент от всички редове, които отговарят на условието. За да направите това, трябва да добавите ключова думаПРОЦЕНТ.

Общо таблицата имаше 115 реда, следователно 10% ще бъдат 11,5 реда. В резултат на това ще се покажат 12 реда.

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

Ние също така предоставяме пример, който демонстрира ефекта от реда на сортиране върху върнатия набор от редове (пързалка19 ).

Когато се посочва заедно с изречениеПОДРЕДЕНИ ПО ключова думаС ВРЪЗКИ резултатът ще включва и редове, които съответстват на стойността на колоната за сортиране с последните показани редове на заявка SELECT TOP n [ПЕРЦЕНТ].

Използване на ключови думиС ВРЪЗКИ в предишния пример, той ще осигури издаването на информация в отговор на искане за информация за всички ученици от първата група по ред (пързалка20 ).

Оферта<Список_выбора>. Синтаксис на изречението<Список_выбора>следващия (слайд 21).

Символът "*" означава, че резултатът включва всички колони в списъка с таблици на разделиОТ.

Ако резултатът не трябва да включва всички колони от всичкитаблици, тогава можете изрично да посочите името на обекта, от който трябва да изберете всички колони (<Имя_таблицы>.* или<Псевдоним на таблица>. *).

Отделна колона на таблицата е включена в резултата от избора чрез изрично указване на името на колоната (параметър<Имя_столбца>). Колоната трябва да принадлежи към една от таблиците, посочени в клаузата FROM. Ако колона с посоченото име съществува в повече от един източник на данни, посочен в клаузата FROM, тогава трябва изрично да посочите името на източника на данни, към който принадлежи колоната, във формата<Имя_таблицы>.<Имя_столбца>В противен случай ще бъде издадено съобщение за грешка.

Например, нека се опитаме да изберем данни от колоната ID на дисциплината, която е налична в таблиците Discipline и Academic_plan:

Ще бъде върнато съобщение за грешка, което показва неправилно използване на името „ID_Discipline“.

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

Колоните, върнати в резултат на изпълнение на заявка, могат да бъдат псевдоними. Псевдонимите ви позволяват да промените името на изходната колона или да назовете колоната, чието съдържание се извлича в резултат на оценка на израз. Името на псевдонима се посочва с помощта на параметъра<Псевдоним_столбца>... Ключовата дума AS не е задължителна при посочване на псевдоним. Като цяло сървърът не изисква уникални имена на колони в резултата от извличане, така че различните колони могат да имат едни и същи имена или псевдоними.

Колоните в резултат на селекция могат да бъдат не само копие на колона от една от оригиналните таблици, но и да се формират въз основа на изчислението на израз. Такава колона в списъка за избор се посочва с помощта на конструкцията<Выражение> [ <Псевдоним_столбца>]. В този случай изразът може да съдържа константи, имена на колони, функции, както и техните комбинации. Освен това, псевдоним може да бъде присвоен на колона, генерирана чрез оценка на израз, като го посочите с помощта на параметъра<Псевдоним_столбца>... По подразбиране изчислената колона няма име.

Друг начин за формиране на изчислена колона е да използвате конструкцията със знак за равенство:<Псевдоним_столбца> = <Выражение>... Единствената разлика между този метод и предишния е, че трябва да се посочи псевдоним. В най-простия случай изразът е име на колона, константа, променлива или функция. Ако името на колоната се използва като израз, тогава получаваме друг начин да посочим псевдоним за колоната.

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

клауза ОТ

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

Синтаксис на разделОТ следващия ( пързалка23 )

На пръв поглед структурата на раздела изглежда проста. При по-внимателно разглеждане обаче се оказва доста сложно. По принцип се работи със секцияОТ това е разделен със запетая списък на източниците на данни, с които трябва да работи заявката. Действителният източник на данни е посочен с изречение<Источник_данных>, чийто синтаксис е показан на слайда.

Използване на параметъра<имя_таблицы>се посочва името на обикновена таблица. Параметър<псевдоним_таблицы>се използва за присвояване на псевдоним на таблицата, под който ще трябва да се посочи в заявката. Често псевдоними на таблици се използват, за да направят препратката към желаната таблица по-удобна и по-кратка. Например, ако вашата заявка често споменава името на таблицата "Lesson_plan", можете да използвате псевдоним, като tpl ... Посочване на ключова думаКАТО е по избор.

клауза WHERE

клауза WHERE е предназначен за налагане на вертикални филтри върху данните, обработвани от заявката. С други думи, използвайки разделаКЪДЕТО можете да стесните набора от редове, включени в резултата от избора. За това се посочва логическо условие, което определя дали редът ще бъде включен в селекцията по заявка или не. Низът се включва в резултата от избора само ако булевият израз връща стойностВЯРНО.

Като цяло булевият израз съдържа имената на колоните в таблиците, с които заявката работи. За всеки ред, върнат от заявката, булев израз се оценява чрез заместване на специфичните стойности от съответния ред за имената на колоните. Ако оценката на израза връща стойностВЯРНО , тоест изразът е вярно, тогава низът ще бъде включен в крайния резултат. В противен случай низът не се включва в резултата. Повече от един булев израз могат да бъдат посочени според нуждите чрез обединяването им с булеви операториИЛИ и И.

Помислете за синтаксиса на разделаКЪДЕТО ( слайд 24).

В строителството<условие_отбора>можете да дефинирате всяко булево условие, при изпълнение на което редът ще бъде включен в резултата.

Примерът на слайда демонстрира логиката на раздела.КЪДЕТО ... Това ще върне списък на всички студенти, които са влезли във факултета преди 2000 г.

В допълнение към операциите за сравнение (=,>,<, >=, <=) и логических операторов ИЛИ, И, НЕ при формиране на условие за избор могат да се използват допълнителни логически оператори за разширяване на възможностите за управление на данни. Нека да разгледаме някои от тези оператори.

ОператорМЕЖДУ. Този оператор може да се използва, за да се определи дали стойността на определена стойност е в рамките на определен диапазон. Синтаксисът за използване на оператора е както следва ( слайд 25 ).

<Выражение>определя стойността за проверка и аргументите<начало_диапазона>и<конец_диапазона>определят възможните граници на неговата промяна. Използване на оператораНЕ заедно с оператораМЕЖДУ ви позволява да зададете диапазона, извън който проверената стойност може да се промени.

Когато се изпълни, операторътМЕЖДУ се преобразува в конструкция за две сравнения.

Нека разгледаме пример за използване на оператораМЕЖДУ ( слайд 25). В резултат на спазването на инструкциите ще получим списък с дисциплини от учебната програма с брой часове от 50 до 100.

ОператорIN. Операторът ви позволява да зададете набор от възможни стойности за проверената стойност в условието за избор. Синтаксисът за използване на оператора е както следва (слайд 26).

<Выражение>определя стойността за проверка и аргументите<выражение1>,…, <выражение н > посочете разделен със запетая списък със стойности, които проверената стойност може да приеме. Ключова думаНЕ извършва логическо отрицание.

Помислете за пример за използване на оператора IN ( слайд 26). В резултат на спазването на инструкциите ще получим редовете от учебната програма за дисциплините "Английски език" и "Физическа култура".

ОператорКАТО. Използване на оператораКАТО можете да сравните израз от тип символ с определен шаблон. Синтаксисът на оператора е както следва (слайд 27).

<Образец>определя символен модел за сравнение и е затворен в кавички. Шаблонът може да съдържа разделители. Следните разделителни знаци са разрешени (слайд 27):

% - може да бъде заменен в символен израз с произволен брой произволни знаци;

_ - може да бъде заменен в символен израз с всеки, но само един символ;

[ ABC0-9] - може да бъде заменен в символен израз само с един знак от набора, посочен в квадратни скоби (тире се използва за обозначаване на диапазон);

[^ ABC0-9] - може да бъде заменен в символен израз само с един знак, с изключение на тези, посочени в квадратни скоби (тире се използва за обозначаване на диапазон).

Нека разгледаме пример за използване на оператора (слайд 27). Използването на извадка за стойността на колоната Позиция в този случай ни позволи да изберем редове със стойностите "St.prep." и "проф"

ГлаваПОРЪЧКАBY

ПОРЪЧАЙ ПО раздел е за подреждане на набора от данни, върнат след изпълнение на заявка. Пълен синтаксис на разделаПОРЪЧАЙ ПО следващ ( слайд 28).

Параметър<условие_сортировки>изисква посочване на израз, според който ще се извърши сортирането на низовете. В най-простия случай този израз е името на колоната на един от източниците на данни за заявка.

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

ПОРЪЧАЙ ПО раздел позволява използването на ключовите думи ASC и DESC, които могат да се използват за изрично уточняване как трябва да бъдат подредени низовете. Ако посочите ключовата дума ASC, данните ще бъдат сортирани във възходящ ред. Ако искате да сортирате данните в низходящ ред, посочете ключовата дума DESC. Възходящото сортиране се използва по подразбиране.

Данните могат да бъдат сортирани по множество колони. За да направите това, трябва да въведете имената на колоните, разделени със запетаи в реда на сортиране. Данните първо се сортират по колоната, наречена първа в секциятаПОДРЕДЕНИ ПО ... След това, ако има много редове със същата стойност в първата колона, на тези редове се извършва допълнително сортиране от втората колона (в рамките на група със същата стойност в първата колона) и т.н.

Нека дадем пример за сортиране по две колони (слайд 28).

СЪЮЗ раздел

СЪЮЗ раздел служи за комбиниране на резултатите от селекцията, върнати от две или повече заявки.

Помислете за синтаксиса на разделаСЪЮЗ ( слайд 29).

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

заявките трябва да връщат същия набор от колони (и е необходимо да се осигури еднакъв ред на колоните във всяка от заявките);

типовете данни на съответните колони на втората и следващите заявки трябва да поддържат имплицитно преобразуване или да съответстват на типа данни на колоните на първата заявка;

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

Посочване на ключова думаВСИЧКО инструктира да включи дублиращи се редове в резултата. По подразбиране в резултата не се включват дублиращи се редове.

Нека демонстрираме приложението на разделаСЪЮЗ ... Помислете за таблиците "Personnel_Composition" и "Students" и се опитайте да изградите, например, общ списък както на студенти, така и на учители, чийто телефонен номер започва със 120. Нека сортираме получения списък по азбучен ред, като добавим изречениеПОДРЕДЕНИ ПО ( слайд 29).

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

1 глас

Добре дошли в моя блог сайт. Днес ще говорим за sql заявките за начинаещи. Някои уеб администратори може да имат въпрос. Защо да научите sql? Не можеш ли да го направиш?

Оказва се, че това няма да е достатъчно за създаване на професионален интернет проект. Sql се използва за работа с бази данни и създаване на приложения за WordPress. Нека разгледаме по-подробно как да използваме заявки.

Какво е

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

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

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

SQL език позволява:

  • създаване на таблици;
  • промяна на получаване и съхранение на различни данни;
  • комбинирайте информацията в блокове;
  • защита на данните;
  • създаване на заявки в достъп.

Важно! След като се занимавате с sql, можете да пишете приложения за WordPress с всякаква сложност.

Каква структура

Базата данни се състои от таблици, които могат да бъдат представени като файл на Excel.

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

Какво трябва да знаете


Акценти при изучаване на Sql

Както бе отбелязано по-горе, заявките се използват за обработка и въвеждане на нова информация в база данни, състояща се от таблици. Всеки негов ред е отделен запис. И така, нека създадем база данни. За да направите това, напишете командата:

Създайте база данни „bazaname“

В кавички напишете името на базата данни на латиница. Опитайте се да й измислите смислено име. Не създавайте база като "111", "www" и други подобни.

След като създадете базата данни, инсталирайте:

ИМЕНА НА НАБОРА ‘utf-8’

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

Сега създаваме таблица:

СЪЗДАЙТЕ ТАБЛИЦА 'bazaname'. 'Таблица' (

id INT (8) NOT NULL AUTO_INCREMENT PRIMARY KEY,

дневник VARCHAR (10),

мине VARCHAR (10),

дата ДАТА

На втория ред сме написали три атрибута. Да видим какво означават те:

  • Атрибутът NOT NULL означава, че клетката няма да е празна (това поле е задължително);
  • AUTO_INCREMENT стойност - автоматично довършване;
  • PRIMARY KEY е първичният ключ.

Как да добавите информация

За да попълните полетата на създадената таблица със стойности, използвайте оператора INSERT. Пишем следните редове код:

INSERT INTO 'table'

(вход, пропуск, дата) СТОЙНОСТИ

(„Васа“, „87654321“, „2017-06-21 18:38:44“);

В скоби посочваме имената на колоните, а в следващите - стойностите.

Важно! Спазвайте последователността на имената и значенията на колоните.

Как да актуализирате информацията

За да направите това, използвайте командата UPDATE. Нека да видим как да промените паролата за конкретен потребител. Пишем следните редове код:

АКТУАЛИЗАЦИЯ „таблица“ SET pass = „12345678“ WHERE id = „1“

Сега променете паролата '12345678'. Промените се правят на реда с "id" = 1. Ако не напишете командата WHERE, ще се променят всички редове, а не конкретен.

Препоръчвам ви да закупите книгата " SQL за манекени ". С негова помощ ще можете да работите професионално с базата данни стъпка по стъпка. Цялата информация е структурирана от проста до сложна и ще бъде добре приета.

Как да изтриете запис

Ако сте написали нещо нередно, коригирайте го с командата DELETE. Работи по същия начин като UPDATE. Пишем следния код:

ИЗТРИВАНЕ ОТ 'таблица', КЪДЕТО id = '1'

Извличане на информация

За да извлечете стойности от базата данни, използвайте командата SELECT. Пишем следния код:

ИЗБЕРЕТЕ * ОТ ‘таблица’, КЪДЕТО идентификатор = ‘1’

В този пример избираме всички налични полета в таблицата. Това се случва, ако напишете звездичка "*" в командата. Ако трябва да изберете някаква примерна стойност, ние пишем така:

ИЗБЕРЕТЕ дневник, преминете FROM таблица WHERE id = '1'

Трябва да се отбележи, че способността за работа с бази данни няма да е достатъчна. За да създадете професионален интернет проект, ще трябва да научите как да добавяте данни от базата данни към страниците. За да направите това, запознайте се с езика за уеб програмиране php. Това ще ви помогне курс в класната стая на Михаил Русаков .


Изпускане на маса

Възниква с DROP заявка. За да направите това, напишете следните редове:

DROP TABLE маса;

Извеждане на запис от таблица според конкретно условие

Помислете за код като този:

ИЗБЕРЕТЕ идентификатор, държава, град ОТ таблица КЪДЕ хора> 150000000

Той ще показва записите на страните с население над сто и петдесет милиона.

съюз

Възможно е да свържете няколко таблици заедно с помощта на Join. Как работи, вижте това видео по-подробно:

PHP и MySQL

Още веднъж искам да подчертая, че правенето на запитвания при създаване на интернет проект е нещо обичайно. За да ги използвате в php-документи, следвайте тази процедура:

  • Свързваме се с базата данни с помощта на командата mysql_connect ();
  • С помощта на mysql_select_db () изберете необходимата база данни;
  • Обработваме заявката с помощта на mysql_fetch_array ();
  • Затваряме връзката с командата mysql_close ().

Важно! Работата с база данни не е трудна. Основното нещо е да напишете искането правилно.

Начинаещите уеб администратори ще помислят. Какво да прочетете по тази тема? Бих искал да препоръчам книгата на Мартин Грабер “ SQL за обикновените смъртни ". Написано е по такъв начин, че всичко ще е ясно за начинаещите. Използвайте го като справочник.

Но това е теория. Какво е положението на практика? В действителност интернет проект трябва не само да бъде създаден, но и да бъде изведен в ТОП на Google и Yandex. Видео курсът “ Създаване и популяризиране на уебсайтове ».


Видео инструкция

Все още имате въпроси? Гледайте онлайн видеото по-подробно.

Изход

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