MySQL-taulukon katkelmia ja korjauksia yleisiin ongelmiin
MySQL-taulukon katkelmia?
Kyllä, niitä on tässä artikkelissa melko vähän. Mutta ennen kuin pääsemme siihen, mikä on MySQL? Aloitetaan MySQL-määrityksestä. MySQL on Oraclen tukema avoimen lähdekoodin relaatiotietokannan hallintajärjestelmä (RDBMS), joka perustuu Structured Query Language (SQL) -kieleen.
MySQL-tietokantaa käyttävät sovellukset ovat TYPO3, MODx, Joomla, WordPress, Simple Machines Forum, phpBB, MyBB ja Drupal. MySQL:ää käytetään myös monilla korkean profiilin suurilla verkkosivustoilla, mukaan lukien Google (tosin ei hakuihin), Facebook, Twitter, Flickr ja YouTube.
Ja kaiken tämän johdannon jälkeen ymmärrät, että MySQL on suurempi kuin alun perin luulit. Ellei ole ollut alalla jonkin aikaa. Jos olet kuitenkin uusi tulokas ja haluat oppia lisää MySQL:stä, helpoin tapa tehdä se on MySQL-taulukkokatkelmien avulla.
MySQL-taulukon katkelmia
Yhdistä merkkijono merkkijonon alussa
SELECT 'Test' REGEXP '^The'; -- 0 SELECT 'The Test' REGEXP '^The'; -- 1
Jos nimen etuliitteenä ei ole ’The’, lisää se
UPDATE [table] SET Name = CONCAT('The ', TRIM(Name)) WHERE Name NOT REGEXP '^The'
Kopioi sarake taulukosta toiseen
INSERT INTO [table] (
) SELECT FROM [table]
Poista kaikki välilyönnit
UPDATE [table] SET
= REPLACE(, ' ', '')
(tämä on BASH) pudota kaikki tietokannan taulukot
mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]
Vaihda taulukon ja sen kaikkien olemassa olevien sarakkeiden lajitteluun
alter table [table] convert to character set utf8 collate utf8_general_ci;
MySQL Etsi ja korvaa
UPDATE files SET filepath = REPLACE(filepath,'path/to/search','path/to/replace');
Satunnaisen rivin valitseminen MySQL:ssä
SELECT column FROM table ORDER BY RAND() LIMIT 1
Luo CSV MySQL:stä
SELECT a,b,c FROM my_table INTO OUTFILE '/ca.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY 'n';
Etsi päällekkäisiä tietueita
SELECT id, COUNT(*) as n FROM my_table GROUP BY id HAVING n >1;
Virheellisen merkkikoodauksen korjaaminen MySQL-tiedoissa
UPDATE table SET column=CONVERT(CONVERT(CONVERT(column USING latin1) USING binary) using utf8);
Lataa CSV takaisin mySQL:ään
LOAD DATA local INFILE 'unique.csv' INTO TABLE tablename FIELDS TERMINATED BY ',' LINES TERMINATED BY 'n' (col1, col2, col3)
Drupal 6.x Etsi PHP-koodi tietokannasta
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);
Luo satunnainen merkkijono MySQL:ssä
SELECT SUBSTRING(MD5(RAND()) FROM 1 FOR 6) AS randomstring
Laske ikä syntymäpäivästä
SELECT FLOOR(DATEDIFF(CURRENT_DATE(), dob) / 365);
Etsi ja korvaa
UPDATE table_name SET column_name = REPLACE(column_name, 'http://oldcontent.com', 'http://newcontent.com');
Valitse kahdesta päivämäärästä
SELECT * FROM files LEFT JOIN (dates) ON files.uploaded_id = dates.id WHERE date BETWEEN '2009-01-01' AND '2009-12-31'
Varmuuskopioi MySQL-tietokanta SQL-tiedostoon mysqldumpilla
mysqldump --user=username --password=password --opt --add-drop-database --databases databasename > ~/path/to/file.sql
miten lasketaan viimeiset 7 päivää
WHERE mydatefld >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)
mysql dump
mysqldump -u [username] -p [password] [databasename] > [backupfile.sql]
Mysql korvaa
`# Korvaa merkkijono kaikissa taulukon tietueissa
PÄIVITYS taulukon_nimi SET sarakkeen_nimi = REPLACE( sarakkeen_nimi, ’/dev’, " );
SELECT REPLACE( sarakkeen_nimi, ’/dev’, ”) FROM taulukon_nimi;`
Muunna aikavyöhyke paikalliseksi
SELECT CONVERT_TZ(mydatefield,'US/Pacific','CET') FROM mytable;
Etsi ja korvaa useilla riveillä SQL:ssä
UPDATE wp_posts SET post_content = REPLACE(post_content, 'staging.server.com', 'www.productionserver.com');
Kuinka tallentaa tulokset MySQL:stä ulkoiseen tiedostoon
echo "SELECT columns FROM table_name WHERE whatever='something'" | /path/to/mysql -uUSERNAME -pPASSWORD DATABASENAME > /tmp/outfile.txt;
Lisää tai päivitä, jos yksilöllinen avain on jo olemassa
INSERT INTO `tableName` VALUES (?,?,?,'-1',?,'0') ON DUPLICATE KEY UPDATE `id` = ?, `foo` = ?, `bar` = ?
mySQL – tietokannan varmuuskopiointikomennot
-- 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 tuonti
mysql -u [username] -p [dbname] < [filename].sql
löytää päällekkäisiä tietueita
select address, count(address) as cnt from mailing_list group by address having cnt > 1 order by cnt;
MySQL Etsi ja korvaa
update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, 'find this string', 'replace found string with this string');
Muuta Drupal-tiedoston hakemistopolkua
UPDATE FILES SET filepath = REPLACE(filepath, 'sites/default/files/old/','sites/default/files/new/');
Etsi kaikki MySQL-tietokannasta taulukot, jotka sisältävät tiettyjä sarakkeiden nimiä
SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME IN ('columnA','ColumnB') AND TABLE_SCHEMA='YourDatabase';
Etsi taulukosta arvot, jotka esiintyvät täsmälleen kerran
SELECT email FROM users GROUP BY email HAVING (COUNT(email) = 1 )
MySql-komentosarja virheellisten sähköpostiosoitteiden löytämiseksi
SELECT * FROM people WHERE email NOT LIKE '%_@__%.__%'
MySQL-iän laskenta
DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(DOB, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(DOB, '00-%m-%d')) >= 65
Left Joins linkittää kolme tai useampia taulukkoja
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 -hakuluettelo pilkuilla eroteltuna
WHERE id REGEXP '(,|^){$this->id}(,|$)'
Hanki satunnainen ennätys painon perusteella
SELECT * FROM Table ORDER BY Rand() * (1 / Weight
Toivomme, että nämä MySQL-taulukkokatkelmat ovat etsimäsi asia. Päivitämme tämän artikkelin muilla MySQL-katkelmilla, joita törmäämme tulevaisuudessa, joten muista lisätä se kirjanmerkkeihin.
Jos pidit tämän artikkelin lukemisesta MySQL-taulukon katkelmista, sinun tulee lukea myös nämä: