SQL
– Structured Query 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;
Команды 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;
Следующая группа служит для разграничения прав пользователей, т.к. с одной базой скорее всего будут работать как минимум несколько человек/клиентов. По-умолчанию у новых пользователей прав никаких нет.
--Назначение права выборки из таблицы 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;
Группа команд по работе с транзакциями, в остальном — тема целой статьи.
--Добавление новой строки в таблицу 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 * FROM `table` AS `name` LEFT JOIN `table2` AS `name2` ON `table`.`t2id` = `table2`.`id` WHERE … ORDER BY …
Пример:
UPDATE `table_name` SET `field_name` = REPLACE(`field_name`, 'что_заменить', 'чем_заменить') WHERE доп_условие_если_нужно;
Функция SQL COUNT возвращает количество записей в запросе. Синтаксис функции COUNT:
SELECT COUNT(expression) FROM TABLE WHERE predicates;
Функция 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 необходимо в случае, если требуется вычислить среднее значение числового столбца в таблице. Среднее значение функция 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