Сделай Сам Свою Работу на 5

Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10





Базы данных

Практические работы

13.
Работа с готовой таблицей

1. Откройте базу данных Учебники.odb[1] и изучите её структуру. Сколько таблиц она содержит?

Ответ:

1

2. Откройте таблицу Учебники.

3. Найдите любой учебник, выпущенный издательством «Вита-Пресс».

4. Отсортируйте отобранные записи в алфавитном порядке по полю Авторы, а учебники одного и того же автора – по номеру класса (в порядке убывания). Покажите работу учителю.

5. Используя «быстрый фильтр» (фильтр по выделенному), найдите все учебники, которые выпустило издательство «Вита-Пресс». Сколько записей было отобрано?

Ответ:

25

6. Измените фильтр так, чтобы отобрать все учебники по русскому языку издательства «Дрофа». Сколько записей было отобрано?

Ответ:

6

7. Добавьте в базу данных информацию о новом учебнике: Минаева С.С., Рослова Л.О., Рыдзе О.А. и. Математика. 1 класс. – М.: «Вентана-Граф», 2013.

8. Используя фильтр и сортировку[2], определите, сколько учебников выпустили издательства «Дрофа», «Вита-Пресс» и «Вентана-Граф» для 1-ого класса. Подсказка: программа автоматически считает число выделенных записей.

Ответ:



22


14.
Создание однотабличной базы данных

1. Создайте новую базу данных Футбол.

2. Создайте таблицу Футбол. В конструкторе добавьте следующие поля:

Команда (ключевое поле, размер поля – 20 символов)

Выигрыши

Ничьи

Проигрыши

Зарплата

Определите правильный тип данных для каждого поля.

Ответ:

Текст [VARCHAR], Число [NUMERIK], Число [NUMERIK], Число [NUMERIK], Текст [VARCHAR]

3. Введите следующие данные:

Команда Выигрыши Ничьи Проигрыши Зарплата
Аметист 13 290 р.
Бирюза 12 500 р.
Восход 22 000 р.
Закат 18 780 р.
Коллектор 20 200 р.
Кубань 14 000 р.
Малахит 17 340 р.
Ротор 15 820 р.
Статор 19 300 р.
Финиш 12 950 р.

4.

 

4. Отсортируйте записи по убыванию количества выигрышей.

5. Примените фильтр, который отбирает только команды, имеющие более 10 побед и меньше 5 проигрышей. Сколько команд отобрано с помощью этого фильтра?

Ответ:

2


15.
Создание запросов

При выполнении этой работы используются база данных Футбол, с которой вы работали на предыдущем уроке.



1. Постройте запрос с именем ЗапросЛучшие, который выводит все поля таблицы Футбол для всех команд, имеющих более 8 побед и меньше 5 проигрышей. Команды должны быть расставлены по убыванию числа побед. Сколько команд осталось в результатах запроса?

Ответ:

4

Как выглядит этот запрос на языке SQL?

Ответ:

SELECT "Выигрыши", "Проигрыши" FROM "Футбол" WHERE "Выигрыши" > 8 AND "Проигрыши" < 5 ORDER BY "Выигрыши" DESC

2. Постройте запрос с именем ЗапросОчки, который отбирает все поля из таблицы, кроме поля Зарплата. Как выглядит этот запрос на языке SQL?

Ответ:

SELECT "Команда", "Выигрыши", "Ничьи", "Проигрыши" FROM "Футбол"

3. Добавьте в этот запрос вычисляемое поле Очки (за каждую победу команда получает 3 очка, за ничью – 1 очко).

Как выглядит этот запрос на языке SQL?

Ответ:

SELECT "Команда", "Выигрыши", "Ничьи", "Проигрыши", "Ничьи" + 3 * "Выигрыши" AS "Очки" FROM "Футбол"

4. Отсортируйте записи (с помощью запроса) так, чтобы на 1-ом месте стоял победитель (команда, набравшая наибольшее количество очков). Какая команда оказалась на первом месте и сколько очков она набрала?

Ответ:

Восход (44 очка)

5. Постройте запрос с именем ЗапросЗарплата, который отбирает команды, где зарплата игроков не меньше суммы, введенной пользователем; команды должны быть расставлены по убыванию зарплаты.

Как выглядит этот запрос на язык SQL?

Ответ:

SELECT "Зарплата" FROM "Футбол" WHERE "Зарплата" >= :Минимальная_зарплата

 


16.
Создание формы



При выполнении этой работы используются база данных Футбол, с которой вы работали на предыдущих уроках.

1. Постройте форму на основе таблицы Футбол с помощью мастера.

2. Добавьте на форму изображение футбольного мяча (файл ball.jpg).

3. Удалите надпись «Команда» и выделите название команды жирным шрифтом увеличенного размера. Внешний вид формы должен получиться примерно такой, как на рисунке справа.

4. С помощью этой формы добавьте в таблицу еще три записи:

Команда Выигрыши Ничьи Проигрыши Зарплата
Зубр 15 900 р.
Тур 12 300 р.
Бизон 18 700 р.

5.

5. Проверьте, появились и эти записи в таблице Футбол.

6. Выполните запрос ЗапросОчки и посмотрите, как изменилась ситуация в турнирной таблице. Какая команда теперь на первом месте и сколько у неё очков?

Ответ:

Бизон (48 очков)

 


17.
Оформление отчёта

При выполнении этой работы используются база данных Футбол, с которой вы работали на предыдущих уроках.

1. Постройте отчет Результаты на основе запроса ЗапросОчки с помощью мастера. Расположите команды по убыванию количества набранных очков.

2. Измените внешний вид отчета так, как показано на рисунке. При редактировании отчёта в OpenOffice Writer нужно добавить новый столбец Место и установить для ячейки стиль нумерованного списка.


19.
Построение таблиц в реляционной БД

1. Создайте новую базу данных Кафе.

Таблицы Блюда и Заказано постройте с помощью конструктора.

1. Запишите SQL-запрос для создания таблицы Заказы и выполните его:

Ответ:

-

Примечание. Тип «дата» на языке SQL записывается как DATE.

2. Установите связи между таблицами:

3. Заполните таблицы данными из §14 (рис. 3.16). Можно добавить и свои данные. Таблицу Заказы заполните с помощью SQL-запросов. Запишите эти запросы в следующем поле:

Ответ:

-

Примечание. Дата 03.11.2014 вводится на языке SQL следующим образом:

– в OpenOffice Base как '2014-11-03';

– в русской версии Microsoft Access как '03.11.2014'.


20.
Создание запросов к реляционной базе данных

1. Постройте простой запрос ЗапросЗаказы, который собирает всю информацию о составе сделанных заказов. Как выглядит этот запрос на языке SQL?

Ответ:

SELECT "Заказано"."Номер заказа", "Заказано"."Код блюда", "Блюда"."Название" AS "Навзание блюда", "Блюда"."Цена", "Заказы"."Дата" FROM "Заказано", "Блюда", "Заказы" WHERE "Заказано"."Код блюда" = "Блюда"."Код" AND "Заказано"."Номер заказа" = "Заказы"."Номер"

2. Объясните, как на языке SQL учитываются связи между таблицами?

Ответ:

SQL проверяет каждую комбинацию строк таблиц и проверяет их на условие указанное в предложении WHERE. Если эта комбинация удовлетворяет ему, то она выводится.

3. Задайте псевдонимы (подписи) для столбцов запроса. Как псевдонимы изменили SQL-запрос?

Ответ:

Добавили команду AS

4. Постройте итоговый запрос ЗапросКОплате, который подсчитывает общую сумму оплату по каждому из сделанных заказов. Как выглядит этот запрос на языке SQL?

Ответ:

SELECT SUM( "Блюда"."Цена" ) AS "Общая цена заказа", "Заказы"."Номер", "Заказы"."Дата" FROM "Заказано", "Блюда", "Заказы" WHERE "Заказано"."Код блюда" = "Блюда"."Код" AND "Заказано"."Номер заказа" = "Заказы"."Номер" GROUP BY "Заказы"."Номер", "Заказы"."Дата"

5. Объясните, как выполняется на языке SQL суммирование цен отдельных блюд?

Ответ:

С помощью команды GROUP BY

6. Объясните, что означают ключевые слова GROUP BY на языке SQL?

Ответ:

GROUP BY используется для определения групп выходных строк, к которым могут применяться разные функции, например, SUM

 


21.
Создание формы с подчинённой

1. Используя материал §21 учебника, постройте форму, показанную на рис. 3.43.


22.
Создание отчёта с группировкой

1. Используя материал §21 учебника, постройте отчёт с группировкой, показанный на рис. 3.50.


23.
Нереляционные базы данных

В этой работе мы познакомимся с документо-ориентированной СУБД MongoDB (http://www.mongodb.org). Эта СУБД кроссплатформенная и относится к категории свободного программного обеспечения (Open Source). Для управления данными используется язык JavaScript.

Данные хранятся не в виде таблиц, а в виде коллекций документов. Документ – это объект, имеющий свойства, то есть пары «имя-значение». Главное свойство документа – это его идентификатор (код), который всегда играет роль первичного ключа.

В одной коллекции могут быть совершенно разные документы с разным набором свойств, это и отличает документо-ориентированную БД от реляционной.

Информация об объекте записывается в фигурных скобках, например:

{ name: "Вася", age: 16 }

Этот объект имеет два свойства (поля) – свойство name со значением «Вася» и свойство age со значением 16. Такой текстовый формат записи называется JSON (англ. JavaScript Object Notation =запись объектов с помощью JavaScript).

Свойства объекта могут быть списками значений (массивами), они перечисляются в квадратных скобках через запятую:

{ name: "Вася", age: 16, lang: ["C", "Pascal", "JavaScript"] }

Здесь свойство lang – массив, в котором записаны названия языков программирования.

Свойства могут сами быть объектами со своими свойствами, например:

{

name: "Вася",

family: { mother: "Вера", father: "Петя" }

}

Свойство family содержит два внутренних свойства (поля): mother и father.

Начало работы

1. Запустите программу mongo в консольном режиме. Определите рабочую базу данных, выполнив команду db (от англ. database = база данных)

db

Ответ:

 

2. Мы построим простую базу данных для блога в Интернете. Переключитесь на базу данных blog с помощью команды

Use blog

Если этой базы данных раньше не было, она будет создана. Проверьте, что она действительно стала активной.

3. Для добавления объекта в коллекцию используется оператор insert (вставить):

db.posts.insert ( документ )

Первая часть записи, «db», означает обращение к рабочей базе данных; вторая, «posts» - название коллекции (если такой коллекции нет, она будет создана), в скобках записываются свойства объекта-документа. В нашем примере в базе blog будет одна коллекция posts (сообщения, записи, «посты»). Для каждого поста нужно задать дату и текст. Добавьте одну запись следующим образом[3]:

db.posts.insert (

{date: new Date("04/23/2013"), text: "Привет!"} )

Дата (свойство date) строится с помощью функции Date; ей передается символьная запись даты в формате, принятом в США (месяц/день/год).

4. Проверьте, создана ли коллекция posts с помощью команды, которая показывает все коллекции текущей базы:

show collections

5. Проверьте, добавлена ли запись, с помощью команды

db.posts.find()

которая ищет и показывает все документы, входящие в коллекцию posts. Для вывода в красивом формате можно дополнительно вызвать функцию pretty (англ. приятный)

Db.posts.find().pretty()

В этом случае, если список свойств документа не помещается в одну строку, он выводится в столбик:

{

"_id": ObjectId("5176abbc06a6380da34966a2"),

"date": ISODate("2013-04-22T20:00:00Z"),

"text": "Привет!"

}

СУБД автоматически добавила поле «_id» (идентификатор, код), которое представляет собой суррогатный первичный ключ и строится случайным образом с помощью функции ObjectId. Дата преобразована в формат Международной организации по стандартизации (ISO).

6. Если нужно, значение ключа «_id» можно задать самостоятельно, какое мы хотим. Удалим все документы из коллекции командой remove:

db.posts.remove()

и добавим четыре новых поста в базу, указав явно идентификаторы[4]:

db.posts.insert ( {_id: 1, date: new Date("04/23/2013"), text: "Привет!" } )

db.posts.insert ( {_id: 2, date: new Date("04/24/2013"), text: "Это второй пост." } )

db.posts.insert ( {_id: 3, date: new Date("04/25/2013"), text: "Это третий пост." } )

db.posts.insert ( {_id: 4, date: new Date("04/26/2013"), text: "Это четвёртый пост." } )

Убедитесь, что документы действительно добавлены в коллекцию.

Поиск

7. Для поиска нужных документов используется уже знакомая нам функция find. В скобках можно задать критерий поиска – это объект (записанный в фигурных скобках), который содержит название поля и значение этого поля, которое мы ищем. Например, найдите документ с кодом (идентификатором, _id), равным 2:

db.posts.find( {_id: 2} )

8. В условиях можно использовать не только строгие равенства, как в предыдущее примере, но неравенства. Неравенство – это тоже объект, у которого специальное название свойства, начинающееся знаком $:

$ne – не равно,

$lt – меньше, $lte – меньше или равно,

$gt – больше, $gte – больше или равно

Например, найдем записи с идентификатором больше 2:

db.posts.find( {_id: {$gt: 2} } )

Сколько документов найдено?

Ответ:

 

9. Найдем посты, написанные 24.04.2013 или позднее:

db.posts.find({date: {$gte: new Date("04/24/2013")} })

10. Для поиска можно использовать сразу несколько условий. Если все условия нужно выполнить одновременно, их записывают как один объект с несколькими свойствами. Например, следующий запрос находит все документы, у которых свойство «_id» больше 2, а дата создания – не раньше 26.04.2013:

db.posts.find( { _id: {$gt: 2},

date: {$gtе: new Date("04/26/2013")} } )

11. Самое мощное средство поиска в MongoDB – это оператор $where, которому можно передать строку в кавычках, задающую условие поиска на JavaScript, например,

db.posts.find( { $where: "this._id > 2" } )

Здесь this – это объект (документ), который требуется проверить; через точку записывается название нужного поля. Оператору $where можно передать любую функцию на JavaScript, которая возвращает логическое значение (истинное, если условие отбора выполняется). Например, запрос, показанный в п. 10, можно было записать так:

db.posts.find( { $where: function()

{ return this._id > 2 &&

this.date >= new Date("04/26/2013")

}

} )

Пара символов && в языке JavaScript обозначает логическую операцию «И», а символы || – логическую операцию «ИЛИ». Проверка на равенство записывается как «==», а условие «не равно» – как «!=».

12. Составьте запрос для поиска всех документов, у которых свойство _id равно 1 или дата создания равна 26.04.2013:

Ответ:

 

Сортировка

13. Для сортировки используется функция sort. Она сортирует те документы, которые предварительно найдены с помощью find. При вызове функции sort в скобках указывается порядок сортировки – объект (в фигурных скобках), содержащий название поля для сортировки; значение этого поля может быть 1 (сортировка по возрастанию) или «-1» (по убыванию).

Отсортируйте документы по возрастанию даты

db.posts.find().sort( {date: 1} )

а теперь по убыванию:

db.posts.find().sort( {date: -1} )

Изменение

14. Для изменения документов используют команду update. Допустим, мы хотим добавить к документу с идентификатором 1 новое логическое свойство visible (англ. видимый) и присвоить ему значение false (ложь), которое означает, что это пост пока скрыт и выводить его на веб-страницу не нужно.

Функции update передаются два объекта в фигурных скобках: условие, позволяющее найти нужный документ, и свойства, которые у него нужно изменить. Попробуйте выполнить команду

db.posts.update( {_id: 1}, {visible: false} )

и посмотрите, что получилось в результате.

Ответ:

 

15. Восстановите исходный пост с кодом 1.

16. Для того, чтобы не заменять документ полностью, а изменить (или добавить) значение какого-то поля, нужно использовать специальный объект со свойством $set (установить):

db.posts.update( {_id: 1}, {$set: {visible: false}} )

Примените эту команду и проверьте результат её выполнения.

Обратите внимание, что сейчас в коллекции posts находятся документы с разной структурой: один из них имеет свойство visible, а остальные – нет. При этом никаких изменений в структуру базы данных вносить не пришлось.

17. Найдите все документы, у которых свойство visible равно false. Какой запрос нужно для этого выполнить?

Ответ:

 

18. Теперь выполним множественное обновление: установим свойство visible равным true (истина) для всех документов, для которых это свойство не установлено (или, что то же самое, равно специальному нулевому значению null):

db.posts.update( {visible: null},

{$set: {visible: true}}, {multi: true} )

Третий параметр – объект со свойством multi (англ. множественный), равным true (истина) разрешает изменение нескольких документов сразу (если его не указать, будет изменён только один документ – тот, который найден первым).

19.Составьте запрос для поиска всех документов, у которых свойство visible равно true, а дата создания – не позднее 25.04.2013:

Ответ:

 

Проверьте результат его работы.

20. Теперь добавим к комментарии к одному из постов (с идентификатором 2). Заметьте, что благодаря документо-ориентированной СУБД заранее планировать наличие комментариев не нужно – мы можем добавлять новые свойства к любому документу «на ходу».

Комментариев может быть много, поэтому новое свойство comments будет массивом. Для добавления нового элемента в массив используется специальный объект со свойство $push (англ. втолкнуть):

db.posts.update( {_id: 2},

{$push: {comments: "Комментарий 1"} })

db.posts.update( {_id: 2},

{$push: {comments: "Комментарий 2"} })

db.posts.update( {_id: 2},

{$push: {comments: "Комментарий 3"} })

Когда выполняется первая из этих команд, у документа с идентификатором 2 еще нет свойства comments – оно будет создано автоматически.

21. Все документы с комментариями можно найти с помощью объекта со свойством $exists (существует):

var c = db.posts.find( {comments: {$exists: true}} )

Результат этого запроса не выводится на экран, а записывается в переменную c. Затем можно определить его длину (число найденных документов) с помощью функции length (англ. длина) и вывести на экран в цикле в формате JSON с помощью функции printjson:

for(i = 0; i < c.length(); i++) printjson( c[i] )

Можно работать и с отдельными свойствами, например, вывести на экран даты всех найденных постов с помощью функции print:

for(i = 0; i < c.length(); i++) print( c[i].date )

Удаление

22. Как вы уже знаете, для удаления всех документов из коллекции используется команда remove. Запишите команду, которая удаляет все документы из коллекции posts, но не выполняйте её.

Ответ:

 

23. С помощью команды remove можно удалять отдельные записи – условие для поиска нужных записей задается как параметр функции. Например:

db.posts.remove( {_id: 4} )

Выполните эту команду и проверьте её выполнение.

24. Запишите команду для удаления всех документов, у которых свойство visible установлено в false выполните её.

Ответ:

 

25. С помощью команды drop вся коллекция удаляется из базы. Например,

db.posts.drop()

26. Объясните, в чём отличие между командами remove() и drop().

Ответ:

 

27. Проверьте, что коллекция posts действительно была удалена. Какую команду нужно для этого использовать?

Ответ:

 

Дополнительная информация:

1. http://www.mongodb.org – официальный сайт разработки MongoDB.

2. http://docs.mongodb.org/manual/installation/ – инструкция по установке MongoDB для разных операционных систем.

3. http://jsman.ru/mongo-book/ – русский перевод книги K. Seguin «The Little MongoDB Book».

 

Установка MongoDB

Windows

1. Скачайте архив с программой со страницы http://www.mongodb.org/downloads

2. Распакуйте архив в отдельный каталог в любом месте диска, например, в каталог C:\MongoDB. Внутри этого каталога должен появиться каталог bin, в котором находятся все файлы СУБД.

3. Создайте новый каталог, где будут храниться данные. Удобно создать это каталог прямо внутри каталога C:\MongoDB, например, C:\MongoDB\data.

4. Создайте в каталоге C:\MongoDB\bin командный файл start.bat с командой запуска серверной части, в параметре dbpath указывается путь к каталогу с базами данных:

C:\MongoDB\bin\mongod.exe --dbpath C:\МongoDB\data

5. Создайте (например, на рабочем столе) ярлык на файл C:\MongoDB\bin\start.bat для запуска серверной части.

6. Создайте (например, на рабочем столе) ярлык на файл C:\MongoDB\bin\mongo.exe для запуска консоли (оболочки).

7. Запустите серверную часть, затем запустите консоль.

Ubuntu

Установка пакета

1. В Терминале введите следующую команду для импорта публичного GPG-ключа (http://docs.mongodb.org/10gen-gpg-key.asc):

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

2. Создайте файл /etc/apt/sources.list.d/10gen.list и добавьте в него строку для обращения к репозиторию компании 10gen:

deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen

3. Перегрузите список репозиториев командой

sudo apt-get update

4. Установите последнюю версию пакета командой

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.