Създаване, разработка на SQL база данни, изключителна практика. SQL

Сергей Воробьов
Водещ инженер
SQL. Основен курс
www.aplana.ru

Съдържание
● Част 1. Въведение в SQL
● Част 2. Език за дефиниране на данни
● Част 3. Език за манипулиране на данни
● Част 4. DRL. Прости заявки.
● Част 5. Извличане на данни от няколко таблици.
● Част 6. Обобщени функции. Групиране на данни.
● Част 7. Подзаявки.
● Част 8. Функции за работа с низове, дати и числа.
23

SQL. Основен курс
Част 1. Въведение в SQL
www.aplana.ru

Въведение в SQL
SQL (английски език за структурирани заявки - „езикът на структурираните
queries ") е универсален компютърен език, използван за
създаване, промяна и управление на данни в релационни бази данни
данни.
43

Въведение в SQL
База данни - списък или набор от свързани списъци с
информация
Система за управление на бази данни (СУБД) - Специална
софтуера, който управлява тези списъци
53

Релационни и несвързани бази данни
Relational DB - база данни, базирана на релационен модел
данни:
Данните в базата данни са набор от таблици;
Данните отговарят на определени условия за цялост;
Поддържа оператори за манипулиране на таблици
(например извличане или копиране на таблица).
Нерелационни бази данни - йерархични, мрежови,
обектно ориентиран, NoSQL.
63

Как базите данни се различават от електронните таблици
1. Съхранение на голям брой редове
Електронните таблици имат ограничен брой редове.
Милиони редове се съхраняват в базата данни.
2. Едновременно обслужване на много потребители
3. Сигурност.
Потребителите получават привилегии само на
конкретни таблици и действия.
4. Релационни свойства.
Данните се съхраняват в различни таблици, между таблици
има връзки.
5. Ограничения, гарантиращи качеството на данните.
73

Таблица
Ред - хоризонтален ред клетки, запазен за всяка
обект на таблица.
Запис - данни в ред.
Колона - съдържа информация от същия тип.
Поле - пресечната точка на колона и ред.
83

Основи на SQL интерфейса
СУБД
93
Име
Декодиране
InterBase / FireBird
PSQL
Процедурен SQL
IBM DB2
SQL PL
Процедурен език на SQL
Г -жа SQL Server / Sybase ASE
T-SQL
Transact-SQL
MySQL
SQL / PSM
SQL / Постоянно съхранявани
Модул
Oracle
PL / SQL
Процедурен език / SQL
(въз основа на езика Ada)
PostgreSQL
PL / pgSQL
Процесуални
Език / PostgreSQL
(много подобен на Oracle
PL / SQL)

10.

Разлики в синтаксиса на функциите на СУБД
MSSQL
DB2
NUMERIC
НОМЕР
NUMERIC
DATEADD
MONTH_ADD
(Дата + 10 ДНИ)
EOMONTH
ПОСЛЕДЕН ДЕН
ПОСЛЕДЕН ДЕН
ДАТИФИЦИРАН
MONTH_BETWEEN
TIMESTAMPDIFF
ГОРЕН
ГОРЕН
ГАРАНЦИЯ / ГОРЕН
ПРЕВЪРНЕТЕ
TO_CHAR
TO_CHAR
INITCAP
INITCAP
-
103
Oracle

11.

SQL синтаксис
Имената на функциите и обектите не са чувствителни към регистъра:
SELECT = SELeCt.
Въпреки това, когато търсите през текстови полета, той е чувствителен към регистър
SQL не е чувствителен към опаковане на редове
Липсват задължителни знаци до крайните редове
Поддържа се - коментари в един ред и
/ * многоредови * /
Обичайно е всяка транзакция да завършва с точка и запетая, но
при изпълнение на отделни команди тяхното използване не е така
задължително
113

12.

Типове данни
CHAR (n) - низове с постоянна дължина (до 256 байта в MS SQL Server), т.е.
въведете по -малко данни в реда - размерът няма да се промени
VARCHAR (n) - низове с променлива дължина, т.е. изисква толкова много памет
колко данни
INTEGER - число без десетична запетая
NUMERIC (m, n) - използва се за съхраняване на нула и положително или
отрицателни числа с фиксирана и плаваща запетая. M ТОЧНОСТ (общ брой цифри), n - МАСШТАБ (брой цифри вдясно от
десетична запетая). m / n - незадължителни параметри
DATE-дата във формат гггг-мм-дд (ISO), дд / мм / гггг (ANSI), dd-ПОН-г-г формат.
BOOLEAN - Булев тип данни: true / false или 1/0.
Също така стойността на полето може да бъде NULL - означава, че няма стойности -
празна клетка.
123

13.

Тип ДАТА
По подразбиране можете да представите дата в базата данни във формат DD-MONYYYY (например ‘01 -FEB-1900 ’):
INSERT INTO table1 (id, date_work) стойности (1, ‘01 -FEB -1900 ’).
Можете също да използвате ключовата дума DATE. Нещо повече, вече за
формат на датата ГГГГ-ММ-ДД (например „1900-02-01“):
INSERT INTO table1 (id, date_work) стойности (1, DATE '1900-02-01').
Освен това можете да използвате тип дата + TIMESTAMP
за да зададете не само датата, но и часа:
INSERT INTO table1 (id, date_work) стойности (1, ‘01 -FEB-1900-10.50.01 ’),
тези.
1 февруари 1900 г. 10 часа 50 минути и 1 секунда (формат dd-MON-yy
-hh.mm.ss.nnnnn)
133

14.

Преобразуване на типове данни в MSSQL
CONVERT (тип данни, низ, стил) - конвертирайте един
формат на данни към друг
В символи:
КОНВЕРТИРАНЕ (VARCHAR (20), GETDATE ())
На датата
КОНВЕРТИРАНЕ (ДАТА, "14-11-2015", 105)
На брой
КОНВЕРТИРАНЕ (NUMERIC, '1234657890 ")
143

15.

Преобразуване на тип данни в Oracle
TO_CHAR (входна стойност, формат) - преобразуване на дата,
числа, време за низ.
Формат: „MONTH DD“, „MONTH DD, YYYY“, „DD / MM / YYYY“, „DAY MON, YY AD“
ГОДИНА
$9,999.00
И т.н.
TO_CHAR (SYSDATE, "MONTH DD")
TO_DATE (входна стойност, формат) - преобразуване на низ в
дата. Формат: DD-MON-ГГГГ
Месец dd, ГГГГ, ЧЧ: MI pm
И т.н.
TO_DATE ("02-ЯНВ-2012", "DD-ПН-ГГГГ")
TO_NUMBER (входна стойност, формат) - Конвертира низ в число.
TO_NUMBER ("123")
153

16.

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

17.

Други обекти на база данни
Съхранена процедура - обект на база данни
което е набор от SQL изрази. Съхранява се в базата данни.
Извикването на процедурата води до изпълнение на съдържащото се в нея
инструкции.
Функция - Подобна на съхранена процедура, но се връща
стойност, която може да се използва в по -голямо
оператор.
Trigger (тригер) - процедура, която се изпълнява автоматично,
когато настъпи дадено събитие.
Курсор (курсор) - препратка към контекстната област на паметта. Използвайки
курсора, можете да обработвате всеки ред, свързан с
това е SQL израз.
173

18.

SQL секции
1. DDL - език за дефиниране на данни.
CREATE, ALTER, DROP и др.
2. DCL - Език за контрол на данните.
ПРЕДОСТАВЯ, ОТМЕНЯ
3. DML - език за манипулиране на данни
данни). ВМЕСТВАНЕ, АКТУАЛИЗИРАНЕ, ИЗТРИВАНЕ
4. Извличане на данни - SELECT извличане на данни
5. Контрол на транзакциите (език за подпомагане на процеса на транзакции).
КОМИТИРАНЕ, ОТВЪРЗАНЕ, ЗАПАЗВАНЕ.
183

19.

SQL. Основен курс
Част 2. Език за дефиниране на данни
www.aplana.ru

20.

Език за дефиниране на данни
1.
СЪЗДАЙТЕ ТАБЛИЦА
Общ синтаксис:
CREATE TABLE table_name (
поле1 Тип поле1,
поле2 Тип поле2,
..., FieldN Тип поле N);
СЪЗДАЙТЕ ТАБЛИЦА person_info (
person_id INTEGER NOT NULL,
first_name VARCHAR (15) NOT NULL,
фамилия_VARCHAR (20) НЕ НУЛ,
пол CHAR (1),
рожден ден DATE,
ЧИСЛО заплата (7,2));
203

21.

Език за дефиниране на данни
2. ALTER TABLE (сменящи се таблици)
ALTER TABLE table_name (ADD<имя столбца> <определение столбца>}|
(ИЗМЕНЕНИЕ<имя столбца> <Определение столбца>) | (ДРОП КОЛОНА<имя
колона>)
3. DROP TABLE (отпадане на таблици)
DROP TABLE table_name (КАСКАДНИ ОГРАНИЧЕНИЯ);
4. ТРАНСЛИРАНА ТАБЛИЦА
TRUNCATE TABLE име на таблица
213

22.

SQL. Основен курс
Част 3. Език за манипулиране на данни
www.aplana.ru

23.

Език за манипулиране на данни
1. INSERT - Вмъкване на един запис.
INSERT INTO table_name VALUES (стойност на поле1, стойност на поле2, ..,
стойност на полето N);
INSERT INTO table_name (field1, field3, ...) VALUES (стойност на поле1, стойност на поле2, ...,
стойност на полето N);
ИНСЕРТИРАЙТЕ В person_info СТОЙНОСТИ (1, "Джон", "Смит", "М", "15-ОКТ-1973",
45568.56);
INSERT INTO person_info (person_id, first_name, last_name) VALUES (5, Сара "," Конър ");
Успешно.
ВМЕСТВАНЕ НА person_info СТОЙНОСТИ (NULL, "Jane", "Smith", "F", "8-AUG-1987",
НУЛА);
Грешка, защото person_id не може да бъде NULL.
233

24.

Език за манипулиране на данни
Вмъкнете група записи
INSERT INTO table_name
ИЗБЕРИ ...;
СЪЗДАЙТЕ ТАБЛИЦА t2 (
първи_1 VARCHAR (15),
last_1 VARCHAR (20),
рожден ден_1 DATE);
ВМЕСТВАНЕ В t2
SELECT first_name, last_name, рожден ден
ОТ person_info;
243

25.

Език за манипулиране на данни
ИНСЕРТИРАЙТЕ В person_info СТОЙНОСТИ (2, "Sara", "Doe", "F", "9-OCT-1986",
29789.56);

29789.56);
Успешно.
ВМЕСТВАНЕ НА person_info СТОЙНОСТИ (3, "Sara", "Doe", "F", "9-OCT-1986",
29789.56);
Сега нека изтрием втория запис с person_id = 2
ИЗТРИЙТЕ ОТ person_info КЪДЕ person_id = 2
253

26.

Език за манипулиране на данни
Целостта на данните
Целостта на обекта - определя ред на таблица като уникален екземпляр
някакво образувание.
Първичен ключ - колона или група колони е уникална
идентифициране на всеки запис.
Външен ключ - отражение на връзките между таблиците. Подчинен
таблицата трябва да има идентична колона (или група колони) за съхранение
стойности, които уникално идентифицират основните записи.
Референтна цялост - не трябва да има записи в подчинени таблици,
позовавайки се на несъществуващи записи на главна таблица.
263

27.

Език за манипулиране на данни
273

28.

Език за манипулиране на данни
Първичен ключ
ALTER TABLE table_name
ДОБАВЯНЕ НА ОСНОВЕН КЛЮЧ (име на колона);
ALTER TABLE person_info
ДОБАВЯНЕ НА ОСНОВЕН КЛЮЧ (person_id);
Стойностите на първичния ключ предполагат уникална идентификация
записи, съответно стойностите не могат да се повтарят.
И отново, нека се опитаме да добавим запис с person_id = 2:
ВМЕСТВАНЕ НА person_info СТОЙНОСТИ (2, "Rita", "Blow", "F", "9-OCT-1975",
29789.56);
283

29.

Външен ключ
ALTER TABLE slave_table_name
ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ име на ограничение ВЪНШЕН КЛЮЧ (име на колона
подчинен
таблици) REFERENCES master_table_name;
CREATE TABLE person_address (
person_id INTEGER,
адрес VARCHAR (200));
ALTER TABLE person_address
ДОБАВЕТЕ ОГРАНИЧЕНИЕ person_fk_address
ЧУЖДЕН КЛЮЧ (person_id)
ЛИТЕРАТУРА person_info;
293

30.

Език за манипулиране на данни
ИНСЕРТИРАНЕ В person_address СТОЙНОСТИ (1, "Москва, ул. Арбат, 67-14");
ИНСЕРТИРАНЕ В person_address СТОЙНОСТИ (2, "Москва, ул. Арбат, 67-14");
Успешно.
ИНСЕРТИРАНЕ В person_address СТОЙНОСТИ (4, "Зеленоград, Зелена улица, 23");
Грешка. Опит за вмъкване на подчинен запис, когато не присъства
съответния главен запис.
ИНСЕРТИРАНЕ В person_address СТОЙНОСТИ (3, "Зеленоград, Зелена улица, 23");
303

31.

Свързване на таблици при създаването
Както обсъдихме по -рано, създаването на
клавишите за първичен ключ и външен ключ
чрез команди за промяна на структурата на съществуващите таблици. Също
можете да добавите тези конструкции, когато създавате таблица:
CREATE TABLE раздел1 (
id цяло число PRIMARY KEY,
…..
313

32.

Език за манипулиране на данни
2. UPDATE - Промяна на стойностите на колоните в таблицата
А) Промяна на всички стойности на колона в таблица
АКТУАЛИЗИРАНЕ
КОМПЛЕКТ =
АКТУАЛИЗИРАНЕ на person_address
SET адрес = "Волгоград, Първа улица, 15-20"
Б) Промяна на конкретни стойности на таблицата
АКТУАЛИЗИРАНЕ
КОМПЛЕКТ =
КЪДЕТО =
АКТУАЛИЗИРАНЕ на person_address SET адрес = "Волгоград, Първа улица, 15-20"
КЪДЕ person_id = 3;
АКТУАЛИЗИРАНЕ
КОМПЛЕКТ =
КЪДЕТО = [оператор]
АКТУАЛИЗИРАНЕ person_info SET заплата = заплата * 2
КЪДЕ person_id = 3;
323

33.

Език за манипулиране на данни
3. DELETE - Изтриване на редове от таблица
А) Изтриване на всички стойности на колона в таблица
ИЗТРИВАЙТЕ ОТ
Б) Премахване на конкретни стойности от таблица
ИЗТРИВАЙТЕ ОТ
КЪДЕТО =
333

34.

Практическа задача номер 1
1. Създайте базата данни, показана на фиг. 1 (създайте таблици и външен ключ)
2. Въведете следните данни в таблиците.
Отдел: (1, „Маркетинг“), (2, „РД“)
Emp: (1, 1, "Джеймс", 1000), (2, 2, "Смит", 2000)
3. Създайте таблицата dept_arch със същата структура като таблицата dept.
4. Вмъкнете всички данни от таблицата dept в таблицата dept_arch.
343

35.

Практическа задача номер 1 (продължение)
5. Увеличете заплатата на Смит с 15%.
6. Уверете се, че следният запис не може да бъде вмъкнат в таблицата на отделите: (2, "Продажби"). Защо?
7. Уверете се, че следният запис не може да бъде вмъкнат в таблицата emp: (3, 4, "Black", 3000,
"Активен"). Защо?
8. Променете името на RD отдела на RandD (отдел за таблици).
9. Изтрийте записа с emp_id = 1 от таблицата emp.
12. Премахнете всички записи от таблицата emp.
13. Пуснете таблицата emp.
353

36.

SQL. Основен курс
Част 4. DRL. Прости заявки
www.aplana.ru

37.

Нашата база данни за обучение
373

38.

Език за извличане на данни
SELECT - избор на данни. Този раздел се изисква в заявката и
позволява:
SELECT поле1,… полеN ОТ таблица1, .., таблицаN КЪДЕ условие
383
Определете списък с изходни колони
Включете изчислени колони
Включете константи
Преименувайте изходните колони
Посочете принципа на обработка на дублиращи се редове
Включете съвкупни функции

39.

Език за извличане на данни
1.
Определяне на списък с изходни колони
Списъкът с изходни колони може да бъде посочен по няколко начина:
... Посочете символа *, за да включите всички колони в резултатите от заявката
заявка в естествена последователност.
... Избройте в желания ред само тези, от които се нуждаете<имена столбцов>.
SELECT лице_код, първо_име, фамилия_ОТ човек;
--Може да промени реда на колоните
SELECT first_name, last_name, person_code ОТ човек;
393

40.

Свързване
Връзката на две или повече части от текста.
SELECT product_name + "е продаден от" + salesperson FROM покупка;
403

41.

Език за извличане на данни
2. Включително изчислени колони
Изчислените колони за заявки могат да бъдат:
... Резултатите от най -простите аритметични изрази (+, -, /, * _ или
конкатенация на низ (+).
... Резултати от функцията за агрегиране (AVG | SUM | MAX | MIN |
БРОЯ)
413

42.

Език за извличане на данни
3. Включително константи
Колоните могат да бъдат цифрови и
типове знаци.
SELECT "Има такъв код", код на човек, "за", first_name, last_name
ОТ човек
423

43.

Език за извличане на данни
4.
Преименуване на изходни колони
Изчислени, както и всякакви други колони, ако желаете,
можете да зададете уникално име с помощта на ключова дума
КАТО:<выражение>КАТО<новое имя>
SELECT product_name + "беше продаден от" + salesperson AS SOLDBY
ОТ покупка;
Можете да задавате псевдоними, без да използвате ключова дума, но с ограничения:
SELECT product_name + "беше продаден от" + salesperson SOLDBY
ОТ покупка;
SELECT product_name + "беше продаден от" + salesperson "Sold By"
ОТ покупка;
433

44.

Език за извличане на данни
5. Уточняване на принципа на обработка на дубликати
DISTINCT - предотвратява появяването на дублиращи се редове в изхода
комплект. Тя може да бъде посочена веднъж за оператор SELECT.
На практика изходният набор първоначално се формира,
се поръчва и след това дубликатите се премахват от него
стойности. Това обикновено отнема много време и не следва.
злоупотреба.
ИЗБЕРЕТЕ РАЗЛИЧНОСТ * ОТ лице
ВСИЧКИ (по подразбиране) - Активира включването в
резултати от заявки и дублиращи се стойности
443

45.

Език за извличане на данни
6.
Активиране на съвкупни функции
Агрегиращи функции (функции на множества, статистически или
основни) са предназначени за изчисляване на някои стойности за
даден набор от линии. Използват се следните агрегати
функции:
AVG | SUM (<выражение) – подсчитывает среднее значение | сумму от
<выражение>.
MIN | MAX (<выражение>) - намира максимума | минимална стойност.
БРОЙ (* |<имя столбца>) - брои броя редове
Но повече за това по -късно.
453

46.

Език за извличане на данни
КЪДЕ - подбор на данни, които удовлетворяват определени
условия.
SELECT поле1,… полеN ОТ таблица1, .., таблицаM КЪДЕТО
условие1, ... условиеY
463

47.

Език за извличане на данни
Примери:
SELECT * FROM product WHERE laststockdate IS NULL;
SELECT * FROM product, където laststockdate НЕ е НУЛ;
SELECT име на продукт, цена на продукт, количество_ на ръка
ОТ продукт КЪДЕ количество_на_ръка> 150;
SELECT product_name, product_price ОТ продукт
WHERE product_name<>Квадратен цинкулатор;
473

48.

Език за извличане на данни
Има и по -сложни условия:
Хитове в комплекта
<конструктор значений строки>IN (<подзапрос>|<набор конструкторов
низови стойности>)
Определя се набор от стойности, към които обектът за сравнение, написан преди това
ключовата дума IN може или не може да принадлежи. Ако подзаявката не е
връща редове, след което предикатът се оценява на FALSE.
Примери за работа с набори:
SELECT * ОТ покупка WHERE продавач IN ("CA", "BB");
ИЗБЕРЕТЕ * ОТ покупка, ГДЕ продавачът НЕ В ("CA", "BB");
SELECT * FROM purchase WHERE (salesperson + product_name) in (("CA" + "Small")
Widget "), (" GA "+" Chrome Phoobar "))
483

49.

Език за извличане на данни
Асортимент от аксесоари
<конструктор значений строки>МЕЖДУ<конструктор
редови стойности 1> И<конструктор значений строки 2>
Предикат BETWEEN е подобен на предиката IN, но вместо елементи
задава, той определя приобщаващите граници, в които [не трябва]
натиснете проверената стойност.
КЪДЕТО
product_price НЕ МЕЖДУ 1 И 80;
493

50.

Език за извличане на данни
Булеви оператори
<предикат>(И | ИЛИ | НЕ)<предикат>
Забележки: Логическите оператори свързват един или повече предикати към форма
единствената булева стойност е TRUE | FALSE. Използване на предикати с
логически оператори, можете значително да увеличите селективността
възможност за избор на редове в резултата от заявката.
Когато използвате булеви оператори, особено оператора NOT, трябва
прилагайте скоби за правилно формулиране на условия (И
работи преди OR).

„% Widget“ ИЛИ product_price< 20;
SELECT product_name, product_price FROM product WHERE product_name LIKE
"% Widget" И product_price< 20;
503

51.

Език за извличане на данни

ИЗБЕРЕТЕ списъка с полета ОТ списъка на таблиците КЪДЕ проверете стойността ЛИК
(модел) (ESCAPE (име на пропуск));
Всеки отделен знак - _
SELECT person_code, first_name, last_name ОТ лице WHERE лице_код КАТО "_A";
Всяка подниза -%
SELECT product_name FROM product WHERE product_name LIKE "% Chrome%";
Ако трябва да намерите текст със символ% (например име на продукт
а б В Г Д Е):
КЪДЕ име_на_продукт КАТО "ab $% c%" ESCAPE "$";
Първият% се чете като знак в името, вторият - като всеки низ.
513

52.

Език за извличане на данни
КАТО приблизителен оператор за търсене
... където второто име като „% s%“
... където средно име като „И%“
... където средно име като „% hiv“
... където Фамилия като „____ s“
523

53.

Език за извличане на данни
КАТО приблизителен оператор за търсене

изберете името на продукта от покупката
където име на продукт като "% Widget"
изберете името на продукта от покупката
където име на продукт като "% $% Widget"
бягство от „$“
533

54.

Език за извличане на данни
Сортиране
УСЛОВИЕ ИЗБЕРЕТЕ списък на колони ОТ списъка на таблиците КЪДЕ
ORDER BY списък на колони ASC (DESC);
Низходящ:
SELECT product_name, product_price ОТ продукт
ПОРЪЧВАЙТЕ по product_price DESC;
Възходящ:
SELECT product_name, product_price ОТ продукт
ORDER BY product_name ASC;
543

55.

Практическа задача номер 2
1. Напишете заявка, показваща цялата таблица за покупки.
2. Напишете заявка, която избира колоните име_на_продукт и количество от
Маси за закупуване.
3. Напишете заявка, която избира тези колони в обратен ред.
4. Напишете заявка, която показва човек за всеки ред в таблицата
следния текст:
започна работа *. Получена колона
задайте псевдонима „Започнала работа“.
5. Напишете заявка, която показва името на продукта product_name
(таблица с продукти), за която цената не е дефинирана (НУЛ).
6. Напишете заявка, която показва името на продукта product_name
(маса за закупуване), която се продава от 3 до 23 броя.
* MSSQL не поддържа конкатенация на колони varchar и дата. Използвайте оператора
реализации: CONVERT (VARCHAR, нает)
3

56.

Практическа задача номер 2 (продължение)
7. Напишете заявка, която показва имената на служителите, които
нает на 1, 15 и 28 февруари 2010 г.
8. Напишете заявка, която показва името на продуктите
product_name (таблица за покупка), продаван от служители, чиито фамилни имена започват с „B“.
9. Напишете заявка, която показва името на продуктите
product_name (таблица за покупка), продаван от служители, чиито фамилни имена не започват с
„В“.
10. Напишете заявка, която показва имената и датата на наемане
служители, чиито фамилни имена започват с „В“ и които са приети
да работи преди 1 март 2010 г.
11. Напишете заявка, която показва името на продуктите
име на продукта и последна дата на доставка laststockdate (таблица
продукт), наречена Малка джаджа, средна джаджа и голяма
Widget или тези, които нямат последна дата на доставка.
Сортирайте низходяща дата на последната доставка.
563

57.

SQL. Основен курс
Част 5. Извличане на данни от множество таблици
www.aplana.ru

58.

Извличане на данни от множество таблици
SELECT име на таблица_1.име на колона, име на таблица_2.
име на колона
FROM table_name_1, table_name_2;

ОТ покупка, лице;
Декартов продукт - съединение без
Клауза WHERE, която води до всеки ред
едната таблица се комбинира с всеки ред от другата
таблици.
583

59.

Извличане на данни от множество таблици с условие
SELECT име на таблица_1.име на колона, име на таблица_2. име на колона
FROM table_name_1, table_name_2
WHERE master_table_name.primary_key =
slave_table_name.external_key;
SELECT покупка.име на_продукт, лице.първо_име, лице.последно_име
ОТ покупка, лице
КЪДЕ person.person_code = purchase.salesperson;
593

60.

Видове връзки
Има и други начини за свързване на таблици по ключове:
<таблица А> [<тип соединения>] ПРИСЪЕДИНЯВАНЕ<таблица B>НА<предикат>
<тип соединения>представлява един от аргументите: INNER | (НАЛЯВО | НАДЯСНО |
ПЪЛЕН)
INNER - включва редове, които имат колони със съвпадащи данни
съединени маси. Използва се по подразбиране.
НАЛЯВО - включва всички редове на таблица А (лявата таблица) и всички, които съвпадат
стойности от Таблица Б. Колоните на несъответстващи редове са запълнени със стойности NULL.
RIGHT - включва всички редове на таблица B (дясна таблица) и всички, които съвпадат
Таблица А. стойностите са обратни за лявото съединение.
ПЪЛЕН - включва всички редове на двете таблици. Колони от съвпадащи редове
са запълнени с реални стойности, а несъответстващите редове са запълнени с NULL стойности.
OUTER е квалификатор, който означава, че несъответстващите редове от
водещата таблица е включена заедно със съответстващите.
603

61.

Опции за присъединяване към таблици
адрес
телефон
ВЪТРЕШНО ПРИСЪЕДИНЯВАНЕ
SELECT * FROM address INNER JOIN phone ON адрес.ClientID = phone.ClientID
613

62.

Опции за присъединяване към таблици
адрес
телефон
SELECT * FROM address, phone WHERE address.clientID = phone.ClientID
623

63.

Опции за присъединяване към таблици
адрес
телефон
НАЛЯВО СЕ
SELECT * FROM address LEFT JOIN phone ON address.ClientID = phone.ClientID
633

64.

Опции за присъединяване към таблици
адрес
телефон
ПРАВНО ПРИСЪЕДИНЯВАНЕ
ИЗБЕРЕТЕ * ОТ ДЯСА НАДЯСНО ПРИСЪЕДИНЯВАНЕ на телефона НА адрес.ClientID = phone.ClientID
643

65.

Опции за присъединяване към таблици
адрес
телефон
ПЪЛНО ПРИСЪЕДИНЯВАНЕ
SELECT * FROM address FULL JOIN phone ON адрес.ClientID = phone.ClientID
653

66.

Присъединете се към операторите
UNION връща всички редове от двата израза SELECT; повтарящи се
стойностите се премахват.
UNION ALL връща всички редове от двата израза SELECT; повтарящи се
стойностите са показани.
INTERSECT връща редове, които се връщат както от първия, така и от втория
израза SELECT.
EXCEPT връща редове, които се връщат от първия оператор SELECT,
с изключение на тези, върнати от второто изявление.
Броят и редът на колоните, върнати от SELECT от двете таблици, трябва
съвпада.
663

67.

Присъединете се към операторите
SELECT product_name
ОТ покупка
ПОРЪЧВАЙТЕ по име_на_продукт
673
SELECT product_name
ОТ покупка_архив
ПОРЪЧВАЙТЕ по име_на_продукт
SELECT product_name
ОТ покупка
СЪЮЗ
SELECT product_name
ОТ покупка_архив
ПОРЪЧВАЙТЕ по име_на_продукт

68.

Присъединете се към операторите
SELECT product_nam e
ОТ M покупка
НЕ ВЪВ ВСИЧКО
SELECT product_nam e
ОТ M покупка_архив
O RD ER BY 1
683
SELECT product_nam e
ОТ M покупка
С ИЗКЛЮЧЕНИЕ
SELECT product_nam e
ОТ M покупка_архив
O RD ER BY 1
SELECT product_nam e
ОТ M покупка
В ТЕРЕСНО
SELECT product_nam e
ОТ M покупка_архив
O RD ER BY 1

69.

ОТ псевдоним на област
При използване на големи бази със схеми е обичайно
използване на псевдоними:
SELECT purc.product_name, prod.laststockdate, pers.first_name,
pers.last_name
ОТ покупка като purc,
Лице като човек,
Продукт продукт
КЪДЕ pers.person_code = purc.salesperson И
prod.product_name = purc.име на продукта;
693

70.

Практическа задача номер 3
1. Напишете заявка, която извежда декартовия продукт на таблиците с продукти
и закупуване.
2. Напишете заявка, показваща името на продадения продукт
име на продукта, количество количество (таблица за покупка) и
количество_на_ръка (таблица с продукти).
3. Напишете заявка, която показва името на продукта product_name
(покупка на маса), последна дата на доставка laststockdate (таблица
продукт) и фамилното име на продавача (лице на маса).
4. Напишете заявка, която показва колоните product_name, first_name,
фамилното име на външното съединение на таблиците за покупка и лице. Използвайте за маси
кратки псевдоними.
703

71.

Практическа задача номер 3 (продължение)
5. Напишете заявка, която показва всички кодове, които не се повтарят при покупката
продавачи
продавач от таблицата на покупката_архив.
6. Напишете заявка, която показва кодове само на тези продавачи от
таблици за покупки, които също се съдържат в таблицата за покупка_архив.
7. Напишете заявка, която показва всички (включително дублиращи се) кодове
продавач от таблиците за покупка и покупка_архив.
713

72.

SQL. Основен курс
Част 6. Обобщени функции. Групиране
данни.
www.aplana.ru

73.

Математически оператори
Математически оператор - символи, представляващи операции (+, -, *, /)
Изчисления с помощта на данни от таблици.
SELECT product_name, product_price * 1.07 FROM product;
SELECT product_name, product_price * количество_на_ ръка
ОТ продукт;
SELECT име на продукт, цена на продукт * 1,07 * количество_на_ръка продукт_цена * количество_на_ ръка
ОТ продукт;
SELECT име на продукт, цена на продукт * (количество_на_ръка + 10)
ОТ продукт;
733

74.

Математически оператори
Агрегиращи функции (функции на множества, статистически или основни)
са предназначени за изчисляване на някои стойности за даден набор
линии.
1. SUM - сумира стойностите и връща общата сума.
SELECT SUM (количество)
ОТ покупка;
2.AVG - връща средната стойност за посочената
колона.
SELECT AVG (product_price)
ОТ продукт;
743

75.

Математически оператори
3. MIN - Връща минималната стойност от посочената колона.
SELECT MIN (product_price)
ОТ продукт;
4. MAX - Връща максималната стойност от посочената колона.
SELECT MAX (product_price)
ОТ продукт;
753

76.

Математически оператори
5. COUNT - брои записи.
ИЗБЕРЕТЕ БРОЙ (*)
ОТ покупка; -брой редове, включително стойности NULL
SELECT COUNT (product_name)
ОТ покупка; - стойности в колоната, игнориращи NULL
763

77.

ГРУПИРАЙ ПО
Този раздел е за групиране на резултати от заявки в групи и изчисляване
за всяка от тези статистически стойности. Понякога терминът се използва
"Групирана маса".
SELECT име на продукт, SUM (количество)
ОТ покупка
GROUP BY product_name;
V Изказване SELECTмогат да се активират няколко групови функции.
SELECT product_name, SUM (количество) „Общо продадени“, COUNT (количество) транзакции
ОТ покупка
GROUP BY product_name;
773

78.

ИМАЩИ
HAVING - е подраздел, предназначен да ограничи броя
редове в групираната таблица и е част от клаузата GROUP BY.
Предикатът на този раздел е конструиран съгласно същите семантични правила като
в клаузата WHERE, но само
тези колони, които са посочени в клаузата GROUP BY. Останалите могат
използвайте само вътре в функциите за агрегиране. Този раздел
ограничава състава на групи (подгрупи) от редове, в които
резултата от искането. Групите (подгрупи) включват само тези от
множеството от възможни низове, за чиито стойности са изпълнени условията
раздел предикат HAVING. Вътре в секцията HAVING можете да използвате
вложени заявки с агрегиращи функции и свързани
подзаявки.
783

79.

ИМАЩИ
Тоест, обобщавайки горното, можете да стесните
присвояване на подраздел на:
С конструкцията HAVING можете
филтърни групи.
HAVING работи за групи по същия начин, както WHERE работи за отделни записи.
SELECT product_name, SUM (количество) "Общо продадено",
COUNT (количество) транзакции
ОТ покупка
GROUP BY product_name
ИМА СУММА (количество)< 5;
793

80.

Практическа задача номер 4
1. Напишете заявка, показваща каква ще бъде цената на продукта product_price след това
увеличение с 15%.
2. Напишете заявка, показваща колко продукти има в таблицата с продукти.
3. Напишете заявка, показваща колко продукта (таблица с продукти) не
цената е посочена.
4. Напишете заявка, която показва минималните и максималните цени за продукти product_price.
5. Напишете заявка, показваща колко е събрано от продажбите на всеки продукт
имена.
6. Напишете заявка, показваща колко е събрано от продажбите на всеки продукт
имена. Показвайте само тези записи, за които общите продажби са по -големи от 125.
803

81.

SQL. Основен курс
Част 7. Подзаявки
www.aplana.ru

82.

Подзаявки
Подзапитването е нормално SELECT заявкавложено в оператор
SELECT,
АКТУАЛИЗИРАНЕ
или
ИЗТРИЙ.
Използва се като източник на данни за клаузата FROM, или
КЪДЕ родителски оператор.
823

83.

Подзаявки
Има някои ограничения за използването на подзаявки:
833
Подзаявката трябва да избира само една колона (с изключение на подзаявка с
предикат EXISTS), а типът на данните от неговия резултат трябва да съответства на типа
предвид стойността, посочена в предиката.
В някои случаи можете да използвате ключовата дума DISTINCT, за да гарантирате
получаване на единична стойност.
Не можете да включите клауза ORDER BY и UNION в подзаявка.
Подзаявката може да се намира вляво или вдясно от думата за търсене.
Подзаявките могат да използват агрегирани функции без раздел
ГРУПИРАЙ ПО

84.

Подзаявки с един ред
Подзаявка с един ред е подзаявка, която връща само 1 стойност.
Сравнителните знаци се използват с резултата от вложената заявка (=,<>, <, <=,
>, >=)
ИЗБЕРЕТЕ * ОТ продукта
WHERE laststockdate = (SELECT laststockdate
FROM product WHERE product_name = "Малък приспособление");
Пример (използвайки агрегираща функцияв едноредов подзаявка):
SELECT * FROM product WHERE product_price>
(ИЗБЕРЕТЕ AVG (product_price) ОТ продукт);
843

85.

Многоредови подзаявки
Многоредова подзаявка е подзаявка, която връща само> = 1
смисъл.
Такива подзаявки не могат да се сравняват с
използване на знаци за равенство / неравенство; трябва да използвате функцията
IN.
ИЗБЕРЕТЕ * ОТ продукта
КЪДЕ ИМЕ НА ИМ
(ИЗБЕРЕТЕ DISTINCT product_name ОТ покупка);
АКТУАЛИЗИРАНЕ НА НАСТРОЙКАТА на продукта product_price = product_price * 0.9
WHERE product_name NOT IN (SELECT DISTINCT product_name
ОТ покупка);
853

86.

СЪЩЕСТВУВА
EXISTS приема подзаявка като аргумент и
го оценява като вярно, ако подзаявката съдържа
изход, а в противен случай като невярно.
Подзаявката се изпълнява веднъж и може да съдържа
множество колони, тъй като техните стойности не са проверени,
но резултатът от наличието на редове е просто фиксиран.
Бележки относно предиката EXISTS:
EXISTS е предикат, който връща TRUE или FALSE, и
може да се използва самостоятелно или заедно с други булеви
изрази.
863

87.

СЪЩЕСТВУВА
ИЗБЕРЕТЕ * ОТ продукта
КЪДЕ СЪЩЕСТВУВА
(ИЗБЕРЕТЕ * ОТ покупка
КЪДЕ product.product_name = purchase.product_name);
873

88.


ALL - ще се направи сравнение с всички записи, които
връща подзаявка (или само всички стойности в набора). Вярно
ще се върне само ако всички записи, които се върнат
подзаявката ще отговаря на посоченото от вас условие.
ИЗБЕРЕТЕ * ОТ продукта
WHERE product_price> = ALL (SELECT product.product_price
ОТ покупка, продукт


Заявката ще върне всички продукти от таблицата с продукти, чиято цена е по -висока или
се равнява на цената на всеки продаден артикул с код на служител „GA“.
883

89.

Групови условия (оператори за сравнение).
ВСЕКИ - сравнението ще върне вярно, ако условието е изпълнено поне едно
запис от подзаявка (или набор).
SELECT * FROM product WHERE product_price> ANY (SELECT
product.product_price
ОТ покупка, продукт
КЪДЕ закупуване.име на продукта = име на продукт
AND purchase.salesperson = "GA");
Заявката ще върне всички записи от таблицата с продукти, за които цената на продукта
повече от цената на всеки продукт, продаван с код на служител "GA".
НЕКОЙ - прави същото като ВСЯКО. Напълно взаимозаменяеми.
893

90.

Практическа задача номер 5
1. Напишете заявка, която връща всички служители, които са били наети на същото
ден като служител Джон Смит.
2. Напишете заявка, която връща всички продукти, които са под средната цена.
3. Напишете заявка, която връща всички продукти, които са продадени повече от един
пъти.
4. Цената на стоките, продадени повече от веднъж, се е увеличила с 15%.
5. Използвайки клаузата EXISTS, напишете заявка, която връща всички служители,
които са продали нещо поне веднъж.
6. Напишете заявка, която връща всички продукти от таблицата с продукти, чиято цена
по -малко от цената на всеки артикул, продаван с код на служител "GA".
7. напишете заявка, която ще върне всички продукти от таблицата с продукти, които са по -евтини
цените на поне един продукт, продаден от служителя с код "GA". Уверете се, че
някои оператори и ВСИЧКИ оператори са взаимозаменяеми.
903

91.

SQL. Основен курс
Част 8. Функции за работа с низове, дати и
числа
www.aplana.ru

92.

Функции за работа с числа
ROUND - закръглява числата до всяка дадена точност.
КРЪГ
SELECT product_name, ROUND (product_price, 0)
ОТ продукт;
SELECT ROUND (1234.5678, 3) --MSSQL
ИЗБЕРЕТЕ КРЪГ (1234.5678, 3) ОТ ДВОЙНО;
КРЪГЛА функция
КРЪГЛА (1234.5678.4)
КРЪГЛА (1234.5678, 3)
КРЪГЛА (1234.5678, 2)
КРЪГЛА (1234.5678,1)
КРЪГЛА (1234.5678,0)
КРЪГЛА (1234.5678, -1)
КРЪГЛА (1234.5678, -2)
КРЪГЛА (1234.5678, -3)
923
Върната стойност
1234.5678
1234.568
1234.57
1234.6
1235
1230
1200
1000
--Оракул

93.

Функции за работа с числа
TRUNC - Съкращава число, намалявайки неговата точност.
Функция TRUNC
Върната стойност
TRUNC (1234.5678.4)
1234.5678
TRUNC (1234.5678.3)
1234.567
TRUNC (1234.5678, 2) 1234.56
TRUNC (1234.5678,1)
1234.5
TRUNC (1234.5678.0)
1234
TRUNC (1234.5678, -1)
1230
TRUNC (1234.5678, -2) 1200
TRUNC (1234.5678, -3) 1000
933

94.

Поддържащи маси
Манекенски маси
Да изпълнява функции без обвързване със специфични таблици в редица СУБД
е необходимо да се посочи таблица за услуги, тъй като SQL предполага
изберете ... от.
Oracle - ДВОЙНО
DB2 - SYSDUMMY1
СИБАЗА - ДУМИ
MySQL - ДВОЕН
MSSQL липсва. MSSQL разпознава заявки за услуги без
необходимостта да се посочи фиктивна таблица.
943

95.

Функции за работа с дати
GETDATE - Връща текущата дата.
изберете getdate ();
DATEADD - Връща получената дата като сума на първоначалната дата
дата и интервалът, добавен към дадения компонент на частта от датата
дата.
АDD_МONTHS (стойност, количество, начална дата)
SELECT DATEADD (месец, 1, GETDATE ());
SELECT DATEADD (година, -2, GETDATE ());
953

96.

Функции за работа с дати
EOMONTH - Връща последния ден от всеки посочен месец
в датата, предадена на него (MSSQL 2012+).
EOMONTH (дата)
SELECT EOMONTH (GETDATE ());
SELECT EOMONTH ("2015-03-15");
SELECT first_name, last_name, hiredate, EOMONTH (hiredate) +1
ОТ лице;
963

97.

Функции за работа с дати
DATEDIFF - Връща броя единици, разделящи две дати.
DATEDIFF (стойност, начална дата, крайна дата)
SELECT DATEDIFF (милисекунда, GETDATE (), SYSDATETIME ());
ИЗБЕРЕТЕ ДАТИФИК (МЕСЕЦ, "17-АВГУ-2012", GETDATE ());
973

98.

Функции за работа с текст
ГОРНА - поставя всички знаци в низ с главни букви.
LOWER - поставя всички символи в низ с малки букви.
INITCAP (oracle) - променя случая на низ в смесен (първата буква от всеки
думите ще бъдат с главни букви, останалата част от думата ще е с малки букви).
SELECT UPPER (product_name) FROM product;
ИЗБЕРЕТЕ ДОЛНО (product_name) ОТ продукт;
ИЗБЕРЕТЕ INITCAP ("този ТЕКСТ hAd НЕПРЕДВИДИМ КАЗА") ОТ DUAL;
983

99.

Функции за работа с текст
LEN - определя дължината на низа.
SELECT product_name, LEN (product_name) LENGTH
ОТ продукт
WHERE LEN (product_name)> 15;
993

100.

Функции за работа с текст
SUBSTRING - отрязва стойността в параметъра.
SUBSTRING (source_text, начална позиция на знака,
Знаци)
СУБСТРИРАНЕ (ред 1, а, [, б])
Връща частта "Линия 1", която започва с символ номер a,
и с дължина от b знака. Ако a = 0, това е еквивалентно на
a = 1 (начало на низ), ако b е положителни символи се връщат
от ляво на дясно. Ако b е отрицателно, тогава започва в края на низ и
се разглеждат от дясно на ляво! Ако b липсва, тогава по подразбиране
всички знаци се връщат до края на низа
100
3

101.

Функции за работа с текст
ИЗБЕРЕТЕ СУБСТРИНГ (item_id, 1, 3) МЕСТОПОЛОЖЕНИЕ,
SUBSTRING (item_id, 5, 3) ITEM_NUMBER
ОТ old_item;
101
3

102.

Функции за работа с текст
CHARINDEX- намира позицията на знака (или знаци), разделяща елементите
линии.
CHARINDEX (ред 1, ред 2, [, а])
Връща местоположението „ред 1“, в „ред 2“. "ред 2" се сканира
наляво, започвайки от позиция а. Ако а е отрицателен, тогава се сканира „ред 2“
на дясно. По подразбиране за a е 1, което води до позиция,
първото появяване, "ред 1", в "ред 2". Ако е дадено, „ред 1“ не е
намерено, връща 0
102
3

103.

Функции за работа с текст
CHARINDEX (символ за търсене, текст за търсене, позиция
_start_character)
SELECT item_desc, CHARINDEX (",", item_desc, 1)
ОТ old_item;
103
3

104.

Влагане на функции
SELECT item_desc, SUBSTRING (item_desc, 1, CHARINDEX (",", item_desc, 1))
КАТЕГОРИЯ
ОТ old_item;
104
3

105.

Влагане на функции
105
3
SELECT item_desc,
SUBSTRING (item_desc, 1, CHARINDEX (",", item_desc, 1) -1) CATEGORY,
SUBSTRING (item_desc, CHARINDEX (",", item_desc, 1) +2, 99) ITEM_SIZE
ОТ old_item;

106.

Практическа задача номер 6
1. Използване на функции за работа с дати и числа, преброяване,
на колко години си.
2. Изведете реда „ЗНАМ ТЕКСТОВИ ФУНКЦИИ“ в горната част и
малки букви
3. Разберете дължината на тази линия.
4. Работа с колоната purchase.product_name, изход:
първите три знака
всички останали знаци, започвайки от четвъртия
пълна линия
106
3

107.

Полезни ресурси
http://sqlfiddle.com/ - инструмент, който емулира празна БД:
позволява да се изпълни значителна част от DML, DDR и DR
заявки. Поддържа 5 основни диалекта
http://www.sql-tutorial.ru/ - интерактивен урок по SQL на
Руски
http://www.sql-ex.ru/ - интерактивен портал за решаване
SQL задачи
https://dev.mysql.com/downloads/mysql/ - Безплатен SQL
сървър за различни ОС
https://www.mysql.com/products/workbench/ - безплатно
инструмент за работа със MySql сървър
107
3

108.

Благодаря за вниманието!
Вашите въпроси?
Фирма Аплана
Сергей Воробьов
Водещ инженер -изпитател
+7-917-556-13-49
www.aplana.ru

SQL език. Основен курс.

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

Този урок обхваща не само всички основни SQL команди, но и други теми, като индекси и транзакции. Ръководството е написано по такъв начин, че може да се използва както под ръководството на учител, така и независимо. Предполага се, че учениците имат достъп до вече инсталирана СУБД, поради което инсталационната процедура на PostgreSQL не е описана подробно, а са дадени само инструкции къде да намерят инструкции за инсталиране. Този урок е предназначен да ви предостави практически умения за използване на езика SQL. Учебният материал е представен по такъв начин, че читателят да получи много важни знания в резултат на изпълнението на задачите в края на всяка глава.

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

Наръчникът е предназначен за студенти, обучаващи се в областите 09.03.01 - „Информатика и компютърни науки“, 09.03.02 - „Информационни системи и технологии“, 09.03.03 - „Приложна информатика“, 09.03.04 - „Софтуерно инженерство“ и 02.03.03 03 - "Математическа поддръжка и администриране на информационни системи". Тя може да бъде полезна за широк кръг студенти и професионалисти, които искат да се запознаят с основите на езика SQL в средата на системата за управление на бази данни PostgreSQL.

Издател - Postgres Professional

Година на издаване - 2017

Формат на книгата - PDF

SQL (обикновено се произнася „SIKWEL“) означава Структуриран език на заявките. Това е език, който ви позволява да създавате и работите в релационни бази данни, които представляват колекции от свързана информация, съхранявана в таблици. Ако се чудите откъде да започнете да изучавате SQL, трябва да дойдете при нас. Нашата компания ви предлага курсове по SQL, както и уроци по SQL за начинаещи, след изучаването на които можете сами да създадете SQL база данни. Изучаването на SQL е много обещаващо занимание. Той включва SQL лекции, курсове по SQL бази данни и курсове по SQL заявки. Има възможност да посещавате курсове по SQL и да провеждате обучение от SQL от нулата, както и да посещавате курсове по SQL програмиране, използвайки SQL обучение онлайн, след като сте получили изключителна практика

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

В нашия все по -взаимосвързан компютърен свят потребител, оборудван с такъв език, има огромно предимство при използването и синтезирането на информация от различни източници по различни начини. Следователно обучението по SQL Server и обучението по SQL заявки са много важни.

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

Стандартът SQL е дефиниран от ANSI (Американски национален институт по стандарти) и в момента също е приет от ISO (Международна организация за стандартизация). Повечето търговски програми за бази данни обаче разширяват SQL без ANSI уведомление, добавяйки различни други функции към езика, които смятат, че ще бъдат много полезни. Понякога те донякъде нарушават езиковия стандарт, въпреки че добрите идеи са склонни да се развиват и скоро сами по себе си се превръщат в „пазарни“ стандарти поради своята полезност. Можете да научите всички тези функции, като вземете курсове за обучение по SQL в нашия офис или като направите онлайн SQL проучване.

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

Както подчертахме по -рано, SQL означава Structured Query Language. Проучването на SQL заявки и създаването на заявки спрямо базата данни е може би най -често използваният аспект на SQL. Всъщност за категорията на потребителите на SQL е малко вероятно някой да използва този език за нещо друго. Поради тази причина ще стартираме нашия SQL език, като обсъдим заявката и как тя се изпълнява на този език.

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

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

Всички SQL заявки се състоят от една команда. Структурата на тази команда е измамно проста, защото трябва да я разширите, за да извършвате изключително сложни оценки и манипулации с данни. Тази команда се нарича - SELECT.

Препис

2 Postgres Professional Company ЕП Моргунов SQL ЕЗИК. ОСНОВНИ КУРСОВИ ОБУЧЕНИЯ И ПРАКТИЧЕСКИ РЪКОВОДСТВО Москва 2017 г.

3 УДК LBC М79 М79 Моргунов, ЕП Език SQL. Основен курс: учеб.-практичен. надбавка / Е. П. Моргунов; изд. Е. В. Рогова, П. В. Лузанова; Postgres Professional. М., стр. Този практически урок е първият, основен, част от курса за обучение по езиков SQL, предлаган от руската компания Postgres Professional. Учебният материал е представен с оглед използването на системата за управление на бази данни PostgreSQL. Ръководството може да се използва както под ръководството на учител, така и за самостоятелно изучаване на езика SQL. Наръчникът е предназначен за студенти, обучаващи се в областите „Информатика и компютърно инженерство“, „Информационни системи и технологии“, „Приложна информатика“, „Софтуерно инженерство“ и „Математическа поддръжка и администриране на информационните системи“. Той може да бъде полезен за широк кръг студенти и професионалисти, които искат да се запознаят с основите на езика SQL в средата на системата за управление на бази данни PostgreSQL. UDC BBK Postgres Professional, 2017 Е. П. Моргунов, 2017

4 Съдържание Въведение 5 1 Въведение в базите данни и SQL Какво представляват базите данни и защо са необходими Основни понятия на релационния модел Какво е описание на езика на SQL за домейна и базата данни за обучение Тестови въпроси и задачи Създаване на работна среда Инсталиране на СУБД psql програма PostgreSQL интерактивен терминал Разгръщане на бази данни за обучение Тестови въпроси и задачи Основни операции с таблици 22 Тестови въпроси и задачи Типове данни на PostgreSQL СУБД Числови типове Типове символи (низ) Типове дата / час Булев тип Масиви Типове JSON Тестови въпроси и задачи Основи на езика за дефиниране на данни стойности и ограничения Целостта Създаване и изтриване на таблици Промяна на таблици Изгледи Схеми на база данни Тестови въпроси и задачи Заявки Допълнителни функции на командата SELECT Връзки Агрегиране и групиране на подзаявки Тестови въпроси и задачи Промяна на данни Вмъкване на редове в таблици Актуализиране на редове в таблици Изтриване на редове от таблици Тестови въпроси и задачи

5 8 Индекси Главна информацияИндекси с множество колони Уникални индекси Индекси, базирани на изрази Частични индекси Преглед на въпроси и задачи Транзакции Ниво на изолация ПРОЧЕТЕТЕ НЕПОЗВОЛЕНО Ниво на изолация ПРОЧЕТЕТЕ АНГИМИРАНО Ниво на изолация ПОВТОРЯЩО ПРОЧЕТЕТЕ Ниво на изолация СЕРИАЛИЗИРАН Пример за използване на транзакции Заключване Проверка на въпроси и задачи Подобряване на производителността Основни концепции Сканиране на таблици Техники за създаване се присъединява към Rowset Management Scheduler Управление на заявки Оптимизиране на тестове Въпроси и задачи Препоръчани източници 255 4

6 Въведение Понастоящем терминът "база данни" е известен на много хора, дори и на тези, които са далеч от професионалното развитие на компютърните програми. Базите данни се превърнаха в много разпространена технология, която от своя страна изискваше повече хора да ги проектират и поддържат. В хода на еволюцията на теорията и практиката на базите данни релационният модел на данни се е превърнал в фактически стандарт и в рамките на този модел се е формирал специализиран език за програмиране, който ви позволява да извършвате всички необходими операции с езика за структурирани заявки ( SQL) данни. По този начин владеенето на езика SQL е важен компонент от квалификацията на специалист по бази данни. Този урок обхваща основите на езика SQL в основен курс. Освен това езикът се разглежда във връзка със специфична система за управление на бази данни (СУБД) PostgreSQL. Въвеждането на езика SQL във всяка СУБД е в една или друга степен в съответствие със стандарта, но освен стандартизирани функции и възможности, всяка СУБД предлага и свои допълнителни езикови разширения. PostgreSQL осигурява много добра поддръжка за езиковия стандарт на SQL, а също така предоставя интересни и полезни допълнителни функции. Едно от основните предимства на PostgreSQL е разширяемостта. Това означава например, че потребител (който разбира се е специалист по бази данни) може да разработи свои собствени типове данни. Тези типове данни ще имат всички свойства на вградените типове данни и могат да бъдат пуснати в действие без спиране на сървъра. В допълнение, PostgreSQL е безплатен и с отворен код и е достъпен на голямо разнообразие от платформи. Този урок обхваща не само всички основни SQL команди, но и други теми, като индекси и транзакции. Ръководството е написано по такъв начин, че може да се използва както под ръководството на учител, така и независимо. Предполага се, че учениците имат достъп до вече инсталирана СУБД, поради което инсталационната процедура на PostgreSQL не е описана подробно, а са дадени само инструкции къде да намерят инструкции за инсталиране. Този урок е предназначен да ви предостави практически умения за използване на езика SQL. Учебният материал е представен по такъв начин, че читателят да получи много важни знания в резултат на изпълнението на задачите в края на всяка глава. Тези знания може да не бъдат представени в основния текст на главите. Предполага се, че значителна част от задачите ще бъдат изпълнявани от читателя независимо, използвайки документацията за СУБД PostgreSQL, но често се дават инструкции за тяхното изпълнение. Задачите в ръководството се различават по трудност. Най -трудните, както и тези, чието завършване отнема много време, са маркирани със звездичка. Задачите могат да бъдат изпълнени, докато учите учебни материаликонкретна глава. Някои от тях обаче имат сложен характер, така че за да ги завършите, трябва да изучите цялата глава или поне няколко нейни раздела. 5

7 Въпреки че наръчникът има практическа насоченост и не е теоретичен курс, все пак първата глава накратко, на елементарно ниво, очертава основните понятия на теорията на базата данни и релационния модел. Това се прави, за да могат студентите да започнат практическото усвояване на езика SQL без забавяне, от първите дни на учебния семестър, дори преди момента, в който тези концепции ще бъдат обстойно разгледани в лекционния курс. В катедрите по информационни технологии в руските университети базите данни традиционно се изучават през втората или третата година. Освен това тази дисциплина, като правило, отнема един семестър. Броят на академичните часове на обучение обаче може да варира. Ако учебната програма разпределя 36 часа за практически упражнения по тази дисциплина, тогава препоръчваме следното разпределение на времето за изучаване на материала в ръководството. Глава 1. Въведение в бази данни и SQL Глава 2. Създаване на работна среда Глава 3. Основни операции с таблици Глава 4. Типове данни на PostgreSQL СУБД Глава 5. Основи на езика за дефиниране на данни Глава 6. Заявки Глава 7. Промяна на данни Глава 8. Индекси Глава 9. Транзакции Глава 10. Подобряване на производителността 1 час 1 час 4 часа 4 часа 4 часа 8 часа 4 часа 2 часа 4 часа 4 часа Глави 1 и 2 могат да се изучават в един двучасов урок, тъй като PostgreSQL вече трябва да е инсталиран в класната стая предварително. Глава 3 е кратък преглед на основните характеристики на езика SQL, след като го изучат, учениците трябва да са наясно с прости начини за използване на всички основни команди на езика. Тази глава не е много трудна, но дълга, така че за нейното изучаване са необходими четири часа. Глава 4 разглежда основните типове данни, използвани в PostgreSQL. Това е голяма глава, но съдържа значителна част от дейности и упражнения. Очаква се учениците да усвоят само основните техники за използване на типове данни за четири часа. И за да бъдат консолидирани знанията, се препоръчва да се обърне към материала на тази глава (включително упражненията) в процеса на изучаване на останалите глави от ръководството, ако е необходимо да се изяснят някои характеристики на използването на специфични видове. Препоръчваме да разпределите времето, отделено за изучаването на тази глава, както следва: два часа за първите четири абзаца от числови и низови типове, дата / час и булеви типове, още два часа за масиви и типове json / jsonb. За да изпълните заявки към базата данни, трябва да имате добро разбиране за нейната структура, връзката на таблиците. Следователно глава 5, която обсъжда основите на езика за дефиниране на данни, е много важна от гледна точка на подробно проучване на таблиците на базата данни за въздушен транспорт и подготовка за усвояване на глава 6. Тъй като материалът на главата се основава относно факта, че базата данни вече е разгърната на компютъра на ученика, след това въведете не са необходими команди за създаване на таблици. Това ви позволява да намалите времето, прекарано в изучаване на главата. Този урок използва подход, който първо разглежда командите за дефиниране на данни, а след това командите за манипулиране на данни. Следователно глава 5, „Основи на езика за дефиниране на данни“, предхожда глава 6.

8 глава 6 "Искания". Избраният подход обаче не е много стриктно приложен: в обзорна глава 3 се разглеждат основни команди, включително прости заявки. И заявките вече са език за манипулиране на данни. Глава 5 има четири часа учене. По време на първия си двучасов урок ще изучите първите два параграфа, които обхващат теми като ограничения на целостта и създаване и изтриване на таблици. Вторият двучасов урок трябва да бъде посветен на изучаването на останалите три параграфа. Те говорят за начини за промяна на таблици, както и за изгледи и схеми на база данни. Глава 6 е в центъра на ръководството, така че изучаването отнема осем часа, повече от останалите глави. Състои се от четири раздела. Първият е посветен на различните допълнителни функции на командата SELECT. Това включва неща като клаузите LIMIT и OFFSET, оператора LIKE и регулярните изрази в клаузите WHERE и др. Въпреки това материалът от този параграф не е труден, достатъчно е да отделите един час за изучаването му. Вторият параграф обяснява как да се присъединят към таблици. Това е по -сложна тема и изисква два часа за изучаване. Третият параграф разглежда агрегирането и групирането. Той също така обхваща такава важна и интересна тема като функциите на прозореца. Този параграф също изисква двучасов урок. Най -трудният раздел на тази глава е четвъртият. Става въпрос за подзаявки. Той, по -специално, обхваща такава важна и интересна тема като Common Table Expressions (CTE). За да изучите материала в този параграф, трябва да отделите три часа. Глава 7 съдържа всички команди за промяна на данни: вмъкване на редове, актуализирането им и изтриването им. Тъй като тези команди вече са били използвани за прости задачи в предишните глави, тази глава обсъжда по -напреднали начини за тяхното използване. В него има много упражнения, те съставляват половината от обема му. Препоръчваме ви да отделите два часа, за да проучите как да вмъкнете редове в таблици, и още два часа, за да разгледате как да актуализирате и изтриете редовете. Глава 8 е за индексите, тя е малка, така че можете да се запознаете с нея в един двучасов урок. Тъй като индексите са тясно свързани с проблемите с производителността, тоест скоростта на заявките, би било препоръчително след изучаване на последната глава да се върнете към глава 8 и да разгледате представените там команди и заявки, като вече знаете за командата EXPLAIN. Глава 9 е посветена на транзакциите. Механизмите за тяхното изпълнение имат много тънкости, така че докато изучавате тази глава, трябва да експериментирате и да се опитате да обясните получените резултати. Последната глава 10 обсъжда въпросите за производителността. Тази глава може да изглежда твърде абстрактна и сложна за начинаещ SQL курс, но въпреки това е много важна. Учениците трябва да се научат да четат планове за изпълнение на заявки и да разбират целта на всяка операция, представена в плана. И овладяването на изкуството за оптимизиране на заявки ще отнеме много време и опит и няма да дойде веднага. В случай, че 54 часа са разпределени за практическо обучение по дисциплината „Бази данни“ в учебната програма, можете да промените предложеното разпределение на учебните часове. По -специално в глава 4 можете да отделите повече време за типове данни 7

9 json / jsonb и масиви. Глава 6 предоставя по -подробен поглед върху прозоречните функции и общите изрази на таблици. Докато изучавате глава 9 относно транзакциите, може да си струва да разработите просто приложение, което използва транзакции и да експериментирате с това приложение, като изпълнявате няколко сесии паралелно и променяте нивата на изолация на транзакциите. Като част от глава 10 има смисъл да се върнем към командите и заявките в глава 8 и да разгледаме плановете за тяхното изпълнение с помощта на командата EXPLAIN. Поради допълнителното време могат да бъдат разгледани всички задачи и упражнения с повишена сложност (маркирани със звездичка). Така разпределението на времето може да бъде както следва: Глава 1. Въведение в бази данни и SQL Глава 2. Създаване на работна среда Глава 3. Основни операции с таблици Глава 4. Типове данни на PostgreSQL СУБД Глава 5. Основи на езика за дефиниране на данни Глава 6. Заявки Глава 7. Промяна на данни Глава 8. Индекси Глава 9. Транзакции Глава 10. Повишаване на производителността 1 час 1 час 4 часа 6 часа 6 часа 12 часа 6 часа 4 часа 8 часа 6 часа Урокът използва различни типове шрифтове, за да подчертае текстови фрагменти в зависимост от местоназначението им. Команди, въведени от потребителя като в околната среда операционна системаи в помощната среда psql са с удебелен монопространствен шрифт. Например: psql -d demo -U postgres или SELECT avg (total_amount) FROM резервации; Резултатите от командите на операционната система и SQL командите, изпълнени в помощната среда psql, се отпечатват с еднопространствен шрифт. Например, в отговор на EXPLAIN SELECT * FROM от самолети; екранът ще покаже следното: ПЛАН ЗА ЗАПИТВАНЕ Seq Scan за самолети (цена = редове = 9 ширина = 52) (1 ред) Надяваме се, че изучаването на материала в този урок ще ви помогне да подобрите уменията си и да разширите професионалните си хоризонти. осем

10 1 Въведение в базите данни и SQL Тази глава е въвеждаща. В него ще разгледаме основите на базите данни, какъв е релационният модел и защо имате нужда от SQL. Много важна тема на тази глава ще бъде описанието на предметната област, въз основа на която ще бъде проектирана базата данни за обучение, която ще служи като платформа за изучаване на езика SQL. Този урок е предназначен предимно за практическо овладяване на езика SQL, а не за изучаване на теорията на базата данни, затова, за да изучите теорията, трябва да се обърнете към авторитетните източници, списък на които е даден в края на урока. 1.1 Какво представляват базите данни и защо имате нужда от тях Технологиите на бази данни не винаги са съществували. Въпреки това, дори преди въвеждането им на практика, хората също събират и обработват данни. Един от начините за съхранение на данни бяха така наречените плоски файлове, които имат много проста структура: данните се съхраняват като записи, разделени на полета с фиксирана дължина. В реалния живот често възникват сложни взаимоотношения между елементи от данни, които трябва да бъдат прехвърлени в електронна база данни. При използване на плоски файлове тези взаимоотношения са трудни за организиране и още по -трудно да се поддържат при промяна или изтриване на отделни елементи от данни. Едно от основните понятия в теорията на базата данни е моделът на данните. Можем да кажем, че той характеризира начина на организиране на данните и основните методи за достъп до тях. Първо бяха предложени йерархични и мрежови модели на данни. В хода на еволюцията на теориите и идеите бе разработен релационен модел на данни, който сега е доминиращ. Следователно в наши дни преобладават бази данни от релационен тип. Характерната им особеност е фактът, че данните се възприемат от потребителя като таблици. Потребителят има оператори за извличане на данни от таблици, както и за вмъкване на нови данни, актуализиране и изтриване на съществуващи данни. Едно от предимствата на релационната база данни е нейната способност да поддържа връзки между елементи от данни, премахвайки необходимостта програмист да извършва тази рутинна и много отнемаща време работа. Още в дните преди широкото възприемане на технологиите за релационни бази данни, програмистите трябваше ръчно да внедрят на процедурни езици това, което сега се нарича каскадни актуализации на чужди ключове или каскадни записи от подчинени таблици (файлове). Тук думата „ръчно“ означава, че за да извършите тези операции, трябваше да напишете код, състоящ се от елементарни команди, което ви позволява да стигнете до всеки актуализиран или изтрит запис. Този подход за работа с бази данни се нарича навигационен програмист, който насочва програмата към специфичен алгоритъм за намиране на записи. Нека дадем като пример една проста ситуация: в база данни, изградена въз основа на файлове, се съхранява информация за учениците и техните оценки на изпита, освен това личните данни на студентите се съхраняват в един файл, нека го наречем условно „Студенти“, и оценките на изпитите в друг файл, който да го наречем „Оценки“. Ако искате да изтриете информация за конкретен студент и неговия изпит 9

11 степени, не само ще трябва да извършите операцията по изтриване на конкретен запис от файла "Ученици", но и допълнително да организирате цикъл за намиране и изтриване на тези записи от файла "Оценки", за които ключовото поле има същата стойност като поле в изтрития запис от файл "Студенти". Работейки с релационни бази данни, програмистът е освободен от програмиране на "атомно" ниво, тъй като съвременните езици за "комуникация" с тези бази данни са декларативни. Това означава, че за да се получи резултат, е достатъчно само да се посочи какво трябва да се получи, но не е необходимо да се предписва метод за получаване на резултата, т.е. как да се получи. Системата за бази данни е компютъризирана система за съхранение, обработка и издаване на информация по искане на потребителите. Такава система включва софтуер и хардуер, самите данни и потребители. Съвременните системи за бази данни обикновено са многопотребителски. В такива системи няколко потребители могат едновременно да имат достъп до базата данни. Основният софтуер е системата за управление на бази данни. На английски се нарича система за управление на бази данни (СУБД). В допълнение към СУБД, система за бази данни може да включва помощни програми, инструменти за разработване на приложения (програми), инструменти за проектиране на бази данни, генератори на отчети и др. Потребителите на системи с бази данни са разделени в редица категории. Първата категория са програмистите за приложения. Втората категория са крайните потребители, за които е свършена цялата работа. Те имат достъп до базата данни, като използват приложни програми или общи приложения, които са включени в софтуера на самата СУБД. Повечето СУБД имат така наречен процесор за език на заявки, който позволява на потребителя да въвежда команди на език от високо ниво (като SQL). Третата категория потребители са администраторите на бази данни. Техните отговорности включват: създаване на база данни, избор на оптимални начини за достъп до нея, ограничаване на правомощията на различните потребители за достъп до определена информация в базата данни, извършване на архивиране на база данни и т.н. Системата на базата данни може да бъде разделена на два основни компонента: a сървър и набор от клиенти (или външни интерфейси). Сървърът е СУБД. Клиенти са различни приложения, написани от програмисти на приложения или вградени приложения, доставени със СУБД. Един сървър може да обслужва много клиенти. Съвременните СУБД включват речник на данни. Това е частта от базата данни, която описва действителните данни, съхранявани в нея. Речникът на данните помага на СУБД да изпълнява своите функции. 1.2 Основни концепции на релационния модел Всяка технологична област има своя собствена терминология. Има основни условия, на които се основават всички по -нататъшни разсъждения. Такива термини означават 10

12 присъстват и в областта на базите данни. Сега накратко ще поговорим за тях. В ерата преди раждането на теорията на отношенията, базите данни традиционно се разглеждат като съвкупност от файлове със записи, а записите от своя страна са разделени на отделни полета. Полето е елементарна единица данни. В релационните бази данни потребителят възприема данните под формата на таблици. Следователно терминът „файл“ съответства на термина „таблица“, вместо термина „запис“ се използва терминът „ред“, а вместо термина „поле“ терминът „колона“ (или „колона“). Така таблиците се състоят от редове и колони, в пресечната точка на които трябва да има "атомни" стойности, които не могат да бъдат разделени на по -малки елементи, без да се губи смисъл. В официалната теория на релационните бази данни тези таблици се наричат ​​отношения, така че базите данни се наричат ​​релационни. Връзката е математически термин. При определяне на свойствата на такива отношения се използва теория на множествата. От гледна точка на тази теория редовете на таблицата ще се наричат ​​кортежи, а колоните ще се наричат ​​атрибути. Релацията има заглавка, която се състои от атрибути, и тяло, което се състои от кортежи. Броят на атрибутите се нарича степен на връзката, а броят на кортежите се нарича кардинален номер. В допълнение към теорията на множествата, една от основите на теорията на отношенията е такъв клон на математическата логика като предикатното смятане. По този начин в теорията и практиката на базите данни има три групи термини. Понякога термини от различни групи се използват взаимозаменяемо, например нотация и низ. Както казахме по -горе, в релационни бази данни потребителят възприема данните под формата на таблици. Помислете за проста система само с две таблици. Първи "Ученици": книга за пълно име Име на документа Документ номер Иванов Иван Петрович Климов Андрей Иванович Новиков Николай Юриевич И втори "Напредък": Книга за оценка Предмет Академична година Семестър Оценка Физика 2016 / Математика 2016 / Физика 2016 / Физика 2016 / При работа с бази данни често се налага да спазвате различни ограничения, които може да се дължат на спецификата на определена предметна област. Опростявайки реалната ситуация, ние ще приемем следните ограничения: 11

13, номерът на дневника се състои от пет цифри и не може да бъде отрицателен (различните университети използват различни схеми за присвояване на числата към учебниците, тези схеми могат да бъдат много по -сложни от тази, която сме приели и може да вземат предвид например годината студент влезе в университета); серията на документа за самоличност е четирицифрено число, а номерът на документа за самоличност е шестцифрено число; номерът на семестъра може да приема само две стойности 1 (есенен семестър) и 2 (пролетен семестър); оценката може да приема само три стойности 3 (задоволително), 4 (добро) и 5 ​​(отлично): не е прието да се поставят други оценки в регистрите. За идентифициране на редове в таблици и свързване на таблици заедно се използват т.нар. Ключове. Потенциалният ключ е комбинация от атрибути на таблица, която уникално идентифицира редове в таблица. Ключът може да се състои само от един атрибут на таблицата. Например в таблицата „Студенти“ този идентификатор може да бъде атрибутът „Номер на класа“. Два негови атрибута, взети заедно, също могат да служат като потенциален ключ за тази таблица: „Серия от документ за самоличност“ и „Номер на документ за самоличност“. Никой от тях сам по себе си не може да се използва като уникален идентификатор. В този случай ключът ще бъде композитен. Важно е потенциалният ключ да не бъде излишен, тоест никоя подмножество от включените в него атрибути не трябва да притежава свойството уникалност. Потенциалният ключ, който включва двата споменати атрибута, не е излишен. Ключовете са необходими за адресиране на ниво ред (запис). Ако в таблицата има повече от един потенциален ключ, един от тях се избира като така наречения първичен ключ, а останалите ще бъдат алтернативни ключове. Помислете за таблиците „Ученици“ и „Изпълнение“. Да предположим, че таблицата "Учениците" не съдържа ред с номера на учебника 55900, тогава няма смисъл да включвате ред с този номер на класа в таблицата "Оценки". По този начин стойностите на колоната "Номер на класа" в таблицата "Оценки" трябва да съответстват на стойностите на същата колона в таблицата "Учениците". Атрибутът "Номер на класа" в таблицата "Оценки" е пример за това, което се нарича външен ключ. Таблицата, съдържаща външния ключ, се нарича референтна таблица. Таблицата, съдържаща съответния кандидат ключ, се нарича референтна таблица. В такива случаи се казва, че външният ключ се отнася до ключа кандидат в посочената таблица. Чуждият ключ може да бъде композитен, тоест може да включва повече от един атрибут. Чуждият ключ не трябва да е уникален. Проблемът с гарантирането, че базата данни не съдържа невалидни стойности на външен ключ, е известен като проблем с референтната цялост. Ограничението, че стойностите на външния ключ трябва да съвпадат със стойностите на ключовете -кандидати, се нарича ограничение за референтна цялост (референтно ограничение). СУБД е отговорна за налагането на ограничения за референтна цялост и от разработчика се изисква само да посочи атрибутите, които служат като външни 12

14 ключа. При проектирането на база данни често се приема, че когато ред е изтрит от референтна таблица, съответните редове от референтната таблица също трябва да бъдат изтрити, а когато стойността на колона, посочена от външен ключ, се промени, стойностите на външния ключ в референтната таблица трябва да се промени. Този подход се нарича каскадно изтриване (актуализиране). Понякога се използват и други подходи. Например, вместо да изтриват редове от референтната таблица, тези редове просто заменят стойностите на атрибутите, включени във външния ключ, с така наречените NULL стойности. Това са специални стойности, които означават „нищо“ или никаква стойност, те не съвпадат със стойността „нула“ или „празен низ“. NULL се използва в бази данни и като стойност по подразбиране, когато потребителят не е въвел конкретна стойност. Първичните ключове не могат да съдържат NULL стойности. Транзакцията е едно от най -важните понятия в теорията на базата данни. Това означава набор от операции над базата данни, разглеждани като единична и неделима единица работа, изпълнена изцяло или изобщо, ако е имало някакъв вид грешка по време на изпълнението на транзакцията. По този начин транзакциите са средство за осигуряване на последователност на данните. В нашата база данни транзакция може да бъде например две операции: изтриване на ред от таблицата „Ученици“ и изтриване на редове, свързани с външен ключ от таблицата „Оценки“. 1.3 Какво е SQL език SQL е непроцедурен език, който е стандартното средство за работа с данни във всички релационни СУБД. Операторите (команди), написани на този език, само показват на СУБД какъв резултат трябва да бъде получен, но не описват процедурата за получаване на този резултат. Самата СУБД определя как се изпълнява потребителската команда. В езика SQL традиционно съществува група изявления за дефиниране на данни (Data Definition Language DDL), група оператори за манипулиране на данни (Data Manipulation Language DML) и група оператори, които управляват привилегиите за достъп до обекти на базата данни (Language Control Data DCL). Декларациите за език за дефиниране на данни (DDL) включват команди за създаване, промяна и изтриване на таблици, изгледи и други обекти на база данни. На тези команди са посветени подробно глави 5 и 8. Изявленията за език за манипулиране на данни (DML) са команди за извличане на редове от таблици, вмъкване на редове в таблици, актуализиране и изтриване на редове. Тези команди са обсъдени подробно в глави 6 и 7. Операторите на DCL не са обхванати в този урок, тъй като PostgreSQL ви позволява да правите без да ги използвате в началния етап на изучаване на SQL. 13

15 1.4 Описание на предметната област и примерната база данни За да покажем всички основни характеристики на езика SQL, се нуждаем от база данни. Тази база данни не трябва да бъде твърде сложна или да отнема твърде много време за изучаване. Но в същото време тя трябва да бъде достатъчно разнообразна, така че исканията към нея да изглеждат правдоподобни, почти същите като в реалната работа. Нека да изберем пътнически въздушен транспорт като предмет. Оригиналното му описание и описание на базата данни за въздушен транспорт може да се намери на адресите и ru / docs / postgrespro / current / demodb-bookings.html. Надяваме се, че тази област ще бъде позната на много читатели на нашия урок. Разбира се, за образователни цели реалната ситуация е умишлено опростена, но всички основни неща са запазени. И така, определена руска авиокомпания извършва пътнически въздушен транспорт. Разполага със собствен флот от самолети от различни модели. Всеки модел самолет има специфичен код, присвоен от Международната асоциация на въздушните превозвачи (IATA). В този случай ще приемем, че самолетите от един и същ модел имат еднакво оформление на кабината, тоест реда на сядане и номерирането на седалките в каютите от бизнес и икономична класа. Например, ако това е модел Sukhoi SuperJet-100, тогава седалката 2A принадлежи към бизнес класа, а 20D седалката към икономичната класа. Бизнес клас и икономична класа са вариации на така наречения сервизен клас. Нашата авиокомпания изпълнява полети между руски летища. На всяко летище е присвоен уникален трибуквен код и се използват само главни букви от латинската азбука. Тези кодове не се присвояват от самата авиокомпания, а от специални организации, които управляват пътнически въздушен транспорт. Често името на летището не съвпада с името на града, към който принадлежи това летище. Например в град Новосибирск летището се нарича Толмачево, в град Екатеринбург, Колцово, а в Санкт Петербург - Пулково. Освен това някои градове имат повече от едно летище. Веднага като пример си спомням Москва с нейните летища Домодедово, Шереметиево и Внуково. Нека добавим още една важна подробност: всяко летище се характеризира с географски координати, дължина и ширина, както и с часова зона. Оформят се полетни маршрути между градовете. Разбира се, всеки такъв маршрут изисква посочване не само на града, но и на летището, тъй като, както казахме, в един град може да има повече от едно летище. Като опростяване на реалността, ние решаваме, че маршрутите няма да имат спирки, т.е. Тоест те ще имат само летище на излитане и летище на местоназначение. Всеки маршрут има шестцифрено число, включително цифри и букви от латинската азбука. Въз основа на списъка с маршрути се формира полетен (или полетен) график. Графикът показва планираното време на заминаване и планираното време на пристигане, както и вида на самолета, изпълняващ този полет. Когато полетът действително се изпълнява, става необходимо да се вземе предвид допълнителна информация, а именно: действителното време на заминаване и действителното време на пристигане, както и състоянието на полета. Състоянието на полета може да приеме няколко стойности: 14

16 Планирани (възможността за резервация се отваря на месец); Навреме (регистрацията отваря ден преди това); Забавено (полет със закъснение); Заминал (заминал); Пристигнал (пристигнал); Отменен Сега нека се обърнем към пътниците. Полетът започва с резервация на самолетен билет. Сега е обичайна практика издаването на електронни билети. Всеки такъв билет има уникален 13-цифрен номер. В рамките на една процедура за резервация могат да бъдат издадени няколко билета, но всяка такава процедура има уникален шестцифрен номер на резервация (код), състоящ се от главни букви от латинската азбука и цифри. Освен това за всяка процедура за резервация се записва датата на резервация и се изчислява общата цена на издадените билети. Всеки билет, в допълнение към тринадесетцифрения си номер, съдържа идентификационния номер на пътника, както и неговото име и фамилия (в транскрипция на латиница) и информация за контакт. Номерът на документа за самоличност се използва като идентификатор на пътника. Разбира се, пътникът може да промени документа си, а понякога дори и фамилията и името си, през времето, изминало между резервацията на билети в различни дни, така че е невъзможно да се каже със сигурност, че са били издадени конкретни билети за един и същ пътник. Всеки електронен билет може да съдържа повече от един полет. Експертите наричат ​​тези полетни записи сегменти. Пример за наличието на няколко сегмента е следният: Красноярск Москва, Москва Анапа, Анапа Москва, Москва Красноярск. В същото време е възможно да се издадат няколко билета за различни пътници в рамките на една и съща резервация. За всеки полет са посочени номерът на полета, летищата на заминаване и дестинация, часовете на заминаване и пристигане и цената на полета. Освен това е посочен т. Нар. Клас на обслужване: икономически, бизнес и пр. Когато пътник пристигне на летището на заминаване и премине регистрацията на билет, се издава т. Нар. Бордна карта. Този талон е свързан с самолетен билет: талонът съдържа същия номер като електронния билет на този пътник. Освен това билетът съдържа номера на полета и номера на седалката в самолета. Посочен е и номерът на бордната карта, последователният номер, присвоен по време на процеса на регистрация за този полет. Напомняме, че всяка седалка в кабината на самолета отговаря на определен клас обслужване. Тази информация се взема предвид при регистрация на билети и издаване на бордни карти. Ако например пътник е закупил билет с услуга от икономична класа, тогава бордната му карта ще посочи номера на седалката в кабината на икономичната класа, но не и в кабината на бизнес класа. Следвайки горното описание на предметната област, можете да проектирате модел база данни, предназначена за изучаване на езика SQL. Тъй като нашият урок е преди всичко за изучаване на езика SQL, а не за овладяване на изкуството на проектиране на бази данни, ние ще ви покажем само Фигура 15.

17 Резервации Летища Резервации Летища # book_ref * book_date * total_amount # airport_code * airport_name * град * географска дължина * географска ширина * часова зона Билети Билети # ticket_no * book_ref * пътнически_идентификатор * име на пътник планирано_пристигане * летище на заминаване * летище на пристигане както и техните взаимоотношения и качества. Конкретните типове данни, първични и чужди ключове, както и ограниченията, наложени на атрибути и таблици, ще покажем в следващите глави в процеса на разглеждане на SQL команди, предназначени за физическо създаване на таблици в база данни. Тази диаграма може да бъде намерена на уебсайта на Postgres Professional на адресите, посочени в началото на този раздел. Тестови въпроси и задачи 1. Какви групи оператори се открояват в езика SQL? 2. Дайте неофициална дефиниция на основните понятия на релационния модел на данни: връзка, кортеж, атрибут. 3. За какво са чуждестранните ключове в релационните таблици? 4. Какво е потенциален ключ? 5. * Дайте пример за излишен кандидат ключ за една от таблиците в базата данни за въздушен транспорт и обяснете защо би бил излишен. 16

6. * В настоящото внедряване на базата данни за въздушен транспорт се приема, че самолети от същия модел могат да имат само едно оформление на кабината. Представете си, че ръководството е взело решение да обмисли възможността да има различни оформления за всеки модел. Кои таблици ще трябва да бъдат променени в този случай и как? Трябва ли да създадете допълнителни таблици? 17

19 2 Настройване на работна среда Преди да започнете да изучавате директно SQL, трябва да получите достъп до PostgreSQL сървъра. Това може да стане например в компютърна лаборатория или чрез достъп до отдалечен сървър чрез терминал. Можете обаче да създадете работна среда за себе си и на вашия локален компютър, като инсталирате пълната версия на СУБД PostgreSQL, тоест сървърните и клиентските програми. В този случай ще имате много повече правомощия да конфигурирате и използвате PostgreSQL. В последната част на тази глава ще ви покажем как да разгърнете базата данни за обучение по въздушен транспорт, пълна със специално подготвени правдоподобни данни. 2.1 Инсталиране на система за управление на база данни Тъй като този урок е за изучаване на езика SQL, а не за основите на администрирането на база данни PostgreSQL, ние ще ви дадем само кратко ръководство къде да намерите инструкции за инсталиране. Трябва да започнете, като изберете комплекта за разпространение на СУБД, който искате да инсталирате. Можете да изберете оригиналната опция PostgreSQL или тази, предлагана от Postgres Professional. Нарича се Postgres Pro и съдържа не само всички функции и модули, които се доставят със стандартното разпространение, но и допълнителна работа, извършена от Postgres Professional. Тези дистрибуции са еднакво подходящи за изучаване на основите на езика SQL. Руската документация обаче е включена само с PostgreSQL. След като вземете решение за специфичен комплект за разпространение на СУБД, трябва да изберете операционна система. PostgreSQL поддържа много системи, включително различни версии на Linux, както и Windows. Препоръчително е да инсталирате най -новата стабилна версия на СУБД. Ако решите да използвате оригиналната дистрибуция на PostgreSQL, можете да намерите инструкции как да я инсталирате на различни операционни системи на адрес Ако сте избрали дистрибуция PostgreSQL, тогава трябва да отидете на най -новата. След като инсталирате PostgreSQL и Postgres Pro на Windows, ще трябва да се предприемат допълнителни стъпки, за да се гарантира, че използването на руската азбука в интерактивния терминал psql не създава проблеми. Помощната програма psql е обсъдена в следващия раздел. Процесът на инсталиране ще създаде потребителски акаунт на СУБД с име postgres. Не е необходимо да създавате допълнителни акаунти, за да изучите този урок. осемнадесет

20 След като сте инсталирали един или друг комплект за разпространение на PostgreSQL, трябва да научите как да стартирате сървъра на базата данни, защото в противен случай е невъзможно да се работи с данни. Как да направите това е подробно описано в документацията в раздел 18.3 "Стартиране на сървъра на базата данни". Можете да намерите този раздел на адрес current / server-start.html. При инсталиране на СУБД в среда на Windows се създава услуга за автоматично стартиране на PostgreSQL сървъра при стартиране на операционната система. След като приключите работата със сървъра, трябва правилно да го спрете (изключите). Редът на действията в такава ситуация е описан в документацията в раздел 18.5 "Изключване на сървъра". Можете да намерите този раздел на postgresql / 9.6 / server-shutdown.html. 2.2 Програмата psql PostgreSQL интерактивен терминал За достъп до сървъра на базата данни PostgreSQL идва с интерактивния терминал psql. За да го стартирате, трябва да въведете командата psql. Когато стартирате помощната програма psql в среда на Windows, буквите от руската азбука може да се показват неправилно. За да премахнете това, в свойствата на прозореца, в който работи psql, променете шрифта на Lucida Console и използвайте командата chcp, за да промените текущата кодова страница на CP1251: chcp 1251 В помощната среда psql можете да въведете не само SQL команди, но и различни команди за обслужване, поддържани от самата помощна програма. За да получите бърза справка за всички сервизни команди, въведете \? Много от тези команди започват с \ d знаци. Например, за да видите списък с всички таблици и изгледи, създадени в базата данни, към която сте свързани в момента, въведете командата \ dt Ако се интересувате от дефиницията (просто структура) на определена таблица от база данни, например ученици , трябва да въведете командата \ d students За да получите списък с всички SQL команди, трябва да изпълните командата \ h За да се покаже описание на конкретна SQL команда, например CREATE TABLE, трябва да направите това: \ h СЪЗДАЙТЕ ТАБЛИЦА 19

21 Тази помощна програма ви позволява да намалите количеството ръчно въвеждане чрез допълване на командата, която въвеждате с psql. Например, когато въвеждате SQL команда, можете да използвате клавиша Tab, за да завършите въведената ключова дума за команда или името на таблицата на базата данни. Например, когато въведете командата CREATE TABLE ..., можете да въведете символите "cr" и да натиснете клавиша Tab. Psql ще завърши тази дума преди "create". Можете да направите същото с думата ТАБЛИЦА. За да го въведете, просто въведете буквите „ta“ и натиснете клавиша Tab. Ако въведете твърде малко букви, за да може psql да идентифицира еднозначно ключовата дума, няма да възникне запълване. Но в този случай можете да натиснете клавиша Tab два пъти и да получите списък с всички ключови думи, започвайки с буквената комбинация, която сте въвели. 2.3 Разполагане на примерната база данни След приключване на инсталацията на сървъра на база данни, сега можем да преминем към въпроса как да разгърнем примерната база данни Air Transport, подготвена от Postgres Professional, във вашия PostgreSQL клъстер. Уебсайтът на компанията има раздел, посветен на тази база данни, можете да го намерите чрез връзката. Предоставя се в три версии, различаващи се само по обем данни: най-компактната версия съдържа данни за един месец, средно голямата версия обхваща период от три месеца, а най -пълната версия включва данни за цяла година. Всички данни са генерирани с помощта на специални алгоритми, за да се гарантира тяхната „правдоподобност“. Препоръчваме ви да започнете с компактната версия на базата данни за въздушен транспорт и след като натрупате известен опит в писането на SQL заявки, ще инсталирате пълната версия и вече върху нея ще можете по -добре да „усетите“ различните тънкости на работа с големи обеми данни например оценяват ефекта на индексите върху скоростта на достъпа до данни. Като първа стъпка за внедряване на вашата база данни трябва да изтеглите архивиран архив от цип връзка. След това трябва да извлечете файла от архива: unzip demo_small.zip Извлеченият файл се нарича demo_small.sql. Сега ще създадем база данни с име demo във вашия PostgreSQL клъстер. Най -кратката версия на командата ще бъде: psql -f demo_small.sql -U postgres demo.log 2> demo.err Можете да отделите stdout и stdout за грешки. Нормалните съобщения ще бъдат пренасочени към файла demo.log, а съобщенията за грешки към файла demo.err. Обърнете внимание, че не трябва да има интервал между числото 2, което обозначава дескриптора за извеждане на стандартно съобщение за грешка, и знака ">", който обозначава пренасочването на изхода. двайсет

22 Ако ви е по -удобно да събирате всички съобщения в един общ файл, тогава трябва да направите това: psql -f demo_small.sql -U postgres> demo.log 2> & 1 Обърнете внимание, че целият израз 2> & 1 в края на командата се пише без интервали. Той казва на операционната система да насочва съобщения за грешка до същото място като нормалните съобщения. Ако нашият SQL файл беше много голям, тогава би било възможно да изпълним командата във фонов режим, като поставим „&“ в края на командния ред и да наблюдаваме напредъка на процеса в реално време с помощта на командата tail. psql -f demo_small.sql -U postgres> demo.log 2> & 1 & tail -f demo.log Изберете една от опциите за команда за внедряване на база данни и изпълнете тази команда. Всичко е готово! Можете да се свържете с новата база данни: psql -d demo -U postgres Защитни въпроси и задачи 1. Завършете инсталационната процедура на PostgreSQL на избраната от вас операционна система. 2. Запознайте се с помощната програма psql, като използвате вградената помощ, както и с помощта на командата psql --help. 3. В допълнение към помощната програма psql, има и други програми с общо предназначение за работа със сървъра на бази данни PostgreSQL, например pgadmin. Това е мощна графична програма. Инсталирайте програмата pgadmin сами и научете основите на работата с нея. 4. Разгърнете примерната база данни. Опитайте да се свържете с него с помощта на помощната програма psql. Използвайте командата \ q, за да излезете от помощната програма. 21

23 3 Основни операции с таблици Езикът на SQL е много разнообразен, включва редица команди, които от своя страна понякога имат много параметри и ключови думи. Но нека започнем с бърз преглед на основните характеристики на езика SQL. В тази глава ще научите как да въвеждате данни в база данни, ще овладеете основните методи за получаване на информация от базата данни, т.е., вземане на проби, а също така ще научите как можете да правите промени в информацията, съхранявана в базата данни, и да изтривате данни, които са вече не са необходими. В практиката на изучаване на чужди езици има добра традиция. Още в първия урок ученикът научава някои основни граматически конструкции и думи, които му позволяват да каже няколко от най -простите, но въпреки това практически полезни фрази. Ние ще следваме тази традиция. В този раздел на нашия урок ще научите основните SQL команди, които ще ви позволят да извършвате основни операции. Ще научите по -сложни (и интересни) команди в следващите глави. Нека кажем няколко думи за нашия подход към работата. По принцип има два възможни начина за организиране на работата на ученик (обучаващ се). Първият начин е следният: студентът използва база данни, която вече съдържа всички необходими таблици и други обекти на базата данни, подготвени предварително от автора на учебника или друг квалифициран специалист. В същото време определен набор от необходими данни също вече е въведен в таблиците, така че можете незабавно да пристъпите към изпълнение на заявки по тези таблици. Описаният метод изглежда много привлекателен, тъй като изисква по -малко усилия в началния етап на овладяване на езика SQL. Според нас обаче друг метод е по -правилен. Вероятно отнема повече време, но когато го използвате, получавате по -добро усещане, както се казва, за процеса на създаване на таблици и въвеждане на записи в тези таблици. И като изпълнявате различни заявки към базата данни, ще ви бъде по -лесно да оцените верността на резултата от изпълнението на заявката, тъй като сте въвели всички данни сами и следователно можете разумно да предположите какви резултати очаквате да видите на екрана. Разбира се, първият метод може да бъде много полезен при изучаване на по -сложни, усъвършенствани функции на езика SQL, които са трудни за разбиране без използване на големи набори от данни и не е рационално да се въвеждат големи масиви от данни в базата данни ръчно. Би било много по -рационално да ги генерирате автоматично чрез софтуер. В глава 1 описахме предметната област, така че сега можем да започнем директно да създаваме таблици в базата данни. За да изпълним всички последващи команди и операции, ще използваме помощната програма psql, включена в стандартната доставка на PostgreSQL. Демо базата данни вече трябва да бъде внедрена на вашия компютър. Процесът на създаването му е описан в глава 2. Сега стартирайте помощната програма psql и се свържете с тази база данни, като използвате потребителския акаунт на postgres: psql -d demo --U postgres Използвайте командата CREATE TABLE за създаване на таблици в SQL. Пълният му синтаксис е представен в документацията на PostgreSQL, а опростеният синтаксис е: 22


Postgres Professional E. P. Morgunov PostgreSQL. Основи на езика SQL Урок Санкт Петербург "BHV-Петербург" 2018 УДК 004.655 BBK 32.973.26-018.2 М79 Моргунов, ЕП М79 PostgreSQL. Основите

SQL език Лекция 6 Индекси Е. П. Моргунов Сибирски държавен университет за наука и технологии на името на академик М. Ф. Решетнев Красноярски институт по информатика и телекомуникации [защитен имейл]

Братчиков И.Л. 41. Основи на проектирането на бази данни. Методи за изграждане на СУБД. SQL, примери за внедряване. Основи на съвременните бази данни. 1. Основни определения. Терминология. В литературата можете да намерите

Тема 10. Основи на технологиите за бази данни Технологията за бази данни е едно от ключовите постижения на информатиката, използвано за изграждане на компютърни информационни системи и приложения, които внедряват информация

ОСНОВНИ КОНЦЕПЦИИ НА БАЗИ ДАННИ 1. Изберете правилната процедура за проектиране на база данни а) Решаване на проблема с предаването на данни б) Анализ на предметната област, като се вземат предвид изискванията на крайните потребители в)

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

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

SQL език Лекция 3 Основи на езика за дефиниране на данни Е. П. Моргунов Сибирски държавен университет за наука и технологии на името на академик М. Ф. Решетнев Красноярски институт по информатика и телекомуникации

SQL език Лекция 5 Промяна на данните Е. П. Моргунов Сибирски държавен университет за наука и технологии на името на академик М. Ф. Решетнев Красноярски институт по информатика и телекомуникации [защитен имейл]

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

Глава 1. Първи стъпки Как работи база данни на Microsoft Access Проектиране на структура от данни Етапи на работа с база данни Нека започнем Потребителски интерфейс Access 2007 Персонализирайте елементи

Глава 3. Инсталиране и изпълнение на многопотребителската версия Изисквания и условия ... 1 Как да инсталирате SBiC ++ в мрежата ... 2 Инсталиране и конфигуриране на Pervasive.SQL сървър и клиент ... 3 Инсталиране на програмата .. 4 Подготовка

БАНКА НА ТЕСТОВИТЕ ЗАДАЧИ Академична дисциплина Направление Ниво на подготовка Катедра B1.B.12 Управление на данни 09.03.02 Бакалавърски информационни системи и технологии Методи и инструменти за измерване и автоматизация

Бази данни Развитието на компютърните технологии се осъществява в две основни направления: използването на компютърни технологии за извършване на числени изчисления; използване на компютърни технологии

Московски държавен технически университет „Бауман“ Калужски клон Ю. Е. Гагарин, С. В. Пономарев ПРИЛОЖЕНИЕ НА ЕЗИКА НА SQL В MS ACCESS Учебно ръководство UDC 681.3.06 LBC 32.973

1. Информация и данни 2. Основни понятия за системи с бази данни Информационните компютърни системи с бази данни са информационни, математически, софтуерни, езикови, организационни

PDM STEP SUITE версия 5.0 Инструкции за инсталиране PDM STEP Suite Инструкции за системния програмист. Част 1 JSC R&D Center "Applied Logistics" 2019 PDM STEP Suite v.5.0. Инструкции за системния програмист

1 от 6 Лекция 1. Архитектура на системата за бази данни. Функции на системния администратор на база данни в корпоративната информационна система. Обекти на база данни. 1.1. Архитектура на базата данни на ANSI / SPARC ... 1

СЪДЪРЖАНИЕ ВЪВЕДЕНИЕ ... 3 1 ИЗСЛЕДВАНЕ НА ТЕМАТА И ИЗЯВЛЕНИЕТО НА ПРОБЛЕМА ... 4 2 СЪЗДАВАНЕ НА ИНФОЛОГИЧЕН МОДЕЛ ... 5 3 ДАТАЛОГИЧЕСКИ ДИЗАЙН НА БАЗАТА ДАННИ ... 6 3.1 Избор на система за управление

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

Учебна дисциплина "Бази данни и тяхното управление" за студенти от специалността Приложна информатика (бакалавърска степен) 080800.62 Лекция 15 МОДЕЛИ НА ОРГАНИЗИРАНЕ НА ДОСТЪП ДО БАЗИ ДАННИ Образователни въпроси: 1. Архитектура

SQL език Лекция 7 Транзакции Сибирски държавен научно -технологичен университет Е. П. Моргунов на името на академик М. Ф. Решетнев Красноярски институт по информатика и телекомуникации [защитен имейл]

Компютърни информационни технологии Модул 13. Общи характеристики на СУБД за достъп 1 МОДУЛНИ ЦЕЛИ След изучаване на модула ще можете: да говорите за функционалностДостъп до СУБД; познайте характеристиките

Електронна система за управление на документи Arkhivaris Ръководство за инсталиране Москва, 2008 2 РЕЗЮМЕ Този документ описва комплекта за доставка на софтуерния продукт „EVFRAT-Управление на документи

БАЗИ ДАННИ (DB). СИСТЕМИ ЗА УПРАВЛЕНИЕ НА БД Общи разпоредби Целта на всяка информационна система е да обработва данни за обекти в реалния свят. В широкия смисъл на думата базата данни е съвкупност от информация за

Въведение в базите данни. Въведение в SQL. Сумски образователен център Осигуряване на качеството на софтуера (QA) Netcracker 2016 1 Научете за следното Какво представлява база данни Класификация на базата данни СУБД Клиенти СУБД

1.1. Основи на базата данни 1.1.1. Бази данни и системи за управление на бази данни. Data Models Database (DB) е именована колекция от структурирани данни, свързани с конкретна

Изглежда, че това беше съвсем наскоро, но какви значителни промени са настъпили оттогава! Докато авторът се готвеше да отпечата Професионалната книга за програмиране на SQL Server 7.0 в началото на 1999 г.

Въведение в теорията на базата данни Лекция 1 Описание на лекцията Основни понятия Организация на данните в базата данни Типове модели данни Архитектура на база данни Класификация на бази данни Server 2008. Лекция 1 2 Основни понятия Server 2008. Лекция

Приложение 4 Подсистема за управление на процеси и изчисления СЪДЪРЖАНИЕ 1. Обща информация ... 2 2. Моделиране на състояния и работни процеси ... 2 2.1. Управление на списъка на държавните групи ... 2 2.2. Създаване

Ръководство за инсталиране на Softacom CRM Версия 2.1. 1 "Ръководство за инсталиране на Softacom CRM". Съдържа описание на процеса на инсталиране на системата. Съдържание 1 ВЪВЕДЕНИЕ ... 3 1.1 Общи за системата ... 3 1.2 Характеристики

Лабораторна работа 4 „Създаване на връзки между таблици“ Цел на работата: изучаване на технологията за създаване на структурата на релационна база данни в Microsoft Office Access 2007 1. Теоретична кратка дума

Логически резервни копия Теми Логически и физически архивиране Копиране на отделни таблици Архивиране и възстановяване на бази данни и клъстер 2 Видове резервни копия Логически архиви

ДОСТЪП НА MICROSOFT: ВРЪЗКИ, ИЗЧИСЛЕНИ ПОЛЯ, СЪЗДАВАНЕ НА БУТОННА ФОРМА ЗА БД I. ВРЪЗКИ С ТАБЛИЦИТЕ Съвременните бази данни обикновено се състоят от множество таблици, свързани помежду си. Една от целите за създаване на добра структура

НАЦИОНАЛЕН АВИАЦИОНЕН УНИВЕРСИТЕТ Катедра „Приложна информатика“ Курсова работаТема: СУБД Microsoft Access Създаване и обработка на база данни Цел на работата: теоретично и практически овладяване на основните техники на работа

Транзакции и паралелен достъп: Сравняване на PostgreSQL и Oracle реализации Egor Rogov, Postgres Professional Защо всичко това? резултат от заявката Защо всичко това? резултат от заявка Транзакции Атомност всички

@ DB, СУБД 1. Структура от данни, характеризираща се с подчинение на обекти от по-ниско ниво към обекти от по-високо ниво, се нарича A. таблична В. релационна * C. йерархична D. мрежа 2. Отличителна

VOGBIT Ръководство за инсталиране 2010 Съдържание Въведение ... 4 Изисквания за софтуер и хардуер ... 5 Последователност на инсталиране ... 6 Инсталиране на софтуера ... 7 Искане и получаване на лиценз ...

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

Достъп до система за управление на база данни Допълнен от Чибинова Назлигул Ниязовна, студентка на Факултета по чужди езици на Института Елабуга на Казанския (Привожски) федерален университет. Научни

Информатика Лекция 5 MS Access Информационни системи Приложения за съхраняване, попълване, редактиране и използване на големи количества данни Под използва се означава в най -простия случай достъп

Съдържание Предговор ... 3 Част I. Бази данни, СУБД и модели данни Глава 1. Предназначение на технологията за бази данни. Функции и основни компоненти на системите за управление на бази данни ..........................................

Лаборатория за мониторинг и автоматизация на образователния процес. Ръководство на администратора за сайта за поддръжка на образователния процес 3 от 18.12.15 г. Коротков Д.С., Жучок И.О. Активиране / деактивиране

Глава 6 Теория на базата данни 6.1. Общи понятия 6.2. Модели на данни 6.3. Релационни бази данни 6.4. Пострелационни модели и бази данни 6.5. Проектиране на бази данни Съвременни информационни системи,

Лаборатория 9 Проучване на възможностите на Microsoft Access 2007 за формиране на заявки използване на SQL... Цел: 1. Изучаване на реда за формиране на заявки с помощта на SQL в Microsoft Access

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

1. Приблизителни инструменти за мониторинг. Въпроси, представени в анкетата (за обсъждане) раздели на дисциплината: Раздел 1. Въведение в банките с данни 1. Концепцията за банка данни (BnD). BnD компоненти. 1.1. Информационен

Лекция 2 1 По речник: Архитектури на информационните системи Информационната система е организационно подреден набор от документи (масиви от документи) и информационни технологии, включително

J. Bowman, S. Emerson, M. Darnovsky ПРАКТИЧНО РЪКОВОДСТВО ЗА SQL Тази книга ще ви помогне дори когато най -доброто ръководство за потребителя не е полезно. Тук се обхващат теми, които често се пренебрегват.

Електронна система за управление на документи Arkhivaris Ръководство за инсталиране Москва, 2009 г. 2 РЕЗЮМЕ Този документ описва комплекта за доставка на софтуерния продукт „EVFRAT-Управление на документи.



Свързани статии: