Слайд 2Основы SQL: MySQL
Будем использовать MySQL
СУБД с открытым кодом
Бесплатная версия (Community Edition) –

на www.mysql.com
Слайд 3Основы SQL: языки запросов
Операции:
над множествами (объединение, пересечение, разность, деление, декартово произведение) над

отношениями
Слайд 4Основы SQL: языки запросов
В реляционных СУБД – две группы языков:
реляционная алгебра (операнды

и результаты – отношения)
реляционное исчисление (декларативные языки – запросы)
Слайд 5Основы SQL: SQL?
Structured Query Language — язык структурированных запросов
Информационно-логический язык, а не

язык программирования!
Для создания, модификации и управления данными в РБД.
Слайд 6Основы SQL: синтаксис
Операторы состоят из:
имен операций и функций;
имен таблиц и

их столбцов;
зарезервированных ключевых слов и специальных символов;
логических, арифметических и строковых выражений.
Слайд 7Основы SQL: синтаксис
Общий вид простого оператора:
ГЛАГОЛ параметры;
Пример:
SELECT `id` FROM `mytable`;

Слайд 8Основы SQL: синтаксис
Выражения не зависят от регистра, не требуют наличия кавычек...
«Правильный» стиль:
INSERT

INTO `news` (`id`,`post_date`) VALUES (42, '2008-06-01 04:13:15');
Слайд 9Основы SQL: синтаксис
Комментарии:
-- Структура таблицы
/*
Версия сервера: 5.0.54
Версия PHP: 5.2.6RC1-pl1

*/
Слайд 10Основы SQL: типы данных
Целые числа:
TINYINT — 1 байт, -128..127 (0..255);
SMALLINT — 2

байта, -32768..32767;
MEDIUMINT — 3 байта;
INT — 4 байта;
BIGINT — 8 байт.
Слайд 11Основы SQL: типы данных
Дробные числа:
FLOAT (4 байта);
DOUBLE (8 байт).

Слайд 12Основы SQL: типы данных
Строки:
CHAR — дополняет до «ширины»;
VARCHAR — использует

минимум;
(TINY|MEDIUM|LONG)BLOB — бинарные данные;
TEXT — текстовые данные;
ENUM — одно из значений;
SET — ноль или более значений.
Слайд 13Основы SQL: типы данных
Другие:
BOOL, BOOLEAN;
SERIAL — BIGINT UNSIGNED NOT NULL

AUTO_INCREMENT UNIQUE;
DATETIME, DATE, TIMESTAMP, TIME, YEAR.
Слайд 14Основы SQL: команды
Базы данных: создание
CREATE DATABASE `db_name`;
* MySQL позволяет создавать БД с

кириллическими и спец. символами в названии, но принято использовать латинские буквы, цифры и «_».
Слайд 15Основы SQL: команды
Базы данных: удаление
DROP DATABASE `db_name`;
Базы данных: смена текущей
USE `db_name`;

Слайд 16Основы SQL: команды
Таблицы: создание
CREATE TABLE `table_name` (
/*описание полей таблицы*/
`название_поля` тип параметры,
`название_поля`

тип,
`название_поля` тип параметры
);
Слайд 17Основы SQL: команды
Таблицы: создание
Пример:
CREATE TABLE `news` (
`id` mediumint(8) UNSIGNED PRIMARY

KEY NOT NULL AUTO_INCREMENT,
`posted` TIMESTAMP NOT NULL,
`content` TEXT,
);
Слайд 18Основы SQL: команды
Таблицы: модификации
Переименование
ALTER TABLE `table_name` RENAME TO `table_name2`;

Слайд 19Основы SQL: команды
Таблицы: модификации
Добавление столбца
ALTER TABLE `table_name`
ADD COLUMN `new_column`
описание_столбца
[FIRST

| AFTER`after_column`];
Слайд 20Основы SQL: команды
Таблицы: модификации
Модификация столбца
ALTER TABLE `table_name`
MODIFY COLUMN `bad_column`
описание_столбца;

Слайд 21Основы SQL: команды
Таблицы: модификации
Удаление столбца
ALTER TABLE `table_name`
DROP COLUMN
`very_bad_column`;

Слайд 22Основы SQL: команды
Таблицы: удаление
DROP TABLE `table_name`;

Слайд 23Основы SQL: команды
Строки: добавление
INSERT INTO `table_name`
[ (`field1`,`field2`, ..., `fieldN`) ]
VALUES

('value1',
'value2', ..., `valueN`);
Слайд 24Основы SQL: команды
Строки: модификация
UPDATE `table_name`
SET `field1`='value1',
`field2`='value2', ...,
`fieldN`='valueN'
[ WHERE
![Основы SQL: команды Строки: модификация UPDATE `table_name` SET `field1`='value1', `field2`='value2', ..., `fieldN`='valueN' [ WHERE условие ];](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/878088/slide-23.jpg)
условие ];
Слайд 25Основы SQL: команды
Строки: удаление
DELETE FROM `table_name`
[ WHERE условие ];
![Основы SQL: команды Строки: удаление DELETE FROM `table_name` [ WHERE условие ];](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/878088/slide-24.jpg)
Слайд 26Основы SQL: выборка
SELECT `field1`,
`field2`, ..., `fieldN`
FROM `table1`,
`table2`, ..., `tableN`

[ WHERE условие ]
[ ORDER BY `field1`,
`field2`, ..., `fieldN`
[ ASC | DESC ] ]
Слайд 27Основы SQL: выборка
SELECT * FROM `table_name`;
+------+------+
| num | id |

+------+------+
| 1 | 1 |
| 1 | 2 |
| 3 | 2 |
| 1 | 7 |
| 2 | 1 |
| 1 | 42 |
+------+------+
Слайд 28Основы SQL: выборка
WHERE
Условный оператор
Используется для исключения строк
Дописывается в выражение с SELECT

Слайд 29Основы SQL: выборка
SELECT * FROM `table_name`
WHERE `num` = 1 AND (

`id` > 5 OR `id` < 2 );
+------+------+
| num | id |
+------+------+
| 1 | 1 |
| 1 | 7 |
| 1 | 42 |
+------+------+
Слайд 30Основы SQL: выборка
ORDER BY
Определяет порядок сортировки
Добавляется после WHERE

Слайд 31Основы SQL: выборка
SELECT * FROM `table_name`
ORDER BY `num` ASC, `id` DESC;

+------+------+
| num | id |
+------+------+
| 1 | 42 |
| 1 | 7 |
| 1 | 2 |
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
+------+------+
Слайд 32Основы SQL: выборка
LIMIT
Ограничивает число строк
Добавляется в самый конец

Слайд 33Основы SQL: выборка
SELECT * FROM `table_name`
LIMIT 2;
+------+------+
| num | id |
+------+------+
|

1 | 1 |
| 1 | 2 |
+------+------+
Слайд 34Основы SQL: выборка
GROUP BY
Группирует строки
По значениям столбцов
Каждое значение должно быть единственным

Слайд 35Основы SQL: выборка
SELECT * FROM `table_name`
GROUP BY `num`;
+------+------+
| num | id

|
+------+------+
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
+------+------+
Слайд 36Основы SQL: выборка
HAVING
Аналог WHERE для ORDER BY
Исключает группы
Дописывается после ORDER BY

Слайд 37Основы SQL: выборка
SELECT * FROM `table_name`
GROUP BY `id` HAVING `id` >

1;
+------+------+
| num | id |
+------+------+
| 1 | 2 |
| 1 | 7 |
| 1 | 42 |
+------+------+
Слайд 38Основы SQL: функции
SUM – суммирование
SELECT SUM(`num`), SUM(`id`) FROM `table_name`;
+------------+-----------+
| SUM(`num`) | SUM(`id`)

|
+------------+-----------+
| 9 | 55 |
+------------+-----------+
Слайд 39Основы SQL: функции
COUNT – подсчет строк
SELECT COUNT(`num`), COUNT(DISTINCT `id`) FROM `table_name`;
+--------------+-----------------------+
| COUNT(`num`)

| COUNT(DISTINCT `num`) |
+--------------+-----------------------+
| 6 | 3 |
+--------------+-----------------------+
Слайд 40Основы SQL: функции
MIN, MAX – минимум/максимум
SELECT MIN(`num`), MAX(`num`) FROM `table_name`;
+------------+------------+
| MIN(`num`) |

MAX(`num`) |
+------------+------------+
| 1 | 3 |
+------------+------------+
Слайд 41Основы SQL: функции
AVG – среднее значение
SELECT AVG(`num`)
FROM `table_name`;
+------------+
| AVG(`num`) |
+------------+
| 1.5000

|
+------------+