Фрагменты таблиц MySQL и исправления распространенных проблем
Фрагменты таблицы MySQL?
Да, в этой статье их довольно много. Но прежде чем мы перейдем к этому, что такое MySQL? Начнем с определения MySQL. MySQL — это поддерживаемая Oracle система управления реляционными базами данных (RDBMS) с открытым исходным кодом, основанная на языке структурированных запросов (SQL).
Приложения, использующие базу данных MySQL, включают TYPO3, MODx, Joomla, WordPress, Simple Machines Forum, phpBB, MyBB и Drupal. MySQL также используется на многих высококлассных крупных веб-сайтах, включая Google (хотя и не для поиска), Facebook, Twitter, Flickr и YouTube.
И после всего этого вступления вы понимаете, что MySQL больше, чем вы думали изначально. Если только вы не были в индустрии какое-то время. Однако, если вы новичок и хотите больше узнать о MySQL, проще всего это сделать с помощью фрагментов таблиц MySQL.
Фрагменты таблицы MySQL
Совпадение строки в начале строки
SELECT 'Test' REGEXP '^The'; -- 0 SELECT 'The Test' REGEXP '^The'; -- 1
Если имя не имеет префикса «The», добавьте его
UPDATE [table] SET Name = CONCAT('The ', TRIM(Name)) WHERE Name NOT REGEXP '^The'
Копировать столбец из одной таблицы в другую
INSERT INTO [table] (
) SELECT FROM [table]
Удалить все пробелы
UPDATE [table] SET
= REPLACE(, ' ', '')
(это BASH) удалить все таблицы в базе данных
mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]
Изменение сортировки таблицы и всех ее существующих столбцов
alter table [table] convert to character set utf8 collate utf8_general_ci;
MySQL найти и заменить
UPDATE files SET filepath = REPLACE(filepath,'path/to/search','path/to/replace');
Выбор случайной строки в MySQL
SELECT column FROM table ORDER BY RAND() LIMIT 1
Создать CSV из MySQL
SELECT a,b,c FROM my_table INTO OUTFILE '/ca.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY 'n';
Найти повторяющиеся записи
SELECT id, COUNT(*) as n FROM my_table GROUP BY id HAVING n >1;
Исправление неправильной кодировки символов в данных MySQL
UPDATE table SET column=CONVERT(CONVERT(CONVERT(column USING latin1) USING binary) using utf8);
Загрузите CSV обратно в mySQL
LOAD DATA local INFILE 'unique.csv' INTO TABLE tablename FIELDS TERMINATED BY ',' LINES TERMINATED BY 'n' (col1, col2, col3)
Drupal 6.x Найти PHP-код в базе данных
select nid, vid from node_revisions where format in (select format from filters where module = 'php' and delta = 0); select cid, nid from comments where format in (select format from filters where module = 'php' and delta = 0); select bid, info from boxes where format in (select format from filters where module = 'php' and delta = 0);
Генерация случайной строки в MySQL
SELECT SUBSTRING(MD5(RAND()) FROM 1 FOR 6) AS randomstring
Рассчитать возраст по дате рождения
SELECT FLOOR(DATEDIFF(CURRENT_DATE(), dob) / 365);
Найти и заменить
UPDATE table_name SET column_name = REPLACE(column_name, 'http://oldcontent.com', 'http://newcontent.com');
Выберите одну из двух дат
SELECT * FROM files LEFT JOIN (dates) ON files.uploaded_id = dates.id WHERE date BETWEEN '2009-01-01' AND '2009-12-31'
Резервное копирование базы данных MySQL в файл SQL с помощью mysqldump
mysqldump --user=username --password=password --opt --add-drop-database --databases databasename > ~/path/to/file.sql
как рассчитать последние 7 дней
WHERE mydatefld >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)
дамп mysql
mysqldump -u [username] -p [password] [databasename] > [backupfile.sql]
Mysql заменить
`# Заменить строку во всех записях из таблицы
UPDATE table_name SET column_name = REPLACE( column_name, ‘/dev’, " );
ВЫБЕРИТЕ ЗАМЕНУ(имя_столбца, ‘/dev’, "") ИЗ имя_таблицы;`
Преобразовать часовой пояс в местный
SELECT CONVERT_TZ(mydatefield,'US/Pacific','CET') FROM mytable;
Поиск и замена в нескольких строках в SQL
UPDATE wp_posts SET post_content = REPLACE(post_content, 'staging.server.com', 'www.productionserver.com');
Как сохранить результаты из MySQL во внешний файл
echo "SELECT columns FROM table_name WHERE whatever='something'" | /path/to/mysql -uUSERNAME -pPASSWORD DATABASENAME > /tmp/outfile.txt;
Вставьте или обновите, если уникальный ключ уже существует
INSERT INTO `tableName` VALUES (?,?,?,'-1',?,'0') ON DUPLICATE KEY UPDATE `id` = ?, `foo` = ?, `bar` = ?
mySQL — команды резервного копирования базы данных
-- dump mySQL database to file: VAR=$(date +�%y-%m-%d�); mysqldump -v -uUSERNAME -pPASSWORD -hlocalhost DATABASENAME > /BACKUPDIR/$VAR-DATABASENAME.sql ;
-- dump mySQL database to file and then move it: VAR=$(date +�%y-%m-%d�); mysqldump -v -uUSERNAME -pPASSWORD -hlocalhost DATABASENAME > /BACKUPDIR/$VAR-DATABASENAME.sql ; mv /BACKUPDIR/DATABASENAME.sql /OTHERBACKUPDIR/$VAR-DATABASENAME.sql ;
импорт MySql
mysql -u [username] -p [dbname] < [filename].sql
найти повторяющиеся записи
select address, count(address) as cnt from mailing_list group by address having cnt > 1 order by cnt;
MySQL найти и заменить
update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, 'find this string', 'replace found string with this string');
Изменить путь к каталогу файлов Drupal
UPDATE FILES SET filepath = REPLACE(filepath, 'sites/default/files/old/','sites/default/files/new/');
Найти все таблицы в базе данных MySQL, содержащие определенные имена столбцов
SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME IN ('columnA','ColumnB') AND TABLE_SCHEMA='YourDatabase';
Найти значения, которые встречаются ровно один раз в таблице
SELECT email FROM users GROUP BY email HAVING (COUNT(email) = 1 )
Скрипт MySql для поиска недействительных адресов электронной почты
SELECT * FROM people WHERE email NOT LIKE '%_@__%.__%'
Расчет возраста MySQL
DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(DOB, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(DOB, '00-%m-%d')) >= 65
Left Joins для связывания трех или более таблиц
select * from (bdg left join res on bdg.bid = res.bid) left join dom on res.rid = dom.rid where dom.rid is NULL;
MySQL REGEX соответствует списку с разделителями-запятыми
WHERE id REGEXP '(,|^){$this->id}(,|$)'
Получить случайную запись на основе веса
SELECT * FROM Table ORDER BY Rand() * (1 / Weight
Мы надеемся, что эти фрагменты таблиц MySQL — это то, что вы искали. Мы будем обновлять эту статью другими фрагментами MySQL, с которыми мы столкнемся в будущем, поэтому не забудьте добавить их в закладки.
Если вам понравилось читать эту статью о фрагментах таблиц MySQL, вы также должны прочитать эти:
- Создание CRUD-системы в WordPress (2018)
- 12 советов по созданию успешного премиум-плагина или темы WordPress
- Как разместить веб-сайт: все шаги объяснены
- Оптимизация таблицы WordPress WP_OPTIONS