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, то обновление коснется только двух первых из них.