Сортируем строки в выборке в натуральном порядке (1,2,...,10,11)
mysql> select * from numbers order by value;
+----------+
| value |
+----------+
| value 1 |
| value 10 |
| value 11 |
| value 12 |
| value 13 |
| value 2 |
| value 3 |
+----------+
7 rows in set (0.00 sec)
mysql> select * from numbers order by length(value), value;
+----------+
| value |
+----------+
| value 1 |
| value 2 |
| value 3 |
| value 10 |
| value 11 |
| value 12 |
| value 13 |
+----------+
7 rows in set (0.00 sec)
Клонируем удалённую базу данных в нашу локальную
$ ssh moskva 'mysqldump mbs | gzip' | gunzip | mysql mbs
Отключить внутренний кэш для всех запросов в рамках данной сессии. При разработке благодаря этому будет всегда видно реальное время выполнения запроса
SET SESSION query_cache_type=0;
Добавляем нового пользователя в СУБД MySQL с одновременным присваиванием ему во владения вашей БД:
GRANT ALL PRIVILEGES ON наша_база.* TO 'наш_пользователь'@'localhost'
IDENTIFIED BY 'наш_пароль' WITH GRANT OPTION;
Сбрасываем auto_increment в таблице
alter table ai_test drop column id;
alter table ai_test add column id int auto_increment primary key;
Заставляем поле timestamp не изменять своё значение при изменении строки
ALTER TABLE timer CHANGE time time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
Проверить на существование таблицу в базе данных
SHOW TABLES LIKE "users";
+-----------------------+
| Tables_in_site (users) |
+-----------------------+
| users |
+-----------------------+
1 row in set (0.00 sec)
Вывести список всех пользователей в базе данных
select distinct(user) from mysql.user;
+------------------+
| user |
+------------------+
| root |
| bishon |
| dogs |
| mbs |
| test |
| whoop |
+------------------+
6 rows in set (0.06 sec)
Добавляем столбец в таблицу
ALTER TABLE blog_comments ADD spam INT DEFAULT 0;
Сменить кодировку базы данных
alter database mydatabase charset=utf8;
Сменить кодировку таблицы
alter table some_table convert to character set utf8;
Сменить кодировку столбца
alter table mytable alter column mycol charset=utf8;
Не обновлять поле timestamp при выполнении запроса
UPDATE table SET x=y, timestampColumn=timestampColumn WHERE a=b;
Отсортировать в произвольном порядке записи
SELECT * FROM user where id <= 3 order by field(`id`, 2, 3, 1)
Вывести список баз данных без заголовка
echo 'show databases' | mysql -N | grep -v information_schema | grep -v performance_schema
mbs2013
mbs2014
mbs2015
najomi
pir2013
pir2014
pir2015
Указать, какой файл с настройками использовать для соединения с сервером
$ mysql --defaults-extra-file=prj/.my.cnf
Посмотреть какие пользователи подключены к серверу и какие запросы выполняются
show full processlist
Проставить в поле сортировки значения через 10. Полезно, если используется некое числовое поле sort в ORDER BY. В этом случае для перемещения записи А между двумя другими B и С, достаточно присвоить A.sort значение между B.sort и C.sort После этого надо привести нумерацию в порядок: my_table - имя таблицы, sort_field - имя поля сортировки
DROP TEMPORARY TABLE IF EXISTS tmp_sort_table;
CREATE TEMPORARY TABLE tmp_sort_table (
id BIGINT,
sort BIGINT,
PRIMARY KEY(id)
);
set @row_num = 0;
INSERT INTO tmp_sort_table (id, sort)
SELECT
id, @row_num := @row_num + 10 as row_index
FROM `my_table` ORDER BY `sort_field` ASC;
UPDATE `my_table` AS t_upd
INNER JOIN tmp_sort_table AS t_src ON t_upd.id = t_src.id
SET t_upd.`sort_field` = t_src.`sort`;
DROP TEMPORARY TABLE IF EXISTS tmp_sort_table;
- 4 - xtips.ru
- 11 - stackoverflow.com
- 12 - yoonkit.blogspot.ru
- 13 - stackoverflow.com
- 14 - stackoverflow.com
Ссылки по теме:
- www.artfulsoftware.com - Сборник запросов с пояснениями