Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PMO_PMS_shpory_final.docx
Скачиваний:
7
Добавлен:
17.09.2019
Размер:
457.71 Кб
Скачать
  1. Структурированный язык запросов sql. Оператор insert. Структура оператора и примеры использования. Использование insert с вложенными подзапросами.

SQL (Structured Query Language — «язык структурированных запросов») — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. SQL основывается на исчислении кортежей. Все языки манипулирования данными (ЯМД), созданные до появления реляционных баз данных и разработанные для многих систем управления базами данных (СУБД) персональных компьютеров, были ориентированы на операции с данными, представленными в виде логических записей файлов. Это требовало от пользователей детального знания организации хранения данных и достаточных усилий для указания не только того, какие данные нужны, но и того, где они размещены и как шаг за шагом получить их. SQL (Structured Query Language - структуризованный язык запросов) ориентирован на операции с данными, представленными в виде логически взаимосвязанных совокупностей таблиц. Особенность предложений этого языка состоит в том, что они ориентированы в большей степени на конечный результат обработки данных, чем на процедуру этой обработки. SQL сам определяет, где находятся данные, какие индексы и даже наиболее эффективные последовательности операций следует использовать для их получения: не надо указывать эти детали в запросе к базе данных. Язык SQL представляет собой совокупность операторов, инструкций и вычисляемых функций. Операторы SQL делятся на операторы определения данных (Data Definition Language, DDL): CREATE создает объект, БД (саму базу, таблицу, представление, пользователя и т. д.), ALTER изменяет объект, DROP удаляет объект.

Операторы манипуляции данными (Data Manipulation Language, DML): SELECT считывает данные, удовлетворяющие заданным условиям, INSERT добавляет новые данные, UPDATE изменяет существующие данные, DELETE удаляет данные. Операторы определения доступа к данным (Data Control Language, DCL): GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом

REVOKE отзывает ранее выданные разрешения, DENY задает запрет, имеющий приоритет над разрешением. Операторы управления транзакциями (Transaction Control Language, TCL): COMMIT применяет транзакцию, ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции,

SAVEPOINT делит транзакцию на более мелкие участки.

Итак, теперь вы знаете, как извлечь строки из базы данных самыми различными способами. Но как поместить их в определенное место базы данных? На помощь здесь приходит оператор INSERT, имеющий

следующий основной синтаксис:

INSERT INTO имя-таблицы [(список-столбцов)]

VALUES (список-значений) котором они содержатся в таблице

Если значения добавляются для каждого из столбцов в том порядке, лице, то параметр список-столбцов не используется:

INSERT INTO Employee

VALUES (123, 'Bob Jones', 35000, 'MIS')

Если вы планируете задать значения только для некоторых столбцов, необходимо включить список этих столбцов. Присваиваемые значения затем должны перечисляться в том порядке, в котором указаны имена столбцов. Это бывает полезно в том случае, если для некоторого столбца в таблице установлены значения, используемые по умолчанию или вы хотите присвоить столбцу значение NULL. В следующем примере добавляется запись для нового сотрудника, при этом значение поля Salary остается равным NULL:

INSERT INTO Employee (EmpId, EmpName, Dept) i VALUES (123, 'Joe Bob Griffin', 'Sales')

Кроме того, можно вставить строки с использованием значений, возвращаемых оператором SELECT, вме-сто используемого ранее оператора VALUES. Например, если отдел MIS перешел работать в новую фирму, то вы можете добавить в таблицу FormerEmployee новые записи с использованием следующего оператора:

INSERT INTO FormerEmployee (EmpId, EmpName, Reason)

SELECT EmpId, EmpName, 'Outsourced' FROM Employee WHERE Dept = 'MIS'

Язык SQL разрешает использовать в других операторах языка DML подзапросы, которые являются внутренними запросами, определяемыми оператором SELECT.

Подзапрос - очень мощное средство языка SQL. Он позволяет строить сложные иерархии запросов, многократно выполняемые в процессе построения результирующего набора или выполнения одного из операторов изменения данных (DELETE, INSERT, UPDATE).

Подзапрос позволяет решать следующие задачи:

определять набор строк, добавляемый в таблицу на одно выполнение оператора INSERT;

определять данные, включаемые в представление, создаваемое оператором CREATE VIEW ;

определять значения, модифицируемые оператором UPDATE;

указывать одно или несколько значений во фразах WHERE и HAVING оператора SELECT;

определять во фразе FROM таблицу как результат выполнения подзапроса;

применять коррелированные подзапросы.

Подзапрос называется коррелированным, если запрос, содержащийся в предикате, имеет ссылку на значение из таблицы (внешней к данному запросу), которая проверяется посредством данного предиката.

Следующий оператор INSERT демонстрирует копирование строк таблицы tbl2, выполняемое на основе подзапроса:

INSERT INTO tbl1(f1,f2,f3)

(SELECT f1,f2,f3 FROM tbl2);

Очевидно, что количество полей, указываемое списком полей, и типы данных этих полей должны совпадать с количеством полей и их типами данных в конструкторе значений таблицы или в результирующем наборе, формируемом подзапросом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]