Скачать 1.16 Mb.
|
Статический язык программирования SQLВыделяют три разновидности языка SQL: интерактивный, вложенный и встроенный. Интерактивный SQL используется для функционирования непосредственно в БД. Встроенный SQL либо состоит из команд SQL, помещенных внутри программ, которые обычно написаны на другом языке (типа Паскаля или Си), либо включен в состав команд специально разработанного языка СУБД (язык систем dBASE, RBASE и т.п.). Это делает такие программы более мощными и эффективными. Унификация полных языков современных профессиональных СУБД достигается за счет внедрения объектно-ориентированного языка четвертого поколения 4GL. Последний позволяет организовывать циклы, условные предложения, меню, экранные формы, сложные запросы к базам данных с интерфейсом, ориентированным как на алфавитно-цифровые терминалы, так и на оконный графический интерфейс (X-Windows, MS-Windows). Интерактивный язык SQLSQL содержит примерно 40 операторов для выполнения различных действий внутри СУБД, большинство из которых представляют собой разного рода манипуляции с данными и метаданными. Эти операторы можно разделить на несколько категорий:
Операторы DDL
Операторы DML
Операторы DCL
Операторы TCL
Операторы CCL
Кроме того, SQL предоставляет возможность выполнять в своих предложениях:
Правила присвоения имен объектам БД
Работа с операторами SQL
Чтобы построить синтаксис оператора, нужно следовать по этой линии слева направо (или в направлении стрелок).
Буквенная запись представляется в виде слова или фразы, указывающих тип значения, которое требуется ввести. На диаграмме она представляется любыми буквами нижнего регистра.
Необязательным элементом может быть оператор, ключевое слово, определяемый терм или литеральное значение, которые для большей ясности помещаются на своей собственной линии. В некоторых случаях можно определить ряд значений для указанной опции, причем каждое значение выделено запятой. Несколько необязательных элементов имеют множество дополнительных необязательных элементов. В общем случае синтаксическая линия для необязательных элементов читается слева направо, как и основная синтаксическая линия. Всегда следуйте стрелкам, указывающим направление, и все будет в порядке. Обратите внимание, что некоторые опции позволяют определить несколько значений или вариантов, так что стрелки могут указывать направление справа налево. Тем не менее, как только вы ввели все необходимые элементы, направление движения возвращается к обычному: слева направо. К счастью, все необязательные элементы действуют одинаково.
Эти элементы позволяют выполнить тонкую настройку операторов, чтобы можно было решить наиболее сложные проблемы.
Все операторы SQL имеют вид, например: SELECT * FROM [Заказы] WHERE НОМЕР_ЗАКАЗА > 1024 Каждый оператор SQL начинается с глагола, представляющего собой ключевое слово, которое определяет, что именно делает этот оператор (SELECT, INSERT, DELETE, …). В операторе содержатся также предложения, содержащие сведения о том, над какими данными производятся операции. Каждое предложение начинается с ключевого слова, такого как FROM, WHERE и др. Структура предложения зависит от его типа: ряд предложений содержит имена таблиц или полей, некоторые могут содержать дополнительные ключевые слова, константы и выражения. Модификация метаданныхСуществуют несколько операторов SQL для управления метаданными, которые используются для создания, изменения или удаления БД и содержащихся в них объектов (таблиц, представлений и др.). Оператор CREATE DATABASEОператор CREATE DATABASE создает новую БД с именем имя базы данных:CREATE DATABASE имя базы данных [ON { [PRIMARY] (NAME = logical_file_name, FILENAME = 'os_file_name' [, SIZE = size] [, MAXSIZE = max_size] [, FILEGROWTH = growth_increment] ) } [,...n] ] [LOG ON { ( NAME = logical_file_name, FILENAME = 'os_file_name' [, SIZE = size] ) } [,...n] ] [FOR RESTORE], где FILENAME - полный путь и имя файла для размещения БД, должен указывать на локальный диск компьютера, на котором установлен SQL Server; SIZE - начальный размер каждого файла в Мб; MAXSIZE - максимальный размер файла в Мб, если не указано, что размер не ограничивается; FILEGROWTH - единица увеличения файла, указывается в Мб (по умолчанию) или в процентах (т.е. к числу добавляется %), значение 0 запрещает увеличение файла. Если БД с таким именем уже существует, то выполнение этого оператора приводит к ошибке. Например, CREATE DATABASE Товарооборот ON PRIMARY (NAME=Товарооборот_Data, FILENAME='c:\mssql7\data\sqlstep_data.mdf', SIZE=5, MAXSIZE=10, FILEGROWTH=10% ) LOG ON ( NAME=Товарооборот_Log, FILENAME='c:\mssql7\data\sqlstep_log.ldf', SIZE=1, MAXSIZE=5, FILEGROWTH=1 ) Оператор CREATE TABLEДля создания новой таблицы (пустой) необходимо использовать оператор CREATE TABLE, синтаксис которого имеет вид: CREATE TABLE таблица (столбец1 тип1 [(длина1)][CONSTRAINT столбец-ограничение1] [, столбец2 тип2 [(длина2)] [CONSTRAINT столбец-ограничение2] [, …]] [CONSTRAINT таблица-ограничение1_ [, таблица-ограничение2 [, …]]]); В этом операторе следует указать имя таблицы, имена полей, типы данных для них, длину (для некоторых типов полей) и, если нужно, серверные ограничения (с применением ключевого слова CONSTRAINT). Попытка создать таблицу с уже используемым именем приводит к появлению ошибки. Например, запрос CREATE TABLE [Пример] (ФАМИЛИЯ varchar(50) NOT NULL, ИМЯ varchar(50) NOT NULL, EMail varchar(50), ДОМАШНЯЯ_СТРАНИЦА varchar(255) ) Мы можем расширить эту таблицу посредством добавления поля ПЕРСОНАЛЬНЫЙ_КОД, которое будет использовано как первичный ключ: CREATE TABLE [Пример] (ПЕРСОНАЛЬНЫЙ_КОД Integer NOT NULL PRIMARY KEY, ФАМИЛИЯ varchar(50) NOT NULL, ИМЯ varchar(50) NOT NULL, EMail varchar(50), ДОМАШНЯЯ_СТРАНИЦА varchar(255)) и указать, что комбинация полей ФАМИЛИЯ и ИМЯ должна быть уникальна: CREATE TABLE [Пример] (ПЕРСОНАЛЬНЫЙ_КОД Integer NOT NULL PRIMARY KEY, ФАМИЛИЯ varchar(50) NOT NULL, ИМЯ varchar(50) NOT NULL, EMail varchar(50), ДОМАШНЯЯ_СТРАНИЦА varchar(255), CONSTRAINT SimpleConstraint UNIQUE (ФАМИЛИЯ, ИМЯ) ) Таблицы принадлежат пользователю, который их создал, и имена всех таблиц, принадлежащих данному пользователю, должны отличаться друг от друга, как и имена всех столбцов внутри данной таблицы. В SQL используются следующие основные типы данных, форматы которых могут несколько различаться для разных СУБД:
В некоторых СУБД еще существует тип данных LOGICAL, DOUBLE и ряд других. При определении типа столбца можно определять NULL или NOT NULL, т.е. может или нет столбец содержать значения NULL. По умолчанию установлено значение NULL. Значение по умолчанию DEFAULT должно быть константой, оно не может быть функцией или выражением. Если для данного столбца не задается никакой величины DEFAULT, то СУБД автоматически назначает ее. Если столбец может принимать NULL как допустимую величину, то по умолчанию присваивается значение NULL. Если столбец объявлен как NOT NULL, то значение по умолчанию зависит от типа столбца: для числовых типов значение по умолчанию равно 0; для типов даты и времени значение по умолчанию равно соответствующей нулевой величине для данного типа; для строковых типов значением по умолчанию является пустая строка. PRIMARY KEY определяет столбец как первичный ключ. UNIQUE определяет столбец как альтернативный ключ. Предложения PRIMARY KEY и UNIQUE определяют так же и индексы, которые должны содержать уникальные значения. Предложение INDEX дает возможность добавить индекс к создаваемой таблице. SQL позволяет создавать временные таблицы, «время жизни» которых – сеанс работы БД (время от открытия до закрытия БД). Таблица может быть глобальной, т.е. доступной всей прикладной программе, создавшей ее: CREATE GLOBAL TEMPORARY TABLE Продавцы (пном integer, пимя char(10), город char(10), комм decimal); Она может быть локальной, доступной только для модуля программы, в котором она была создана: CREATE LOCAL TEMPORARY TABLE Продавцы (пном integer, пимя char(10), город char(10), комм decimal); CREATE INDEXCREATE [UNIQUE] INDEX имя индекса ON имя таблицы (имя столбца[(длина)],...) Оператор CREATE INDEX дает возможность добавить индексы к существующим таблицам. Список столбцов в форме (имя столбца_1, имя столбца_2,...) создает индекс для нескольких столбцов. Величины индексов формируются путем конкатенации величин указанных столбцов. Предложение UNIQUE указывает, что никаким двум строкам в индексируемой таблице не позволяется принимать одно и то же значение для индексируемого столбца (или комбинации столбцов) в одно и то же время. Для столбцов типов CHAR и VARCHAR с помощью параметра имя столбца(длина) могут создаваться индексы, для которых используется только часть. Пример, приведенный ниже, создает индекс, используя первые 10 символов столбца Name: CREATE INDEX part_of_name ON Clients (Name(10)) Поскольку большинство имен обычно имеют отличия друг от друга в первых 10 символах, данный индекс не должен быть намного медленнее, чем созданный из столбца Name целиком. Кроме того, используя неполные столбцы для индексов, можно сделать файл индексов намного меньше, а это позволяет сэкономить место на диске и к тому же повысить скорость операций INSERT. Оператор ALTER TABLEДля изменения структуры существующей таблицы используется оператор ALTER TABLE. Применяя его, можно добавить либо удалить поле или серверное ограничение. Существует четыре разновидности оператора ALTER TABLE.
ALTER TABLE таблица ADD [COLUMN] столбец тип данных [(размер)] [CONSTRAINT ограничение на одиночный столбец] В запросах такого вида определяются имя таблицы, имя нового поля, его тип данных и, если нужно, размер. Помимо этого можно указать серверное ограничение, связанное с данным полем. Например, для добавления поля ТЕЛЕФОН к таблице "Пример" можно выполнить следующий запрос: ALTER TABLE [Пример] ADD ТЕЛЕФОН varchar(30) Столбец будет добавлен последним и со значением NULL для всех строк таблицы.
ALTER TABLE таблица ADD CONSTRAINT ограничение Такие запросы дают возможность только добавлять индексы, позволяющие использовать соответствующие поля в качестве первичных или внешних ключей. ALTER TABLE [Пример] ADD CONSTRAINT SimpleConstraint UNIQUE (ФАМИЛИЯ, ИМЯ)
ALTER TABLE таблица DROP [COLUMN] столбец Ключевое слово COLUMN использовать не обязательно, например: ALTER TABLE [Пример] DROP ТЕЛЕФОН
ALTER TABLE таблица DROP CONSTRAINT индекс Пример: ALTER TABLE [Пример] DROP CONSTRAINT Primary Key Оператор DROPДля удаления БД, таблиц или индексов можно использовать оператор DROP, имеющий следующие разновидности:
DROP DATABASE имя базы данных
DROP TABLE таблица
DROP INDEX индекс ON таблица Надо быть создателем таблицы, чтобы иметь возможность удалить ее. Выбор данныхВыбор данных представляет собой наиболее часто встречающуюся операцию, выполняемую с помощью языка SQL. Оператор SELECT – один из самых важных операторов данного языка, применяемый для выбора данных. Синтаксис этого оператора имеет следующий вид: SELECT [DISTINCT] {*, список столбцов, [псевдоним], групповая функция} FROM список таблиц [WHERE условия] [GROUP BY выражение группировки] [HAVING условие группы] [ORDER BY условие на порядок следования [ASC|DESC]], где SELECT - Список, включающий, по крайней мере, один столбец. DISTINCT - Подавляет выборку дубликатов. * - Выбирает все столбцы. Список столбцов - Выбирает заданные столбцы. Псевдоним - Дает выбранным столбцам другие заголовки. Список таблиц - Указывает таблицы, содержащие столбцы. WHERE - Ограничивает запрос строками, удовлетворяющими заданным условиям. Условия - Состоит из имен столбцов, выражений, констант и операторов сравнения. GROUP BY - Разбивает строки на группы. Выражение группировки - Определяет столбец, по значениям которого группируются строки. HAVING - Вывод конкретных групп. Условие группы - Задает условие отбора групп для вывода. ORDER BY - Задает порядок вывода строк. ASC - Сортирует строки в порядке возрастания; используется по умолчанию. DESC - Сортирует строки в порядке убывания. Операторы SELECT должны содержать слова SELECT и FROM. Другие ключевые слова, такие как WHERE или ORDER BY, являются необязательными. Если выбор данных осуществляется из нескольких таблиц, и при этом выбираются одноименные поля из разных таблиц, следует ссылаться на имена таблиц для полной идентификации полей, включаемых в результирующий набор данных, например: SELECT [Клиенты].НАЗВАНИЕ_Компании, [Компании].НАЗВАНИЕ_КОМПАНИИ FROM Клиенты, КомпанииПредложение FROMДля указания имен таблиц, из которых выбираются записи, применяется ключевое слово FROM, например: SELECT * FROM [Клиенты] Этот запрос возвратит все поля из таблицы "Клиенты". Если в результирующем наборе данных нужны только поля НАЗВАНИЕ КОМПАНИИ и ИМЯ СОТРУДНИКА, мы можем ввести следующее предложение SELECT: SELECT НАЗВАНИЕ_КОМПАНИИ, ИМЯ_ЗАКАЗЧИКА FROM [Клиенты] Пример запроса более чем к одной таблице: SELECT [Клиенты].НАЗВАНИЕ_КОМПАНИИ, [Компании].НАЗВАНИЕ_КОМПАНИИ FROM [Клиенты], [Компании] Предложение WHEREДля фильтрации результатов, возвращаемых оператором SELECT, можно использовать предложение WHERE, синтаксис которого имеет вид: WHERE выражение1 [{AND|OR} выражение2 […]] Например, вместо получения полного списка продуктов можно ограничиться только теми из них, у которых значение поля КОД КАТЕГОРИИ равно 4: SELECT * FROM [Продукты] WHERE КОД_КАТЕГОРИИ = 4 В предложении WHERE можно использовать различные выражения, например: SELECT * FROM [Продукты] WHERE КОД_КАТЕГОРИИ = 2 AND КОД_ПОСТАВЩИКА > 10 или SELECT ПРОДУКТ, ЦЕНА FROM [Продукты] WHERE КОММЕНТАРИЙ IS NOT NULL Выражение IS NOT NULL означает, что соответствующий столбец результирующего набора данных не может содержать пустые значения. В предложении WHERE можно использовать один из шести операторов сравнения, определенных в SQL: <, <=, <>, =, >, >= Помимо перечисленных выше простых операторов сравнения можно использовать и специальные операторы сравнения, представленные в таблице:
Приведем несколько примеров применения этих операторов. Для сопоставления данных с маской применяется ключевое слово LIKE: SELECT НАЗВАНИЕ_КОМПАНИИ, ИМЯ_ЗАКАЗЧИКА FROM [Клиенты] WHERE НАЗВАНИЕ_КОМПАНИИ LIKE 'M%' В данной маске символ % заменяет любую последовательность символов, а символ _ - один любой символ. Тот же самый результат может быть получен следующим способом: SELECT НАЗВАНИЕ_КОМПАНИИ, ИМЯ_ЗАКАЗЧИКА FROM [Клиенты] WHERE НАЗВАНИЕ_КОМПАНИИ BETWEEN 'M' AND 'N' Используя оператор IN, можно задать список значений, в котором должно содержаться значение поля: SELECT НАЗВАНИЕ_КОМПАНИИ, ИМЯ_ЗАКАЗЧИКА FROM [Клиенты] WHERE КОД_КЛИЕНТА IN ('ALFKI', 'BERGS', 'VINET') Операторы AND, OR и NOTРассмотрим следующий запрос: SELECT НАЗВАНИЕ_КОМПАНИИ, ИМЯ_ЗАКАЗЧИКА FROM [Клиенты] WHERE НАЗВАНИЕ_КОМПАНИИ LIKE 'С%' AND СТРАНА = 'РОССИЯ' Результатом выполнения этого запроса будет список компаний-заказчиков, находящихся в России, название которых начинается с буквы С. Оператор OR позволяет выбрать записи, удовлетворяющие хотя бы одному из перечисленных условий, в то время как оператор NOT используется для исключения из набора данных тех записей, которые удовлетворяют этому условию. Например, можно применять оператор OR для поиска всех компаний-заказчиков, либо находящихся в Калифорнии, либо имеющих название, начинающееся с буквы S (и при этом находящихся где угодно): SELECT НАЗВАНИЕ_КОМПАНИИ, ИМЯ_ЗАКАЗЧИКА FROM [Клиенты] WHERE НАЗВАНИЕ_КОМПАНИИ LIKE 'S%' OR РЕГИОН ='CA' В этом случае результирующий набор данных будет содержать записи, в которых значение поля НАЗВАНИЕ_КОМПАНИИ удовлетворяет первому условию, а также все записи, в которых значение поля РЕГИОН удовлетворяет второму условию. Для исключения некоторых заказчиков из результирующего набора данных можно использовать запрос вида: SELECT НАЗВАНИЕ_КОМПАНИИ, ИМЯ_ЗАКАЗЧИКА FROM [Клиенты] WHERE СТРАНА NOT IN ('USA', 'UK') В результате выполнения этого запроса мы получим список заказчиков из всех стран, кроме США и Украины. Предложение ORDER BYПредложение ORDER BY (необязательное) применяется для сортировки результирующего набора данных по одной или нескольким столбцам. Для определения порядка сортировки используются ключевые слова ASC (по возрастанию) или DESC (по убыванию). По умолчанию данные сортируются по возрастанию. Синтаксис предложения ORDER BY имеет вид: ORDER BY столбец1 [{ASC|DESC}] [, столбец2 [{ASC|DESC}][,…] Например, для сортировки списка сотрудников по фамилии и затем по имени следует использовать следующий SQL-запрос: SELECT ФАМИЛИЯ, ИМЯ, ОТЧЕСТВО FROM [Сотрудники] ORDER BY ФАМИЛИЯ, ИМЯ Если требуется отсортировать данные в убывающем порядке (например, необходим список продуктов в порядке убывания цен), используется ключевое слово DESC: SELECT НАЗВАНИЕ_ПРОДУКТА, ЦЕНА FROM [Продукты] ORDER BY ЦЕНА DESC Используя предложение SELECT и ключевое слово INTO, мы можем создавать новые таблицы, основанные на условии, указанном в предложении WHERE. Например: SELECT * INTO [Новые заказы] FROM [Заказы] WHERE ДАТА_ЗАКАЗА > 1/1/97 Этот запрос создаст новую таблицу "Новые заказы" и заполнит ее данными о заказах, начиная с 1 января 1997 года. Связывание таблицС помощью языка SQL можно создавать запросы, позволяющие извлечь данные из нескольких таблиц. Одна из возможностей сделать это заключается в связывании таблиц по одному или нескольким полям. Без связывания таблиц в результате запроса получится набор данных, содержащий все возможные комбинации строк каждой из исходных таблиц: SELECT НАЗВАНИЕ_ПРОДУКТА, НАЗВАНИЕ_КАТЕГОРИИ FROM [Продукты], [Категории] В то время как запрос SELECT НАЗВАНИЕ_ПРОДУКТА, НАЗВАНИЕ_КАТЕГОРИИ FROM [Продукты], [Категории] WHERE [Продукты].КОД_КАТЕГОРИИ = [Категории].КОД_КАТЕГОРИИ приводит к отображению списка продуктов с указанием, к какой категории принадлежит данный продукт. В общем случае синтаксис для связывания таблиц имеет вид: SELECT список столбцов FROM таблица1, таблица2 WHERE таблица1.столбец1 = таблица2.столбец2 Существует несколько типов связывания таблиц. Например, следующий оператор SQL осуществляет так называемое внутреннее соединение таблиц (inner join) - в этом случае в результирующем наборе данных содержатся записи, в которых значения в связанных полях совпадают: SELECT НАЗВАНИЕ_ПРОДУКТА, НАЗВАНИЕ_КАТЕГОРИИ FROM [Продукты] INNER JOIN [Категории] ON [Продукты].КОД_КАТЕГОРИИ = [Категории].КОД_КАТЕГОРИИ Внешнее соединение (outer joins) позволяют нам включить в результат запроса все строки из одной таблицы и соответствующие им строки из другой таблицы, например: SELECT НАЗВАНИЕ_ПРОДУКТА, НАЗВАНИЕ_КАТЕГОРИИ FROM [Продукты] LEFT OUTER JOIN [Категории] ON [Продукты].КОД_КАТЕГОРИИ = [Категории].КОД_КАТЕГОРИИ Это было так называемое левое внешнее соединение (left outer join). Существуют также правые внешние соединения (right outer join), возвращающие все строки из второй (то есть правой) таблицы и соответствующие им строки из другой таблицы: SELECT НАЗВАНИЕ_ПРОДУКТА, НАЗВАНИЕ_КАТЕГОРИИ FROM [Продукты] RIGHT OUTER JOIN [Категории] ON [Продукты].КОД_КАТЕГОРИИ = [Категории].КОД_КАТЕГОРИИ Комбинируя левое и правое внешние соединения, можно получить полное внешнее соединение, возвращающее все данные из обеих таблиц: SELECT НАЗВАНИЕ_ПРОДУКТА, НАЗВАНИЕ_КАТЕГОРИИ FROM [Продукты] FULL OUTER JOIN [Категории] ON [Продукты].КОД_КАТЕГОРИИ = [Категории].КОД_КАТЕГОРИИ Для получения всех комбинаций строк из обеих таблиц можно использовать ключевое слово CROSS JOIN без указания связываемых полей: SELECT НАЗВАНИЕ_ПРОДУКТА, НАЗВАНИЕ_КАТЕГОРИИ FROM [Продукты] CROSS JOIN [Категории] Если в запросе используется более трех таблиц, можно использовать вложенные соединения. Предложение GROUP BYДля вычисления суммарных значений на основе данных одной или нескольких таблиц можно использовать предложение GROUP BY, имеющее такой синтаксис: GROUP BY {столбец1}[,…] Например, запрос SELECT [Клиенты].КОД_КЛИЕНТА, COUNT ([Заказы].КОД_ЗАКАЗА) AS КОЛИЧЕСТВО_ЗАКАЗОВ FROM [Клиенты] INNER JOIN [Заказы] ON [Клиенты].КОД_КЛИЕНТА = [Заказы].КОД_ЗАКАЗА GROUP BY [Клиенты].КОД_КЛИЕНТА ORDER BY КОЛИЧЕСТВО_ЗАКАЗОВ DESC связывает две таблицы, сортирует их по полю КОД_КЛИЕНТА, для каждого значения поля КОД_КЛИЕНТА создает одну строку в результирующем наборе данных и вычисляет количество значений поля КОД_ЗАКАЗА для каждого значения КОД_КЛИЕНТА. В приведенном выше примере запроса мы использовали в предложении SELECT агрегатную функцию COUNT, вычисляющую количество значений. В таблице дан список наиболее часто используемых агрегатных функций:
Реализация операций реляционной алгебры оператором SELECTС помощью предложения SELECT можно реализовать любую операцию реляционной алгебры. □ Выборка (горизонтальное подмножество) таблицы создается из тех ее строк, которые удовлетворяют заданным условиям. Пример: SELECT * FROM Clients WHERE City = 'Тверь' □ Проекция (вертикальное подмножество) таблицы создается из указанных ее столбцов (в заданном порядке) с последующим исключением избыточных дубликатов строк. Пример: SELECT DISTINCT City FROM Clients □ Объединение двух таблиц содержит те строки, которые есть либо в первой, либо во второй, либо в обеих таблицах. Пример: SELECT * FROM Clients WHERE Age = (SELECT MIN(Age) FROM Clients) UNION SELECT * FROM Clients WHERE Age = (SELECT MAX(Age) FROM Clients) □ Пересечение двух таблиц содержит только те строки, которые есть и в первой, и во второй. Пример: SELECT * FROM Clients WHERE Age IN (SELECT MIN(Age) FROM Clients) □ Разность двух таблиц содержит только те строки, которые есть в первой, но отсутствуют во второй. Пример: SELECT * FROM Clients WHERE City NOT IN (SELECT City FROM Clients GROUP BY City HAVING Count(*)<=10) □ Декартово произведение таблиц и различные виды соединений рассмотрены ниже. Модификация данныхЯзык SQL может быть использован для обновления и удаления данных, копирования записей в другие таблицы и выполнения многих других операций. Оператор UPDATEДля изменения значений в одном или нескольких столбцах таблицы применяется оператор UPDATE. Синтаксис этого оператора имеет вид: UPDATE table SET столбец1 = выражение1 [, столбец2 = выражение2] […] [WHERE критерий] Выражение в предложении SET может быть константой или результатом вычислений. Например, для повышения цен всех продуктов, стоимостью менее 10 долл. можно выполнить следующий запрос: UPDATE [Продукты] SET ЦЕНА = ЦЕНА * 1.1 WHERE ЦЕНА < 10 Оператор DELETEДля удаления строк из таблиц следует использовать оператор DELETE, синтаксис которого имеет вид: DELETE FROM таблица [WHERE критерий] Предложение WHERE не является обязательным, но если забыть его включить, то из таблицы будут удалены все записи. Например, для удаления из списка всех продуктов, которые больше не поставляются, можно выполнить следующий запрос: DELETE FROM [Продукты] WHERE ПОСТАВКА = 1 Полезно использовать оператор SELECT с тем же синтаксисом, что и оператор DELETE, чтобы проверить, какие именно записи будут удалены, прежде чем действительно их удалять: SELECT НАЗВАНИЕ_ПРОДУКТА FROM [Продукты] WHERE ПОСТАВКА = 1 Можно использовать в предложении WHERE более сложный критерий для определения того, какие записи должны быть удалены. Предположим, нам нужно удалить из списка клиентов тех из них, кто не имел заказов до определенной даты. Сначала для этого необходимо выполнить следующий SELECT, чтобы определить, что именно мы удаляем: SELECT НАЗВАНИЕ_КОМПАНИИ FROM [Клиенты] WHERE [Клиенты].КОД_КЛИЕНТА NOT IN (SELECT КОД_КЛИЕНТА FROM [Заказы] WHERE ДАТА_ЗАКАЗА > 01/01/96) а затем заменить оператор SELECT на оператор DELETE: DELETE FROM [Клиенты] WHERE [Клиенты].КОД_КЛИЕНТА NOT IN (SELECT КОД_КЛИЕНТА FROM [Заказы] WHERE ДАТА_ЗАКАЗА > 01/01/96) Оператор INSERTДля добавления записей в таблицы следует использовать оператор INSERT, синтаксис которого имеет вид: INSERT [INTO] таблица ([список столбцов] {VALUES ({DEFAULT|NULL|выражение} }[…] ) Например, для добавления нового клиента в таблицу "Клиенты" можно использовать следующий запрос: INSERT INTO [Клиенты] (КОД_КЛИЕНТА, НАЗВАНИЕ_КОМПАНИИ) VALUES ('XYZFO', 'XYZ Deli') |
Тема Архитектура предприятия Исторические аспекты архитектуры предприятия.... Ения. Комплекс проектов совершенствования деятельности. Пути развития архитектуры предприятия. Типичные пользователи. Архитектура... |
План лекции Язык sql в субд. Структура команды sql. Типы данных. Выражения База данных (БД) – это информационная модель объекта – именованная совокупность данных, отображающая состояние объектов, их свойства... |
||
Пер с англ. — М. Издательский Архитектура системы баз данных 65 Глава Введение в реляционные базы данных 92 |
Программа фиэб направление подготовки 230100 «Информатика и вычислительная... Архитектура баз данных. Модели данных. Иерархические, сетевые, реляционные модели данных. Модель «сущность-связь». Уровни проектирования:... |
||
Лекция I и проблема языка и сознания лекция II 31 слово и его семантическое... Монография представляет собой изложение курса лекций, про* читанных автором на факультете психологии Московского государственного... |
Лекция I и проблема языка и сознания лекция II 31 слово и его семантическое... Монография представляет собой изложение курса лекций, про* читанных автором на факультете психологии Московского государственного... |
||
Инструкция по переносу данных по «Луч» из бд ms access в бд ms sql server Москва, 2011 По «Луч») является техническим документом Небанковской кредитной организации закрытого акционерного общества «Национальный расчетный... |
1. Показать развитие и классификацию однопроцессорных архитектур... Архитектура общая функциональная и структурная организация машины, определяющая методы кодирования данных, состав, назначение, принципы... |
||
Содержание Введение Лекция Базы данных и файловые системы Файловые системы 1 Структуры файлов Лекция Ранние подходы к организации бд. Системы, основанные на инвертированных списках, иерархические и сетевые субд. Примеры. Сильные... |
Литература 58 Лекция №15 Понятия и сущность данных, информации, знаний.... Лекция № Поиск полных текстов научных документов в мировых издательских системах 33 |
||
Многоканальный цифровой комплекс регистрации сигналов «фантом» руководство по эксплуатации ... |
Управление ит-инфраструктурой Понятие «информационно-технологическая инфраструктура», связь с понятиями «архитектура предприятия», «архитектура информационной... |
||
Приказ о назначении ответственного лица в области обработки и защиты... Постановление Правительства Российской Федерации от 1 ноября 2012 г. №1119 «Об утверждении требований к защите персональных данных... |
Лекция Предмет, задачи и методы перевода Лекция Общая характеристика современной теории перевода. Лекция Переводческая эквивалентность |
||
Лекция Основы процесса тестирования по 3 Лекция Как протестировать неизвестную программу или наращиваемый подход к первичному функциональному тестированию по. 17 |
Пояснительная записка Студент Организация данных. Sql дает пользователю возможность изменять структуру представления данных, а также устанавливать отношения между... |
Поиск |