среда, 11 ноября 2009 г.

Работаем с mysql

Подключение к базе:
mysql -h HOSTNAME -uUSERNAME -pPASSWD -DDATABASE ;
Просмотр доступных баз:
show databases;
Переключение на работу с нужной базой:
use DATABASE;
Просмотр таблиц:
show tables;
Просмотр структуры интересующей таблицы:
show columns from TABLENAME;
Выборка данных:
select КАКИЕ ПОЛЯ ПОКАЗАТЬ from ИМЯ_ТАБЛИЦЫ where УСЛОВИЯ;

Полезные штуки:
select count(*) ...
посчитает кол-во строк удовлетворяющих условиям

... group by КОЛОНКА
сгрупирует записи у которых если повторяющиеся значения в каком-то поле

... order by КОЛОНКА
отсортирует по полю

select date_format(time, '%Y-%m-%d')
форматирует поле с датой в нужном нам формате

limit 0, 30
ограничивает кол-во строк для вывода в формате: номер строки с которой начинать выборку, кол-во строк которые надо вывести

select sum(КОЛОНКА)
ссумирует значения в колонке

Примеры из жизни:

 select date_format(TIME, '%Y-%m-%d'), count(url) 
from ERRORS 
where code=504 or code=502 
group by to_days(TIME) 
order by TIME;
+-------------------------------+------------+
| date_format(TIME, '%Y-%m-%d') | count(URL) |
+-------------------------------+------------+
| 2009-11-06                    |        814 | 
| 2009-11-07                    |       1591 | 
| 2009-11-08                    |        761 | 
| 2009-11-09                    |       1145 | 
| 2009-11-10                    |       1917 | 
| 2009-11-11                    |       1438 | 
+-------------------------------+------------+

mysql> select count(*) 
from errors 
where code=504 and time between '2009-11-09 00:00:27' and now();
+----------+
| count(*) |
+----------+
|     4467 | 
+----------+
1 row in set (0.02 sec)

mysql> select sum(BYTESCOUNT) 
from CONTENTTRAFFIC 
where DATE = date_format(NOW(), '%Y-%m-%d');


mysql> select * 
from SITECALLSTATDETAILED 
group by REQUESTURL 
order by CNT desc 
limit 10 ;

mysql> select sum(BYTESCOUNT)  
from CONTENTTRAFFIC 
where DATE between '2009-10-10 00:00:00' and '2009-10-10 23:59:59';

mysql> select ROUND(sum(BYTESCOUNT)/1024/1024/1024), DATE  
from CONTENTTRAFFIC 
group by DATE 
order by DATE;

Комментариев нет:

Отправить комментарий