SQL. Синтаксис команды UPDATE

Изменение значения полей (команда UPDATE ). Комацдой UPDATE можно изменить в строке некоторые или все значения. В команде указыва­ются имя таблицы и изменения. Предположим, приказом ректора всем сту­дентам, которые получают стипендию, устанавливается новый (одинаковый для всех) размер стипендии в размере 50 000 руб. Для этого подается ко­манда:

UPDATE Spisok

SET stip = 50 000;

В команде UPDATE в предложении WHERE можно задать обновление только определенных строк.

UPDATE Spisok

SET stip = 50 000

WHERE kurs=I;

В предложении SET команды UPDATE можно через запятую указать любое количество значений для столбцов.

Одной командой UPDATE нельзя обновить несколько таблиц.

В команде UPDATE в предложении SET можно применять скалярные выражения для изменения значения поля. Предположим, всем студентам размер стипендии увеличен на 25 %; требуется внести изменения:

UPDATE Spisok

SET stip = (stip *25)/100;

Итак, команда UPDATE предназначена для замены значений в строках (записях) таблицы.

SQL. Синтаксис команды DELETE

Удаление строк из таблицы (команда DELETE ). Командой DELETE удаляются не отдельные значения полей строки, а целые строки. После вы­полнения команды DELETE для всей таблицы она становится пустой, на­пример:

DELETE FROM Spisok;

Для удаления конкретно указанных строк можно использовать предикат

DELETE FROM Spisok

WHERE stip = 0;

или указать значение первичного ключа для удаления одной записи

DELETE FROM Spisok

WHERE fio = "Петькин";

В командах INSERT, DELETE, UPDATE можно применять подзапросы.

SQL Синтаксис команды SELECT

Язык SQL есть структурированный язык запросов. Запрос в этой среде-это команда, с помощью которой пользователь формирует задачу для СУБД. После выполнения команды СУБД должа представить указанную в запросе информацию для пользователя.
все запросы в SQL формулируются с помощью одной команды SELECT, после которой в базе данныз начинается поиск определенной (нужной) информации в таблице.

Пример . На основании таблицы Spisok получить таблицу со всеми записями следующего вида:

Подается команда:

SELECT fio, stip FROM Spisok;

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

fio stip
Рыбкина
Уткина
Пшеничко
Собачкина
Яичко

Select - ключевое слово, которое «сообщает» СУБД о том, что команда является запросом;

fio, stip - список имен полей (столбцов), по которым должна выбираться информация и нормироваться новая таблица;

FROM Spisok; FROM- ключевое слово, должно быть в каждом запросе; Spisik- имя таблицы –источника данных для запроса;

Символ точка с запятой (;) признак окончания команды и готовности к её выполнению.

После ключевого слова SELECT следует пробел. Далее через запятую перечисляются имена полей(столбцов) выборки.

Для вывода всех столбцов таблицы базы данных список полей можно не перечислять, заменив его символом «звездочка» (*). Столбцы выводятся в соответствии со структурой таблицы-источника

SELECT * FROM Spisok;

Командой SELECT можно выводить столбцы в любой последовательности, отличной от упорядоченной по определению структуры таблицы-источника. Эта последовательность задается перечнем имен столбцов в команде SELECT. Пример переупорядоченных столбцов в выходной таблице

SELECT kurs, gruppa, fio FROM Spisok;

SQL. Выбор по критерию (WHERE)

С помощью приложения WHERE в команде SELECT задается условие выбора записей из таблицы; предикат может принимать значения «истина» или «ложь».

Пример.

Команда SELECT для выбора из таблицы Spisok студентов группы ЭТ-41:

SELECT gruppa, fio FROM Spisok WHERE gruppa=’ЭТ-41’ ;

Программа просмотрит все записи таблицы Spisok, проверяя каждую из них истинность предиката gruppa=’ЭТ-41’. В результате выполнения получим.

gruppa fio
ЭТ-41 Рыбкина
ЭТ-41 Уткина
ЭТ-41 Пшеничко
ЭТ-41 Собачкина
ЭТ-41 Яичко

Использование SQL с другими языками программирования

Язык SQL используется для написания программ доступа к базам данных в качестве подъязыка других процедурных языков программирования (Pascal, PL/1, Fortran, COBOL, C, Ada и др.). Язык SQL не процедурный, а декларативный, локальный. Его можно встраивать в программы, написанные на процедурных языках. В язык SQL отсутствует базовые операторы проверки условий IF, операторы FOR, DO и WHILE и др. Язык SQL предназначен исключительно для управления базами данных.

Совместное применение этих языков позволяет программировать сложные процедурные программы, например, программировать их на Pascal, а через SQL обращаться к их базе данных. Все встроенные команды SQL включаются в основной текст программы на языке высокого уровня, начиются фразой EXEX SQL и заканчиваются знаком завершения соответствующего языка (в Pascal;).

Программа с встроенным SQL перед собственной компиляцией проходит предкомпиляцию, где команды SQL преобразуются (транслируются) предкомпилятором в форму языка высокого уровня; после этого происходит компиляция все основной программы.

Команды SQL , включаемые в другую программу, рассматриваются основной программой как SQL -процедуры. В процессе выполнения основная программа связывается с базой данных, как и пользователь в среде SQL .

Visual Basic Application. Основные понятия.

В программировании базовыми понятиями являются «переменная» и «значение переменной». Переменная(variable)- это величина (объект), значение которой меняется в ходе выполнения программы. Переменная в компьютере представляется по присвоенному ему имени (идентификатору), и ее значение определяется оператором присвоения.

Для каждого идентификатора переменной выделяется место в памяти, где храниться ее значение. Запомним и уясним, на первый взгляд, элементарное понятие: любая программа использует переменные и их значения. Для каждого встречаемого в программе нового имени переменной VBAавтоматически определяется ее(выделяет для ее место в памяти). Это место остается пустым до присвоения переменной какого-либо значения. Переменные сравниваются с контейнерами для хранения данных любых типов.

Данные присваивают объект числами, буквами и другими способами. Над числами выполняются арифметические, над буквами- логические операции. Уже это свидетельствует о разных типах данных, для каждого из которых приняты свои способы их внутри машинного представления.

Типы данных VBA

Типы данных Префикс Символ описания Размер (байт) Значение
Integer Int % Короткое Целое (-32788 до +32767)
Long Lng & Длинное Целое (-2147483648 до +2147483647)
Single Sng ! Число с плавающей точкой одинарной точности: от -3.4e38 до +3.4е38
Double Dbl # Число с плавающей точкой двойной точности: от -1.79e308 до +1.79е308
Byte Byt Нет Байт: от 0 до 255
Currency Cur @ Число с фиксированной т очкой: От -922337203685477,5808 До +922337203685477,5807
String Str $ 10 + 2 на символ Строка: от 0 до 65535 символов
Boolean Bin Нет Булевское число: true и false
Date Dat Нет Дата и время
Variant Var Нет <16 Любые данные
Object Obj Нет Любая ссылка на объект

Переменные и константы в VBA

Переменные в программе объявляются, т е определяется тип переменной и область действия. Объявлять переменные можно на двух уровнях – уровне процедуры и уровне модуля.

Объявление на уровне модулей производится операторами Public и private: на уровнях модулей и процедуры – оператором Dim: только на уровне процедуры – оператором static.

Инициализация объявленных переменных происходит во время компиляции: числовой переменной присваивается значение нуль (0): строковой переменной – пустая строка (нулевой длины): переменной типа Variant – значение Emtry (отсутствие значения).

Константы: имеют имя, но не изменяют своего значения во время выполнения программы. Для определения констант в VB используется оператор Const такого формата:

Const {имя коснтанты =<константное выражение>}…

Public – объявленнная константа доступна для любой процедуры

Private – для процедур внутри модуля

AS<тип данных> - объявление типа данных константы

Команда UPDATE — производит изменения в уже существующей записи или во множестве записей в таблице SQL . Изменяет существующие значения в таблице или в основной таблице представления.

Команда UPDATE Синтаксис команды

Синтаксис команды UPDATE

Команда UPDATE. Основные ключевые слова и параметры команды UPDATE

  • schema - идентификатор полномочий, обычно совпадающий с именем некоторого пользователя
  • table view - имя таблицы SQL , в которой изменяются данные; если определяется представление, данные изменяются в основной таблице SQL представления
  • subquery_1 - подзапрос , который сервер обрабатывает тем же самым способом как представление
  • с olumn - столбец таблицы SQL или представления SQL , значение которого изменяется; если столбец таблицы из предложения SET опускается, значение столбца остается неизменяемым
  • expr - ; это выражение может содержать главные переменные и необязательные индикаторные переменные
  • subquery _2 - новое значение, назначаемое соответствующему столбцу
  • subquery _3 - новое значение, назначаемое соответствующему столбцу

WHERE - определяет диапазон изменяемых строк теми, для которых определенное условие является TRUE ; если опускается эта фраза, модифицируются все строки в таблице или представлении.
При выдаче утверждения включается любой UPDATE-триггер , определенный на таблице.
Подзапросы . Если предложение SET содержит подзапрос , он возвращает точно одну строку для каждой модифицируемой строки. Каждое значение в результате подзапроса назначается соответствующим столбцам списка в круглых скобках. Если подзапрос не возвращает никакие строки, столбцу назначается NULL . Подзапросы могут выбирать данные из модифицируемой таблицы. Предложение SET может совмещать выражения и подзапросы .

Команда UPDATE Пример 1
Изменение для всех покупателей рейтинга на значение, равное 200:

Customers SET rating = 200;

Команда UPDATE Пример 2
Замена значения столбца во всех строках таблицы, как правило, используется редко. Поэтому в команде , как и в команде DELETE , можно использовать предикат. Для выполнения указанной замены значений столбца rating, для всех покупателей, которые обслуживаются продавцом Giovanni (snum = 1003), следует ввести:

Customers SET rating = 200 WHERE snum = 1001;

Команда SQL UPDATE Пример 3
В предложении SET можно указать любое количество значений для столбцов, разделенных запятыми:

Emp SET job = ‘MANAGER’, sal = sal + 1000, deptno = 20 WHERE ename = ‘JONES’;

Команда UPDATE Пример 4
В предложении SET можно указать значение NULL без использования какого-либо специального синтаксиса (например, такого как IS NULL). Таким образом, если нужно установить все рейтинги покупателей из Лондона (city = ‘London’) равными NULL-значению, необходимо ввести:

Customers SET rating = NULL WHERE city = ‘London’;

Команда UPDATE Пример 5
Поясняет использование следующих синтаксических конструкций команды :

  • Обе формы предложения SET вместе в одном утверждении.
  • Подзапрос.
  • Предложение WHERE, ограничивающее диапазон модифицируемых строк.

Emp a SET deptno =
(SELECT deptno FROM dept WHERE loc = ‘BOSTON’), (sal, comm) = (SELECT 1.1*AVG(sal), 1.5*AVG(comm) FROM emp b WHERE a.deptno = b.deptno) WHERE deptno IN (SELECT deptno FROM dept WHERE loc = ‘DALLAS’ OR loc = ‘DETROIT’);

Вышеупомянутое утверждение выполняет следующие операции:

  • Модифицирует только тех служащих, кто работают в Dallas или Detroit
  • Устанавливает значение колонки deptno для служащих из Бостона
  • Устанавливает жалованье каждого служащего в 1.1 раз больше среднего жалованья всего отдела
  • Устанавливает комиссионные каждого служащего в 1.5 раза больше средних комиссионных всего отдела

Оператор UPDATE изменяет имеющиеся данные в таблице. Команда имеет следующий синтаксис:

UPDATE SET { = { | NULL | DEFAULT},...} [ {WHERE }];

С помощью одного оператора могут быть заданы значения для любого количества столбцов. Однако в одном и том же операторе UPDATE можно вносить изменения в каждый столбец указанной таблицы только один раз. При отсутствии предложения WHERE будут обновлены все строки таблицы.

Если столбец допускает NULL-значение, то его можно указать в явном виде. Кроме того, можно заменить имеющееся значение на значение по умолчанию (DEFAULT) для данного столбца.

Примеры оператора SQL UPDATE

Имеется следующая таблица Planets:

Пример 1. С помощью оператора SQL UPDATE изменим название планеты Neptune на Pluton :

UPDATE Planets SET PlanetName = "Pluton" WHERE ID = 3;

В этом примере условие оператора SQL WHERE является обязательным, так как без него все поля столбца PlanetName во всей таблице изменились бы на Pluton. В данном случае, нам приходит на помощь столбец ID, т.к. он является Первичным ключом, позволяющим однозначно идентифицировать запись.

Пример 2. Увеличим зарплату всех учителей в 2 раза, а премию - в 10 раз.

Оператор UPDATE изменяет имеющиеся данные в таблице. Команда имеет следующий синтаксис

UPDATE <имя таблицы>
SET {имя столбца = {выражение для вычисления значения столбца
| NULL
| DEFAULT},...}
[ {WHERE <предикат>}];

С помощью одного оператора могут быть заданы значения для любого количества столбцов. Однако в одном и том же операторе UPDATE можно вносить изменения в каждый столбец указанной таблицы только один раз. При отсутствии предложения WHERE будут обновлены все строки таблицы.

Если столбец допускает NULL-значение, то его можно указать в явном виде. Кроме того, можно заменить имеющееся значение на значение по умолчанию (DEFAULT ) для данного столбца.

Естественно, типы данных столбцов hd и ram должны быть совместимы. Для приведения типов может использоваться выражение CAST .

Если требуется изменять данные в зависимости от содержимого некоторого столбца, можно воспользоваться выражением CASE . Если, скажем, нужно поставить жесткие диски объемом 20 Гб на ПК-блокноты с памятью менее 128 Мб и 40 гигабайтные - на остальные ПК-блокноты, то можно написать такой запрос:

Необходимо сказать несколько слов об автоинкрементируемых столбцах. Если столбец code в таблице Laptop определен как IDENTITY(1,1) , то следующий оператор

Разумеется, другой строки со значением code =5 в таблице быть не должно.

В Transact-SQL оператор UPDATE расширяет стандарт за счет использования необязательного предложения FROM . В этом предложении специфицируется таблица, обеспечивающая критерий для операции обновления. Дополнительную гибкость здесь дает использование операций соединения таблиц.

Пример . Пусть требуется указать "No PC" (нет ПК) в столбце type для тех моделей ПК из таблицы Product PC . Решение посредством соединения таблиц можно записать так:

Оператор DELETE

Оператор DELETE удаляет строки из временных или постоянных базовых таблиц, представлений или курсоров, причем в двух последних случаях действие оператора распространяется на те базовые таблицы, из которых извлекались данные в эти представления или курсоры. Оператор удаления имеет простой синтаксис:

DELETE FROM <имя таблицы > ;

Если предложение WHERE отсутствует, удаляются все строки из таблицы или представления (представление должно быть обновляемым). Более быстро эту операцию (удаление всех строк из таблицы) в Transact-SQL можно также выполнить с помощью команды

Однако есть ряд отличий в реализации команды TRUNCATE TABLE по сравнению с использованием оператора DELETE , которые следует иметь в виду:

1. Не журнализируется удаление отдельных строк таблицы. В журнал записывается только освобождение страниц, которые были заняты данными таблицы.
2. Не отрабатывают триггеры, в частности, триггер на удаление.
3. Команда неприменима, если на данную таблицу имеется ссылка по внешнему ключу, и даже если внешний ключ имеет опцию каскадного удаления.
4. Значение счетчика (IDENTITY ) сбрасывается в начальное значение.

Пример . Требуется удалить из таблицы Laptop все ПК-блокноты с размером экрана менее 12 дюймов.

TRUNCATE TABLE Laptop

Transact-SQL расширяет синтаксис оператора DELETE , вводя дополнительное предложение FROM

FROM <источник табличного типа>

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

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

Поясним сказанное на примере. Пусть требуется удалить те модели ПК из таблицы Product , для которых нет соответствующих строк в таблице PC .

Используя стандартный синтаксис, эту задачу можно решить следующим запросом:

Здесь используется внешнее соединение, в результате чего столбец pc.model для моделей ПК, отсутствующих в таблице PC , будет содержать NULL-значение, что и используется для идентификации подлежащих удалению строк.

Последнее обновление: 13.07.2017

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

UPDATE имя_таблицы SET столбец1 = значение1, столбец2 = значение2, ... столбецN = значениеN

Например, увеличим у всех товаров цену на 5000:

UPDATE Products SET Price = Price + 5000

Используем критерий, и изменим название производителя с "Samsung" на "Samsung Inc.":

UPDATE Products SET Manufacturer = "Samsung Inc." WHERE Manufacturer = "Samsung"

Более сложный запрос - заменим у поля Manufacturer значение "Apple" на "Apple Inc." в первых 2 строках:

UPDATE Products SET Manufacturer = "Apple Inc." FROM (SELECT TOP 2 FROM Products WHERE Manufacturer="Apple") AS Selected WHERE Products.Id = Selected.Id

С помощью подзапроса после ключевого слова FROM производится выборка первых двух строк, в которых Manufacturer="Apple". Для этой выборки будет определен псевдоним Selected. Псевдоним указывается после оператора AS .

Далее идет условие обновления Products.Id = Selected.Id . То есть фактически мы имеем дело с двумя таблицами - Products и Selected (которая является производной от Products). В Selected находится две первых строки, в которых Manufacturer="Apple". В Products - вообще все строки. И обновление производится только для тех строк, которые есть в выборке Selected. То есть если в таблице Products десятки товаров с производителем Apple, то обновление коснется только двух первых из них.