Добавление данных в БД
Команда INSERT используется для вставки новых записей в таблицу. Существует несколько способов написать команду INSERT. Один из способов — использовать INSERTINTO и указать необходимое поле. Допустим, компания sTunes расширяет свой ассортимент и хочет, чтобы мы добавили в таблицу artists еще нескольких исполнителей.
Рассмотрим, как добавить новую запись в таблицу artists с помощью команды INSERT.
INSERT INTO
artists (Name)
VALUES ('Bob Marley')
Эта вставка состоит из трех элементов: таблицы, поля и значения. Таблица artists указана после команды INSERTINTO, где названа таблица, которую необходимо изменить. За ним следует имя поля, заключенное в круглые скобки (). В данном случае мы хотим добавить нового исполнителя, добавив его имя в поле Name. Затем следует ключевое слово VALUES, после которого в круглых скобках указано значение, которое необходимо добавить в таблицу artists. В нашем примере это Bob Marley. Bob Marley — это текстовое значение, поэтому оно заключено в одинарные кавычки.
Напоминание
Мы можем проанализировать тип данных поля Name в таблице artists, просмотрев вкладку Database Structure (Структура базы данных). В нашем случае тип данных — NVARCHAR(120), или символьный тип данных с установленным ограничением в 120 символов.
Практические задания
• Проанализируйте результат выполнения команды INSERT.
• Напишите оператор SELECT, чтобы найти новое добавленное значение.
• В таблицу artists добавьте значение Peter Tosh.
• Какой ID у добавленной записи Bob Marley?
Примечание
В таблице artists имеется второй столбец — ArtistId. Его не надо указывать в команде INSERT, так как это столбец с автоматическим приращением. Это означает, что в столбце автоматически создается новый номер для новых добавляемых записей.
Еще один способ добавить значения в таблицу — перечислить значения последовательно по имени поля. В этом случае не нужно указывать столбцы, в которых должны храниться данные. Однако в этом случае при написании команды INSERT необходимо быть внимательным, чтобы гарантировать, что порядок, в котором данные указываются в команде INSERT, совпадает с порядком перечисления полей в таблице.
Рассмотрим пример добавления новой записи в таблицу employees.
INSERT INTO
employees
VALUES ('9', 'Martin', 'Ricky', 'Sales Support Agent', '2', '1975-02-07', '2018-01-05', '123 Houston St', 'New York', 'NY', 'United States', '11201', '(347) 525-8588', '', 'rmartin@gmail.com')
Рис. 127
Очень важно проследить, чтобы порядок, в котором данные указываются в команде INSERT, соответствовал порядку следования полей в целевой таблице. Поэтому рекомендуется сначала изучить целевую таблицу, и обратите внимание на порядок, в котором появляются поля.
На вкладке Database Structure (Структура базы данных) мы видим структуру таблицы employees. При использовании команды INSERT поля от EmployeeId до Email должны быть указаны именно в таком порядке.
Практические задания
• Проанализируйте результат выполнения команды INSERT.
• У нового сотрудника, Ricky Martin, нет номера факса. Как это будет выражено в условии INSERT?
• Вставьте новую запись (сотрудника) в таблицу employees.
• Выполните запрос еще раз, но используйте существующий первичный ключ. Какое сообщение об ошибке вы получите?
Внимание
При добавлении новых записей, в которых для какого-либо поля не существует значения, вам необходимо добавить пару пустых кавычек ' ' для этого несуществующего значения. В приведенном выше примере мы пропустили номер факса при помощи пары пустых кавычек в таблице employees.
Обновление данных и ключевое слово SET
Команда UPDATE используется для изменения существующих данных в таблице. Как правило, команда UPDATE применяется с условием WHERE. Условие WHERE необходимо для указания строк, которые будут обновлены. Без условия WHERE оператор UPDATE обновит все содержащиеся в таблице строки.
Следующий оператор обновляет запись о сотруднике, которую мы добавили в предыдущем разделе:
UPDATE
employees
SET PostalCode = '11202'
WHERE
EmployeeId = 9
Внимание
Если сотрудники еще не добавлены, выполнение этого кода приведет к ошибке NoSuchColumn (Столбец не существует).
Анализируя предыдущий синтаксис, мы видим, что таблица employees указывается после ключевого слова UPDATE. Затем следует ключевое слово SET, и именно здесь указан столбец в таблице employees, который необходимо обновить. В нашем примере это поле PostalCode. За ним следует знак равенства = и новое значение, которое заменит старое значение. В нашем примере это значение '11202' (заключено в одинарные кавычки, так как почтовый индекс является строковым значением). После ключевого слова SET следует условие WHERE, которое позволяет нам точно указать, какую запись о сотруднике мы собираемся обновить. Запись EmployeeId=9 означает, что обновляется только эта запись и никакая другая.
Практические задания
• Проанализируйте результат выполнения команды UPDATE.
• Составьте еще один оператор UPDATE и измените номер телефона для записи Ricky Martin.
• Сколько строк будет затронуто при выполнении оператора UPDATE, если в нем не будет условия WHERE?
Внимание
Особое внимание следует уделить добавлению условия WHERE в UPDATE. Если условие WHERE не включено и в нем не указаны необходимые для изменения записи, вы можете обновить записи, которые вы не собирались обновлять, что может привести к серьезным проблемам.
Удаление данных
Оператор DELETE используется для удаления существующих записей в таблице. Этот оператор, как и UPDATE, обычно используется с условием WHERE. Если условие WHERE отсутствует, оператор DELETE удалит все строки в таблице.
Примечание
Как и в случае с UPDATE, не стремитесь сразу выполнять оператор DELETE, сначала напишите оператор SELECT, используя те же таблицы и условие WHERE. Таким образом вы сможете предварительно проанализировать, что вы собираетесь удалить. Как только оператор SELECT вернет ожидаемые записи, вы можете выполнить оператор DELETE.
Сначала напишем оператор SELECT, чтобы проверить данные, которые мы собираемся удалить.
SELECT * FROM
employees
WHERE
EmployeeId = 9
Рассмотрим пример удаления записи, обновленной в предыдущем разделе.
DELETE FROM
employees
WHERE
EmployeeId = 9
Синтаксис оператора DELETE начинается с двух ключевых слов, DELETEFROM, за которыми следует имя таблицы, откуда мы собираемся удалить запись. В нашем примере мы удаляем запись из таблицы employees. После имени таблицы следует условие WHERE, которое позволяет нам точно указать, какую запись о сотруднике необходимо удалить. Запись EmployeeId=9 означает, что будет удалена только эта запись и никакая другая.
Практические задания
• Проанализируйте результат выполнения оператора DELETE.
• Составьте еще один оператор DELETE и удалите имена всех сотрудников, которые работают в службе поддержки клиентов.
• На сколько записей повлияло выполнение оператора DELETE из предыдущего задания?
Внимание
Особое внимание следует уделить добавлению условия WHERE к оператору DELETE. Если условие WHERE не включено и в нем не указаны необходимые для удаления записи, вы можете удалить не те записи, что вызовет серьезные проблемы.
Контрольные вопросы
1. Добавьте в базу данных нового клиента.
2. Создайте счет для этого клиента.
3. Удалите этого клиента из базы данных.
Резюме
• Операторы, рассмотренные в этой главе, изменяют информацию в базах данных. Перед использованием операторов внимательно проверьте правильность и необходимость их использования.
• Данные в РСУБД управляются с помощью следующих DML-команд: INSERT, UPDATE и DELETE.
• Оператор INSERT используется для добавления новых записей в базу данных.
• Оператор UPDATE используется для изменения существующих записей.
• Оператор DELETE используется для удаления записей.
**** INSERT, UPDATE и DELETE могут называться как командами, так и операторами. — Примеч. ред.
Заключение
Главное — задавать правильные вопросы
Если вы дочитали эту книгу до конца, то наверняка научились использовать язык структурированных запросов и теперь можете превращать обычные записи в базе данных в значимую информацию, которую можно использовать для принятия сложных решений. В этой книге я показал, как создавать эффективные запросы для реальных сценариев, и продемонстрировал методы, которые я считаю полезными и использую постоянно. Я по возможности старался избегать технических деталей и сложной жаргонной лексики. Для начинающих: я надеюсь, вам понравилась моя книга и мне удалось поделиться своими знаниями в SQL. Для тех, кто уже изучал SQL: хочется верить, что эта книга помогла вам упорядочить и пополнить свои знания. В заключение я хотел бы рассказать о еще нескольких практических выводах и уроках, которые я извлек за восемнадцать лет работы в сфере информационных технологий. Я надеюсь, что все это поможет вам выбрать правильное направление изучения SQL. Кроме того, здесь я отвечу на некоторые часто задаваемые вопросы и кратко расскажу о дальнейшем образовании и получении сертификата по SQL.
Как найти свой путь
Я надеюсь, что благодаря этой книге вы познакомились со множеством различных применений SQL. Некоторые вам пригодятся, а другие — нет. Когда восемнадцать лет назад я начал самостоятельно изучать удивительный мир баз данных, компьютерные технологии стремительно развивались. В то время я работал с Visual Basic и уже разрабатывал приложения (внешний интерфейс или визуальный интерфейс программных систем). В конце концов мне пришлось в эти приложения включить базы данных. Когда я начал изучать, как Microsoft Access позволяет наглядно представлять данные и связь между таблицами, я четко понял, как работают данные, и это расширило мое представление о базах данных. Со временем я понял, что данные — это основа моей работы. Более глубокое изучение мира больших данных стало для меня целью. Это может произойти и с вами, и я надеюсь, что это действительно случится. Я призываю своих студентов изучать все смежные дисциплины программирования, которые им могут понадобиться. Подумайте, какая специальность подходит вам лучше всего! Ваш путь никогда не будет прямым. Все трудности, ошибки и промахи на этом пути помогут вам понять, что для вас истинно ценно и важно.