Слайд 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
условие ];
Слайд 25Основы SQL: команды
Строки: удаление
DELETE FROM `table_name`
[ WHERE условие ];
Слайд 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
|
+------------+