Основы SQL. Иллюстрированный самоучитель по PostgreSQL Какая команда используется запроса данных
Любая концептуальная информация о реляционных базах данных и таблицах приносит пользу лишь в том случае, если вы знаете, как организовать взаимодействие с данными. Язык SQL состоит из структурированных команд, предназначенных для добавления, модификации и удаления данных из базы. Эти команды образуют основу для взаимодействия с сервером PostgreSQL.
Этот раздел посвящен "анатомии" команд SQL. В нем рассматриваются структурные компоненты команд, описываются функции каждого компонента и их взаимные связи. Стандартный клиент командной строки PostgreSQL, psql, выводит результаты выполнения команд в приведенных примерах.
Большинство примеров команд SQL относится к базе данных booktown . Весь вывод psql снабжается префиксом вида booktown=# .
В некоторых примерах используется тестовая база данных testdb . По умолчанию в приглашении psql выводится только имя базы данных и символы =# , означающие, что система готова к вводу новой команды (хотя вы увидите, что символ = динамически изменяется по мере отслеживания состояния входных данных SQL). В книге это приглашение приводится вместе с входными и выходными данными SQL, чтобы вам было проще освоиться с выводом клиента psql.
Клиент psql подробно описан в главе 4. Здесь он упоминается лишь для пояснения стиля примеров команд SQL.
Примечание
Схема базы данных booktown (вместе с примерами записей) находится в файле booktown.sql на компакт-диске. Чтобы установить эту базу данных, введите в приглашении командной строки команду psql - U postgres template! - f /mnt/cdrom/booktown.sql, где /mnt/cdrom - путь к смонтированному компакт-диску, a postgres - имя суперпользователя PostgreSQL
.
Анатомия команд SQL
Команды SQL всегда начинаются с действия (verb ) - слова или группы слов, описывающих выполняемую операцию. Кроме того, команда SQL обычно содержит одну или несколько секций, уточняющих ее смысл. В табл. 3.2 перечислены основные действия SQL.
Таблица 3.2 . Основные действия PostgreSQL.
Действие | Описание |
---|---|
CREATE DATABASE | Создание новой базы данных |
CREATE INDEX | Создание нового индекса для столбца таблицы |
CREATE SEQUENCE | Создание новой последовательности в существующей базе данных |
CREATE TABLE | Создание новой таблицы в существующей базе данных |
CREATE TRIGGER | Создание нового определения триггера |
CREATE VIEW | Создание нового представления для существующей таблицы |
SELECT | Выборка записей из таблицы |
INSERT | Вставка одной или нескольких новых записей в таблицу |
UPDATE | Модификация данных в существующих записях |
DELETE | Удаление существующих записей из таблицы |
DROP DATABASE | Уничтожение существующей базы данных |
DROP INDEX | Удаление индекса столбца из существующей таблицы |
DROP SEQUENCE | Уничтожение существующего генератора последовательности |
DROP TABLE | Уничтожение существующей таблицы |
DROP TRIGGER | Уничтожение существующего определения триггера |
DROP VIEW | Уничтожение существующего представления |
CREATE USER | Создание в системе новой учетной записи пользователя PostgreSQL |
ALTER USER | Модификация существующей учетной записи пользователя PostgreSQL |
DROP USER | Удаление существующей учетной записи пользователя PostgreSQL |
GRANT | Предоставление прав доступа к объекту базы данных |
REVOKE | Лишение прав доступа к объекту базы данных |
CREATE FUNCTION | Создание новой функции SQL в базе данных |
CREATE LANGUAGE | Создание нового определения языка в базе данных |
CREATE OPERATOR | Создание нового оператора SQL в базе данных |
CREATE TYPE | Создание нового типа данных SQL в базе данных |
Одним из самых распространенных языков программирования на сегодняшний день является SQL. Он может использоваться для создания и управления базой данных, а также для выполнения различных операций над самими данными. Практика показывает, что данный язык довольно прост в освоении. Он по максимуму использует стандартную лексику английского языка. SQL, как и любой другой язык программирования, имеет свой синтаксис, логику, правила использования и набор основных команд.
Язык SQL: классификация команд
Стандартные команды SQL можно рассматривать, отталкиваясь от их назначения. За основу классификации можно взять следующие наборы:
— команды для построения запросов;
— команды встроенных функций и процедур;
— команды системных таблиц и триггеров;
— наборы комбинаций, предназначенных для работы со строковыми переменными и датой;
— команды для работы с таблицами и данными.
Эту классификацию можно продолжать бесконечно долго, однако основные наборы команд языка SQL будут строиться именно исходя из представленных типов. Рассматривая классификацию языка, нельзя не сказать о том, что он универсален. Об этом лишний раз свидетельствует сфера его применения. Данный язык программирования и его разновидности используются не только в стандартной среде, но и в других программах, которые вы использовали, так или иначе. Можно рассматривать сферу использования SQL с точки зрения офисного программного обеспечения. Речь идет о MicrosoftAccess. Данный язык, а если говорить точнее, его разновидность MySQL, дает возможность администрировать базы данных в Интернете. Среда разработки Oracle использует команды SQL на основе своих запросов.
Применение SQL в Microsoft Access
Пакет программного обеспечения Microsoft Office считается одним из самых простых примеров использования языка программирования баз данных. Изучение данного программного продукта предусмотрено даже в школьном курсе информатики. Система управления базой данных Microsoft Access рассматривается в одиннадцатом классе. При изучении данного приложения школьники могут ознакомиться с языком разработки баз данных. Именно тогда они получают базовое понимание процесса управления базами данных.
SQL-команды в Microsoft Access довольно примитивны, если рассматривать их на профессиональном уровне. Выполнение данных команд осуществляется очень просто. Создаются они в специальном редакторе кода. Давайте рассмотрим конкретный пример:
SELECTPe_SurName
WHEREPe_Name = ‘Мери’;
Рассматривая синтаксис данной программы, можно сказать, что она вернет пользователю фамилию человека. В данном случае речь идет о женщине по имени Мери, имя которой хранится в базе данных Contacts. Хотя использование SQL в Access ограничено, такие простые запросы иногда сильно упрощают выполнение поставленного задания.
Использование команд SQL в Oracle
Oracle является наверное единственным серьезным конкурентом Microsoft SQL Server. Эта среда разработки и управления БД постоянно приводит к усовершенствованию функций программного продукта от компании Microsoft, поскольку конкуренция является двигателем прогресса. Команды SQL Oracle, несмотря на постоянное соперничество, повторяют SQL. Необходимо отметить, что хотя Oracle практически считается копией SQL, логика данной системы и в целом языка считается проще. При использовании определенного набора команд система Oracle не имеет такой сложной структуры. Если рассматривать возможности этих сред разработки баз данных, то у Oracle нет сложной структуры вложенных запросов. Подобная разница дает возможность во много раз ускорить работу с данными. Однако в противовес это в некоторых случаях может привести к нерациональному использованию памяти в отдельных случаях. В основном структура Oracle построена на временных таблицах и их применении. К примеру, SQL команды в данной системе строятся по аналогии со стандартами языка SQL, хотя и отличаются от него.
SELECTCONCAT(CONCAT(CONCAT(‘Сотрудник ‘, sname),
CONCAT(SUBSTR(fname, 0, 1), SUBSTR(otch, 0, 1))),
CONCAT(‘принят на работу ‘, acceptdate))
FROM employees WHERE acceptdate>to_date(‘01.01.80′,’dd.mm.yyyy’);
Такой запрос возвращает данные о сотрудниках, которые были приняты на работу в определенный промежуток времени. Хотя структура запроса и отличается от MicrosoftSQLServer, выполнение SQL-команд в этих системах похоже. Исключение составляют лишь мелкие детали.
Применение SQL в сети Internet
После появления всемирной паутины, или иначе говоря, интернета, сфера применения языка SQL была существенно расширена. В сети, как известно, хранится большой объем информации. При этом она расположена не хаотично, а размещена на серверах и сайтах по определенным критериям. За хранение информации в Интернете и других местах отвечают непосредственно базы данных. Сайты представляют собой системы управления. Сайты и их программный код, как правило, организованы на разных языках программирования. В основе баз данных лежит одна из разновидностей SQL, а именно язык создания баз данных, который ориентирован на веб-интерфейсы MySQL. Основной набор команд и синтаксис данного языка полностью копируют SQL. Однако имеются некоторые дополнения, которые и придают ему отличие от Microsoft SQL Server. Команды SQL похожи не только по синтаксису, но и по набору служебных слов. Разница заключается только в структурировании и вызове запроса. Можно рассмотреть для примера запрос для создания новой таблицы. Именно этому прежде всего и учат детей на уроках информатики.
$link = mysqli_connect(‘localhost’, «root», », ‘tester’);
if (!$link) die(«Error»);
$query = ‘create table users(
login VARCHAR(20),
password VARCHAR(20))’;
if (mysqli_query($link, $query)) echo «Таблицасоздана.»;
elseecho «Таблица не создана: «.mysqli_error();
mysqli_close($link);
Результатом выполнения такого запроса будет создание новой таблицы Users с двумя полями: логин и пароль. В данном случае синтаксис изменен под Веб. В основе лежат команды MicrosoftSQLServer.
Microsoft SQL Server: построение запросов
Одной из основных задач SQL является выборка из таблиц определенного набора данных. Для выполнения таких операций в SQL предусмотрена команда select. О ней и будет идти речь ниже. Правила построения команд довольно просты. Сама команда select в SQL строится следующим образом. Предположим, у вас имеется таблица, в которой присутствуют данные о сотруднике. Таблица имеет имя Person. Вам нужно выбрать данные о сотрудниках, дата рождения которых лежит в промежутке с первого января по первое сентября текущего года. Чтобы осуществить такую выборку необходимо выполнить команду SQL, в которой будет использоваться не только стандартная конструкция, но и примерно такое условие выбора: Select * fromPersonWhereP_BirthDay>=’01/01/2016’ andP_BirthDay<=09/01/2016’. Выполнение данной команды возвращает информацию о сотрудниках, дата рождения которых находится в заданном вами периоде. В некоторых случаях перед пользователем стоит задача вывести только ФИО сотрудника. Для этого можно построить запрос следующим образом: SelectP_Name – имя P_SurName – фамилия P_Patronimic – отчество fromPersonWhereP_BirthDay>=’01/01/2016’ andP_BirthDay<=’09/01/2016’. В данном случае речь идет только о выборе чего-либо. По сути своей он ни на что не влияет, а только предоставляет информацию в запрашиваемом виде. Если вы решили всерьез заняться изучением языка SQL, то вам придется научиться вносить изменения в базы данных, поскольку их построение без этого просто невозможно. Чуть ниже будет рассмотрено, как это делается.
Основные команды SQL для изменения информации
Синтаксис языка построен не только для выполнения запросов, но и для осуществления манипуляций с данными. Задачей программиста БД в основном является написание скриптов для формирования отчетов и выборок. Иногда требуется вносить правки в таблицы. Список SQL-команд для выполнения таких действий не слишком велик. Он состоит всего из трех команд:
— Insert (вставить);
— Update (обновить);
— Delete (удалить).
Чтобы определить назначение этих команд, достаточно просто перевести их название. Эти команды довольно просты в использовании и при этом имеют не слишком сложную схему построения. Стоит упомянуть, что некоторые из них при неправильном использовании могут нанести базе непоправимый ущерб. Перед использованием таких команд MS SQL необходимо продумать и учесть все возможные последствия их выполнения. Только после изучения данных команд, вы сможете полноценно работать с базами данных, видоизменять их и вносить новые переменные или удалять старые.
Использование команды Insert
Для вставки используется команда Insert. Неправильно вставленную информацию можно всегда удалить и заново внести в базу данных. Команда Insert предназначена для вставки новых данных в таблицу. Она позволяет добавить как полный набор данных, так и выборочный. Для примера можно рассмотреть команду вставки в ранее описанную таблицу Person. Чтобы внести данные в таблицу, нужно исполнить SQL-команду, которая дает возможность вставить всю информацию в таблицу или выборочно заполнить ее.
Insertintoperson
Select ‘Иванов’,’Иван’,’Иванович’,’01/01/1990’
Команды MSSQLServer такого типа автоматически заполняют ячейки таблицы указанными данными. Иногда возникают ситуации, когда у сотрудника отсутствует отчество. В этом случае необходимо выполнить команду вставки данных, которая занесет в таблицу только необходимую информацию. Синтаксис такой команды будет выглядеть следующим образом:
Insertintoperson(P_Name, P_SurName ,P_BerthDay)
Values (‘Джон’, ‘Джонсон’,’01/11/1988’)
Данная команда заполнит указанные ячейки. Остальные будут иметь значение null.
Команды для изменения данных
Чтобы изменить данные во всей строке или в некоторых ячейках, необходимо использовать команду UpdateSQL. Выполнить такую команду нужно только с определенным условием. Необходимо точно указать в какую строку по номеру необходимо внести изменения. У команды UpdateSQL несложный синтаксис. Чтобы правильно ее использовать, нужно указать, какую информацию, в какой колонке и какой записи необходимо изменить. После этого необходимо будет составить скрипт и выполнить его. Давайте рассмотрим один пример. Предположим, вам необходимо изменить дату рождения Джона Джонсона, который внесен в таблицу сотрудников под номером 10.
Update Person Set P_BirthDay = ‘10/10/1988’ where P_ID=10
В данном скрипте условие не позволяет поменять дату рождения во всех записях таблицы, оно только обновит нужные. Программисты чаще всего пользуются именно этой командой, поскольку она позволяет менять данные в таблице, не нанося при этом значительного вреда всей информации.
Команды для использования встроенных функций и процедур
При помощи языка SQL можно не только построить запросы, но и создать встроенные механизмы для работы с данными. Возникают ситуации, когда необходимо использовать в теле одного запроса написанную ранее выборку. Если посудить логически, необходимо скопировать текст выборки и вставить его в нужное место. Можно обойтись и более простым решением. Давайте рассмотрим пример, когда на рабочем интерфейсе присутствует кнопка для печати отчета, например, в Excel. Данная операция будет осуществляться по мере необходимости. Для этой цели можно использовать встроенные хранимые процедуры. В данном случае команды SQL запросов заключаются в процедуру и вызываются при помощи команды SQL Exec. Предположим, что была создана специальная процедура для вывода даты рождения сотрудников с описанной ранее таблицы Person. В этом случае отсутствует необходимость писать весь запрос. Чтобы получить необходимую информацию, достаточно выполнить команду Exec и передать параметры, необходимые для выборки. В качестве примера можно рассмотреть механизм создания процедуры следующего характера:
CREATEPROCEDUREPrintPerson
@DB smalldatetime
@DE smalldatetime
SELECT * from Person
FROM HumanResources.vEmployeeDepartmentHistory
WHERE P_BerthDay>= @DB and P_BerthDay<= @DE
ANDEndDateISNULL;
Такая процедура вернет в качестве данных всю информацию о сотрудниках, день рождения которых находится в заданных временных рамках.
Целостность информации. Триггеры
Некоторые команды MS SQL позволяют не только организовать манипуляции с данными, но и обеспечивают их целостность. Для этой цели используются специальные системные конструкции, которые создаются самими программистами. Это так называемые триггеры, которые обеспечивают контроль данных. В этом случае для организации проверки условий применяются стандартные команды SQL-запросов. В триггерах имеется возможность создания множества условий и ограничений для работы с информацией, которые могут осуществлять управление не только доступом к информации, но и запрещать удаление, изменение и вставку информации. Типы SQL-команд, которые могут быть использованы в триггере, серьезно ограничены. Давайте рассмотрим их на примере. Если приступить к описанию механизма создания триггера, то типы команд SQL в данном случае используются такие же, как и при создании процедуры. Ниже будет приведен алгоритм. Прежде всего, необходимо описать служебную команду для создания триггеров:
CREATE TRIGGER Person_Insert
Затем необходимо указать, для какой таблицы он применяется
Затем указываем операцию с данными. В нашем случае это будет операция изменения данных. Следующим шагом является указание переменных и таблиц.
declare @ID int. @Datesmalldatetime @nIDint. @nDatesmalldatetime
После этого объявляем курсоры для выбора данных из таблиц удаления и вставки данных
DEclare cursor C1 for select P_ID, P_BerthDay from Inserted
DEclare cursor C2 for select P_ID, P_BerthDay from deleted
if @ID = @nID and @nDate = ’01/09/2016′
sMasseges ‘Выполнить операцию невозможно. Не подходит дата’
Отдельно стоит сказать, что триггер можно на время отключить. Данную манипуляцию может выполнить только программист, путем выполнения команды:
— SQL SERVER: altertablePERSONdisabletriggerall(для отключения триггеров, которые были созданы для данной таблицы);
— altertablePERSONenabletriggerall (для их включения триггеров)
Вот основные команды SQL, которые чаще всего используются. Однако на практике могут встречаться самые разнообразные комбинации. Ведь язык программирования SQL очень гибкий.
SQL - один из самых распространенных языков программирования, для создания и управления базой данных, а также для проведения разнообразных действий с самими данными.
Как показывает практика, он довольно простой в освоении и максимально использует стандартную лексику английского языка. Как и любой другой язык программирования, SQL имеет собственную логику и синтаксис, набор основных команд и правила их использования.
Классификация команд языка SQL
Все стандартные можно рассматривать исходя из их назначения. Как основу внегласной классификации можно взять такие наборы, как:
Команды для построения запросов.
Команды встроенных процедур и функций.
Команды триггеров и системных таблиц.
Наборы комбинаций для работы с датой и строковыми переменными.
Команды для работы с данными и таблицами.
Данную классификацию можно продолжать до бесконечности, но основные наборы команды языка SQL будут построены именно исходя из этих типов.
Рассматривая классификацию языка, нельзя не упомянуть о том, что он является универсальным, о чем говорит сфера его использования. Этот язык программирования и его разновидности задействуются не только в стандартной среде, но и в других программах, которые, так или иначе, вы использовали.
Сферу использования SQL можно рассматривать с точки зрения офисного программного обеспечения, а именно MicrosoftAccess. Этот язык, а точнее, его разновидность — MySQL, позволяет администрировать базы данных в сети Internet. Даже среда разработки Oracle использует в основе своих запросов команды SQL.
Использование SQL в MicrosoftAccess
Одним из самых простых примеров использования языка для программирования баз данных считается пакет программного обеспечения MicrosoftOffice. Изучение этого программного продукта предусмотрено школьным курсом информатики, а в одиннадцатом классе рассматривается система управления базой данных MicrosoftAccess.
Именно при изучении этого приложения ученики знакомятся с языком разработки баз данных и получают базовое понимание всего в него входящего. SQL команды Access довольно примитивны, конечно же, если рассматривать их на профессиональном уровне. Выполнение таких команд очень простое, а создаются они в приспособленном редакторе кода.
Рассмотрим конкретный пример:
SELECT Pe_SurName
WHERE Pe_Name = "Мэри";
Исходя из синтаксиса команды можно понять, что она вернет пользователю фамилию человека, в данном случае женщины по имени Мэри, которая хранится в таблице базы данных Contacts.
Хоть и использование SQL в Access ограничено, иногда такие простые запросы очень сильно могут упростить выполнение поставленного задания.
Использование команд SQL в Oracle
Oracle - это, наверное, единственный серьезный конкурент Microsoft SQL Server. Именно данная среда разработки и управления постоянно приводит к совершенствованию функций программного продукта компании Microsoft, так как конкуренция - это двигатель прогресса. Несмотря на постоянное соперничество, команды SQL Oracle повторяют SQL. Стоит отметить, что хоть Oracle и считается практически полной копией SQL, логика этой системы и языка в целом считается проще.
Система Oracle при использовании определенного набора команд не имеет такой сложной структуры. Если рассматривать возможности данных сред разработки баз данных, Oracle не имеет сложной структуры вложенных запросов.
Такая разница позволяет во много раз ускорить работу с данными, но, в противовес, ведет к нерациональному использованию памяти, в некоторых отдельных случаях. Структура Oracle в основном построена на временных таблицах и их использовании. Как пример: команды SQL в данной системе строятся по аналогии со стандартами самого языка SQL, хотя незначительно и отличаются от него.
SELECTCONCAT(CONCAT(CONCAT(‘Сотрудник ‘, sname), CONCAT(SUBSTR(fname, 0, 1), SUBSTR(otch, 0, 1))), CONCAT(‘принятнаработу ‘, acceptdate)) FROM employees WHERE acceptdate > to_date(‘01.01.80′,’dd.mm.yyyy’);
Данный запрос вернет данные о сотрудниках, которые приняты на работу в определенный промежуток времени. Хоть структура запроса отличается, от выполнение команд SQL в этих системах похоже, за исключением мелких деталей.
Использование SQL в сети Internet
С появлением всемирной паутины, то есть интернета, сфера использования языка SQL расширяется. Как известно, в сети хранится масса информации, но она не хаотично расположена, а размещена на сайтах и серверах по определенным критериям.
За хранение информации в Интернете, как и в других местах, отвечают непосредственно базы данных, а сайты являются системами управления. Как правило, сайты и их программный код организованы на разных языках программирования, но в основе баз данных лежит одна из разновидностей SQL, а именно язык создания баз данных, ориентированный под веб-интерфейсы MySQL.
Синтаксис и основной набор команд этого языка полностью копируют привычный всем SQL, но с некоторыми своими дополнениями, которые и дают ему отличие от Microsoft tSQL Server.
Команды SQL полностью похожи не только по синтаксису, но и по стандартному набору служебных слов. Разница состоит только в вызове и структурировании запроса. Для примера можно рассмотреть запрос для создания новой таблицы, именно она является первым, чему учат детей в школах на информатике:
$link = mysqli_connect("localhost", "root", "", "tester");
if (!$link) die("Error");
$query = "create table users(
login VARCHAR(20),
password VARCHAR(20)
if (mysqli_query($link, $query)) echo "Таблица создана.";
elseecho "Таблица не создана: ".mysqli_error();
mysqli_close($link);
В результате выполнения такого запроса можно получить новую таблицу "Юзеры", в которой будет два поля: логин и пароль.
Синтаксис изменен под Вэб, но в основу положены команды MicrosoftSQLServer.
Построение запросов MicrosoftSQLServer
Выборка из таблиц определенного набора данных одна из основных задач SQL. Для таких операций предусмотрена команда select в SQL. Именно о ней пойдет речь ниже.
Правила построение команды очень просты, а сама команда select в SQL строится следующим образом. К примеру, есть таблица, в которой имеются данные о сотруднике, которая, к примеру, имеет имя Person. Поставим задачу, что из таблицы нужно выбрать данные о сотрудниках, дата рождения которых - в промежутке от первого января до первого марта текущего года включительно. Для такой выборки необходимо выполнить команду SQL, в которой будет не только стандартная конструкция, но и условие выбора:
Select * from Person
Where P_BerthDay >= ‘01/01/2016’ and P_BerthDay<= ‘03/01/2016’
Выполнение такой команды вернет все данные о сотрудниках, день рождения которых находится в том периоде, который был задан вами. Иногда может стоять задача вывести только фамилию, имя и отчество сотрудника. Для этого запрос нужно построить чуть иначе, например, таким образом:
SelectP_Name - имя
P_SurName - фамилия
P_Patronimic - отчество
Where P_BerthDay >= ‘01/01/2016’ and P_BerthDay<= ‘03/01/2016’
Однако это всего лишь выбор чего-либо. Он, по сути своей, не влияет ни на что, а лишь предоставляет информацию. Но если вы решили заняться языком SQL всерьез, вам придется научится вносить изменения в базы данных, так как их построение без этого попросту невозможно. Как это делается, будет рассмотрено чуть ниже.
Основные команды SQL для изменения данных
Синтаксис языка построен не только для выполнения запросов, но и для манипуляций с данными. В основном задачей программиста баз данных является написание скриптов для выборок и отчетов, но иногда необходимо вносить правки в таблицы. Список команд SQL для таких действий невелик и состоит из трех основных команд:
Insert (пер. Вставить).
Update (пер. Обновление).
Delete (пер. Удалить).
Назначение этих команд легко определить, для этого достаточно будет всего лишь перевести их название. Эти команды просты в использовании и имеют не сложную схему построения, но стоит упомянуть, что некоторые из них, при неправильном использовании, могут нанести непоправимый вред базе.
Как правило, перед использованием такие MSSQL команды нужно продумать, и учесть все возможные последствия их выполнения.
Выучив данные команды, вы сможете полноценно начать работу с таблицами баз данных, тем самым видоизменять ее и вносить какие-то новые перменные или же удалять старые.
Команда Insert
Для вставки данных в таблицу используется самая безопасная команда — Insert. Неправильно вставленные данные всегда можно удалить и внести в базу данных заново.
Команда Insert предназначена для вставки в таблицу новых данных и позволяет добавить как полный набор, так и выборочно.
Для примера рассмотрим команду вставки в ранее описанную таблицу Person. Для того чтобы внести данные в таблицу необходимо выполнить команду SQL, которая позволит вставить все данные в таблицу или заполнить ее выборочно.
Insert into person
Select ‘Григорьев’,’Виталий’,’Петрович’,’01/01/1988’
Команды такого плана автоматически заполняют все ячейки таблицы с указанными данными. Бывают ситуации, когда у сотрудника нет отчества, скажем, он по обмену приехал работать из Германии. В таком случае нужно выполнить команду вставки данных, которая занесет в таблицу только то, что необходимо. Синтаксис такой команды будет следующим:
Insertintoperson(P_Name, P_SurName ,P_BerthDay)
Values (‘Дэвид’, ‘Гук’,’02/11/1986’)
Такая команда заполнит только указанные ячейки, а все остальные будут иметь значение null.
Команда для изменения данных
Для изменения данных как всей строки, так и некоторых ячеек используется команда Update SQL. Выполнять такую команду нужно только с определенным условием, а именно точно указывать в какую строку по номеру необходимо внести изменения.
Команда Update SQL имеет несложный синтаксис. Для правильного использования необходимо указать, какие данные, в какой колонке и в какой записи стоит изменить. Далее составить скрипт и выполнить его. Рассмотрим пример. Нужно изменить дату рождения Дэвида Гука, который внесен в таблицу сотрудников под номером 5.
Set P_BerthDay = ’02/10/1986’ where P_ID = 5
Условие (в данном скрипте) не даст изменить дату рождения во всех записях таблицы, а обновит только нужные.
Именно этой командой программисты пользуются чаще всего, так как она позволяет изменять данные в таблице не нанося существенный вред всей информации.
Команды для использования встроенных процедур и функций
С помощью языка SQL можно не только строить запросы, но и создавать встроенные механизмы для работы с данными. Как правило, бывают моменты, когда нужно использовать в теле одного запроса выборку, написанную ранее.
Если судить логически, то нужно скопировать текст выборки и вставить в нужное место, но можно обойтись и более простым решением. Рассмотрим пример, когда на рабочем интерфейсе выведена кнопка для печати отчета, скажем в Excel. Эта операция будет выполняться по мере необходимости. Для таких целей служат встроенные хранимые процедуры. Команды в данном случае, заключаются в процедуру и вызываются с помощью команды SQLExec.
Предположим, что была создана процедура для вывода даты рождения сотрудников с ранее описанной таблицы Person. В таком случае нет необходимости писать весь запрос. Для получения необходимой информации достаточно выполнить команду Exec [имя процедуры] и передать необходимые для выборки параметры. Как пример можно рассмотреть механизм создания процедуры такого характера:
CREATEPROCEDUREPrintPerson
@DB smalldatetime
@DE smalldatetime
SELECT * from Person
FROM HumanResources.vEmployeeDepartmentHistory
WHERE P_BerthDay >= @DB and P_BerthDay <= @DE
ANDEndDateISNULL;
Данная процедура вернет все сведения о сотрудниках, день рождения которых будет находиться в заданном временном периоде.
Организация целостности данных. Триггеры
Некоторые MS SQL-команды, можно даже сказать, конструкции, позволяют не только организовать манипуляции с данными, но и обеспечить их целостность. Для таких целей в языке предназначены системные конструкции, которые создает сам программист. Это так называемые триггеры, которые смогут обеспечить контроль данных.
В этом случае для организации проверки условий используются стандартные команды SQL-запросов. В триггерах можно создавать массу условий и ограничений для работы с данными, которые помогут управлять не только доступом к информации, но и запретить удаление, изменение или вставку данных.
Типы команд SQL, которые можно использовать в триггере, не ограничены. Рассмотрим на примере.
Если описывать механизм создания триггера, то типы команд SQL здесь такие же, как при создании процедуры. Сам алгоритм будет описан ниже.
Первым делом нужно описать служебную команду для создания триггеров:
Указываем, для какой операции с данными (в нашем случае это операция изменения данных).
Следующим шагом будет указание таблиц и переменных:
declare @ID int. @Date smalldatetime @nID int. @nDatesmalldatetime
DEclare cursor C1 for select P_ID, P_BerthDay from Inserted
DEclare cursor C2 for select P_ID, P_BerthDay from deleted
Задаем шаги выбора данных. После, в теле курсоров прописываем условие и реакцию на него:
if @ID = @nID and @nDate = "01/01/2016"
sMasseges "Выполнить операцию невозможно. Дата не подходит"
Стоит упомянуть о том, что триггер можно не только создать, но и отключить на время. Такую манипуляцию может провести только программист, выполнив команды SQL SERVER:
altertablePERSONdisabletriggerall - для отключения всех триггеров, созданных для данной таблицы, и, соответственно, altertablePERSONenabletriggerall - для их включения.
Эти основные команды SQL используются чаще всего, но их комбинации могут быть самыми разнообразными. SQL - очень гибкий язык программирования и дает разработчику максимум возможностей.
Вывод
Из всего вышесказанного можно сделать единственный вывод: знание языка SQL просто необходимо тем, кто собирается всерьез заняться программированием. Он лежит в основе всех выполняемых операций как в интернете, так и в домашних базах данных. Именно поэтому будущий программист обязательно должен знать множество команд данного языка, так как лишь с их помощью можно, так сказать, общаться с компьютером.
Конечно, недостатки есть, как и во всем в этом мире, но они настолько незначительны, что просто меркнут перед достоинствами. Среди всех языков программирования SQL практически единственная в своем роде, ведь она является универсальной, и знания по написанию скриптов и кодов лежат в основе практически всех сайтов.
Главным достоинством SQL безоговорчно можно считать его простоту, ведь, как-никак, именно он внесен в школьную программу. С ним может справиться даже начинающий программист, толком не разбирающийся в языках.
В этом приложении содержатся сокращённые описания различных команд SQL. Цель состоит в том, чтобы дать вам быструю и точную справку и определение SQL.
Первый раздел этого приложения определяет элементы, используемые для создания команд SQL; второй - подробности синтаксиса и предложения с кратким описанием самих команд.
Вот стандартные условные обозначения (они называются BNF-условиями):
Кроме того, мы будем использовать следующую последовательность (.,..) чтобы указывать, что предшествующее этому может повторяться любое число раз, с индивидуальными событиями, отделяемыми запятыми. Атрибуты, которые не являются частью официального стандарта, будут отмечены в описании как (*нестандартные*).
ОБРАТИТЕ ВНИМАНИЕ: Терминология которую мы используем здесь - не является официальной терминологией ANSI. Официальная терминология может вас сильно запутать, поэтому мы несколько ее упростили.
По этой причине мы иногда используем условия, отличающиеся от ANSI, или используем те же самые условия, но несколько по-иному. Например, наше
определение Отличается от используемой в ANSI комбинации стандартного определения С .
ЭЛЕМЕНТЫ SQL
Этот раздел определяет элементы команд SQL.
Они разделены на две категории: Основные элементы языка и Функциональные элементы языка .
Основные элементы
- это создаваемые блоки языка; когда SQL исследует команду, то он сначала оценивает каждый символ в тексте команды в терминах
этих элементов. Разделитель
Функциональные элементы
- это разнообразные элементы, отличающиеся от ключевых слов, которые могут интерпретироваться как модули. Это части команды,
отделяемые с помощью разделителей
Перечисленные здесь являются общими элементами для всех описываемых команд.
Функциональные элементы могут определяться в терминах друг друга или даже в собственных терминах. Например, предикат
БАЗОВЫЕ ЭЛЕМЕНТЫ ЯЗЫКА
ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ