Команды MySQL

  • Михаил
  • 12 мин. на прочтение
  • 114
  • 12 Dec 2011
  • 12 Dec 2011

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'
 );