MySQL-i tabelilõigud ja levinud probleemide parandused
MySQL-i tabelijupid?
Jah, selles artiklis on neid üsna palju. Aga enne selle juurde jõudmist, mis on MySQL? Alustame MySQL-i määratlusega. MySQL on Oracle’i toetatud avatud lähtekoodiga relatsioonilise andmebaasi haldussüsteem (RDBMS), mis põhineb struktureeritud päringukeelel (SQL).
MySQL-i andmebaasi kasutavad rakendused on TYPO3, MODx, Joomla, WordPress, Simple Machines Forum, phpBB, MyBB ja Drupal. MySQL-i kasutatakse ka paljudel kõrgetasemelistel suuremahulistel veebisaitidel, sealhulgas Google’is (kuigi mitte otsingute jaoks), Facebookis, Twitteris, Flickris ja YouTube’is.
Ja pärast kogu seda sissejuhatust mõistate, et MySQL on suurem, kui alguses arvasite. Kui te pole selles valdkonnas mõnda aega tegutsenud. Kui olete aga uustulnuk ja soovite MySQL-i kohta rohkem teada saada, on lihtsaim viis seda teha MySQL-i tabelijuppidega.
MySQL-i tabelijupid
Sobitage string stringi alguses
SELECT 'Test' REGEXP '^The'; -- 0 SELECT 'The Test' REGEXP '^The'; -- 1
Kui nime ees ei ole ‘The’, siis lisage see
UPDATE [table] SET Name = CONCAT('The ', TRIM(Name)) WHERE Name NOT REGEXP '^The'
Kopeerige veerg ühest tabelist teise
INSERT INTO [table] (
) SELECT FROM [table]
Eemaldage kõik tühikud
UPDATE [table] SET
= REPLACE(, ' ', '')
(see on BASH) kukutage kõik andmebaasi tabelid
mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]
Tabeli ja kõigi selle olemasolevate veergude võrdlemise muutmine
alter table [table] convert to character set utf8 collate utf8_general_ci;
MySQL Otsi ja asenda
UPDATE files SET filepath = REPLACE(filepath,'path/to/search','path/to/replace');
Juhusliku rea valimine MySQL-is
SELECT column FROM table ORDER BY RAND() LIMIT 1
Looge MySQL-ist CSV
SELECT a,b,c FROM my_table INTO OUTFILE '/ca.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY 'n';
Otsige üles topeltkirjed
SELECT id, COUNT(*) as n FROM my_table GROUP BY id HAVING n >1;
Vale märgikodeeringu parandamine MySQL-i andmetes
UPDATE table SET column=CONVERT(CONVERT(CONVERT(column USING latin1) USING binary) using utf8);
Laadige CSV tagasi mySQL-i
LOAD DATA local INFILE 'unique.csv' INTO TABLE tablename FIELDS TERMINATED BY ',' LINES TERMINATED BY 'n' (col1, col2, col3)
Drupal 6.x Otsige andmebaasist PHP-koodi
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);
Looge MySQL-is juhuslik string
SELECT SUBSTRING(MD5(RAND()) FROM 1 FOR 6) AS randomstring
Arvutage vanus sünnikuupäevast
SELECT FLOOR(DATEDIFF(CURRENT_DATE(), dob) / 365);
Otsi ja asenda
UPDATE table_name SET column_name = REPLACE(column_name, 'http://oldcontent.com', 'http://newcontent.com');
Valige kahe kuupäeva vahel
SELECT * FROM files LEFT JOIN (dates) ON files.uploaded_id = dates.id WHERE date BETWEEN '2009-01-01' AND '2009-12-31'
Varundage MySQL-i andmebaas SQL-faili rakendusega mysqldump
mysqldump --user=username --password=password --opt --add-drop-database --databases databasename > ~/path/to/file.sql
kuidas arvutada viimast 7 päeva
WHERE mydatefld >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)
mysql dump
mysqldump -u [username] -p [password] [databasename] > [backupfile.sql]
Mysql asendamine
`# Asenda string kõigis tabeli kirjetes
UPDATE tabeli_nimi SET veeru_nimi = REPLACE( veeru_nimi, ‘/dev’, " );
SELECT REPLACE( veeru_nimi, ‘/dev’, “) FROM tabeli_nimi;`
Teisendage ajavöönd kohalikuks
SELECT CONVERT_TZ(mydatefield,'US/Pacific','CET') FROM mytable;
Otsige ja asendage mitmel real SQL-is
UPDATE wp_posts SET post_content = REPLACE(post_content, 'staging.server.com', 'www.productionserver.com');
Kuidas salvestada MySQL-i tulemusi välisesse faili
echo "SELECT columns FROM table_name WHERE whatever='something'" | /path/to/mysql -uUSERNAME -pPASSWORD DATABASENAME > /tmp/outfile.txt;
Sisestage või värskendage, kui kordumatu võti on juba olemas
INSERT INTO `tableName` VALUES (?,?,?,'-1',?,'0') ON DUPLICATE KEY UPDATE `id` = ?, `foo` = ?, `bar` = ?
mySQL – andmebaasi varundamise käsud
-- 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 import
mysql -u [username] -p [dbname] < [filename].sql
leida topeltkirjeid
select address, count(address) as cnt from mailing_list group by address having cnt > 1 order by cnt;
MySQL Otsi ja asenda
update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, 'find this string', 'replace found string with this string');
Muutke Drupali faili kataloogi teed
UPDATE FILES SET filepath = REPLACE(filepath, 'sites/default/files/old/','sites/default/files/new/');
Otsige MySQL andmebaasist üles kõik tabelid, mis sisaldavad konkreetseid veergude nimesid
SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME IN ('columnA','ColumnB') AND TABLE_SCHEMA='YourDatabase';
Otsige tabelist väärtused, mis esinevad täpselt üks kord
SELECT email FROM users GROUP BY email HAVING (COUNT(email) = 1 )
MySql skript kehtetute e-posti aadresside leidmiseks
SELECT * FROM people WHERE email NOT LIKE '%_@__%.__%'
MySQL-i vanuse arvutamine
DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(DOB, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(DOB, '00-%m-%d')) >= 65
Vasakpoolne liitmine kolme või enama tabeli linkimiseks
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 vaste komadega eraldatud loend
WHERE id REGEXP '(,|^){$this->id}(,|$)'
Hankige kaalu põhjal juhuslik rekord
SELECT * FROM Table ORDER BY Rand() * (1 / Weight
Loodame, et need MySQL-i tabelilõigud on see, mida otsisite. Värskendame seda artiklit teiste MySQL-i fragmentidega, millega tulevikus kokku puutume, seega lisage see kindlasti järjehoidjatesse.
Kui teile meeldis lugeda seda artiklit MySQL-i tabelijuppide kohta, peaksite lugema ka järgmist: