
Лабораторная работа №1/SQL
Структурированный язык запросов (SQL) – введение.
Запрос – это выборка данных из одной или нескольких связанных таблиц. Для создания запросов используется специальный язык – SQL – единый для всех реализаций реляционной модели, в том числе и MS Access.
Для изучения SQL создадим и наполним данными специальную БД TRADE, описывающую взаимодействие продавцов и покупателей оптовых партий товаров.
-
Создайте новую БД с именем TRADE
-
В режиме Конструктора вкладки Таблицы создайте структуру таблиц:
-
Таблица SALES – продавцы.
-
Поле SNUM – идентификатор (номер) продавца. Тип: числовой; ключевое поле.
-
Поле SNAME – фамилия продавца. Тип: текстовый; длина –15.
-
Поле CITY – место жительства продавца. Тип: текстовый; длина –15.
-
Поле COMM – доля комиссионных продавца с проданного товара. Тип: числовой; число десятичных знаков: 2.
-
-
Таблица CUSTOMER – покупатели.
-
Поле CNUM – идентификатор (номер) покупателя. Тип: числовой; ключевое поле.
-
Поле CNAME – фамилия покупателя. Тип: текстовый; длина –15.
-
Поле CITY – место жительства покупателя. Тип: текстовый; длина –15.
-
Поле RATING – оценка активности покупателя. Тип: числовой.
-
Поле SNUM – идентификатор продавца, связанного с данным покупателем. Тип: числовой
-
-
Таблица ORDERS – покупки.
-
Поле ONUM – идентификатор (номер) покупки. Тип: числовой; ключевое поле.
-
Поле AMT – на какую сумму совершена покупка. Тип: числовой; число десятичных знаков: 2.
-
Поле ODATE – дата покупки. Тип: дата/время.
-
Поле CNUM – идентификатор покупателя, совершившего покупку. Тип: числовой.
-
Поле SNUM – идентификатор продавца, продавшего данный товар. Тип: числовой.
-
-
-
Во вкладке таблицы откройте созданные таблицы и введите данные.
Таблица SALES
SNUM |
SNAME |
CITY |
COMM |
1001 |
Peel |
London |
0.12 |
1002 |
Serres |
San Jose |
0.13 |
1003 |
Axelrod |
New York |
0.10 |
1004 |
Motika |
London |
0.11 |
1007 |
Rifkin |
Barcelona |
0.15 |
Таблица CUSTOMER
CNUM |
CNAME |
CITY |
RATING |
SNUM |
2001 |
Hoffman |
London |
100 |
1001 |
2002 |
Giovanni |
Rome |
200 |
1003 |
2003 |
Liu |
San Jose |
200 |
1002 |
2004 |
Grass |
Berlin |
300 |
1002 |
2006 |
Clemens |
London |
100 |
1001 |
2007 |
Pereira |
Rome |
100 |
1004 |
2008 |
Cisneros |
San Jose |
300 |
1007 |
Таблица ORDERS
ONUM |
AMT |
ODATE |
CNUM |
SNUM |
3001 |
18.69 |
03.10.1990 |
2008 |
1007 |
3002 |
1900.10 |
03.10.1990 |
2007 |
1004 |
3003 |
767.19 |
03.10.1990 |
2001 |
1001 |
3005 |
5160.45 |
03.10.1990 |
2008 |
1007 |
3006 |
1098.16 |
03.10.1990 |
2008 |
1007 |
3007 |
75.75 |
04.10.1990 |
2004 |
1002 |
3008 |
4723.00 |
05.10.1990 |
2006 |
1001 |
3009 |
1713.23 |
04.10.1990 |
2002 |
1003 |
3010 |
1309.95 |
06.10.1990 |
2004 |
1002 |
3011 |
9891.88 |
06.10.1990 |
2006 |
1001 |
Для изучения языка SQL следует открыть вкладку "Запросы" и создать новый запрос в режиме Конструктора, не добавляя из списка никакие таблицы. Создавать запросы нужно, нажимая кнопку "Вид" и выбирая Режим SQL, а выполнять – выбирая Режим таблицы.
Всякий запрос начинается с ключевого слова SELECT, за которым следует перечисление полей для вывода. После него следует ключевое слово FROM с названием таблицы, откуда берутся поля.
-
Простейший запрос имеет вид: SELECT snum,sname,city,comm FROM sales; Он выводит данные всех продавцов из таблицы SALES.
-
Предыдущий запрос выводит данные всех полей таблицы SALES. Более коротко список всех полей можно описать, используя идентификатор *. Поэтому предыдущий запрос более коротко можно записать так: SELECT * FROM sales;
-
Если нужно вывести только некоторые поля таблицы, следует перечислить их названия после ключевого поля SELECT. Например, SELECT sname,comm FROM sales;
-
Порядок следования столбцов соответствует очередности их перечисления в таблице: SELECT odate,snum,onum,amt FROM orders;
-
Если в таблице есть повторяющиеся данные (например, номера продавцов в таблице покупок), они выводятся в том виде, как встречаются: SELECT snum FROM orders;
-
Для устранения дубликатов в запросе используется ключевое слово DISTINCT, следующее сразу же за ключевым словом SELECT, например: SELECT DISTINCT snum FROM orders;
-
Можно ограничить вывод данных в запросе некоторым условием или комбинацией условий. Эти условия должны следовать после ключевого слова WHERE. Например, следующий запрос выводит фамилии всех продавцов из Лондона: SELECT sname,city FROM sales WHERE city="London";
-
В параметрах условия можно задавать данные различных типов, например, текстовые (как в предыдущем запросе) или числовые. Следующий запрос выводит всех покупателей с рейтингом равным 100: SELECT * FROM Customer WHERE rating=100;
Задания для самостоятельного выполнения.
-
Вывести номера покупок, даты и суммы покупок из таблицы ORDERS
-
Из таблицы продавцов вывести продавца с идентификатором равным 1001.
-
Вывести данные из таблицы SALES с полями в следующем порядке: city, sname, snum, comm
-
Вывести имя и рейтинг каждого покупателя из San Jose
-
Вывести без дубликатов номера всех продавцов из таблицы ORDERS