Встроенные функции языка SQL




Функции – это операции, позволяющие манипулировать данными. В MySQL можно выделить несколько групп встроенных функций:

· Строковые функции. Используются для управления текстовыми строками, например, для обрезания или заполнения значений.

· Числовые функции. Используются для выполнения математических операций над числовыми данными. К числовым функциям относятся функции, возвращающие абсолютные значения, синусы и косинусы углов, квадратный корень числа и т.д. Используются они только для алгебраических, тригонометрических и геометрических вычислений.

· Итоговые функции. Используются для получения итоговых данных по таблицам, например, когда надо просуммировать какие-либо данные без их выборки.

· Функции даты и времени. Используются для управления значениями даты и времени, например, для возвращения разницы между датами.

· Системные функции. Возвращают служебную информацию СУБД.

Для того чтобы рассмотреть основные встроенные функции, создадим новую базу данных на основе реляционной модели базы данных интернет-магазина:

СоздаемБД–shop:create database shop;

Выбираем ее для работы: useshop;

Создаем в базе данных 8 таблиц, как в схеме: Покупатели (customers), Поставщики (vendors), Покупки (sale), Поставки (incoming), Журнал покупок (magazine_sales), Журнал поставок (magazine_incoming), Товары (products), Цены (prices).

Пустьмагазин будет торговать книгами, поэтому в таблицу «Товары» добавим еще один столбец – Автор (author).

create table customers

(id_customerint NOT NULL AUTO_INCREMENT,

name char(50) NOT NULL,

email char(50) NOT NULL,

PRIMARY KEY (id_customer));

create table vendors

(id_vendorint NOT NULL AUTO_INCREMENT,

name char(50) NOT NULL,

city char(30) NOT NULL,

address char(100) NOT NULL,

PRIMARY KEY (id_vendor));

create table sale

(id_saleint NOT NULL AUTO_INCREMENT,

id_customerint NOT NULL,

date_sale date NOT NULL,

PRIMARY KEY (id_sale),

FOREIGN KEY (id_customer) REFERENCES customers (id_customer));

create table incoming

(id_incomingint NOT NULL AUTO_INCREMENT,

id_vendorint NOT NULL,

date_incoming date NOT NULL,

PRIMARY KEY (id_incoming),

FOREIGN KEY (id_vendor) REFERENCES vendors (id_vendor));

create table products

(id_productint NOT NULL AUTO_INCREMENT,

name char(100) NOT NULL,

author char(50) NOT NULL,

PRIMARY KEY (id_product));

create table prices

(id_productint NOT NULL,

date_price_changes date NOT NULL,

price double NOT NULL,

PRIMARY KEY (id_product, date_price_changes),

FOREIGN KEY (id_product) REFERENCES products (id_product));

create table magazine_sales

(id_saleint NOT NULL,

id_productint NOT NULL,

quantityint NOT NULL,

PRIMARY KEY (id_sale, id_product),

FOREIGN KEY (id_sale) REFERENCES sale (id_sale),

FOREIGNKEY (id_product) REFERENCESproducts (id_product));

createtablemagazine_incoming

(id_incomingintNOTNULL,

id_productintNOTNULL,

quantityintNOTNULL,

PRIMARYKEY (id_incoming, id_product),

FOREIGNKEY (id_incoming) REFERENCESincoming (id_incoming),

FOREIGNKEY (id_product) REFERENCESproducts (id_product));

Обратите внимание, что в таблицах «Журнал покупок», «Журнал поставок» и «Цены» первичные ключи – составные, т.е. их уникальные значения состоят из пар значений (в таблице не может быть двух строк с одинаковыми парами значений). Названия столбцов этих пар значений и указываются через запятую после ключевого слова PRIMARYKEY.

В настоящем интернет-магазине данные в эти таблицы будут заноситься посредством сценариев на каком-либо языке (типа php).

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

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

INSERTINTOvendors (name, city, address) VALUES

('Вильямс', 'Москва', 'ул. Лесная, д. 43'),

('Дом печати', 'Минск', 'пр. Ф.Скорины, д. 18'),

('БХВ-Петербург', 'Санкт-Петербург', 'ул. Есенина, д. 5');

INSERTINTOcustomers (name, email) VALUES

('Иванов Сергей', 'sergo@mail.ru'),

('Ленская Катя', 'lenskay@yandex.ru'),

('Демидов Олег', 'demidov@gmail.ru'),

('Афанасьев Виктор', 'victor@mail.ru'),

('Пажская Вера', 'verap@rambler.ru');

INSERTINTOproducts (name, author) VALUES

('Стихи о любви', 'Андрей Вознесенский'),

('Собрание сочинений, том 2', 'Андрей Вознесенский'),

('Собрание сочинений, том 3', 'Андрей Вознесенский'),

('Русская поэзия', 'Николай Заболоцкий'),

('Машенька', 'Владимир Набоков'),

('Доктор Живаго', 'Борис Пастернак'),

('Наши', 'Сергей Довлатов'),

('Приглашение на казнь', 'Владимир Набоков'),

('Лолита', 'Владимир Набоков'),

('Темные аллеи', 'Иван Бунин'),

('Дар', 'Владимир Набоков'),

('Сын вождя', 'Юлия Вознесенская'),

('Эмигранты', 'Алексей Толстой'),

('Горе от ума', 'Александр Грибоедов'),

('Анна Каренина', 'Лев Толстой'),

('Повести и рассказы', 'Николай Лесков'),

('Антоновские яблоки', 'Иван Бунин'),

('Мертвые души', 'Николай Гоголь'),

('Три сестры', 'Антон Чехов'),

('Беглянка', 'Владимир Даль'),

('Идиот', 'Федор Достоевский'),

('Братья Карамазовы', 'Федор Достоевский'),

('Ревизор', 'Николай Гоголь'),

('Гранатовый браслет', 'Александр Куприн');

INSERTINTOincoming (id_vendor, date_incoming) VALUES

('1', '2011-04-10'),

('2', '2011-04-11'),

('3', '2011-04-12');

INSERTINTOmagazine_incoming (id_incoming, id_product, quantity) VALUES

('1', '1', '10'), ('1', '2', '5'), ('1', '3', '7'), ('1', '4', '10'), ('1', '5', '10'), ('1', '6', '8'), ('1', '18', '8'), ('1', '19', '8'), ('1', '20', '8'), ('2', '7', '10'), ('2', '8', '10'), ('2', '9', '6'), ('2', '10', '10'), ('2', '11', '10'), ('2', '21', '10'), ('2', '22', '10'), ('2', '23', '10'), ('2', '24', '10'), ('3', '12', '10'), ('3', '13', '10'), ('3', '14', '10'), ('3', '15', '10'), ('3', '16', '10'), ('3', '17', '10');

INSERTINTOprices (id_product, date_price_changes, price) VALUES

('1', '2011-04-10', '100'), ('2', '2011-04-10', '130'), ('3', '2011-04-10', '90'), ('4', '2011-04-10', '100'), ('5', '2011-04-10', '110'), ('6', '2011-04-10', '85'), ('7', '2011-04-11', '95'), ('8', '2011-04-11', '100'), ('9', '2011-04-11', '79'), ('10', '2011-04-11', '49'), ('11', '2011-04-11', '105'), ('12', '2011-04-12', '85'), ('13', '2011-04-12', '135'), ('14', '2011-04-12', '100'), ('15', '2011-04-12', '90'), ('16', '2011-04-12', '75'), ('17', '2011-04-12', '90'), ('18', '2011-04-10', '150'), ('19', '2011-04-10', '140'), ('20', '2011-04-10', '85'), ('21', '2011-04-11', '105'), ('22', '2011-04-11', '70'), ('23', '2011-04-11', '65'), ('24', '2011-04-11', '130');

INSERTINTOsale (id_customer, date_sale) VALUES

('2', '2011-04-11'),

('3', '2011-04-11'),

('5', '2011-04-11');

INSERTINTOmagazine_sales (id_sale, id_product, quantity) VALUES

('1', '1', '1'),

('1', '5', '1'),

('1', '7', '1'),

('2', '2', '1'),

('3', '1', '1'),

('3', '7', '1');

Таким образом, вмагазине 24 наименованиятовара, привезенныевтрехпоставкахоттрехпоставщиков, исовершеннотрипродажи.



Поделиться:




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

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


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