6 запросов для MySQL

Искусство в построении запросов с использованием Structured Query Language (язык структурированных запросов) заключается в создании правильных, эффективных вопросов и команд для базы данных. В запросах SELECT можно использовать ключевые слова JOIN, WHERE и HAVING для уточнения результатов, GROUP BY для комбинирования результатов в легко анализируемые блоки, и UNION для комбинирования результатов нескольких запросов. Команды INSERT, DELETE и UPDATE могут использовать JOIN. Запрос INSERT … SELECT вставляет результаты в в другую таблицу. В запросах DELETE и UPDATE можно использовать ключевое слово WHERE, чтобы указать область действия.

Ниже приводятся 6 запросов для MySQL.
1. Возраст в годах

Если у вас в таблице хранится дата рождения и нужно вычислить возраст, то можно использовать следующий запрос. @dateofbirth - дата рождения:
	SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(now()) - TO_DAYS(@dateofbirth)), '%Y') + 0;

2. Разница между двумя датами

Находим разницу между двумя датами, выраженную в секундах, минутах, часах или днях. Если dt1 и dt2 значения дат в формате ‘yyyy-mm-dd hh:mm:ss’, то количество секунд между dt1 и dt2 вычисляется:
 	UNIX_TIMESTAMP( dt2 ) - UNIX_TIMESTAMP( dt1 )

Чтобы получить количество минут, делим вычисленное значение на 60, для вычисления количества часов - делим на 3600, а для определения количества дней - делим на 3600*24.


3. Выводим значение, которое встречается в столбце N раз
 	SELECT id
 	FROM tbl
 	GROUP BY id
 	HAVING COUNT(*) = N;

4. Вычисляем количество рабочих дней между двумя датами

Простейшим способом вычислить количество рабочих дней между двумя датами является использование таблицы календаря calendar со столбцами даты d и логического флага праздников holiday для всех дней во всех возможных годах. Затем используется соответствующий запрос, который возвращает количество рабочих дней между двумя датами Start и Stop включительно:
 	SELECT COUNT(*)
 	FROM calendar
 	WHERE d BETWEEN Start AND Stop
 	  AND DAYOFWEEK(d) NOT IN(1,7)
 	  AND holiday=0;

5. Находим основной ключ для таблицы
 	SELECT k.column_name
 	FROM information_schema.table_constraints t
 	JOIN information_schema.key_column_usage k
 	USING (constraint_name,table_schema,table_name)
 	WHERE t.constraint_type='PRIMARY KEY'
 	  AND t.table_schema='db'
 	  AND t.table_name='tbl'

6. Определяем, насколько велика таблица
 	SELECT
 	  table_schema AS 'Db Name',
 	  Round( Sum( data_length + index_length ) / 1024 / 1024, 3 ) AS 'Db Size (MB)',
 	  Round( Sum( data_free ) / 1024 / 1024, 3 ) AS 'Free Space (MB)'
 	FROM information_schema.tables
 	GROUP BY table_schema ;
Добавлено: 17 Августа 2013 06:32:06 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...