Содержание

SQL

SQL – Structured Query Language (язык структурированных запросов), т.е. язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных.

Классификация SQL команд или что есть DML, DDL, DCL и TCL

Data Manipulation Language (работа со строками)

Приведенные ниже команды группы DML работают исключительно со строками и выполняются преимущественно клиентом:

--Вставка строки в таблицу books
INSERT INTO books (title, author, `year`, `description`) 
	VALUES ('Лабиринт тайных книг', 'Флавия Эрметес', 2001, 'Книга о книгах');
 
--Выборка заголовка и описания книги с ID равным 5 из таблицы books.
SELECT title, description 
	FROM books 
		WHERE id=5;
 
--Изменение строки с ID равным 4.
UPDATE books 
	SET author = 'Петр Иваныч' 
		WHERE  id = 4;
 
--Удаление записи с ID равным 3.
DELETE FROM books 
	WHERE  id=3;

Data Definition Language (работа со структурой базы)

Команды DDL подразумевают под собой создание и организацию структуры как самой БД так и ее объектов. Со строками такая группа операторов не работает вовсе.

--Создание таблицы students с полями id, name, group. ID — первичный ключ. 
--Сравнение в utf8, движок MyISAM.
CREATE TABLE students (
	`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
	`name` VARCHAR(255) NOT NULL,
	`group` VARCHAR(255) NULL DEFAULT NULL,
	PRIMARY KEY (`id`)
)
COMMENT='Студенты'
COLLATE='utf8_general_ci'
ENGINE=MyISAM;
 
--Добавление в таблицу students поля "date birth" после поля ID с разрешением не заполненных значений.
ALTER TABLE `students`
	ADD COLUMN `date birth` DATE NULL AFTER `id`;
 
--Удаление таблицы studets.
DROP TABLE studets;

Data Control Language (работа с правами доступа)

Следующая группа служит для разграничения прав пользователей, т.к. с одной базой скорее всего будут работать как минимум несколько человек/клиентов. По-умолчанию у новых пользователей прав никаких нет.

--Назначение права выборки из таблицы student пользователю new_user.
GRANT SELECT ON student TO new_user;
 
--Запрет права выборки из таблицы student пользователя new_user.
DENY SELECT ON student TO new_user;
 
--Отменить запрет.
REVOKE SELECT ON student FROM new_user;

Transaction Control Language (работа с транзакциями)

Группа команд по работе с транзакциями, в остальном — тема целой статьи.

--Добавление новой строки в таблицу books. Принять изменения.
BEGIN TRANSACTION;
INSERT INTO books (title, author, YEAR, description) 
	VALUES ('Новая книга', 'Василий Ежиков', 2005, 'Книга о новом');
COMMIT WORK;
 
--Добавление новой строки в таблицу books. Удаление записи. Откатить все изменения.
BEGIN TRANSACTION;
INSERT INTO books (title, author, YEAR, description) 
	VALUES ('Новая книга', 'Василий Ежиков', 2005, 'Книга о новом');
DELETE FROM books WHERE id=3;
ROLLBACK WORK;

SELECT

SELECT *
FROM `table` AS `name`
LEFT JOIN `table2` AS `name2` ON `table`.`t2id` = `table2`.`id`
WHEREORDER BY

Обзор функций

математические функции

Тригонометрические функции работают с радианами:

Работа со строками

Пример:

UPDATE `table_name` 
	SET `field_name` = REPLACE(`field_name`, 'что_заменить', 'чем_заменить') 
		WHERE доп_условие_если_нужно;

Статистические

SQL COUNT

Функция SQL COUNT

Функция SQL COUNT возвращает количество записей в запросе. Синтаксис функции COUNT:

SELECT COUNT(expression) FROM TABLE WHERE predicates;

Функция COUNT принимает один из нескольких параметров:

Примеры SQL COUNT

Напишем запрос SELECT COUNT, возвращающий количество записей в таблице users.

SELECT COUNT(*) FROM users;

Напишем запрос, возвращающий количество записей столбца User_ID в таблице users, дата которых равна «20.05.2012».

SELECT COUNT(User_ID) FROM users WHERE DATE = «20.05.2012»;

Теперь получим количество только разных записей столбца User_ID.

SELECT COUNT(DISTINCT User_ID) FROM users;

Функция SQL AVG

Функция SQL AVG необходимо в случае, если требуется вычислить среднее значение числового столбца в таблице. Среднее значение функция AVG() в SQL вычисляет среднее значение столбца путем суммирования всех значений записей столбца и деления на количество записей.

Рассмотрим пример. Допустим в таблице Price есть столбец Price_unit. В этой таблице содержатся 5 записей. Значения полей столбца Price_unit 3, 5, 14, 38 и 83. Выполним запрос, возвращающий среднее значение столбца Price_unit

SELECT AVG(Price_unit) AS PriceAvg FROM Price;

Результатом выполнения запроса будет

PriceAvg = 28,6