Решение задач - sqlitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf ·...
TRANSCRIPT
![Page 1: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/1.jpg)
![Page 2: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/2.jpg)
SQLite – это реляционная база данных, запросы к которой можно осуществлять при помощи языка запросов SQL. База данных не поддерживает все особенности SQL и уступает в функциональности другим развитым СУБД, но вполне подходит для хранения и извлечения информации.
![Page 3: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/3.jpg)
Отличие SQLite от MySQL и аналогичных СУБД
Классические СУБД, такие как MySQL (а так же MS SQL, Oracle, PostgreeSQL) состоят из отдельного сервера, поддерживающего работу базы данных и прослушивающих определённый порт, на предмет обращения клиентов. Движок SQLite и интерфейс к ней реализованы в одной библиотеке, что увеличивает скорость выполнения запросов. Такой сервер часто называют встроенным.
![Page 4: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/4.jpg)
SQLite является бестиповой базой данных. Точнее, есть только два типа – целочисленный "integer" и текстовый "text". Причём "integer" используется преимущественно для первичного ключа таблицы, а для остальных данных пойдёт "text". Длина строки, записываемой в текстовое поле, может быть любой.
Отличие SQLite от MySQL и аналогичных СУБД
![Page 5: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/5.jpg)
Особенности SQLite
Все базы данных хранятся в файлах, по одному файлу на базу. Количество баз данных, а так же таблиц в них, ограниченно только свободным местом, имеющимся на сайте. А максимально возможный объём одной базы данных составляет 2 Тб.
Так как все данные хранятся в файлах, проблем с переносом базы данных с одного хостинга на другой не существует – достаточно лишь скопировать соответствующие файлы.
![Page 6: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/6.jpg)
Работа с SQLite. Установка его в Eclipse
Создаем проект: File -> New -> Java Project
![Page 7: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/7.jpg)
В форме заполняем Project name: sqlite и жмем кнопку Finish.
![Page 8: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/8.jpg)
Создаем java-файл, в котором будет написан текст программы, для этого:
File -> New -> Class
![Page 9: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/9.jpg)
В форме заполняем 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 и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/10.jpg)
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 и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/11.jpg)
После этого в Package Explorer появится папка lib и драйвер sqlitejdbc-v056.jar
![Page 12: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/12.jpg)
Теперь библиотеку нужно подключить к проекту, кликаем правой кнопкой мыши на название проекта в Package
Explorer и выбираем Properties.
![Page 13: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/13.jpg)
Выбираем пункт Java Build Path -> вкладка Libraries -> кнопка Add JARs…
![Page 14: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/14.jpg)
Выделяем файл драйвера и кликаем на кнопке OK.
![Page 15: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/15.jpg)
Подключение БД
Class.forName("org.sqlite.JDBC"); Connection bd = DriverManager.getConnection("jdbc:sqlite:sqlite.db3"); Statement st = bd.createStatement();
![Page 16: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/16.jpg)
Запросы
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 и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/17.jpg)
Вывод на консоль
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 и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/18.jpg)
Закрытие всего, что было открыто
bd.close(); st.close(); rs.close();
![Page 19: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/19.jpg)
Вывод созданной таблицы
![Page 20: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/20.jpg)
Запрос на имя Александр
![Page 21: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/21.jpg)
Задания выполненные студентами
![Page 22: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/22.jpg)
Сравнение времени создания 100000 записей с PostreSQL
Выполнили: Лукин И.Ю.
Хлебников В.А.
Канаев С.Д.
Корниенко П.А.
![Page 23: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/23.jpg)
![Page 24: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/24.jpg)
![Page 25: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/25.jpg)
Удаление и обновление записей в таблице
Выполнили: Васина А.В.
Сидоров А.С.
Костин Д.В.
Иванов Т.П.
![Page 26: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/26.jpg)
Удаление записей в таблице
![Page 27: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/27.jpg)
Обновление записей в таблице
![Page 28: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/28.jpg)
Использование Python с SQLite
Выполнили: Шарыпин Е.М.
Кажемский М.А.
![Page 29: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/29.jpg)
Для работы с СУБД SQLite в ЯП Python используется модуль стандартной библиотеки sqlite3.
Подключение модуля: – import sqlite3
![Page 30: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/30.jpg)
Порядок работы
• Создание подключения к БД: 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 и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/31.jpg)
Продолжение
• Добавление записи в созданную таблицу 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 и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/32.jpg)
• Добавить много записей сразу: 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 и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/33.jpg)
Преимущества sqlite
Выполнили: Пименов П.А.
Назаров Н.Л. Цухникиди П.Ю.
![Page 34: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/34.jpg)
• Простота использования • Отсутствие необходимости настройки сервера СУБД • Возможность простого распространения со своим продуктом • Полностью свободная лицензия • Кроссплатформенность (как
минимум 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 и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/35.jpg)
• Возможность использовать разные языки программирования: – 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 и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/36.jpg)
Использование prepared statement
Выполнили: Пименов С.А.
Денисов И.Л.
Пяткин С.Н.
![Page 37: Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf · 2014-06-28 · Отличие SQLite от MySQL и аналогичных СУБД Классические](https://reader033.vdocuments.pub/reader033/viewer/2022042010/5e720013d4936c6f0c1e2c60/html5/thumbnails/37.jpg)