Ключевые слова Аll и DISTINCT




До этого момента мы рассматривали, как извлечь все или заданные колонки из одной или нескольких таблиц. Для управления выводом дублирующихся строк результирующего набора данных можно использовать ключевые слова ALL или DISTINCT в предложении SELECT. Ключевое слово DISTINCT указывает, что строки результирующего набора данных должны быть уникальны, тогда как ключевое слово ALL указывает, что возвращать следует все строки. Например, для извлечения списка стран, в которых имеются заказчики, можно использовать следующий запрос:

• SELЕCT DISTINCT Country FROM Customers

Ключевое слово ALL используется по умолчанию. Если в запросе требуется вывести более одного поля и при этом использовано слово DISTINCT, то результирующий набор данных будет содержать различные строки, но некоторые значения одного и того же поля в разных строках могут совпадать.

Ключевое слово ТОР может быть использовано для возврата первых n строк или первых n процентов таблицы. Например, запрос:

SELECT TOP 10 * FROM PRODUCTS ORDER BY ProductName

возвращает первые 10 продуктов из таблицы, тогда как запрос:

SELECT TOP 25 PERCENT * FROM PRODUCTS ORDER BY ProductName

вернет первую четверть записей таблицы.

Язык SQL может быть использован для обновления и удаления данных, копирования записей в другие таблицы и выполнения многих других операций. Мы рассмотрим операторы UPDATE, DELETE и INSERT, используемые для решения некоторых из этих задач.

Для изменения значений в одной или нескольких полях таблицы применяется оператор UPDAT E:

UPDATE имя таблицы SET поле1 =выражение1 [, поле2 = выражение2] [,...] [WHERE критерий]

Выражение в предложении SET может быть константой или результатом вычислений. Например, для повышения цен всех продуктов, стоимостью менее 10 долл. можно выполнить следующий запрос:

UPDATE Products

SET UnitPrice = UnitPrice * 1.1

WHERE UnitPrice< 10

Для удаления строк из таблиц следует использовать оператор DELETE:

DELETE FROM имя таблицы WHERE критерий

 

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

Например, для удаления из списка всех продуктов, которые больше не поставляются, можно выполнить следующий запрос:

DELETE

FROM Products WHERE Discontinued = 1

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

SELECT ProductName FROM Products WHERE Discontinued =1

Можно использовать в предложении WHERE более сложный критерий для определения того, какие записи должны быть удалены. Предположим, нам нужно удалить из списка клиентов тех из них, кто не имел заказов до определенной даты. Сначала для этого необходимо выполнить следующий оператор SELECT, чтобы определить, что именно мы удаляем:

SELECT CompanyName FROM Customers

WHERE Customers.CustomerlD NOT IN

(SELECT CustomerlD FROM Orders WHERE OrderDate > 01/01/96),

 

а затем заменить оператор SELECT на оператор DELETE:

DELETE FROM Customers

WHERE Customers.CustomerlD NOT IN

(SELECT CustomerlD FROM Orders WHERE OrderDate > 01/01/96)

 

При использовании в операторах SQL даты или времени, а также полей, содержащих такие данные, следует уточнить синтаксис этих предложений в документации из комплекта поставки используемой СУБД

Оператор INSERT

Для добавления записей в таблицу следует использовать оператор INSERT:

INSERT INTO имя таблицыe (список полей) VALUES (значения полей в одной записи)

Например, для добавления нового клиента в таблицу Customers можно использовать следующий запрос:

INSERT INTO Customers (CustomerlD, CompanyName) VALUES ('XYZFO', 'XYZDeli')

Модификация метаданных

Существуют несколько операторов SQL для управления метаданными, которые используются для создания, изменения или удаления баз данных и содержащихся в них объектов (таблиц, представлений и др.). Мы рассмотрим некоторые из них: CREATE TABLE, ALTER TABLE и DROP.

Для создания новой таблицы необходимо использовать оператор CREATE TABLE:

CREATE TABLE <имя таблицы>

(полеl тип поля размер поля, поле2 тип поля размер поля, …, поле n тип поля размер поля)

В этом операторе следует указать имя поля, тип данных для него (тип данных должен поддерживаться используемой СУБД длину (для некоторых типов полей). Например, следующий запрос создает таблицу с именем Simple с четырьмя столбцами: LastName, FirstName, EMail и HomePage:

CREATE TABLE Simple (FirstName char (30), LastName char(30), EMail char(20), HomePage har(255)

Используя предложение SELECT'и ключевое слово INTO, можyj создавать новые таблицы, основанные на условии, указанном в предложении WHERE. Например:

SELECT *

INTO NewOrders

FROM Orders

WHERE OrderDate> 1/1/97

Этот запрос создаст новую таблицу NewOrders и заполнит ее данными о заказах, начиная с 1 января 1997 года.

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

Первая разновидность этого оператора используется для добавления поля к таблице, и ее синтаксис имеет вид:

ALTER TABLE <имя таблицы> ADD <имя поля> <тип> <размер>

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

ALTER TABLE Simple ADD Phone char(20)

Вторая разновидность предложения ALTER TABLE применяется для удаления поля из таблицы:

ALTER TABLE <имя таблицы> DROP <имя поля>

ALTER TABLE Simple DROP Phone

Для удаления таблиц или индексов можно использовать оператор DROP, имеющий две разновидности.

Первая из них применяется для удаления таблицы из базы данных:

DROP TABLE <имя таблицы>

Вторая разновидность используется для удаления индекса:

DROP INDEX index ON table Другие операторы SQL

Как было отмечено ранее, существует около 40 оператор SQL. Мы рассмотрели большинство из них. Некоторые из: рассмотренных нами операторов перечислены ниже:

• операторы CREATE, такие как CREATE DATABASE, CREATE VIEW, CREATE TRIGGER (два последних из них мы рассмотрим в следующей главе);

• операторы ALTER, такие как ALTER DAТА BASE, ALTER VIEW и ALTER TRIGGER,

• операторы DROP, такие как DROP DATABASE, DROP VIEW, DROP TRIGGER;

• BEGIN TRANSACTION, COMMIT TRANSACTION и ROLLBACK TRANSACTION для выполнения группы нескольких операторов как единой логической группы;

• DECLARE CURSOR, OPEN и FETCH для работы с курсорами;

• GRANT и REVOKE для добавления или удаления прав на использование объектов базы данных, а также CREATE USER, ALTER USER, DROP USER, CREATE GROUP, ALTER GROUP и DROP GROUP для управления списком пользователей и групп пользователей.

Мы узнали, что:

• SQL — непроцедурный язык, предназначенный для управления данными в реляционных СУБД. Последний официальный стандарт был опубликован ANSI в 1992 году, и современная реализация SQL называется SQL92. Язык SQL поддерживается большинством производителей СУБД. Уже есть стандарт SQL95;

• оператор SELECT следует использовать для извлечения данных из таблиц. Предложение WHERE можно применять для того, чтобы ограничить результирующий набор данных записями, удовлетворяющими заданному условию;

• предложение GROUP ВУ может быть использовано для создания результирующего набора данных, содержащего суммарные данные из одной или нескольких таблиц;

• для получения данных из нескольких таблиц можно использовать ключевое слово JOIN;

• операторы CREATE, ALTER и DROP могут быть использованы для создания, модификации и удаления баз данных и содержащихся в них объектов (таблиц, представлений и др.).



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-07 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: