Язык SQL: основные запросы
SQL — язык для работы с базами данных. Изучаем команды `SELECT`, `WHERE`, `ORDER BY`, `INSERT`, `UPDATE`, `DELETE` и их использование в Python через `sqlite3`.
Список тем (9 из 11)
Глава 1. Алгоритмы
Глава 2. Структуры данных
Глава 3. Базы данных
Глава 4. Современные технологии и проекты
SQL (Structured Query Language) — стандартный язык для работы с реляционными базами данных. В SQL пишут не «как», а «что» нужно: вы описываете, каким должен быть результат, а поиск выполняет сама СУБД. Ниже приведены примеры для таблицы «students» (поля id, name, grade, score).
Для чтения данных применяют SELECT: SELECT name, score FROM students возвращает имя и балл всех учеников, а SELECT * FROM students — все поля. Условие задаётся с помощью WHERE: SELECT name FROM students WHERE grade = 11 AND score >= 80. Для сортировки результата пишут ORDER BY score DESC (по убыванию). Есть и агрегатные функции: COUNT(*) — число записей, AVG(score) — среднее, MAX(score) — наибольшее значение.
Команды, изменяющие данные: INSERT INTO students (name, grade, score) VALUES (“Ali”, 11, 90) добавляет новую запись; UPDATE students SET score = 95 WHERE name = “Ali” обновляет существующую; DELETE FROM students WHERE id = 3 удаляет запись. Забыть WHERE в UPDATE и DELETE опасно: команда затронет все записи таблицы. Поэтому такие команды лучше сначала проверить с помощью SELECT.
В Python с базой SQLite работают через стандартный модуль sqlite3: con = sqlite3.connect("school.db"), затем cur = con.execute("SELECT name FROM students") и for row in cur: print(row[0]). После команд, изменяющих данные, вызывают con.commit(), чтобы сохранить изменения. Не подставляйте значения пользователя в запрос обычной строкой: используйте знак ?, как в con.execute("SELECT * FROM students WHERE name = ?", (name,)) — это защищает от SQL-инъекций.
Главное
- В SQL описывают, каким должен быть результат, а поиск выполняет СУБД.
SELECT … FROM … WHERE … ORDER BY …служит для выбора, сортировки и фильтрации данных.- Функции
COUNT,AVG,MAXдают сводный результат. INSERT,UPDATE,DELETEдобавляют, обновляют и удаляют данные; не забывайтеWHERE.- В Python работают через модуль
sqlite3, значения передают через знак?.
Практические задания
- Напишите SQL-запрос к таблице «students»: он должен вывести имена учеников 10 класса с баллом выше 70 в порядке убывания балла.
- С помощью
sqlite3создайте в Python базу в памяти (sqlite3.connect(“:memory:”)), создайте таблицу «students», добавьте 3 учеников и вычислите средний балл с помощьюAVG(score). - Сравните две команды:
UPDATE students SET score = 0иUPDATE students SET score = 0 WHERE id = 1. Объясните, чем опасна первая, и как можно проверить её перед выполнением.
Вопросы для закрепления
Проверьте себя: сначала подумайте, потом откройте ответ.
1Для чего нужна часть `WHERE`?Показать ответСкрыть ответ
Она задаёт условие: команда применяется только к записям, которые ему соответствуют.2Почему значения пользователя нужно передавать в запрос через знак `?`?Показать ответСкрыть ответ
Так значение не будет воспринято как часть текста запроса, что защищает от SQL-инъекций.
Войдите на сайт
Слайды и PDF доступны только зарегистрированным пользователям: и просмотр, и скачивание. Вход бесплатный.
Войдите на сайт
Слайды и PDF доступны только зарегистрированным пользователям: и просмотр, и скачивание. Вход бесплатный.
Пройдено тем: 0 из 11
Войти и отметить