Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭКЗАМЕН АИС.DOC
Скачиваний:
13
Добавлен:
05.12.2018
Размер:
424.45 Кб
Скачать

Вопрос 39 Реляционный способ доступа к данным. Особенности языка структурированных запросов sql. Организация динамического запроса. Поиск, сортировка данных.

Определение выборки предложение WHERE

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

ПР: Предпо­ложим, необходимо узнать имена всех продавцов в Лондоне (London). В этом случае можно ввести следующую команду:

SELECT sname, city FROM Salespeople WHERE city = 'London';

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

Использование реляционных и булевых операторов.

Реляционный оператор — это математический символ, который задает оп­ределенный тип сравнения между двумя значениями. SQL распознает следующие операторы сравнения:

= Равно

> Больше, чем

< Меньше, чем

>= Больше или равно

<= Меньше или равно

<> Неравно

SQL распознает основные булевы операторы. Булевы выражения — это те выражения, относительно которых, подобно предикатам, можно сказать, истин­ны они или ложны. Булевы операторы связывают одно или несколько значений "истина/ложь" и в результате получают единственное значение "истина/ложь". Стандартные булевы операторы, распознаваемые SQL, — это AND, OR, NOT. Существуют и другие, более сложные булевы операторы (как, например, "исклю­чающее ИЛИ. Далее перечислены булевы операторы и основные принципы их действия:

AND берет два булевых выражения (в виде A AND В) в качестве аргументов и дает в результате истину, если они оба истинны.

OR два булевых выражения (в виде A OR В) в качестве аргументов и оценивает результат как истину, если хотя бы один из них истинен.

NOT берет единственное булево выражение (в виде NOT А) в качестве аргу­мента и изменяет его значение с истинного на ложное или с ложного на истинное.

Используя предикаты с булевыми операторами, можно значительно увели­чить их избирательную мощность. Предположим, необходимо увидеть всех по­купателей (customers) из San Jose, чей рейтинг (rating) превышает 200:

SELECT *FROM Customers WHERE city = 'San Jose' AND rating > 200;

При использовании OR , будут получены сведения обо всех тех покупателях (customers), которые либо проживают в San Jose, либо имеют рейтинг (rating), превышающий 200.

SELECT *FROM Customers WHERE city = 'San Jose' OR rating > 200;

Использование специальных операторов в «условиях»

Оператор IN

IN полностью определяет множество, которому данное значение может при­надлежать или не принадлежать. Если нужно найти всех продавцов, располо­женных либо в 'Barcelona', либо в 'London', основываясь только на том, что известно к настоящему моменту, необходимо написать следующий запрос:

SELECT *FROM SalespeopleWHERE city IN ('Barcelona', 'London');

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

Оператор BETWEEN

Оператор BETWEEN задает границы, в которые должно попадать значение, чтобы предикат был истинным. Используется ключевое слово BETWEEN, за которым следуют начальное значение, ключевое слово AND и конечное значение.

Следующий запрос позволит извлечь из таблицы Salespeople всех продавцов (salespeople), комиссионные которых имеют величину в диапазоне 0.2 и 0 .6:SELECT FROM Salespeople WHERE comm BETWEEN 0.1 AND 0.6;

Следующий запрос выбирает всех покупателей имена которых попадают в заданный алфавитный диапазон:SELECT *FROM Customers WHERE cname BETWEEN 'A' AND 'G';

Оператор LIKE

LIKE применим только к полям типа CHAR или VARCHAR, поскольку он используется для поиска подстрок. Для чего используются шаблоны — специальные символы, которые могут обозначать все, что угодно:

  • Символ "подчеркивание" (_) заменяет один любой символ.

  • Символ "процент" (%) заменяет последовательность символов произвольной длины, в том числе и нулевой.

Можно найти покупателей, фамилии которых начинаются на 'G' :SELECT * FROM Customers WHERE cname LIKE 'G%';

Упорядочение выходных полей

В SQL применяется команда ORDER BY, позволяющая внести некоторый порядок в выходные данные запроса. Она их упорядочивает в соответствии со значениями одного или нескольких выбранных столбцов. Множество столбцов упорядочиваются один внутри другого, и можно задать возрастающую (ASC) или убывающую (DESC) последовательность сортировки для каждого из столбцов.

Таблица заявок (Orders), упорядоченная по номеру заявки, выглядит так:

SELECT* FROM Orders ORDER BY cnum DESC;

Внутри уже произведенного упорядочения по полю cnum можно упорядочить таблицу и по другому столбцу, например, amt: SELECT *FROM Orders ORDER BY cnum DESC, amt DESC;

Примеры динамических запросов к таблицам баз данных.

procedure TForm1.BitBtn1Click(Sender: TObject);

var

str:string;

begin

Query1.Close;

Query1.SQL.Clear;

Query1.SQL.Add('select* FROM klient.db');

case RadioGroup1.ItemIndex of

0:str:='WHERE Nklient=2';

1:str:='WHERE Nklient<2';

end;

Query1.SQL.Add(str);

Query1.Open;

end;

procedure TForm1.Button2Click(Sender: TObject);

var

b:string;

begin

b:=edit1.Text;

Query2.Close;

Query2.SQL.Clear;

Query2.SQL.Add('select* from klient.db where Nklient="'+b+'"');

Query2.Open;

end;

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