Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf ·...
Transcript of Решение задач - SQLitedom8a.ru/seminar/materials/31.03.2014/sqlite.pdf ·...
SQLite – это реляционная база данных, запросы к которой можно осуществлять при помощи языка запросов SQL. База данных не поддерживает все особенности SQL и уступает в функциональности другим развитым СУБД, но вполне подходит для хранения и извлечения информации.
Отличие SQLite от MySQL и аналогичных СУБД
Классические СУБД, такие как MySQL (а так же MS SQL, Oracle, PostgreeSQL) состоят из отдельного сервера, поддерживающего работу базы данных и прослушивающих определённый порт, на предмет обращения клиентов. Движок SQLite и интерфейс к ней реализованы в одной библиотеке, что увеличивает скорость выполнения запросов. Такой сервер часто называют встроенным.
SQLite является бестиповой базой данных. Точнее, есть только два типа – целочисленный "integer" и текстовый "text". Причём "integer" используется преимущественно для первичного ключа таблицы, а для остальных данных пойдёт "text". Длина строки, записываемой в текстовое поле, может быть любой.
Отличие SQLite от MySQL и аналогичных СУБД
Особенности SQLite
Все базы данных хранятся в файлах, по одному файлу на базу. Количество баз данных, а так же таблиц в них, ограниченно только свободным местом, имеющимся на сайте. А максимально возможный объём одной базы данных составляет 2 Тб.
Так как все данные хранятся в файлах, проблем с переносом базы данных с одного хостинга на другой не существует – достаточно лишь скопировать соответствующие файлы.
Работа с SQLite. Установка его в Eclipse
Создаем проект: File -> New -> Java Project
В форме заполняем Project name: sqlite и жмем кнопку Finish.
Создаем java-файл, в котором будет написан текст программы, для этого:
File -> New -> Class
В форме заполняем Name: sqlite, ставим галочку public static void main, снимаем галочку Inherited abstract methods и
жмем кнопку Finish.
Cоздаем в корне проекта папку lib и копируем туда файл драйвера sqlite (sqlitejdbc-v056.jar) , в Eclipse в панели Package Explorer (слева) кликаем
правой кнопкой мыши и выбираем Refresh.
После этого в Package Explorer появится папка lib и драйвер sqlitejdbc-v056.jar
Теперь библиотеку нужно подключить к проекту, кликаем правой кнопкой мыши на название проекта в Package
Explorer и выбираем Properties.
Выбираем пункт Java Build Path -> вкладка Libraries -> кнопка Add JARs…
Выделяем файл драйвера и кликаем на кнопке OK.
Подключение БД
Class.forName("org.sqlite.JDBC"); Connection bd = DriverManager.getConnection("jdbc:sqlite:sqlite.db3"); Statement st = bd.createStatement();
Запросы
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");
Вывод на консоль
while (rs.next()) { System.out.print (rs.getString(1)+" "); System.out.print (rs.getString(2)+" "); System.out.println(rs.getString(3)); }
Закрытие всего, что было открыто
bd.close(); st.close(); rs.close();
Вывод созданной таблицы
Запрос на имя Александр
Задания выполненные студентами
Сравнение времени создания 100000 записей с PostreSQL
Выполнили: Лукин И.Ю.
Хлебников В.А.
Канаев С.Д.
Корниенко П.А.
Удаление и обновление записей в таблице
Выполнили: Васина А.В.
Сидоров А.С.
Костин Д.В.
Иванов Т.П.
Удаление записей в таблице
Обновление записей в таблице
Использование Python с SQLite
Выполнили: Шарыпин Е.М.
Кажемский М.А.
Для работы с СУБД SQLite в ЯП Python используется модуль стандартной библиотеки sqlite3.
Подключение модуля: – import sqlite3
Порядок работы
• Создание подключения к БД: conn = sqlite3.connect('sqllite_sample.db')
• Создание курсора для работы с БД:
curs = conn.cursor()
• Создание таблицы: curs.execute('''CREATE TABLE stocks
(date text, trans text, symbol text, qty
real, price real)''')
Продолжение
• Добавление записи в созданную таблицу 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()
• Добавить много записей сразу: 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()
Преимущества sqlite
Выполнили: Пименов П.А.
Назаров Н.Л. Цухникиди П.Ю.
• Простота использования • Отсутствие необходимости настройки сервера СУБД • Возможность простого распространения со своим продуктом • Полностью свободная лицензия • Кроссплатформенность (как
минимум Linux, Free BSD, QNX, Windows) • Высокая скорость (на простых операциях в разы
быстрее My SQL и на порядок быстрее Postgre SQL) • Поддержка большого подмножества SQL92 • Поддержка транзакций, триггеров, представлений (views),
вложенных запросов • Безопасность. БД хранится в одном файле, права доступа
к которому можно контролировать стандартными средствами ОС
• Возможность использовать разные языки программирования: – 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 (файлы)
Использование prepared statement
Выполнили: Пименов С.А.
Денисов И.Л.
Пяткин С.Н.