1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-lmpythw-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
ex38.md 17 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.03.2025 03:52 f9ec0dd

Упражнение 38: Введение в SQL

Оригинал: Exercise 38: Introduction To SQL

Переводчик: Феликс Ли

Лицензия: CC BY-NC-SA 4.0

Гордо использует Google Translate

Лучшим способом освоить моделирование и проектирование данных является начало с самых базовых конструкторских принципов. Десятилетиями стандартом является стиль SQL ("Structured Query Language") для моделирования и хранения данных. Как только вы узнаете основы SQL, вам будет легко использовать любую систему NoSQL или объектно-реляционной карты (ORM). SQL представляет собой очень формализованное представление хранения, манипулирования и доступа к данным, предоставляющее вам формализованное представление этих процессов. Это также не слишком сложно, так как этот язык не является полноценным программным языком Turing-complete.

SQL повсюду, и я говорю это не потому что хочу, чтобы вы использовали его. Это просто факт. Я бы поспорил, что у вас есть SQL прямо сейчас в вашем кармане. Все смартфоны Android и iPhone могут легко получить доступ к SQL-базе данных SQLite, и многие приложения на ваших телефонах используют её напрямую. Она поддерживает банки, больницы, университеты, правительства, малый бизнес и крупные корпорации; каждый компьютер этого мира и каждый человек рано или поздно столкнутся с чем-то, работающим на SQL. SQL — это очень успешная и надёжная технология.Проблема с SQL заключается в том, что все они кажутся ненавидеть его самое главное свойство. Большинство программистов не могут выносить эту странную, громоздкую "неязыковую" конструкцию. Он был спроектирован еще до современных проблем, таких как "сетевой масштаб" или объектно-ориентированное программирование. Хотя он основан на теории операций, которая строится на прочной математической основе, у него достаточно ошибок, чтобы вызвать раздражение. Деревья? Вложенные объекты и родительско-детские отношения? SQL просто играет с вами, дает вам большую плоскую таблицу и говорит: "Вы разберетесь".Если все так сильно ненавидят SQL, почему учиться ему? Потому что за этим предположением ненависти скрывается недопонимание SQL и того, как им пользоваться. Часть движения NoSQL — это реакция против устаревших серверов баз данных, а также страх перед SQL, который возникает из-за отсутствия понимания того, как он работает. Изучив SQL, вы действительно изучите некоторые важные теоретические концепции, применимые ко всем практически всем системам хранения данных в прошлом и настоящем. Независимо от того, что утверждают ненавистники SQL, вы должны изучить SQL, так как он присутствует везде и на самом деле не является достаточно сложным для изучения. Быть опытным пользователем SQL поможет вам принимать осмысленные решения относительно баз данных, которые вы используете, будь то с использованием SQL или нет, а также позволит вам как программисту глубже понять многие системы, которыми вы пользуетесь.## Что такое SQL?

Я читаю SQL как "Сикваль", но если хотите, можете читать его как "S-Q-L". SQL также расшифровывается как язык структурированных запросов, однако это уже никого не волнует, поскольку это просто маркетинговый трюк. То, что делает SQL, это предоставляет вам язык для взаимодействия с данными в базах данных. Однако его преимущество заключается в том, что он соответствует теории, которая была создана много лет назад, определяющей свойства хорошо структурированных данных. Это не совсем то же самое (некоторые критики сетуют на это), но это достаточно полезно.

Примечание переводчика: не обращайте внимания на тех, кто просит вас произносить "S-Q-L"; даже если это стандарт, вы можете использовать "Сикваль" как псевдоним.

Принцип работы SQL заключается в том, что он знает поля таблиц и способен находить данные в таблице на основе содержимого этих полей. Все операции SQL являются одним из четырёх обычных действий, выполняемых над таблицами:

Название Краткое название Первые буквы Описание
Создание Вставка C Добавление данных в таблицу
Чтение Выборка R Поиск данных в таблице
Обновление Изменение U Изменение существующих данных в таблице
Удаление Удаление D Удаление данных из таблицы

Мне нравится объяснять принцип работы SQL путём сравнения его с электронными таблицами, такими как Excel:

  • База данных — это весь файл электронной таблицы.
  • Таблица — это лист/таблица внутри файла электронной таблицы, каждая имеет своё имя.
  • Колонка — это колонка.
  • Строка — это строка.
  • Затем SQL предоставляет вам язык для выполнения CRUD-операций над этими таблицами, чтобы создавать новые таблицы или изменять существующие.

Последнее замечание важно, так как недопонимание этого может вызвать проблемы. SQL знает только о таблицах, каждый шаг создаёт таблицу. Он создаёт новую таблицу, модифицируя существующую, либо возвращает новый временный объект как набор данных. При чтении данной книги вы начнёте понимать значение этого дизайна. Например, одной из причин того, что объектно-ориентированные языки не совместимы с базами данных SQL, заключается в том, что языки ООП организуют данные как графы, а SQL хочет получить таблицы. Хотя почти любой граф можно представить в виде таблицы и обратно, это увеличивает бремя перевода для языков ООП. Если бы SQL возвращал вложенные структуры данных, то это не было бы проблемой.

Начальный этапДля выполнения упражнений данной части мы будем использовать SQLite3. SQLite3 — это полноценная система управления базами данных, которая имеет преимущество минимальной настройки. Вам просто нужно скачать двоичный файл, и вы сможете использовать её так же, как большинство других скриптовых языков. Это позволит вам учиться SQL, не застряв в управлении сервером баз данных.

Установка SQLite3 проста:

  • Посетите страницу скачивания SQLite3 и получите двоичный файл для вашей платформы. Ищите "Precompiled Binaries for X", где X — ваша операционная система.
  • Или установите её через менеджер пакетов вашей операционной системы. Если вы используете Linux, вы знаете, что это значит. Если вы используете macOS, сначала получите менеджер пакетов, затем используйте его для установки SQLite3.

После завершения установки убедитесь, что вы можете запустить командную строку и работать с ней. Вот быстрый тест, который вы можете попробовать:

$ sqlite3 test.db
SQLite version 3.7.8 2011-09-19 14:49:19
Введите ".help" для получения справки
Введите SQL-запросы, завершая их точкой с запятой
sqlite> create table test (id);
sqlite> .quit

Затем проверьте наличие файла test.db. Если всё работает правильно, вы закончили. Убедитесь, что версия SQLite3, которую вы используете, совпадает с указанной здесь: 3.7.8. Иногда старые версии могут не работать должным образом.## Изучение лексики SQL

Чтобы начать изучение SQL, вам потребуется создать карточки для запоминания этих SQL-терминов (или использовать Anki). В последующих упражнениях вы будете изучать эти SQL-запросы и применять их к различным задачам. Лучший способ рассмотреть язык SQL — это видеть все как операции CREATE, READ, UPDATE и DELETE. Даже если слово является INSERT, вы всё равно рассматриваете его как операцию CREATE, поскольку она создаёт данные. Сначала потратите некоторое время на запоминание этих слов, продолжайте изучение, как в этом разделе.

CREATE

Создаёт таблицы базы данных, содержащие столбцы для хранения данных.

INSERT

Вставляет строки в таблицу базы данных и заполняет данные в столбцах.

UPDATE

Изменяет одну или несколько колонок в таблице.

DELETE

Удаляет строку из таблицы.

SELECT

Выполняет запрос одной или нескольких таблиц и возвращает временные таблицы с результатами.

DROP

Уничт Yöntemlerden biri olarak, bu metin hala tamamen Türkçe değil ve bazı kelimeler hala İngilizce olarak bırakılmış. İşte tamamlayıcı çeviri:

CREATE

Создаёт таблицы базы данных, содержащие столбцы для хранения данных.

INSERT

Вставляет строки в таблицу базы данных и заполняет данные в столбцах.

UPDATE

Изменяет одну или несколько колонок в таблице.

DELETE

Удаляет строку из таблицы.

SELECT

Выполняет запрос одной или нескольких таблиц и возвращает временные таблицы с результатами.

DROP

Уничтожает таблицу.

FROM

Общая часть SQL-запроса, используемая для указания тех колонок таблиц, которые будут использоваться.

IN

Используется для представления множества элементов.

WHERE

Используется в запросах для указания того, откуда должны быть взяты данные.

SET

Используется при обновлении для указания, какую колонку следует изменить.## Синтаксис SQL

Далее вы создадите карточки для другой группы важных конструкций синтаксиса SQL. Они не слишком многочисленны, но запишите их (или используйте Anki), чтобы начать изучение этих конструкций и быстрее освоить язык. Вы будете изучать этот синтаксис для SQLite3, который мы будем использовать в этой книге. Это довольно универсальный синтаксис SQL, но каждый базовый движок имеет свои странные особенности, которые вам придётся учить. Как только вы его поймёте, легко понять использование другого базового движка.

Вы будете нуждаться в доступе к странице определений SQLite 3 для создания необходимых карточек. Эта страница содержит всё, что понимает SQLite, но сосредоточьтесь только на основных заявках выше. Добавьте любые слова, которые вы не понимаете. Их диаграммы немного сложны, но они просто графическое представление BNF SQL, которое вы узнали в пятой части. Если вы забыли BNF, вернитесь к пятой части и повторите обучение.

Глубокое изучение

  • Посетите список синтаксиса SQLite3 и просмотрите все доступные команды. Большинство из них не имеют смысла, но если вас интересует что-либо конкретное, вы также можете сделать карточки для этого.
  • Исследуйте эти карточки во время выполнения всех остальных упражнений.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-lmpythw-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-lmpythw-zh.git
oschina-mirror
wizardforcel-lmpythw-zh
wizardforcel-lmpythw-zh
master