мета-данные страницы
  •  

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
zadanie_3._znakomstvo_s_sql [2024/03/15 15:08] wikiadminzadanie_3._znakomstvo_s_sql [2024/04/14 04:42] (текущий) – [Задание №3] wikiadmin
Строка 1: Строка 1:
-====Задание №3====+======Задание №3. Знакомство с SQL======
 ====Шаг 1. SQL==== ====Шаг 1. SQL====
 Основные варианты СУБД (систем управления баз данных): Основные варианты СУБД (систем управления баз данных):
Строка 10: Строка 10:
 Для небольших баз данных SQLite – идеальный вариант. Для небольших баз данных SQLite – идеальный вариант.
  
-==Шаг 2. Установка SQLite==+====Шаг 2. Установка SQLite====
 Для начала необходимо установить пакет sqlite3. Для начала необходимо установить пакет sqlite3.
 Перед установкой новых пакетов рекомендуется обновить имеющиеся пакеты. Для этого выполняем команду: Перед установкой новых пакетов рекомендуется обновить имеющиеся пакеты. Для этого выполняем команду:
Строка 28: Строка 28:
 bsk23-01-student-1@BSK23-01-1:~$ bsk23-01-student-1@BSK23-01-1:~$
 </code> </code>
 +
 +После обновления пакетов устанавливаем sqlite3:
  
 <code Bash>sudo apt install sqlite3</code> <code Bash>sudo apt install sqlite3</code>
Строка 61: Строка 63:
   sqlite3/stable,now 3.40.1-2 amd64 [installed]   sqlite3/stable,now 3.40.1-2 amd64 [installed]
  
-==Шаг 3. Справка по sqlite3==+====Шаг 3. Справка по sqlite3====
 Команда **man** отображает справку по использованию пакетов. Команда **man** отображает справку по использованию пакетов.
  
Строка 67: Строка 69:
  
   man sqlite3   man sqlite3
 +
 +В справке видим следующее:
 +
 <code> <code>
 SYNOPSIS SYNOPSIS
Строка 72: Строка 77:
 </code> </code>
  
-Пункты в квадратных скобках говорят о том, что при запуске SQLite мы можем (но не обязаны) указать опции, имя базы данных и запрос SQL+Пункты в квадратных скобках говорят о том, что при запуске SQLite мы можем (но не обязаны) указать опции [options], имя базы данных [databasefile] и запрос SQL [SQL]
  
   If the database file does not exist, it will be created.  If the database file does exist, it will be opened.   If the database file does not exist, it will be created.  If the database file does exist, it will be opened.
Строка 78: Строка 83:
 Если при запуске sqlite укажем имя несуществующей базы данных, то она будет создана. Так и сделаем. Если при запуске sqlite укажем имя несуществующей базы данных, то она будет создана. Так и сделаем.
  
-==Шаг 4. Создание базы данных== +====Шаг 4. Создание базы данных==== 
-Смотрим в какой директории мы сейчас находимся:+Смотрим в каком каталоге мы сейчас находимся:
   pwd   pwd
-Переходим в нужную директорию с помощью команды cd.+Переходим в каталог python с помощью команды cd.
 Запускаем SQLite с именем базы данных (пусть будет «pythondb»): Запускаем SQLite с именем базы данных (пусть будет «pythondb»):
   sqlite3 pythondb   sqlite3 pythondb
Строка 96: Строка 101:
   sqlite> .databases   sqlite> .databases
   main: /home/bsk23-01-student-1/python/pythondb r/w   main: /home/bsk23-01-student-1/python/pythondb r/w
 +  
 +Подключена база /home/bsk23-01-student-1/python/pythondb с правами на чтение и запись (r/w)
  
-==Шаг 5. Создание таблицы CREATE TABLE==+====Шаг 5. Создание таблицыCREATE TABLE====
 Команды в SQL называют запросами. Создадим новую таблицу в нашей базе данных, написав запрос на языке SQL. Таблица будет называться «users». Поля таблицы: Команды в SQL называют запросами. Создадим новую таблицу в нашей базе данных, написав запрос на языке SQL. Таблица будет называться «users». Поля таблицы:
  
Строка 108: Строка 115:
   sqlite> CREATE TABLE users(name String, age Int, mac String);   sqlite> CREATE TABLE users(name String, age Int, mac String);
  
-<bootnote important>Обратите внимание, что в конце запроса должны быть кавычки</bootnote>+<bootnote important>Обратите внимание, что в конце запроса должна быть точка с запятой ;</bootnote>
  
 Посмотрим, какие теперь есть таблицы в нашей базе данных: Посмотрим, какие теперь есть таблицы в нашей базе данных:
Строка 114: Строка 121:
   users   users
  
-==Шаг 6. Заполнение данных таблицы INSERT==+====Шаг 6. Заполнение данных таблицыINSERT====
 Добавим в созданную таблицу данные. Для этого используем SQL запрос «INSERT».  Добавим в созданную таблицу данные. Для этого используем SQL запрос «INSERT». 
  
Строка 125: Строка 132:
   sqlite> INSERT INTO users(name, age, mac) VALUES ('Ivan',25, ‘mac1’), ('Dasha',23,’mac2’), ('Juliya',21,’mac3’);   sqlite> INSERT INTO users(name, age, mac) VALUES ('Ivan',25, ‘mac1’), ('Dasha',23,’mac2’), ('Juliya',21,’mac3’);
  
-==Шаг 7. Отображение данных таблицы SELECT==+====Шаг 7. Отображение данных таблицыSELECT====
 Отобразим данные из таблицы users. Это делается SQL запросом «SELECT». После «SELECT» указывается список столбцов, которые нам нужно отобразить. Если написать «*» то отобразятся все столбцы таблицы. После «FROM» пишем название таблицы, из которой нужно отобразить данные: Отобразим данные из таблицы users. Это делается SQL запросом «SELECT». После «SELECT» указывается список столбцов, которые нам нужно отобразить. Если написать «*» то отобразятся все столбцы таблицы. После «FROM» пишем название таблицы, из которой нужно отобразить данные:
  
Строка 171: Строка 178:
 </code> </code>
  
-==Шаг 8. Условия выборки WHERE==+====Шаг 8. Условия выборкиWHERE====
 Выберем не все данные, а только данные соответствующие нужным критериям. Для этого в запрос «SELECT» добавим условия «WHERE»: Выберем не все данные, а только данные соответствующие нужным критериям. Для этого в запрос «SELECT» добавим условия «WHERE»:
  
Строка 191: Строка 198:
 </code> </code>
  
-==Шаг 9. Создание и заполнение второй таблицы==+====Шаг 9. Создание и заполнение второй таблицы====
 Создадим вторую таблицу. Это будет таблица MAC-адресов активных регистраций устройств WiFi-роутера с уровнями сигналов: Создадим вторую таблицу. Это будет таблица MAC-адресов активных регистраций устройств WiFi-роутера с уровнями сигналов:
   sqlite> CREATE TABLE registrations (mac String, signal String);   sqlite> CREATE TABLE registrations (mac String, signal String);
Строка 217: Строка 224:
 </code> </code>
  
-==Шаг 10. Связь двух таблиц==+====Шаг 10. Связь двух таблиц====
 Теперь наша задача – связать 2 таблицы: найти соответствия MAC-адресов в таблице «users» MAC-адресам в таблице «registrations». Для этого в разделе FROM запроса SELECT указываем обе таблицы через запятую «FROM users, registrations», а в разделе FROM указываем условие равенства полей mac в обеих таблицах «WHERE users.mac = registrations.mac». Т.к. таблиц в запросе теперь несколько названия столбцов нужно указывать вместе с названием таблицы («users.mac», «registrations.mac»): Теперь наша задача – связать 2 таблицы: найти соответствия MAC-адресов в таблице «users» MAC-адресам в таблице «registrations». Для этого в разделе FROM запроса SELECT указываем обе таблицы через запятую «FROM users, registrations», а в разделе FROM указываем условие равенства полей mac в обеих таблицах «WHERE users.mac = registrations.mac». Т.к. таблиц в запросе теперь несколько названия столбцов нужно указывать вместе с названием таблицы («users.mac», «registrations.mac»):
  
Строка 247: Строка 254:
 Теперь нам нужно научиться выполнять SQL запросы к базе данных SQLite из Python. Теперь нам нужно научиться выполнять SQL запросы к базе данных SQLite из Python.
  
-==Шаг 11. SQL из Python==+====Шаг 11. SQL из Python====
 В Python есть готовые библиотеки почти на все случаи жизни. Есть библиотека для работы с **sqlite3**. Эта библиотека содержит функции для подключения к базе данных SQLite, для выполнения SQL запросов к базе данных, получения данных и т.п. В Python есть готовые библиотеки почти на все случаи жизни. Есть библиотека для работы с **sqlite3**. Эта библиотека содержит функции для подключения к базе данных SQLite, для выполнения SQL запросов к базе данных, получения данных и т.п.
  
Строка 264: Строка 271:
 con.close() #закрытие соединения к базе данных con.close() #закрытие соединения к базе данных
 </code> </code>
 +
 +<bootnote>В функции connect проверьте путь к вашему файлу базы данных! Если путь указан не верно, то Python скажет, что не нашел таблицу users</bootnote>
  
 Результат выполнения скрипта – массив данных (таблица): Результат выполнения скрипта – массив данных (таблица):
   [('Ivan', 25, 'mac1'), ('Dasha', 23, 'mac2'), ('Juliya', 21, 'mac3')]   [('Ivan', 25, 'mac1'), ('Dasha', 23, 'mac2'), ('Juliya', 21, 'mac3')]
  
-==Шаг 12. Выборочное чтение данных==+====Шаг 12. Выборочное чтение данных====
 Для чтения одной строки массива (таблицы) нужно после названия массива «users» написать номер строки в квадратных скобках. Например «users[0]»: Для чтения одной строки массива (таблицы) нужно после названия массива «users» написать номер строки в квадратных скобках. Например «users[0]»:
  
Строка 289: Строка 298:
 Dasha Dasha
  
-==Шаг 13. Чтение данных в цикле==+====Шаг 13. Чтение данных в цикле====
 Построчное чтение данных в цикле: Построчное чтение данных в цикле:
 <code python> <code python>