Предложение UPDATE
https://msdn.microsoft.com/en-us/library/ms173454(v=SQL.110).aspx - агрегирующие функции t-sql
Агрегирующие функции обязательно должны иметь параметр группировки (как формировать массив данных, над котороым нужно проводить вычисления)
Пример - база данных метеостанции. Повторите это пример в своей базы данных (префикс бд - meteo_)
Разработайте несколько программ/запросов на языке t-sql
Посмотрите ролик - https://youtu.be/5J-DQSCaeK8
Создайте БД (скрипт - DM2017-3 meteocreate)
· Используется два показателя - температура (название - temp) и давление (название - press). Добавьте их в таблицу.
· Разработайте программный код sql, который позволяет заполнить таблицу 20 случайными наблюдениями (температура = 22+-2 градуса) https://youtu.be/Z2LSYDMyMrQ
· Заполните значения атмосферного давления. При этом измените дату таким образом, чтобы показания давления отставали от наблюдений температуры на 5 дней.
· Обратите внимание, что в показанном примере происходит полное удаление данных из таблицы с наблюдениями. Модифицируйте код так, чтобы можно было очищать только данные, относящиеся к конкретному показателю.
o Вариант 1 - delete [data] wherevalue_id = 2 (2 - это идентификатор какого-то показателя)
o Вариант 2 - delete [data] wherevalue_idin (selectvalue_idfromvalue_namewherevalue_name = 'press') - запись с использованием подзапроса
· Подготовьте отчет - Время наблюдения, Название показателя, Значение показателя. Отсортируйте данные по Дате и Названию.
· Подготовьте отчет - Дата (без времени), Название показателя, Значение показателя. Отсортируйте данные по Дате и Названию.
· Подготовьте отчет - Год, Месяц, Название показателя, Среднее значение показателя за период
· Подготовьте отчет - Год, Месяц, Максимальноезначениепоказателя,Минимальноезначениепоказателя, Наименование показателя
|
· Найдите дни, в которых количество наблюдений не соответствует
Используйте файл DM2017-3 script 1 Createforeignkey, чтобы создать базу данных stxtnames_<фамилия>_<группа>.
Необходимо сделать так, чтобы в таблице tsmStationText могли находиться только те записи, которые связаны с tsmStation.
Расчет баланса на конец периода
Посмотрите видеоролик о том, как решить задачу оценки баланса в реляционной базе данных.
Разработайте базу данных, содержащую сведения о счетах, клиентах банка, а также о денежных переводах. Название базы данных - transactions_<фамилия>_<группа>
1. Разработайте базу данных и заполните её;
2. Как сделать так, чтобы можно было вместе с удалением клиента убрать все его счета при условии, что счет можно удалить, только если по нему нет транзакций в БД
3. Напишите запрос для получения всех счетов одного человека;
4. Напишите запрос, с помощью которого можно узнать все транзакции одного человека;
5. Напишите запрос для получения количества транзакций одного человека
6. Напишитезапрос, который ищет транзакции, относящиеся к заданному счету
7. Напишите запрос, определяющий сумму, на которую надо уменьшить баланс заданного счёта
8. Используя SQL, разработайте процедуру, которая выполнит обновление балансов всех счетов и затемудалит все транзакции
a. Вариант без транзакций
b. Вариант с использованием транзакции - все действия будут выполнены в одной транзакции
Интересныевозможности:
1. Каквставитьзначение в identity? Включение/отключениережима
|
2. Каквставтьтакуюстроку, котораянеможетбытьвставлена? Включение/отключениеограниченийцелостности
3. Какудалитьсразувседанные
Разработкабазыданныхвеб-чата
Задача №2
Разработайте базу данных строительных норм. Существует несколько филиалов, каждый из которых раз в месяц передает вам данные о своей деятельности в виде отчета, содержащего:
a. Наименование работы
b. Единицу измерения
c. Объем выполненной работы
d. Фактические трудозатраты
У вас есть список, в котором записаны значения норм трудозатрат для одной единицы измерения работы.
Присланные сведения должны сохраняться в базе данных для последующего анализа. Выполните разработку схемы БД.
Метаданные - гденасамомделехранятсясведенияобовсехобъектахбазыданных?ОбInformation_schema. Используя БД AW 2012:
Напишитезапросы:
1. Всетаблицы
2. Сколькоколоноквсего
3. Сколькоколонокстроковоготипа, числовоготипа
Какначатьписатьзапросы к базеданных? - видео
Вариантысвязываниязаписейпривыполнениизапросов.
Разработайтебазуданныхмессенджера
1. Диалоги. Назовитебазуданных dialog_
2. Групповыеобсуждения. Бдmultichat_
Длядвухвариантовразработайтебазуданных, а такжевыполнитеразработкуследующихзапросов:
1. Получитьсвоисообщения
2. Получитьвсеначатыдиалоги
3.
Запросдляполучениячисласообщений в зависимостиотпола и возраста.Дляэтогопотребуетсясначалагруппироватьпользователей, а затем – выполнитьматематическиеоперациинадданными.
Опишитеалгоритм
ОЧеньсложныезапросы к базеданных:
1. Какпосчитатьуникальныезаписи?
|
2. Разница count(*) и count(field)?
3. Каксделатьфильтрацию - сложныеситуации - нескольковариантовдляработы
Разработайтерекомендательнуюсистемудлявыборафильма, которыйвамнравится. Рекомендательнаясистемыдолжна
Какнастроитьсвязьтак, чтобыприудаленииоднойстрокиудалялисьсразувсесвязанные с ней?
О блокирующихоперациях и о том, зачемвсеэтонужно.
Разработайтеигруpokemon go приусловии, чтоколичествопокемонов в заданнойлокацииявляетсяобщимдлявсехигороков.
Разработайтенесколькозапросов:
1. Забратьпокемона
2. Выпустить в заданныйквадратнесколькихпокемоновзаданноговида
3. Отметитьсвоеместоположение. Еслидвижениебыстрее 10 км/ч, торойденныекилометрынезасчитываются.
Сгенерируйтескриптдлябазыданных.
Задачапроголосование
Просвязываниенуженвидеоролик. Тривидасвязи
Проначаловыполнениязапросов – тоже.
Каксделатьпредставление
Какподключиться к бдиз excel,чтобыпостроитьграфик и красивыйпереключатель?
Задачапротранзакции – какпосчитатьостатокнаконецпериода, используя РБД и язык SQL?
SQL
План:
2. О логике SQL (мы описываем не как мы получаем, а что мы получаем)
Несколько примеров с SelectFrom без джойнов и прочего
3. О том что SQL несколько видов:
a. операторы определения данных (DataDefinitionLanguage, DDL):
i. CREATE создает объект БД (саму базу, таблицу, представление, пользователя и т. д.),
ii. ALTER изменяет объект,
iii. DROP удаляет объект;
b. операторы манипуляции данными (DataManipulationLanguage, DML):
i. SELECT выбирает данные, удовлетворяющие заданным условиям,
ii. INSERT добавляет новые данные,
iii. UPDATE изменяет существующие данные,
iv. DELETE удаляет данные;
c. операторы определения доступа к данным (DataControlLanguage, DCL):
i. GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом,
ii. REVOKE отзывает ранее выданные разрешения,
iii. DENY задает запрет, имеющий приоритет над разрешением;
d. операторы управления транзакциями (TransactionControlLanguage, TCL):
i. COMMIT применяет транзакцию,
ii. ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции,
iii. SAVEPOINT делит транзакцию на более мелкие участки
Примеры даем только на a и b
ProceduralDMLs — описывают действия над данными.
DeclarativeDMLs — описывают сами данные.
4. Говорим о Where и о простых операторах: =, >, <, like, in, orand,not, between,
5. Говорим о JOIN: FULL, OUHTER, LEFT, RIGHT, CROSS
6. Говорим об алгоритмах JOIN NESTED LOOP, HASH, MERGED
7. GROUP BY и HAVING
8. ORDER BY, DISTINCT
9. Говорим о последовательности выполнения команд в SQL (FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY и проч)
10. ExplainAnalyse
11. Если осталось время еще практикуемся в джойнах (сложные условия и прочее)
Полезныестатьи:
https://www.madeiradata.com/loop-hash-and-merge-join-types