Gentoo Way Linux, Gentoo, Kubuntu, Ubuntu, Debian … компилируем всё!

12Ноя/09Off

Полезные команды MySQL

MySQL
Авторизация на сервере (из консоли), -h при необходимости авторизации на удалённом сервере
mysql -h hostname -u root -p
Создание БД
mysql> create database `databasename`;
Создание БД с указанием необходимой кодировки
mysql> create database `databasename` default character set 'utf8' collate 'utf8_unicode_ci';
Получить список всех БД на сервере
mysql> show databases;
Переключится на БД
mysql> use `db name`;
Получить список таблиц в базе
mysql> show tables;
Посмотреть структуру таблицы
mysql> describe `table name`;
Ещё один вариант
mysql> show columns from `table name`;
Удалить БД
mysql> drop database `database name`;
Удалить таблицу
mysql> drop table `table name`;
Показать все данные в таблице
mysql> SELECT * FROM `table name`;
Показать строки, где поле `field name` имеет значение "whatever".
mysql> SELECT * FROM `table name` WHERE `field name` = 'whatever';
Показать строки с именем "Bob" и номеном "3444444"
mysql> SELECT * FROM `table name` WHERE name = 'Bob' AND phone_number = 3444444;
Показать строки с номером "3444444" не содержащие имени "Bob" отсортированные по номеру.
mysql> SELECT * FROM `table name` WHERE name != 'Bob' AND phone_number = 3444444 order by phone_number;
Показать записи с именем, начинающимся на "bob" и номером 3444444
mysql> SELECT * FROM `table name` WHERE name like 'Bob%' AND phone_number = 3444444;
Верннуть все данные с именем, начинающемся на "bob" и номером 3444444 ограничить вывод пятью первыми строками
mysql> SELECT * FROM `table name` WHERE name like 'Bob%' AND phone_number = 3444444 limit 0,5;
Используем регулярное выражение. Для регистрозависимого выбора используйте "REGEXP BINARY". Данный запрос найдёт все записи, начинающиеся на "a"
mysql> SELECT * FROM `table name` WHERE rec RLIKE '^a';

Показать уникальные записи
mysql> SELECT DISTINCT `column name` FROM `table name`;
Показать выбранные колонки отсортированные от а до я (ASC) или от я до а (DESC)
mysql> SELECT `col1`,`col2` FROM `table name` ORDER BY `col2` DESC;
Вернуть количество строк в таблице.
mysql> SELECT COUNT(*) FROM `table name`;
Просуммировать все числовые поля таблицы
mysql> SELECT SUM(*) FROM `table name`;
Объединение таблиц. Как работает JOIN (в картинках)
mysql> select lookup.illustrationid, lookup.personid,person.birthday from lookup left join person on lookup.personid=person.personid=statement to join birthday in person table with primary illustration id;
Создание пользователя. Вход под root. Переключение на БД mysql. Создание пользователя и обновление привилегий.
mysql -u root -p
mysql> use mysql;
mysql> INSERT INTO user (Host,User,Password) VALUES('%','username',PASSWORD('password'));
mysql> flush privileges;
Смена пароля пользователя из консоли
mysqladmin -u username -h hostname -p password 'new-password'
Смена пароля пользователя из консоли MySQL. Вход как root. Смена пароля. Обновление привелегий.
mysql -u root -p
mysql> SET PASSWORD FOR 'user'@'hostname' = PASSWORD('passwordhere');
mysql> flush privileges;
Восстановление пароля root пользователя. Остановить MySQL сервер. Запустить с пониженной безопасностью. Залогинится на MySQL как root. Установить новый пароль. Разлогинится и перезапустить MySQL сервер.
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql -u root
mysql> use mysql;
mysql> update user set password=PASSWORD('newrootpassword') where User='root';
mysql> flush privileges;
mysql> quit
/etc/init.d/mysql stop
/etc/init.d/mysql start
Установка пароля root если он ещё не задавался ранее
mysqladmin -u root password newpassword
Смена пароля root
mysqladmin -u root -p oldpassword newpassword
Разрешить пользователю "Bob" подключаться к серверу c локального адреса с паролем "passwd". Войти как root. Переключиться на БД mysql. Дать привилегии. Обновить привелегии.
mysql -u root -p
mysql> use mysql;
mysql> grant usage on *.* to bob@localhost identified by 'passwd';
mysql> flush privileges;
Предоставить пользователю привилегии на БД. Авторизоваться как root. Переключиться на БД mysql. Предоставить привилегии. Обновить кеш привилегий.
mysql -u root -p
mysql> use mysql;
mysql> INSERT INTO user (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES ('%','databasename','username','Y','Y','Y','Y','Y','N');
mysql> flush privileges;
или
mysql> grant all privileges on databasename.* to username@localhost;
mysql> flush privileges;
Обновить информацию для существующего пользователя
mysql> use mysql;
mysql> UPDATE `user` SET Select_priv = 'Y',Insert_priv = 'Y',Update_priv = 'Y' where `User` = 'user';
flush privileges;
Удалить строки из таблицы
mysql> DELETE from `table name` where `field_name` = 'whatever';
Обновить кеш привилегий
mysql> flush privileges;
Удалить колонку из таблицы
mysql> alter table `table name` drop column `column name`;
Добавить колонку в таблицу
mysql> alter table `table name` add column `new column name` varchar (20);
Переименовать колонку
mysql> alter table `table name` change `old column name` `new column name` varchar (50);
Сделать данные в колоке уникальными (если дублирующиеся уже есть - будет ошибка)
mysql> alter table `table name` add unique (`column name`);
Модифицировать колонку
mysql> alter table `table name` modify `column name` VARCHAR(3);
Удалить индекс
mysql> alter table `table name` drop index `colmn name`;
Загрузить данные в БД из CSV файла.
mysql> LOAD DATA INFILE '/tmp/filename.csv' replace INTO TABLE `table name` FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (field1,field2,field3);
Сделать дамп всех БД для бэкапа. Бэкап это файл с SQL командами для воссоздания всех баз.
mysqldump -u root -p --opt > /tmp/alldatabases.sql
Сделать дамп одной базы.
mysqldump -u username -p --databases databasename > /tmp/databasename.sql
Сделать дамп одной таблицы
mysqldump -c -u username -p databasename tablename > /tmp/databasename.tablename.sql
Восстановить БД (или таблицу) из бэкапа
mysql -u username -p databasename < /tmp/databasename.sql
Создание таблицы, пример 1.
mysql> CREATE TABLE `table name` (
 `firstname` VARCHAR(20),
 `middleinitial` VARCHAR(3),
 `lastname` VARCHAR(35),
 `suffix` VARCHAR(3),
 `officeid` VARCHAR(10),
 `userid` VARCHAR(15),
 `username` VARCHAR(8),
 `email` VARCHAR(35),
 `phone` VARCHAR(25),
 `groups` VARCHAR(15),
 `datestamp` DATE,
 `timestamp` time,
 `pgpemail` VARCHAR(255)
);
Создание таблицы, пример 2.
mysql> CREATE TABLE `table name` (
 personid int(50) not null auto_increment primary key,
 firstname VARCHAR(35),
 middlename VARCHAR(50),
 lastname VARCHAR(50) default 'bato'
);

Понравилась статья?

Consider subscribing to our RSS feed!

Метки записи: Комментарии
Комментарии (0) Пинги (0)
  1. Для высокиъ нагрузок SELECT COUNT можно оптимизировать следующим образом : http://plutov.by/post/mongodb_counters


Trackbacks are disabled.