Материал: 2391

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Иванова

Строитель

12.11.1979

145214

12.03.1940

15

Рабочий

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

5. Выбрать все поля из таблицы Pay таким образом, чтобы в результате порядок столбцов был следующим: Sum_pay, Pay_day, T_number, Code_pay:

– в VFP, MS SQL Server, Access:

SELECT Sum_pay, Pay_day, T_number, Code_pay FROM Pay

– в Oracle:

SELECT Sum_pay, Pay_day, T_number, Code_pay FROM

ADMIN_PAY.Pay;

Выбор некоторых полей из двух (трех) таблиц.

6. Вывести список фамилий, имен, отчеств сотрудников (поля Surname, Name, Lastname), а также значения их заработных плат (поле

Sum_pay) и даты получения (поле Pay_day):

– в VFP, MS SQL Server, Access:

SELECT Surname, Name, Lastname, Sum_pay, Pay_day FROM Staff, Pay WHERE Staff.T_number = Pay.T_number

– в Oracle:

SELECT Surname, Name, Lastname, Sum_pay, Pay_day FROM

ADMIN_PAY.Staff, ADMIN_PAY.Pay WHERE Staff.T_number =

Pay.T_number;

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

AND или OR.

7. Вывести табельные номера, даты получения зарплаты и ее расклад по статьям, результат отсортировать по табельному номеру сотрудника (рис. 4):

– в VFP, MS SQL Server, Access:

SELECT T_number, Pay_day, Item_pay, Item_sum FROM Pay, Items_pay WHERE Pay.Code_pay = Items_pay.Code_pay ORDER BY T_number

– в Oracle:

18

SELECT T_number, Pay_day, Item_pay, Item_sum FROM

ADMIN_PAY.Pay, ADMIN_PAY.Items_pay WHERE Pay.Code_pay =

Items_pay.Code_pay ORDER BY T_number;

19

T_Number

Pay_day

Item_pay

Item_sum

1

01.01.2003

Премия

124.00

1

01.01.2003

Налог

-451.00

1

01.01.2003

Оклад

1457.00

1

01.01.2003

Поощрение

4512.00

1

01.01.2003

Оплата учебы

145.00

1

01.02.2003

Оклад

4656.00

1

01.02.2003

Налог

-415.00

1

01.02.2003

Поощрение

326.00

1

01.03.2003

Оклад

1654.00

 

 

Премия

 

1

01.03.2003

квартальная

1213.00

4

01.03.2003

За бездетность

-154.00

4

01.03.2003

Оклад

1456.00

4

01.03.2003

Премия разовая

1245.00

4

01.03.2003

Налог подоходный

-452.00

Рис. 4. Результат запроса с выбором полей из таблиц

8. Вывести список фамилий и табельных номеров сотрудников, а также значения их заработных плат и даты получения с раскладкой каждой зарплаты по статьям:

– в VFP, MS SQL Server, Access:

SELECT Surname, Staff.T_number, Sum_pay, Pay_day, Item_pay, Item_sum FROM Staff, Pay, Items_pay WHERE (Staff.T_number = Pay.T_number) AND (Pay.Code_pay = Items_pay.Code_pay)

– в Oracle:

SELECT Surname, Staff.T_number, Sum_pay, Pay_day, Item_pay,

Item_sum FROM ADMIN_PAY.Staff, ADMIN_PAY.Pay,

ADMIN_PAY.Items_pay WHERE (Staff.T_number = Pay.T_number) AND

(Pay.Code_pay = Items_pay.Code_pay);

Если в запросе участвует несколько таблиц и в них встречаются поля с одинаковыми названиями, то обязательно рядом с полем указывать название таблицы, из которой берется поле. Например: Staff.T_number AND – "логическое И", выполняет роль объединения двух условий и возвращает результат ИСТИНА, оба условия также возвращают результат ИСТИНА. В результат запроса помещаются только те строки, которые соответствуют условиям=ИСТИНА, записанным после

ключевого слова WHERE.

Связь таблиц в запросе – несмотря на то, что в базе данных установлены связи между таблицами, при построении запроса нужно также указать правила связи между таблицами.

20

Самый простой способ связать таблицы: в условии WHERE указать условия равенства полей связи пары таблиц; если нужно объединить три и более таблиц, то нужно перечислить пары полей связи и объединить их "логическими И", как показано в примере.

Условие совпадения.

9. Вывести список сотрудников с должностью, название которой начинается на ‘главный’:

–в MS SQL Server, Access (регистр текста не важен, но пробелы слева

иколичество символов сравниваемых текстов значимы):

SELECT Surname, Name, Lastname, Post FROM Staff WHERE Post = 'главный'

Результат выполнения запроса не будет содержать ни одной строки, так как в соответствии с примером заполнения (табл. 4) нет строк с должностью 'главный' или 'Главный'. Так же будет выглядеть результат запроса в VFP с условием точного совпадения.

– в VFP с условием точного совпадения:

SET ANSI ON &&условие точного совпадения

SELECT Surname, Name, Lastname, Post FROM Staff WHERE Post = 'главный'

– в VFP с условием неточного совпадения (рис. 5):

SET ANSI OFF

 

&&условие неточного совпадения

SELECT Surname, Name, Lastname, Post FROM Staff WHERE Post =

'главный'

 

 

 

 

 

 

 

 

 

 

 

Surname

Name

Lastname

Post

 

 

 

 

 

Главный

 

 

Артемьев

Иван

Васильевич

инженер

 

Рис. 5. Результат запроса с условием неточного совпадения

– в Oracle (регистр текста, пробелы слева и количество символов сравниваемых текстов значимы):

SELECT Surname, Name, Lastname, Post FROM ADMIN_PAY.Staff WHERE Post = 'главный';

' … ' – для выделения в запросе строковых значений используются одинарные кавычки. Например, ‘главный’.

21

Точное несовпадение значений одного из полей.

10. Вывести список сотрудников и их должности, которые не являются служащими:

– в VFP, MS SQL Server, Access:

SELECT Surname, Name, Lastname, Post FROM Staff WHERE NOT(Type_post = 'служащий')

В MS SQL Server, если в некоторых строках в столбце Type_post будет значение NULL, то эти строки не попадут в результат выполнения запроса, хотя логика функции NOT( ) должна вернуть истину.

– в Oracle:

SELECT Surname, Name, Lastname, Post FROM ADMIN_PAY.Staff

WHERE NOT(Type_post = 'служащий');

В Oracle в отличие от MS SQL Server, если в некоторых строках в столбце Type_post будет значение NULL, эти строки попадут в результат выполнения запроса.

NOT( ) – функция "логического НЕ". В примере если условие в скобках вернет ИСТИНУ, то функция NOT( ) изменит его на противоположное ЛОЖЬ и в результат строка помещена не будет. Поэтому в запросе будут выбраны только те работники, которые не являются служащими.

11. Вывести список сотрудников, которые не являются бухгалтерами, и их даты поступления на работу (рис. 6):

– в VFP, MS SQL Server, Access:

SELECT Name, Lastname, Surname, Date_input FROM Staff WHERE NOT(Post = 'бухгалтер')

– в Oracle:

SELECT Name, Lastname, Surname, Date_input FROM

ADMIN_PAY.Staff WHERE NOT(Post = 'бухгалтер');

Name

Lastname

Surname

Date_input

Василий

Михайлович

Сидоров

14.11.1999

Петр

Аркадьевич

Васильков

30.11.2000

Иван

Васильевич

Артемьев

10.02.1998

Савел

Игнатьевич

Соянов

25.06.1980

Анна

Михайловна

Иванова

12.11.1979

Рис. 6. Список сотрудников, не являющихся бухгалтерами

22

Источник: https://studfile.net/preview/16408448/