Решение задач - sqlitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf ·...

37

Upload: others

Post on 15-Mar-2020

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические
Page 2: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

SQLite – это реляционная база данных, запросы к которой можно осуществлять при помощи языка запросов SQL. База данных не поддерживает все особенности SQL и уступает в функциональности другим развитым СУБД, но вполне подходит для хранения и извлечения информации.

Page 3: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Отличие SQLite от MySQL и аналогичных СУБД

Классические СУБД, такие как MySQL (а так же MS SQL, Oracle, PostgreeSQL) состоят из отдельного сервера, поддерживающего работу базы данных и прослушивающих определённый порт, на предмет обращения клиентов. Движок SQLite и интерфейс к ней реализованы в одной библиотеке, что увеличивает скорость выполнения запросов. Такой сервер часто называют встроенным.

Page 4: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

SQLite является бестиповой базой данных. Точнее, есть только два типа – целочисленный "integer" и текстовый "text". Причём "integer" используется преимущественно для первичного ключа таблицы, а для остальных данных пойдёт "text". Длина строки, записываемой в текстовое поле, может быть любой.

Отличие SQLite от MySQL и аналогичных СУБД

Page 5: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Особенности SQLite

Все базы данных хранятся в файлах, по одному файлу на базу. Количество баз данных, а так же таблиц в них, ограниченно только свободным местом, имеющимся на сайте. А максимально возможный объём одной базы данных составляет 2 Тб.

Так как все данные хранятся в файлах, проблем с переносом базы данных с одного хостинга на другой не существует – достаточно лишь скопировать соответствующие файлы.

Page 6: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Работа с SQLite. Установка его в Eclipse

Создаем проект: File -> New -> Java Project

Page 7: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

В форме заполняем Project name: sqlite и жмем кнопку Finish.

Page 8: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Создаем java-файл, в котором будет написан текст программы, для этого:

File -> New -> Class

Page 9: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

В форме заполняем Name: sqlite, ставим галочку public static void main, снимаем галочку Inherited abstract methods и

жмем кнопку Finish.

Page 10: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Cоздаем в корне проекта папку lib и копируем туда файл драйвера sqlite (sqlitejdbc-v056.jar) , в Eclipse в панели Package Explorer (слева) кликаем

правой кнопкой мыши и выбираем Refresh.

Page 11: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

После этого в Package Explorer появится папка lib и драйвер sqlitejdbc-v056.jar

Page 12: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Теперь библиотеку нужно подключить к проекту, кликаем правой кнопкой мыши на название проекта в Package

Explorer и выбираем Properties.

Page 13: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Выбираем пункт Java Build Path -> вкладка Libraries -> кнопка Add JARs…

Page 14: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Выделяем файл драйвера и кликаем на кнопке OK.

Page 16: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Запросы

st.execute("create table if not exists 'TABLE1' ('name1' int, 'name2' text, 'name3' text);"); st.execute("insert into 'TABLE1' ('name1', 'name2', 'name3') values (1, 'name1', 'name2'); "); st.execute("insert into 'TABLE1' ('name1', 'name2', 'name3') values (2, 'name3', 'name4'); "); st.execute("insert into 'TABLE1' ('name1', 'name2', 'name3') values (3, 'name5', 'name6');"); ResultSet rs = st.executeQuery("select * from TABLE1");

Page 17: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Вывод на консоль

while (rs.next()) { System.out.print (rs.getString(1)+" "); System.out.print (rs.getString(2)+" "); System.out.println(rs.getString(3)); }

Page 18: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Закрытие всего, что было открыто

bd.close(); st.close(); rs.close();

Page 19: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Вывод созданной таблицы

Page 20: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Запрос на имя Александр

Page 21: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Задания выполненные студентами

Page 22: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Сравнение времени создания 100000 записей с PostreSQL

Выполнили: Лукин И.Ю.

Хлебников В.А.

Канаев С.Д.

Корниенко П.А.

Page 23: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические
Page 24: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические
Page 25: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Удаление и обновление записей в таблице

Выполнили: Васина А.В.

Сидоров А.С.

Костин Д.В.

Иванов Т.П.

Page 26: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Удаление записей в таблице

Page 27: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Обновление записей в таблице

Page 28: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Использование Python с SQLite

Выполнили: Шарыпин Е.М.

Кажемский М.А.

Page 29: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Для работы с СУБД SQLite в ЯП Python используется модуль стандартной библиотеки sqlite3.

Подключение модуля: – import sqlite3

Page 30: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Порядок работы

• Создание подключения к БД: conn = sqlite3.connect('sqllite_sample.db')

• Создание курсора для работы с БД:

curs = conn.cursor()

• Создание таблицы: curs.execute('''CREATE TABLE stocks

(date text, trans text, symbol text, qty

real, price real)''')

Page 31: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Продолжение

• Добавление записи в созданную таблицу curs.execute("INSERT INTO stocks VALUES ('2006-01-

05','BUY','RHAT',100,35.14)")

• Получить первый результат, соответствующий запросу

t = ('RHAT',)

curs.execute('SELECT * FROM stocks WHERE symbol=?', t)

print curs.fetchone()

Page 32: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

• Добавить много записей сразу: purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),

('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),

('2006-04-06', 'SELL', 'IBM', 500, 53.00),

]

curs.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)

• Сохранить изменения в БД: conn.commit()

• Напечатать всю таблицу с помощью итератора: for row in curs.execute('SELECT * FROM stocks ORDER BY

price'):

print row

• Закрыть соединение conn.close()

Page 33: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Преимущества sqlite

Выполнили: Пименов П.А.

Назаров Н.Л. Цухникиди П.Ю.

Page 34: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

• Простота использования • Отсутствие необходимости настройки сервера СУБД • Возможность простого распространения со своим продуктом • Полностью свободная лицензия • Кроссплатформенность (как

минимум Linux, Free BSD, QNX, Windows) • Высокая скорость (на простых операциях в разы

быстрее My SQL и на порядок быстрее Postgre SQL) • Поддержка большого подмножества SQL92 • Поддержка транзакций, триггеров, представлений (views),

вложенных запросов • Безопасность. БД хранится в одном файле, права доступа

к которому можно контролировать стандартными средствами ОС

Page 35: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

• Возможность использовать разные языки программирования: – tcl/tk— модуль в пакете – PHP 4, 5 – C — модуль в пакете – C++ – OCaml – Perl — модуль на CPAN: DBI&DBD и другие – Delphi – Ruby – Python – C# – Java – Parser 3 – и все прочие — запуском бинарника sqlite в shell/cmd конкретной ОС

• Очень экономичная, в плане ресурсов, архитектура. Вместо стандартной цепочки:

приложение – клиент (stat или shared lib) – транспорт (tcp или unix socket) – listener – DB engine – Backend (файлы) у SQLite: приложение – клиент (stat или shared lib) – Backend (файлы)

Page 36: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические

Использование prepared statement

Выполнили: Пименов С.А.

Денисов И.Л.

Пяткин С.Н.

Page 37: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические