ÔÚ MySQL ÖвéÖØÍ¨³£ÊÇÖ¸²éÕÒ±íÖдæÔÚÖØ¸´Êý¾ÝµÄ¼Ç¼£¬ÒÔÏÂÊǼ¸ÖÖ³£¼ûµÄ²éÖØ·½·¨£º 1. ²éÕÒµ¥¸ö×ֶεÄÖØ¸´Öµ sql -- ²éÕÒij×ֶΣ¨Èç email£©´æÔÚÖØ¸´µÄ¼Ç¼ SELECT ×Ö¶ÎÃû , COUNT ( * ) AS ÖØ¸´´ÎÊý FROM ±íÃû GROUP BY ×Ö¶ÎÃû HAVING COUNT ( * ) 1 ; ʾÀý£º sql -- ²éÕÒ users ±íÖÐ email ÖØ¸´µÄ¼Ç¼ SELECT email , COUNT ( * ) AS count FROM users GROUP BY email HAVING count 1 ; 2. ²éÕÒ¶à¸ö×Ö¶Î×éºÏµÄÖØ¸´Öµ µ±ÐèÒªÅж϶à¸ö×Ö¶Î×éºÏÊÇ·ñÖØ¸´Ê±£¨ÈçÐÕÃû + ÊÖ»úºÅ£©£º sql SELECT ×Ö¶Î 1 , ×Ö¶Î 2 , COUNT ( * ) AS ÖØ¸´´ÎÊý FROM ±íÃû GROUP BY ×Ö¶Î 1 , ×Ö¶Î 2 HAVING COUNT ( * ) 1 ; ʾÀý£º sql -- ²éÕÒ name ºÍ phone ×éºÏÖØ¸´µÄ¼Ç¼ SELECT name , phone , COUNT ( * ) AS count FROM customers GROUP BY name , phone HAVING count 1 ; 3. ²é¿´Öظ´¼Ç¼µÄÏêϸÐÅÏ¢ Èç¹ûÐèÒª²é¿´Öظ´¼Ç¼µÄÍêÕûÐÅÏ¢£º sql -- ·½·¨1£º×Ó²éѯ¹ØÁª SELECT * FROM ±í¡¡
ÔÚ Linux ϵͳÖÐÆô¶¯ MySQL µÄÃüÁî¸ù¾Ý°²×°·½Ê½ºÍ°æ±¾ÂÔÓв»Í¬£¬ÒÔÏÂÊdz£¼ûµÄ¼¸ÖÖ·½·¨£º 1. ʹÓà systemctl ÃüÁî£¨ÍÆ¼ö£¬ÊÊÓÃÓÚ systemd ϵͳ£¬Èç CentOS 7+/Ubuntu 16.04+£© bash # Æô¶¯ MySQL ·þÎñ sudo systemctl start mysqld # ´ó¶àÊýϵͳ£¨Èç CentOS£© # »ò sudo systemctl start mysql # ²¿·Öϵͳ£¨Èç Ubuntu/Debian£© # ²é¿´Æô¶¯×´Ì¬ sudo systemctl status mysqld »ò mysql # ÉèÖÿª»ú×ÔÆô¶¯ sudo systemctl enable mysqld »ò mysql 2. ʹÓà service ÃüÁÊÊÓÃÓÚ½Ï¾ÉµÄ sysvinit ϵͳ£© bash # Æô¶¯ MySQL ·þÎñ sudo service mysqld start # CentOS µÈ # »ò sudo service mysql start # Ubuntu/Debian µÈ # ²é¿´×´Ì¬ sudo service mysqld status »ò mysql status 3. Ö±½ÓʹÓöþ½øÖÆÎļþÆô¶¯£¨½ÏÉÙÓã¬Í¨³£ÓÃÓÚ×Ô¶¨Òå°²×°£© Èç¹û MySQL ÊÇÊÖ¶¯±àÒë°²×°£¬¿ÉÖ±½Óµ÷Óöþ½øÖÆÎļþ£º bash # ¼ÙÉ谲װ·¾¶Îª /usr/local/mysql sudo /usr/local/mysql/bin/my¡¡
MySQL ±¾Éí²¢²»Ö±½ÓÖ§³ÖÊý×éÀàÐÍ£¬µ«¿ÉÒÔͨ¹ýÒÔϼ¸ÖÖ·½Ê½´æ´¢Êý×éÊý¾Ý£º 1. ʹÓÃ×Ö·û´®´æ´¢£¨×î³£Óã© ½«Êý×éÔªËØÓÃÌØ¶¨·Ö¸ô·û£¨È綺ºÅ¡¢ÊúÏߣ©Æ´½Ó³É×Ö·û´®´æ´¢£¬Êʺϼòµ¥Êý×é¡£ sql -- ´´½¨±íʱʹÓà VARCHAR »ò TEXT ÀàÐÍ CREATE TABLE example ( id INT PRIMARY KEY AUTO_INCREMENT , tags VARCHAR ( 255 ) -- ´æ´¢ÓöººÅ·Ö¸ôµÄÊý×飬Èç php,mysql,java ) ; -- ²åÈëÊý×éÊý¾Ý INSERT INTO example ( tags ) VALUES ( php,mysql,java ) ; -- ²éѯʱ²ð·ÖÊý×飨ʹÓà FIND_IN_SET ÅжÏÔªËØÊÇ·ñ´æÔÚ£© SELECT * FROM example WHERE FIND_IN_SET ( mysql , tags ) 0 ; -- ²éѯʱ²ð·ÖÏÔʾ£¨MySQL 8.0+ Ö§³Ö JSON_TABLE£© SELECT id , tag FROM example , JSON_TABLE ( CONCAT ( [ , REPLACE ( tags , , , , ) , ] ) , $[*] COLUMNS ( tag VARCHAR ( 50 ) PATH $ ) ) AS jt ; 2. ʹÓà JSON ÀàÐÍ£¨MySQL 5.7+ ÍÆ¼ö£© MySQL 5.7 ¼°ÒÔÉÏÖ§³Ö JSON ÀàÐÍ£¬¿ÉÒÔÖ±½Ó´æ´¢Êý¡¡
ÔÚ MySQL ÖУ¬²éѯµ±Ç°Ê±¼äµÄ³£Óú¯ÊýÓÐÒÔϼ¸¸ö£º »ñÈ¡µ±Ç°ÈÕÆÚºÍʱ¼ä£¨º¬Ê±·ÖÃ룩 sql SELECT NOW ( ) ; -- ʾÀýÊä³ö: 2025-09-26 15:30:45 »ñÈ¡µ±Ç°ÈÕÆÚºÍʱ¼ä£¨Óë NOW () ÀàËÆ£¬¾«¶È¸ü¸ß£© sql SELECT CURRENT_TIMESTAMP ( ) ; -- »ò¼òд SELECT CURRENT_TIMESTAMP ; ½ö»ñÈ¡µ±Ç°Ê±¼ä£¨Ê±·ÖÃ룩 sql SELECT CURTIME ( ) ; -- ʾÀýÊä³ö: 15:31:20 ½ö»ñÈ¡µ±Ç°ÈÕÆÚ£¨ÄêÔÂÈÕ£© sql SELECT CURDATE ( ) ; -- ʾÀýÊä³ö: 2025-09-26 »ñÈ¡µ±Ç°Ê±¼ä´Á£¨Unix ʱ¼ä´Á£¬Ãë¼¶£© sql SELECT UNIX_TIMESTAMP ( ) ; -- ʾÀýÊä³ö: 1753620705 ÕâЩº¯Êý¿ÉÒÔÖ±½ÓʹÓã¬Ò²¿ÉÒÔÔÚ INSERT/UPDATE Óï¾äÖÐÓÃÀ´¼Ç¼²Ù×÷ʱ¼ä£¬ÀýÈ磺 sql -- ²åÈë¼Ç¼ʱ×Ô¶¯Ìí¼Óµ±Ç°Ê±¼ä INSERT INTO logs ( content , create_time ) VALUES ( ²Ù×÷ÈÕÖ¾ , NOW ( ) ) ; ¸ù¾ÝÐèҪѡÔñºÏÊʵĺ¯Êý¼´¿É£¬ÆäÖÐ NOW() ºÍ CURRENT_TIMESTAMP() ÊÇ×î³£ÓõĻñÈ¡ÍêÕûÈÕÆÚʱ¼äµÄº¯Êý¡£ ¡¡
ÔÚ MySQL ÖУ¬¿ÉÒÔͨ¹ý²éѯϵͳ±íÀ´²é¿´µ±Ç°µÄËø±íÇé¿ö£¬ÒÔÏÂÊdz£Óõķ½·¨£º 1. ²é¿´ËùÓÐÕýÔÚÔËÐеÄÊÂÎñºÍËøÐÅÏ¢ sql -- ²é¿´µ±Ç°ÊÂÎñ SELECT * FROM INFORMATION_SCHEMA . INNODB_TRX ; -- ²é¿´µ±Ç°Ëø¶¨µÄ¼Ç¼ SELECT * FROM INFORMATION_SCHEMA . INNODB_LOCKS ; -- ²é¿´ËøµÈ´ýÇé¿ö SELECT * FROM INFORMATION_SCHEMA . INNODB_LOCK_WAITS ; 2. ²é¿´½ø³ÌºÍËø×´Ì¬ sql -- ²é¿´ËùÓнø³Ì£¨°üÀ¨ËøÐÅÏ¢£© SHOW PROCESSLIST ; -- ¸üÏêϸµÄ½ø³ÌÐÅÏ¢£¨MySQL 5.7+£© SELECT * FROM INFORMATION_SCHEMA . PROCESSLIST WHERE STATE LIKE %locked% ; 3. ²é¿´±í¼¶Ëø sql -- ²é¿´±í¼¶ËøÇé¿ö SHOW OPEN TABLES WHERE In_use 0 ; 4. ʵÓòéѯ£ºÕÒ³ö×èÈûÔ´ sql -- ²éÕÒ±»×èÈûµÄÊÂÎñºÍ×èÈûÔ´ SELECT r . trx_id AS waiting_trx_id , r . trx_mysql_thread_id AS waiting_thread , r . trx_query AS waiting_query , b . trx_id AS blocking_trx_id , b . trx_mysql_thread_id A¡¡
MySQL µÄʹÓÃÊÇ·ñÃâ·ÑÈ¡¾öÓÚÆä°æ±¾ºÍʹÓó¡¾°£º ÉçÇø°æ£¨MySQL Community Edition£© £ºÍêÈ«Ãâ·Ñ¿ªÔ´£¬×ñÑ GPL Ðí¿ÉÖ¤¡£ÕâÊÇ´ó¶àÊý¸öÈË¿ª·¢Õß¡¢ÖÐСÆóҵʹÓõİ汾£¬°üº¬Á˺ËÐĵÄÊý¾Ý¿â¹¦ÄÜ£¬ÊʺϿª·¢ºÍÉú²ú»·¾³Ê¹Óã¬Ã»ÓÐÈκηÑÓᣠÆóÒµ°æ£¨MySQL Enterprise Edition£© £ºÊշѰ汾£¬ÔÚÉçÇø°æ»ù´¡ÉÏÔö¼ÓÁ˸߼¶¹¦ÄÜ£¨ÈçÆóÒµ¼¶°²È«¡¢¼à¿Ø¡¢±¸·Ý¹¤¾ßµÈ£©£¬²¢Ìṩ¹Ù·½¼¼ÊõÖ§³Ö£¬Ö÷ÒªÃæÏò¶ÔÎȶ¨ÐԺͷþÎñÓиßÒªÇóµÄ´óÐÍÆóÒµ¡£ ÉÌÒµÊÚȨ £ºÈç¹ûÐèÒª½« MySQL ¼¯³Éµ½ÉÌÒµÈí¼þÖУ¬ÇÒ²»Ïë×ñÑ GPL Ðí¿ÉÖ¤µÄ¿ªÔ´ÒªÇ󣬿ÉÄÜÐèÒª¹ºÂòÉÌÒµÊÚȨ£¬ÕâÖÖÇé¿öÖ÷ÒªÕë¶ÔÈí¼þ¿ª·¢ÉÌ¡£ ¶ÔÓÚ¾ø´ó¶àÊýÓû§£¨°üÀ¨¸öÈËѧϰ¡¢ÍøÕ¾¿ª·¢¡¢ÖÐСÐÍÓ¦Óã©£¬Ãâ·ÑµÄÉçÇø°æÒѾÄܹ»Âú×ãÐèÇó£¬ÎÞÐèÖ§¸¶ÈκηÑÓᣠ¡¡
ÔÚ MySQL ÖУ¬´´½¨Êý¾Ý¿âµÄ»ù±¾Óï¾äÊÇ CREATE DATABASE £¬Óï·¨ÈçÏ£º sql -- »ù±¾Óï·¨£º´´½¨Êý¾Ý¿â CREATE DATABASE Êý¾Ý¿âÃû ; -- ʾÀý£º´´½¨ÃûΪ `mydatabase` µÄÊý¾Ý¿â CREATE DATABASE mydatabase ; ΪÁ˱ÜÃâÒòÊý¾Ý¿âÒÑ´æÔÚ¶øµ¼ÖµĴíÎ󣬿ÉÒÔÌí¼Ó IF NOT EXISTS Ìõ¼þ£º sql -- Èç¹ûÊý¾Ý¿â²»´æÔÚÔò´´½¨ CREATE DATABASE IF NOT EXISTS mydatabase ; »¹¿ÉÒÔÖ¸¶¨Êý¾Ý¿âµÄ×Ö·û¼¯ºÍÅÅÐò¹æÔò£¨ÍƼöÏÔʽָ¶¨£¬±ÜÃâĬÈÏÉèÖÃÎÊÌ⣩£º sql -- Ö¸¶¨×Ö·û¼¯Îª utf8mb4£¨Ö§³ÖËùÓÐ Unicode ×Ö·û£¬°üÀ¨±íÇé·ûºÅ£© CREATE DATABASE IF NOT EXISTS mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ; ³£ÓÃ×Ö·û¼¯ËµÃ÷£º utf8mb4 £ºMySQL ÖÐÕæÕýÖ§³ÖÍêÕû UTF-8 µÄ×Ö·û¼¯£¨°üÀ¨ 4 ×Ö½Ú×Ö·û£© utf8mb4_unicode_ci £º»ùÓÚ Unicode ±ê×¼µÄÅÅÐò¹æÔò£¬Ö§³Ö¶àÓïÑÔÕýÈ·ÅÅÐò ´´½¨ºó£¬¿ÉÒÔʹÓÃÒÔÏÂÓï¾äÇл»µ½¸ÃÊý¾Ý¿â£º sql USE mydatabase ; ¡¡
ÔÚ MySQL ÖÐÉú³É UUID£¨Í¨ÓÃΨһ±êʶ·û£©¿ÉÒÔʹÓÃÄÚÖÃµÄ UUID() º¯Êý¡£Õâ¸öº¯Êý»áÉú³ÉÒ»¸ö·ûºÏ RFC 4122 ±ê×¼µÄ 128 λ UUID£¬¸ñʽΪ°üº¬ 36 ¸ö×Ö·ûµÄ×Ö·û´®£¨°üº¬Á¬×Ö·û£©¡£ ÒÔÏÂÊÇʹÓÃʾÀý£º sql -- Éú³ÉÒ»¸öUUID²¢Ö±½ÓÏÔʾ SELECT UUID ( ) ; -- ʾÀýÊä³ö: 550e8400-e29b-41d4-a716-446655440000 -- ÔÚ²åÈëÊý¾ÝʱʹÓÃUUID×÷ΪÖ÷¼ü INSERT INTO your_table ( id , name ) VALUES ( UUID ( ) , ʾÀýÊý¾Ý ) ; -- Éú³É²»´øÁ¬×Ö·ûµÄUUID SELECT REPLACE ( UUID ( ) , - , ) ; -- ʾÀýÊä³ö: 550e8400e29b41d4a716446655440000 UUID() Éú³ÉµÄ±êʶ·ûÔÚÀíÂÛÉϾßÓÐÈ«ÇòΨһÐÔ£¬ÊʺÏ×÷Ϊ·Ö²¼Ê½ÏµÍ³ÖеÄÖ÷¼ü»òΨһ±êʶ·ûʹÓá£ÐèҪעÒâµÄÊÇ£¬UUID ÖµÊÇ×Ö·û´®ÀàÐÍ£¬´æ´¢Ê±Í¨³£Ê¹Óà CHAR(36) ÀàÐ͵Ä×ֶΡ£ ¡¡
ÎÒÃDz»½öÐèÒª·ÀÖ¹Êý¾ÝÍêÈ«¶ªÊ§£¬ÓÐʱ¸üÐèÒª¾ÀÕý¶Ìʱ¼äÄÚµÄÎó²Ù×÷¡£ÀýÈ磬¸Õ´´½¨µÄ±íÖУ¬Ä³ÌõÖØÒªÊý¾Ý±»´íÎ󵨏üлòɾ³ý¡£´ÓÍêÕûµÄ±¸·ÝÎļþÖлָ´Õû¸ö±íͨ³£Ì«Âý¡£ÄÜ·ñʵÏÖÀàËÆÊ±¹â»úµÄ¹¦ÄÜ£¬¿ìËٻعöµ½¼¸·ÖÖÓǰµÄ״̬£¿ ¿ìËٻعöµÄ¿Á¿ÌÒªÇó£º ¾«¶È¸ß£ºÐèÒª»Ö¸´µ½Ä³¸ö¾«È·µÄʱ¼äµã£¨Point-in-Time Recovery, PITR£©¡£ Ëٶȿ죺»Ö¸´¹ý³ÌÓ¦¾¡¿ÉÄܿ죬¼õÉÙÒµÎñÍ£»úʱ¼ä¡£ Ó°ÏìС£º×îºÃÖ»»Ö¸´³ö´íµÄ±í»ò¼Ç¼£¬¶ø²»ÊÇÕû¸öÊý¾Ý¿â¡£ ½â¾ö·½°¸Ò»£º»ùÓÚ¶þ½øÖÆÈÕÖ¾£¨binlog£©ÊµÏÖʱ¼äµã»Ö¸´ ÕâÊÇMySQL¹Ù·½ÌṩµÄÇ¿´óÄÜÁ¦¡£ 1. ºËÐÄ˼·£º½áºÏÈ«Á¿±¸·ÝºÍbinlogÀ´ÊµÏÖ¡£ÏȻָ´µ½×îºóÒ»´ÎÈ«Á¿±¸·ÝµÄʱ¼äµã£¬È»ºóÖØ·ÅbinlogÖ±µ½·¢ÉúÎó²Ù×÷֮ǰµÄÄÇÒ»¿Ì¡£ 2. ²Ù×÷Á÷³Ì£º È·±£Êý¾Ý¿â¿ªÆôÁËbinlog¹¦ÄÜ¡£ ¶¨ÆÚ½øÐÐÈ«Á¿±¸·Ý£¨ÈçÓÃ`mysqldump`²¢¼ÓÉÏ`--master-data`²ÎÊý¼Ç¼binlogλÖã©¡£ ·¢ÉúÎó²Ù×÷ºó£¬Ê¹ÓÃ`mysqlbinlog`¹¤¾ß½âÎöbinlog£¬Ìø¹ý´íÎó²Ù×÷µÄÄÇÌõSQL£¬½«ÆäËûSQLÖØ·Åµ½¡¡
ÔÚ¸öÈËÏîÄ¿ÖУ¬±¸·Ý¿ÉÄÜÖ»ÊÇÒ»¸ö¼òµ¥µÄ½Å±¾¡£µ«ÔÚÍŶÓÐ×÷»·¾³ÖУ¬ÓÈÆäÊÇÔÚ΢·þÎñ¼Ü¹¹Ï£¬¿ÉÄÜͬʱÔËÐÐ×Ŷà¸öDocker MySQLʵÀýΪ²»Í¬·þÎñÌṩ֧³Ö¡£ÈçºÎͳһ¡¢¹æ·¶µØ¹ÜÀíÕâЩÊý¾Ý¿âµÄ±¸·Ý²ßÂÔ£¬±ÜÃâ½Å±¾ÂúÌì·ÉµÄ»ìÂÒ¾ÖÃæ£¬ÊÇÒ»¸öÖØÒªµÄ¹¤³Ìʵ¼ùÎÊÌâ¡£ ÍŶӻ·¾³µÄÌØÊâÐèÇó£º Ò»ÖÂÐÔ£ºËùÓÐÏîÄ¿µÄ±¸·Ý²ßÂÔ£¨È籸·Ýʱ¼ä¡¢±£ÁôÖÜÆÚ£©Ó¦×ñÑͳһµÄ¹æ·¶¡£ ¿Éά»¤ÐÔ£º±¸·ÝÅäÖÃÓ¦Ò×ÓÚÀí½âºÍÐ޸ģ¬Ð³ÉÔ±ÄÜ¿ìËÙÉÏÊÖ¡£ ȨÏÞÓ밲ȫ£ºÊý¾Ý¿âƾ֤ÐèÒª°²È«µØ¹ÜÀí£¬±ÜÃâй¶¡£ ״̬¿É¼ûÐÔ£ºÍŶÓËùÓгÉÔ±¶¼Ó¦ÄÜ·½±ãµØ²é¿´±¸·Ý״̬ºÍÀúÊ·¡£ ½â¾ö·½°¸Ò»£º»ùÓÚGitµÄ½Å±¾Ä£°å»¯Óë¹²Ïí ͨ¹ý°æ±¾¿ØÖÆÏµÍ³£¨ÈçGit£©À´¹ÜÀí±¸·Ý½Å±¾ºÍÅäÖã¬ÊµÏÖ±ê×¼»¯¡£ 1. ºËÐÄ˼·£º´´½¨Ò»¸ö¹«Ë¾»òÍŶÓÄÚ²¿µÄ±¸·Ý½Å±¾¿â£¬°üº¬Õë¶Ô²»Í¬³¡¾°£¨ÈçDocker MySQL¡¢Ö÷´Ó¸´ÖÆ£©µÄ±ê×¼»¯½Å±¾Ä£°å¡¢ÅäÖÃÎļþºÍÎĵµ¡£ 2. ²Ù×÷·½Ê½£º ÿ¸öÐÂÏîÄ¿´ÓÄ£°å¿âÖи´ÖÆËùÐèµÄ±¸·Ý½Å±¾ºÍ`docker-compose.backup.yml`Îļþ¡£ ͨ¡¡
ÔÚ¶ÔÊý¾Ý¿âÖеÄ×Ö·û´®×ֶνøÐÐÅúÁ¿½ØÈ ¢ÇåÀí»òת»»ºó£¬Ò»¸öÖÁ¹ØÖØÒªµ«³£±»ºöÂԵIJ½ÖèÊÇ£ºÑéÖ¤¡£ÈçºÎÈ·±£½ØÈ¡²Ù×÷¾«×¼µØ´ïµ½ÁËÔ¤ÆÚÄ¿±ê£¬¶øÃ»ÓÐÒýÈë´íÎó»òÒÅ©£¿Êý¾ÝÒ»ÖÂÐÔÑéÖ¤ÊDZ£Ö¤Êý¾ÝÖÊÁ¿µÄ×îºóÒ»µÀ¹Ø¿¨¡£ ÊÖ¶¯ÑéÖ¤£ºSQL²éѯÓë³éÑùºË¶Ô ÕâÊÇÒ»ÖÖÖ±½ÓÇÒÓÉ¿ª·¢ÕßÍêÈ«¿ØÖƵķ½·¨¡£ 1. ºËÐÄ˼·£ºÍ¨¹ý±àдһϵÁÐÑéÖ¤SQL£¬¶Ô±È²Ù×÷ǰºóµÄÊý¾Ý״̬£¬´Ó¶øÈ·ÈϲÙ×÷µÄ׼ȷÐÔ¡£ 2. ²Ù×÷²½Ö裺 ÊÂǰ¿ìÕÕ£ºÔÚÖ´ÐдóÅúÁ¿¸üÐÂǰ£¬ÏȶԽ«Òª¸ü¸ÄµÄÊý¾Ý×öÒ»¸ö¿ìÕÕ£¬±£´æµ½Ò»ÕÅÁÙʱ±í»òÁíÒ»¸öÎļþÖС£ ```sql CREATE TABLE users_bak AS SELECT id, email, nickname FROM users WHERE ...; ``` Ö´ÐиüУºÔËÐÐÄúµÄ½ØÈ¡¸üÐÂÓï¾ä¡£ ```sql UPDATE users SET nickname = SUBSTRING(email, 1, LOCATE(@, email) - 1); ``` ʺóÑéÖ¤£º ͳ¼ÆÊýÁ¿£º¼ì²é¸üмǼÊýÊÇ·ñ·ûºÏÔ¤ÆÚ¡£ ```sql SELECT COUNT() FROM users WHERE nickname IS NOT NULL; ``` ³éÑù¼ì²é£ºËæ»ú³éÈ¡Èô¸ÉÌõ¼Ç¼£¬ÈË¡¡
`DROP DATABASE` ÃüÁî¿ÉÄÜÊÇMySQLÖÐ×îÁîÈ˿־åµÄÃüÁîÖ®Ò»¡£ËüµÄÖ´ÐÐÖ»Ðèһ˲£¬µ«Ò»¸ö²»¾ÒâµÄÎó²Ù×÷£¬¾Í¿ÉÄܵ¼ÖÂÊýÔ»ýÀÛµÄÒµÎñÊý¾Ý˲¼ä¹éÁã¡£ÎÞÂÛÊÇÔËάÐÂÊÖ»¹ÊÇ×ÊÉîDBA£¬¶¼Ó¦¶Ô´Ë»³Óо´Î·Ö®ÐÄ¡£µ±ÔÖÄѲ»ÐÒ·¢Éúʱ£¬±£³ÖÀä¾²²¢°´ÕÕÕýÈ·µÄ²½Öè²Ù×÷£¬ÊÇÍì»ØËðʧµÄ¹Ø¼ü¡£±¾ÎĽ«ÎªÄúÌṩһÌõÇåÎúµÄÉúÃüÏß¡£ ÖØÒªÇ°Ì᣺»Ö¸´µÄ¿ÉÄÜÐÔÈ¡¾öÓÚ±¸·Ý Ê×ÏȱØÐëÇåÐÑÈÏʶµ½£¬Èç¹ûûÓпÉÓõı¸·Ý£¬Ò»µ©Ö´ÐÐÁË`DROP DATABASE`£¬»Ö¸´½«±äµÃ¼«ÆäÀ§ÄÑÇÒûÓб£Ö¤¡£³£¹æÊֶμ¸ºõÎÞ·¨´ÓMySQLÖÐÖ±½Ó»Ö¸´±»É¾³ýµÄÊý¾Ý¿âÎļþ£¨ÓÈÆäÊÇÔÚʹÓÃInnoDBÒýÇæÊ±£©¡£Òò´Ë£¬ËùÓлָ´·½°¸¶¼½¨Á¢ÔÚÓб¸·ÝÕâÒ»»ùʯ֮ÉÏ¡£ ½â¾ö·½°¸Ò»£º´ÓÎļþϵͳ¿ìÕÕ»ò±¸·ÝÎļþÖлָ´ Èç¹ûÄúÓж¨ÆÚµÄÎïÀí±¸·Ý»òÎļþϵͳ¼¶¿ìÕÕ£¨ÀýÈ磬ʹÓÃLVM¡¢ZFS»òÔÆ³§É̵ĿìÕÕ¹¦ÄÜ£©£¬»Ö¸´¹ý³Ì»áÏà¶ÔÖ±½Ó¡£ 1. ºËÐÄ˼·£ºÓÃɾ³ý²Ù×÷·¢Éúǰ´´½¨µÄ±¸·Ý£¬Ö±½ÓÌæ»»µ±Ç°µÄÎïÀíÊý¾ÝÎļþ¡£ 2. ²Ù×÷²½Ö裨¸ß·çÏÕ£¬Ðè½÷É÷£©£º Á¢¼´Í£Ö¹MySQL·þ¡¡
±¾ÎĽ«Ïêϸ½éÉÜÈçºÎÖ±½ÓʹÓà `mysqld` ÃüÁîÆô¶¯ MySQL ·þÎñÆ÷£¬²¢ÉîÈë½²½âÑéÖ¤·½·¨¡¢³£¼ûÎÊÌâÅŲ鼼ÇÉ£¬°ïÖúÄãÈ«ÃæÕÆÎÕ MySQL µÄºËÐÄÔËÐлúÖÆ¡£ Ò»¡¢Ö±½ÓÔËÐÐ mysqld£ººÎʱ¼°ÎªºÎʹÓÃÕâÖÖ·½Ê½ ÊÊÓó¡¾° - **µ÷ÊÔÓ뿪·¢**£º¿ìËÙÆô¶¯Ò»¸öÁÙʱʵÀý½øÐвâÊÔ - **¹ÊÕϻָ´**£ºµ±·þÎñÎÞ·¨Õý³£Æô¶¯Ê±£¬Ö±½ÓÔËÐпɻñÈ¡¸üÏêϸµÄ´íÎóÐÅÏ¢ - **¶àʵÀý²¿Êð**£ºÔÚͬһ̨»úÆ÷ÉÏÔËÐжà¸ö MySQL ʵÀý - **ȨÏÞÎÊÌâÅŲé**£ºÅųýϵͳ·þÎñ¹ÜÀíÆ÷µÄ¸ÉÈÅ£¬Ö±½Ó¶¨Î»ÎÊÌâ ×¼±¸¹¤×÷ 1. ÕÒµ½ MySQL °²×°Ä¿Â¼Ï嵀 `bin` Îļþ¼Ð 2. È·ÈÏÊý¾ÝĿ¼£¨datadir£©µÄλÖà 3. È·±£ÓÐ×ã¹»µÄȨÏÞÖ´ÐÐ mysqld ³ÌÐò ¶þ¡¢ÏêϸÆô¶¯²½ÖèÓëÃüÁîʾÀý »ù±¾Æô¶¯ÃüÁî ```bash # ½øÈë MySQL µÄ bin Ŀ¼ cd /usr/local/mysql/bin/ # ×î¼òµ¥µÄ·½Ê½Ö±½ÓÆô¶¯ ./mysqld # Ö¸¶¨»ù±¾Ä¿Â¼ºÍÊý¾ÝĿ¼£¨ÍƼö£© ./mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data # ÔÚ¿ØÖÆÌ¨ÏÔʾÔËÐÐÈÕÖ¾£¨µ÷ÊԱر¸£© ¡¡
½ÓÉÏÆª£¬ÔÚ Windows ÉÏ£¬MySQL ×î³£±»°²×°ÎªÒ»Ïî Windows ·þÎñ £¬ÕâÒ²ÊÇÍÆ¼öµÄ×ö·¨¡£ 1. ͨ¹ýÃüÁîÐУ¨¹ÜÀíԱȨÏÞ£© Æô¶¯ MySQL ·þÎñ cmd ¸´ÖÆ ÏÂÔØ »òÕßʹÓøüÇ¿´óµÄ sc ÃüÁ cmd ¸´ÖÆ ÏÂÔØ Í£Ö¹ MySQL ·þÎñ cmd ¸´ÖÆ ÏÂÔØ 2. ͨ¹ýͼÐνçÃæ£¨GUI£© °´ Win + R£¬ÊäÈë services.msc ²¢»Ø³µ£¬´ò¿ª·þÎñ´°¿Ú¡£ ÔÚ·þÎñÁбíÖÐÕÒµ½ÃûΪ MySQL »òÀàËÆÃû³ÆµÄ·þÎñ£¨Èç MySQL80, MySQL57£¬Êý×Ö´ú±í°æ±¾£©¡£ ÓÒ¼üµ¥»÷¸Ã·þÎñ£¬Ñ¡ÔñÆô¶¯¡¢Í£Ö¹»òÖØÐÂÆô¶¯¡£ 3. Ö±½ÓÔËÐÐ mysqld£¨²»ÍƼöÓÃÓÚÉú²ú£© ÄãÒ²¿ÉÒÔÌø¹ý·þÎñ£¬Ö±½ÓÔËÐзþÎñÆ÷½ø³Ì¡£ ×¢Ò⣺ÕâÖÖ·½Ê½¹Ø±ÕÖÕ¶Ë´°¿Ú»áµ¼Ö MySQL Í£Ö¹¡£ ´ò¿ª cmd »ò PowerShell¡£ µ¼º½µ½ MySQL µÄ bin Ŀ¼£¬ÀýÈ磺 cmd ¸´ÖÆ ÏÂÔØ Ö±½ÓÔËÐУº cmd ¸´ÖÆ ÏÂÔØ --console ²ÎÊý»á½«ÈÕÖ¾Êä³öµ½µ±Ç°¿ØÖÆÌ¨£¬·½±ãµ÷ÊÔ¡£ ÁíÍâ´îÅäÒ»¿î·Ç³£±ã½ÝµÄMYSQL±¸·Ý¹¤¾ß£¬¿É¶¨Ê±±¸·Ý¡¢ÒìµØ±¸·Ý£¬MYSQLµ¼³öµ¼Èë¡£¿É±¾µØÁ¬½ÓLINUXÀïµÄMYSQL£¬¼òµ¥±ã½Ý¡£¿ÉÒÔ´ó´ó¡¡
MySQL×ÜÊÇÆô¶¯²»³É¹¦£¬ÏëÖªµÀÈçºÎÆô¶¯MySQL£¿ MySQL µÄÆô¶¯ÃüÁî¸ù¾Ý²Ù×÷ϵͳµÄ²»Í¬£¨Linux¡¢Windows¡¢macOS£©ÒÔ¼°°²×°·½Ê½µÄ²»Í¬¶øÓкܴó²îÒì¡£ÏÂÃæ½«Ïêϸ½éÉܸ÷ÖÖ³¡¾°ÏÂµÄÆô¶¯·½·¨¡£ Ò»¡¢Linux ϵͳ£¨×î³£¼ûµÄʹÓû·¾³£© ÔÚ Linux ÉÏ£¬MySQL ͨ³£×÷Ϊһ¸ö**·þÎñ£¨Service£©** À´ÔËÐС£Òò´Ë£¬Æô¶¯ÃüÁîÈ¡¾öÓÚÄãµÄ·¢ÐаæÊ¹Óõijõʼ»¯ÏµÍ³¡£ 1. ÏÖ´ú Linux ·¢Ðа棨Ubuntu 16.04+, CentOS 7+, Debian 8+£© ÕâЩϵͳͨ³£Ê¹Óà **systemd** ×÷Ϊ³õʼ»¯ÏµÍ³¡£ÕâÊÇ×îÍÆ¼öµÄ·½Ê½¡£ * **Æô¶¯ MySQL** ```bash sudo systemctl start mysql # ¶ÔÓÚ Ubuntu/Debian # »òÕß sudo systemctl start mysqld # ¶ÔÓÚ CentOS/Red Hat/Fedora ``` * **Í£Ö¹ MySQL** ```bash sudo systemctl stop mysql ``` * **ÖØÆô MySQL** ```bash sudo systemctl restart mysql ``` * **²é¿´ MySQL ״̬**£¨¼ì²éÊÇ·ñÕýÔÚÔËÐУ© ```bash sudo systemctl status mysql ``` Èç¹û¿´µ½ `active (running¡¡
½ÓÉÏÆª£¬ µÚ6Ì⣺DDL¡¢DML¡¢DCLÓÐÊ²Ã´Çø±ð£¿ ±ê×¼´ð°¸£º - DDL£¨Êý¾Ý¶¨ÒåÓïÑÔ£©£ºCREATE¡¢ALTER¡¢DROPµÈ - DML£¨Êý¾Ý²Ù×÷ÓïÑÔ£©£ºSELECT¡¢INSERT¡¢UPDATE¡¢DELETEµÈ - DCL£¨Êý¾Ý¿ØÖÆÓïÑÔ£©£ºGRANT¡¢REVOKEµÈ ------------ µÚ7Ì⣺DELETE¡¢TRUNCATE¡¢DROPÓÐÊ²Ã´Çø±ð£¿ ±ê×¼´ð°¸£º - DELETE£ºÖðÐÐɾ³ý£¬¿É»Ø¹ö£¬¿É´øWHEREÌõ¼þ - TRUNCATE£ºÕûÌåɾ³ý£¬²»¿É»Ø¹ö£¬ÖØÖÃ×ÔÔöID - DROP£ºÉ¾³ýÕûÕÅ±í£¬°üÀ¨±í½á¹¹ ÐÔÄÜ£ºDROP TRUNCATE DELETE ------------ µÚ8Ì⣺ʲôÊÇÊÂÎñ£¿ACIDÌØÐÔÊÇʲô£¿ ±ê×¼´ð°¸£º ÊÂÎñÊÇÒ»×éҪôȫ²¿³É¹¦ÒªÃ´È«²¿Ê§°ÜµÄÊý¾Ý¿â²Ù×÷¡£ ACID£º - Ô×ÓÐÔ£¨Atomicity£©£º²»¿É·Ö¸îµÄ×îСµ¥Ôª - Ò»ÖÂÐÔ£¨Consistency£©£ºÊÂÎñǰºóÊý¾Ý״̬һÖ - ¸ôÀëÐÔ£¨Isolation£©£ºÊÂÎñ¼ä»¥²»¸ÉÈÅ - ³Ö¾ÃÐÔ£¨Durability£©£ºÌá½»ºóÓÀ¾ÃÓÐЧ ------------ µÚ9Ì⣺INNER JOIN¡¢LEFT JOINÓÐÊ²Ã´Çø±ð£¿ ±ê×¼´ð°¸£º - INNER JOIN£º·µ»ØÁ½¸ö±íÆ¥ÅäµÄÐÐ - LEFT JOIN£º·µ»Ø¡¡
Ìø²Û¼¾À´ÁË£¬MySQL×÷Ϊ³ÌÐòÔ±ÃæÊԱؿ¼ÖªÊ¶µã£¬Äã×¼±¸ºÃÁËÂ𣿠±ðµ£ÐÄ£¡Ð¡±à°¾Ò¹ÕûÀíÁË×îÐÂ×îÈ«µÄMySQLÊ®´ó¸ßƵ»ù´¡ÃæÊÔÌ⣬¸½´ø³¬Ïêϸ½âÎöºÍÃæÊÔ¼¼ÇÉ£¬ÈÃÄã´ÓÈÝÓ¦¶Ô¸÷ÖÖ¿½ÎÊ£¡ ------------ µÚ1Ì⣺ʲôÊǹØÏµÐÍÊý¾Ý¿â£¿MySQLÊôÓÚÄÄÖÖ£¿ ±ê×¼´ð°¸£º¹ØÏµÐÍÊý¾Ý¿âÊDzÉÓùØÏµÄ£ÐÍ£¨¶þά±í¸ñÐÎʽ£©×éÖ¯Êý¾ÝµÄÊý¾Ý¿â£¬Ê¹ÓÃSQLÓïÑÔ½øÐÐÊý¾Ý²Ù×÷ºÍ¹ÜÀí¡£MySQLÊÇĿǰ×îÁ÷ÐеĿªÔ´¹ØÏµÐÍÊý¾Ý¿â¹ÜÀíϵͳ£¨RDBMS£© ÃæÊÔ¼¼ÇÉ£ºËµÍê¿ÉÒÔ²¹³äÒ»¾äÓëÖ®Ïà¶ÔµÄÊǷǹØÏµÐÍÊý¾Ý¿â£¨NoSQL£©£¬±ÈÈçMongoDB¡¢Redis ------------ µÚ2Ì⣺CHARºÍVARCHARÓÐÊ²Ã´Çø±ð£¿ ±ê×¼´ð°¸£º - CHARÊǶ¨³¤×Ö·û´®£¬¶¨ÒåµÄ³¤¶È¾ÍÊÇÕ¼ÓõĿռ䣬Êʺϴ洢³¤¶È¹Ì¶¨µÄÊý¾Ý£¨ÈçÉí·ÝÖ¤¡¢ÊÖ»úºÅ£© - VARCHARÊDZ䳤×Ö·û´®£¬Ö»Õ¼ÓÃʵ¼ÊÄÚÈݳ¤¶È+1/2¸ö×Ö½Ú£¬Êʺϳ¤¶È±ä»¯´óµÄÊý¾Ý - CHAR²éѯЧÂʸߣ¬VARCHAR½ÚÊ¡´æ´¢¿Õ¼ä ʵսʾÀý£ºCHAR(10)´æ´¢abcÕ¼ÓÃ10×Ö½Ú£¬VARCHAR(10)´æ´¢abcÖ»Õ¼4×Ö½Ú£¨3+1£© ------------ ¡¡
¹ØÓÚÔÚ MySQL ÖÐÐ޸ıí×ֶγ¤¶È£¬ÕâÊÇÒ»¸ö³£¼ûµÄ DDL£¨Êý¾Ý¶¨ÒåÓïÑÔ£©²Ù×÷¡£ÏÂÃæÎÒ½«ÎªÄúÏêϸ½²½â¾ßÌå·½·¨¡¢×¢ÒâÊÂÏîÒÔ¼°×î¼Ñʵ¼ù¡£ ºËÐÄÓï·¨£º ALTER TABLE + MODIFY COLUMN ×î³£Óõķ½·¨ÊÇʹÓà ALTER TABLE Óï¾äµÄ MODIFY COLUMN ×Ӿ䡣 »ù±¾Óï·¨£º ALTER TABLE table_name MODIFY COLUMN column_name new_data_type(new_length); Ïêϸ²½ÖèÓëʾÀý ²é¿´µ±Ç°±í½á¹¹£¨·Ç³£ÖØÒª£¡£© ÔÚÐÞ¸Ä֮ǰ£¬Îñ±ØÏÈÈ·ÈÏ×ֶεĵ±Ç°ÕýÈ·¶¨Ò壬°üÀ¨Êý¾ÝÀàÐÍ¡¢ÊÇ·ñÔÊÐí NULL¡¢Ä¬ÈÏÖµµÈ£¬ÒÔÃâÔÚÐÞ¸Äʱ¶ªÊ§ÕâЩÊôÐÔ¡£ -- ·½·¨1£º¼òµ¥²é¿´DESC table_name;-- ·½·¨2£º²é¿´ÍêÕûµÄ½¨±íÓï¾ä£¨ÍƼö£©SHOW CREATE TABLE table_name; ÐÞ¸Ä×ֶγ¤¶È ¼ÙÉèÎÒÃÇÓÐÒ»¸ö user ±í£¬ÆäÖÐ username ×ֶεĵ±Ç°ÀàÐÍÊÇ VARCHAR(20) £¬ÎÒÃÇÏ뽫ÆäÀ©Õ¹µ½ VARCHAR(50) ¡£ ʾÀý£º ALTER TABLE user MODIFY COLUMN username VARCHAR(50) NOT NULL DEFAULT ; ×¢Ò⣺ ³ýÁ˳¤¶È£¬ÎÒÃÇ»¹ÐèÒªÔÚÓï¾äÖÐÃ÷È·Ö¸¶¨Æä¡¡
hiveºÍmysqlÓÐÊ²Ã´Çø±ð£¿ÕâÊÇÒ»¸ö·Ç³£¾µäµÄÎÊÌâ¡£Hive ºÍ MySQL ¶¼Êdz£ÓõÄÊý¾Ý²éѯ¹¤¾ß£¬µ«ËüÃǵĶ¨Î»¡¢¼Ü¹¹ºÍÊÊÓó¡¾°ÓÐÌìÈÀÖ®±ð¡£ ¼òµ¥À´Ëµ£ºMySQL ÊÇÒ»¸öÊý¾Ý¿â£¬ÓÃÓÚÔÚÏßÒµÎñ´¦Àí£»¶ø Hive ÊÇÒ»¸öÊý¾Ý²Ö¿â¹¤¾ß£¬ÓÃÓÚÀëÏß´óÊý¾Ý·ÖÎö¡£ ÏÂÃæÎÒÃÇ´Ó¶à¸öά¶È½øÐÐÏêϸ¶Ô±È¡£ Ò»¡¢ºËÐĶ¨Î»ÓëÉè¼ÆÄ¿±ê | ÌØÐÔ | MySQL | Hive | | : | : | : | | ºËÐĶ¨Î» | ¹ØÏµÐÍÊý¾Ý¿â¹ÜÀíϵͳ£¬ÃæÏòÔÚÏßÊÂÎñ´¦Àí | Êý¾Ý²Ö¿â ºÍ SQL-on-Hadoop ¹¤¾ß£¬ÃæÏòÀëÏßÊý¾Ý·ÖÎö | | Éè¼ÆÄ¿±ê | µÍÑÓ³Ù¡¢¸ß²¢·¢µÄËæ»ú¶ÁдºÍÊÂÎñ²Ù×÷£¬±£Ö¤Êý¾ÝÒ»ÖÂÐÔºÍÍêÕûÐÔ¡£ | ¸ßÍÌÍÂÁ¿µÄÅúÁ¿Êý¾Ý´¦Àí£¬Äܹ»¶Ôº£Á¿Êý¾Ý½øÐи´Ôӵġ¢³¤Ê±¼äÔËÐеķÖÎö¡£ | | Ó¦Óó¡¾° | ÍøÕ¾ºó¶Ë¡¢ÒµÎñϵͳ¡¢½»Ò×ϵͳµÈÐèҪʵʱ½»»¥µÄÓ¦Óᣠ| ÈÕÖ¾·ÖÎö¡¢Óû§ÐÐΪ·ÖÎö¡¢Êý¾Ý±¨±í¡¢ETL Á÷³ÌµÈ´óÊý¾Ý·ÖÎö³¡¾°¡£ | Ò»¸öÉú¶¯µÄ±ÈÓ÷£º MySQL ÏñÒ»¼ÒÒøÐеĹñ̨£º´¦ÀíµÄÊÇʵʱµÄ¡¢Ð¡¶îµÄ¡¢¸ß²¢·¢µÄ´æÈ¡¿îÒµÎñ£¨OLTP£©¡£ÒªÇóÏìÓ¦¡¡
MySQL ÖеÄÖÐÎÄÅÅÐòÊÇÒ»¸ö·Ç³£ÖØÒªÇÒ³£¼ûµÄÐèÇó¡£MySQL ÖеÄÖÐÎÄÅÅÐò¹æÔò±ÈÓ¢ÎÄ×ÖĸÅÅÐòÒª¸´ÔÓ£¬ÒòΪÖÐÎÄĬÈÏÊǰ´×Ö·ûµÄ¶þ½øÖƱàÂë»òÆ´Òô½øÐÐÅÅÐò£¬¶øÓÐʱÎÒÃÇÐèÒª°´±Ê»µÈÆäËû¹æÔòÅÅÐò¡£ ÏÂÃæÎªÄúÏêϸ½âÎö MySQL ÖеÄÖÐÎÄÅÅÐò·½·¨¡£ ºËÐĸÅÄ×Ö·û¼¯ÓëÅÅÐò¹æÔò ÖÐÎÄÅÅÐòÎÊÌâ±¾ÖÊÉÏÊÇÓÉ ×Ö·û¼¯ ºÍ ÅÅÐò¹æÔò ¾ö¶¨µÄ¡£ ×Ö·û¼¯£º¶¨ÒåÁËÊý¾Ý¿â´æ´¢ÄÄЩ×Ö·û£¨Èç utf8mb4 Ö§³Ö°üÀ¨ÖÐÎÄÔÚÄڵľø´ó¶àÊý×Ö·û£©¡£ ÅÅÐò¹æÔò£º¶¨ÒåÁË×Ö·û±È½ÏºÍÅÅÐòµÄ¹æÔò¡£Ãû³ÆÍ¨³£ÒÔ _ci £¨´óСд²»Ãô¸Ð£©¡¢ _cs £¨´óСдÃô¸Ð£©¡¢ _bin £¨¶þ½øÖÆ£©½áβ¡£ ³£¼ûµÄÖÐÎÄÅÅÐò¹æÔò ¶ÔÓÚ utf8mb4 ×Ö·û¼¯£¬MySQL ÌṩÁ˼¸ÖÖÖØÒªµÄÖÐÎÄÅÅÐò¹æÔò£º | ÅÅÐò¹æÔò | ˵Ã÷ | ÌØµã | | : | : | : | | utf8mb4_unicode_ci | »ùÓÚ Unicode ÅÅÐòËã·¨£¬Ö§³Ö¶àÓïÑÔ¡£ | ĬÈÏÍÆ¼ö¡£¶ÔÖÐÎİ´Æ´ÒôÅÅÐò£¬¼æÈÝÐԺã¬ÊÇͨÓÃÑ¡Ôñ¡£ | | utf8mb4_zh_0900_as_cs | Unicode 9.0 ±ê×¼£¬×¨ÎªÖÐÎÄÓÅ»¯¡£ | °´Æ´ÒôÅÅÐò£¬ÇÒÇø¡¡
½ÓÉÏÆª£¬ÕâÆª¼ÌÐøÎª´ó¼Ò½éÉÜһЩMySQL ÃüÁîÖ¸ÄÏ ËÄ¡¢ Êý¾Ý²Ù×÷ (CRUD)** 1. ²åÈëÊý¾Ý (INSERT) ```sql INSERT INTO ±íÃû (ÁÐ1, ÁÐ2, ÁÐ3, ...) VALUES (Öµ1, Öµ2, Öµ3, ...); -- ʾÀý 1£º²åÈëÒ»ÌõÍêÕû¼Ç¼£¨ÎªËùÓÐÁи³Öµ£© INSERT INTO users (username, email, age) VALUES (john_doe, john@example.com, 25); -- ʾÀý 2£º²åÈë¶àÌõ¼Ç¼ INSERT INTO users (username, email, age) VALUES (alice, alice@example.com, 30), (bob, bob@example.com, 28); ``` 2. ²éѯÊý¾Ý (SELECT) ```sql -- ²éѯËùÓÐÁеÄËùÓÐÊý¾Ý SELECT * FROM ±íÃû; -- ²éÑ¯ÌØ¶¨ÁÐ SELECT ÁÐ1, ÁÐ2 FROM ±íÃû; SELECT username, email FROM users; -- ʾÀý -- ´øÌõ¼þµÄ²éѯ (WHERE) SELECT * FROM ±íÃû WHERE Ìõ¼þ; SELECT * FROM users WHERE age 25; -- ʾÀý£ºÄêÁä´óÓÚ25µÄÓû§ SELECT * FROM users WHERE username = john_doe; -- ʾÀý£ºÓû§ÃûΪ john_doe -- ÅÅÐò (ORDER BY) SELECT * F¡¡
°²×°ºÃMySQLÒÔºó£¬ÔõôʹÓÃmysqlÃüÁîÀ´²Ù×÷Êý¾Ý¿âÄØ£¿ ÕâÀïΪÄúÕûÀíÁËÒ»·Ý·Ç³£È«ÃæºÍʵÓÃµÄ MySQL ÃüÁîÖ¸ÄÏ£¬´ÓÁ¬½Óµ½Êý¾Ý¿â¡¢»ù±¾²Ù×÷µ½¸ß¼¶²éѯºÍ¹ÜÀí£¬²¢¸½ÓÐÇåÎúµÄʾÀý¡£ --- Ò»¡¢ Á¬½ÓÓëÍ˳ö MySQL** 1. Á¬½Óµ½±¾µØ MySQL ·þÎñÆ÷ ```bash # ·½Ê½ 1£º»Ø³µºóÊäÈëÃÜÂë£¨ÍÆ¼ö£¬ÃÜÂëÒþ²Ø£© mysql -u root -p # ·½Ê½ 2£ºÔÚÃüÁîÖÐÖ±½ÓÖ¸¶¨ÃÜÂ루²»°²È«£¬ÊÊÓÃÓڽű¾£© mysql -u root -pÄãµÄÃÜÂë # ·½Ê½ 3£ºÖ¸¶¨Ö÷»ú¡¢Óû§ºÍÊý¾Ý¿â mysql -h localhost -u Óû§Ãû -p Êý¾Ý¿âÃû ``` * `-u`£ºÖ¸¶¨Óû§Ãû£¨Èç `root`£©¡£ * `-p`£ºÌáʾÊäÈëÃÜÂë¡£ * `-h`£ºÖ¸¶¨Ö÷»úµØÖ·£¨Èç `127.0.0.1` »òÔ¶³Ì IP£©¡£ 2. Í˳ö MySQL ÃüÁîÐÐ ```sql mysql exit; -- »òÕß mysql quit; -- »òÕßʹÓÿì½Ý¼ü Ctrl + D ``` --- ¶þ¡¢ Êý¾Ý¿â²Ù×÷ (Database)** 1. ÏÔʾËùÓÐÊý¾Ý¿â ```sql SHOW DATABASES; ``` 2. ´´½¨ÐÂÊý¾Ý¿â ```sql CREATE DATABASE Êý¾Ý¿âÃû; CREATE DATABASE mydb; -- ʾÀý -¡¡
ÈçºÎÏÂÔØMySQLÄØ£¿×ȫ¡¢×îÍÆ¼öµÄ·½Ê½ÊÇ´Ó **MySQL ¹Ù·½ÍøÕ¾** ÏÂÔØ£º Ñ¡Ôñ°²×°°ü ÔÚÏÂÔØÒ³Ãæ£¬²Ù×÷ϵͳĬÈÏ»áÑ¡ºÃ Microsoft Windows¡£Äú»á¿´µ½¼¸¸öÑ¡Ï ÍÆ¼öÏÂÔØ £ºÕÒµ½ MySQL Installer for Windows £¨Í¨³£ÅÅÔÚµÚÒ»¸ö£©£¬µã»÷ÆäÓÒ±ßµÄ Download °´Å¥¡£ https://dev.mysql.com/doc/refman/8.0/en/images/windows-installer-download-1.png Ìø¹ýµÇ¼£¬Ö±½ÓÏÂÔØ µã»÷ÏÂÔØºó£¬Ò³Ãæ»áÌáʾÄúµÇ¼OracleÕË»§¡£ ÄúÍêÈ«²»ÐèÒªµÇ¼£¡ Ö±½ÓÕÒµ½Ò³Ãæµ×²¿µÄ No thanks, just start my download. Á´½Ó²¢µã»÷Ëü£¬¼´¿É¿ªÊ¼ÏÂÔØ°²×°Æ÷£¨.msiÎļþ£©¡£ https://dev.mysql.com/doc/refman/8.0/en/images/windows-installer-download-2.png ÔËÐа²×°Æ÷ Ë«»÷ÏÂÔØºÃµÄ mysql-installer-community-°æ±¾ºÅ.msi ÎļþÔËÐС£ Ñ¡Ôñ°²×°ÀàÐÍ£¨·Ç³£¹Ø¼ü£© °²×°Æ÷Æô¶¯ºó£¬ÔÚ Choosing a Setup Type ½çÃæ£¬ÎªÄúÍÆ¼öÁ½ÖÖÑ¡Ôñ£º Developer Default (¿ª·¢ÕßĬÈÏ) £º°²×°MySQL·þÎñÆ÷ºÍÈ«²¿¿ª¡¡
ÓëWindowsʹÓð²×°Æ÷²»Í¬£¬ÔÚLinuxÉÏ£¬ÎÒÃÇͨ³£Ö±½ÓʹÓÃϵͳ×Ô´øµÄ°ü¹ÜÀíÆ÷À´°²×°MySQL£¬ÕâÊÇ×î¼òµ¥¡¢×îÍÆ¼öµÄ·½·¨¡£Õû¸ö¹ý³Ìͨ¹ýÃüÁîÖÕ¶ËÍê³É¡£ ºËÐÄ·½·¨£ºÊ¹Óðü¹ÜÀíÆ÷°²×° (ÍÆ¼ö) ¾ø´ó¶àÊýLinux·¢Ðа棨ÈçUbuntu¡¢Debian¡¢CentOS¡¢FedoraµÈ£©µÄ¹Ù·½Èí¼þ²Ö¿âÖж¼°üº¬ÁËMySQL Server¡£ÄúÖ»ÐèÒªÒ»ÐÐÃüÁî¼´¿ÉÍê³É°²×°¡£ ÒÔÏ·ֱð½éÉÜÁ½ÖÖÖ÷Á÷ÅÉϵµÄ°²×°ÃüÁ 1. ÊÊÓÃÓÚ Ubuntu ºÍ Debian ϵͳ (ʹÓà apt °ü¹ÜÀíÆ÷) bash # 1. Ê×ÏÈ£¬¸üб¾µØµÄÈí¼þ°üÁÐ±í£¬È·±£»ñÈ¡×îеİ汾ÐÅÏ¢¡£ sudo apt update # 2. °²×° MySQL ·þÎñÆ÷Èí¼þ°ü¡£Õâ»á×Ô¶¯°²×° mysql-server ¼°ÆäËùÓÐÒÀÀµ¡£ sudo apt install mysql-server # 3. (¿ÉÑ¡µ«Ç¿ÁÒÍÆ¼ö) ÔËÐа²È«°²×°½Å±¾£¬½øÐгõʼ°²È«ÅäÖã¬ÈçÉèÖÃrootÃÜÂë¡¢ÒÆ³ýÄäÃûÓû§µÈ¡£ sudo mysql_secure_installation ÔËÐÐ sudo mysql_secure_installation ºó£¬»áÓÐһϵÁн»»¥Ê½ÌáÎÊ£¬°´ÕÕÌáʾ²Ù×÷¼´¿É£¬ÕâÊDZ£ÕÏÊý¾Ý¿â°²È«µÄÖØÒªÒ»²½¡£ 2¡¡
¹ØÓÚ MySQL Çå¿Õ±íÊý¾Ý£¬ÕâÊÇÒ»¸ö¿´ËƼòµ¥µ«ÖÁ¹ØÖØÒªµÄ²Ù×÷¡£ÏÂÃæÎÒ½«ÎªÄúÏêϸ½âÊÍÁ½ÖÖÖ÷Òª·½·¨¡¢ËüÃǵĺËÐÄÇø±ðÒÔ¼°×¢ÒâÊÂÏî¡£ Á½ÖÖÖ÷Òª·½·¨ DELETE Óï¾ä DELETE ÊDZê×¼µÄ SQL Óï¾ä£¬ÓÃÓÚ°´Ìõ¼þɾ³ý¼Ç¼¡£µ±²»Ö¸¶¨Ìõ¼þʱ£¬»áÇå¿ÕÕû¸ö±íµÄÊý¾Ý¡£ Óï·¨£º DELETE FROM table_name;-- »òÕߣ¬ÎªÁ˸üÇåÎú£¬¿ÉÒÔ¼ÓÉÏ WHERE Ìõ¼þDELETE FROM table_name WHERE 1=1; ÌØµã£º ÖðÐÐɾ³ý£ºËüÒ»ÐÐÒ»ÐеØÉ¾³ýÊý¾Ý£¬²¢ÔÚÊÂÎñÈÕÖ¾ÖÐΪÿһÐмǼһ¸öɾ³ý²Ù×÷¡£ Ö§³ÖÊÂÎñ£º²Ù×÷¿ÉÒÔ±»°üº¬ÔÚÊÂÎñÖУ¨ BEGIN ... COMMIT / ROLLBACK £©¡£Èç¹ûÊÂÎñ»Ø¹ö£¬Êý¾Ý¿ÉÒÔ»Ö¸´¡£ ´¥·¢´¥·¢Æ÷£ºÈç¹û±íÉ϶¨ÒåÁË BEFORE DELETE »ò AFTER DELETE ´¥·¢Æ÷£¬ËüÃǻᱻִÐС£ ½ÏÂý£º¶ÔÓÚ´ó±í£¬ÓÉÓÚÖðÐвÙ×÷ºÍÈÕÖ¾¼Ç¼£¬ËÙ¶È»á½ÏÂý¡£ ²»Ó°Ïì±í½á¹¹£ºÖ»É¾³ýÊý¾Ý£¬²»ÖØÖÃ×ÔÔö¼ÆÊýÆ÷£¨AUTO_INCREMENT£©£¬Ò²²»ÊͷűíËùÕ¼ÓõÄÊý¾ÝÎļþ¿Õ¼ä£¨¶ÔÓÚ InnoDB£©¡£ TRUNCATE TABLE Óï¾ä TRUNCATE ÊÇÒ»¸ö¸ü¸ßЧµÄÇå¿Õ¡¡
½ÓÉÏÆª£¬ Îå¡¢Êý¾Ý¿âʵÀýÅäÖÃÓÅ»¯ µ÷Õû `my.cnf` (Linux) »ò `my.ini` (Windows) ÅäÖÃÎļþ¡£ ¹Ø¼ü²ÎÊý£º `innodb_buffer_pool_size`£ºÕâÊÇ×îÖØÒªµÄ²ÎÊý£¡ Ëü¶¨ÒåÁË InnoDB ´æ´¢ÒýÇæÓÃÀ´»º´æÊý¾ÝºÍË÷ÒýµÄÄÚ´æ´óÐ £Í¨³£½¨ÒéÉèÖÃΪ¿ÉÓÃÎïÀíÄÚ´æµÄ 50% - 70%¡£ `innodb_log_file_size`£ºÖØ×öÈÕÖ¾Îļþ´óÐ £¸ü´óµÄÈÕÖ¾Îļþ¿ÉÒÔÌá¸ßдÐÔÄÜ£¬µ«»áÔö¼Ó±ÀÀ£»Ö¸´µÄʱ¼ä¡£ `max_connections`£º×î´óÁ¬½ÓÊý¡£ÉèÖùýµÍ»áµ¼ÖÂToo many connections´íÎó£¬ÉèÖùý¸ß»áÏûºÄ¹ý¶àÄÚ´æ¡£ ½¨Ò飺²»ÒªÃ¤Ä¿ÐÞ¸ÄÅäÖã¬×îºÃʹÓà MySQL ¹Ù·½ÌṩµÄÅäÖÃÏòµ¼£¨Èç `mysql-tuning-primer` ½Å±¾£©»ò²Î¿¼×¨Òµ½¨Òé¡£ Áù¡¢Ó²¼þÓëϵͳÓÅ»¯ ʹÓà SSD Ó²ÅÌ£ºI/O ÐÔÄÜÊÇÊý¾Ý¿â×î´óµÄÆ¿¾±Ö®Ò»£¬½«Ó²ÅÌ´Ó HDD Éý¼¶Îª SSD ÄÜ´øÀ´ÖʵķÉÔ¾¡£ Ôö¼ÓÄڴ棺¸ü´óµÄÄÚ´æÒâζןü¶àµÄÊý¾Ý¿ÉÒÔ±»»º´æÔÚ `InnoDB Buffer Pool` ÖУ¬¼õÉÙ´ÅÅÌI/O¡£ Ñ¡Ôñ¸ü¿ìµÄ CPU ºÍ¸ü¶àµÄºËÐÄ£º¶ÔÓÚ¸´ÔӵIJéѯºÍ²¢·¢³¡¾°ÓаïÖú¡£ Æß¡¢¡¡
ÕâÊÇÒ»·ÝÈ«ÃæÇҽṹÇåÎúµÄ MySQL ÐÔÄÜÓÅ»¯Ö¸ÄÏ¡£ÎÒ½«´Óºê¹Ûµ½Î¢¹Û£¬´ÓÔÔòµ½Êµ¼ù£¬ÎªÄúϵͳµØ½éÉÜÓÅ»¯Ë¼Â·ºÍ·½·¨¡£ Ò»¡¢ºËÐÄ˼Ï룺ÐÔÄÜÓÅ»¯½ð×ÖËþ ÓÅ»¯¹¤×÷Ó¦¸ÃÏñ½ð×ÖËþÒ»Ñù£¬´Óµ×²ã»ù´¡¿ªÊ¼£¬Ô½µ×²ãµÄÓÅ»¯Ð§¹ûÔ½ÏÔÖø¡£ 1. ¼Ü¹¹ÓÅ»¯£¨Ð§¹û×îÏÔÖø£©£º°üÀ¨ÒýÈ뻺´æ¡¢¶Áд·ÖÀë¡¢·Ö¿â·Ö±íµÈ¡£ÕâÊǽâ¾öÐÔÄÜÎÊÌâµÄ¸ù±¾¡£ 2. Êý¾Ý¿âÉè¼ÆÓëSQLÓÅ»¯£ºÁ¼ºÃµÄ±í½á¹¹Éè¼ÆºÍ¸ßЧµÄSQLÓï¾äÊÇÐÔÄܵĻùʯ¡£ 3. Êý¾Ý¿âʵÀýÅäÖÃÓÅ»¯£ºµ÷ÕûMySQLµÄÅäÖòÎÊý£¨Èç`innodb_buffer_pool_size`£©ÒÔÊÊÓ¦Ó²¼þºÍÒµÎñÐèÇó¡£ 4. Ó²¼þÓëϵͳÓÅ»¯£ºÉý¼¶Ó²¼þ£¨CPU¡¢ÄÚ´æ¡¢SSDÓ²ÅÌ£©ºÍÓÅ»¯²Ù×÷ϵͳÅäÖᣠ¼Çס£º Ô½¿¿½üËþ¶¥£¨Ó²¼þ£©³É±¾Ô½¸ß£¬Ð§¹ûÈ´Ô½ÓÐÏÞ¡£Ó¦ÓÅÏÈ¿¼ÂÇËþµ×£¨¼Ü¹¹ºÍÉè¼Æ£©µÄÓÅ»¯¡£ ¶þ¡¢¼Ü¹¹ÓÅ»¯ ÕâÊÇÓÅ»¯µÄµÚÒ»²½£¬Ò²ÊÇ×îÖØÒªµÄÒ»²½¡£ 1. ÒýÈ뻺´æ£º ³¡¾°£º¶Á¶àдÉÙ£¬Êý¾Ý±ä»¯²»Æµ·±¡£ ·½°¸£ºÊ¹Óà Redis¡¢Memcached µÈ»º´æÈȵãÊý¾Ý£¬¼õÉÙÊý¾Ý¿âµÄÖ±½Ó·ÃÎÊÁ¿¡£ 2. ¶Áд·ÖÀ룺 ³¡¾°¡¡
MySQL ·Ö¿â·Ö±íÊÇÒ»¸ö·Ç³£ºËÐÄÇÒ¸´ÔӵϰÌ⣬Êǽâ¾öÊý¾Ý¿â¸ß²¢·¢ºÍº£Á¿Êý¾Ý´æ´¢Óë·ÃÎÊÆ¿¾±µÄ¹Ø¼ü¼¼Êõ·½°¸¡£ ÏÂÃæÎÒ½«´ÓΪʲôÐèÒª·Ö¿â·Ö±í¡¢ºËÐĸÅÄî¡¢Ö÷Á÷·½°¸¡¢ÊµÊ©¹¤¾ßÒÔ¼°ÌôÕ½Óë×¢ÒâÊÂÏîµÈ·½Ã棬ΪÄúÌṩһ¸öÈ«ÃæµÄ½²½â¡£ Ò»¡¢ ʲôÊÇ·Ö¿â·Ö±í£¿ÎªÊ²Ã´ÐèÒªËü£¿ ºËÐĸÅÄî ·Ö±í£º ½«Ò»ÕÅ´ó±íµÄÊý¾Ý£¬°´ÕÕijÖÖ¹æÔò£¨ÈçÓû§ID¡¢Ê±¼ä£©²ð·Ö³É¶àÕŽṹÏàͬµÄÎïÀí±í¡£ÀýÈ磬½« user ±í²ð·ÖΪ user_0000 ¡¢ user_0001 ... user_1023 ¡£ ·Ö¿â£º ½«Ò»¸ö´óµÄÊý¾Ý¿â²ð·Ö³É¶à¸öСµÄÊý¾Ý¿â£¬Ã¿¸öÊý¾Ý¿â¿ÉÒÔ²¿ÊðÔÚ²»Í¬µÄ·þÎñÆ÷ÉÏ¡£ÀýÈ磬½« main_db ²ð·ÖΪ db_0 ¡¢ db_1 ... db_n ¡£ ·Ö¿â·Ö±í£º ·Ö¿âºÍ·Ö±íµÄ½áºÏ¡£¼È·Ö¿â£¬ÓÖÔÚÿ¸ö¿âÖнøÐÐ·Ö±í¡£ÕâÊÇ×î³¹µ×µÄ·½°¸£¬ÄÜ×î´ó³Ì¶È·ÖɢѹÁ¦ºÍÈÝÁ¿¡£ Ä¿µÄÓëÇý¶¯Á¦ µ±µ¥Ì¨MySQL·þÎñÆ÷Óöµ½ÒÔÏÂÆ¿¾±Ê±£¬¾ÍÐèÒª¿¼ÂÇ·Ö¿â·Ö±í£º ´æ´¢Æ¿¾±£º µ¥±íÊý¾ÝÁ¿¹ý´ó£¨Èç´ïµ½Ç§Íò¼¶»òÒÚ¼¶£©£¬µ¼Ö´洢¿Õ¼ä²»×㣬±¸·ÝºÍ»Ö¸´Ê±¼ä¼«³¤¡£ ÐÔÄÜÆ¿¾±¡¡
ÔÚ CentOS ϵͳÖÐÐ¶ÔØ MySQL Ðè³¹µ×Çå³ýÏà¹ØÎļþºÍÒÀÀµ£¬ÒÔÏÂÊÇÍêÕûµÄÐ¶ÔØ²½Ö裺 1. Í£Ö¹ MySQL ·þÎñ Ê×ÏÈÈ·±£ MySQL ·þÎñÒÑÍ£Ö¹£º bash sudo systemctl stop mysqld # »òÕë¶Ô¾É°æ±¾ sudo service mysqld stop 2. ²é¿´ÒѰ²×°µÄ MySQL °ü Ö´ÐÐÒÔÏÂÃüÁî²é¿´ÏµÍ³Öа²×°µÄ MySQL Ïà¹Ø°ü£º bash rpm -qa | grep -i mysql # »òÕë¶Ô MariaDB£¨CentOS ×Ô´øµÄ MySQL ·ÖÖ§£© rpm -qa | grep -i mariadb Êä³öʾÀý£º plaintext mysql-community-server-8.0.33-1.el7.x86_64mysql-community-client-8.0.33-1.el7.x86_64mysql-community-common-8.0.33-1.el7.x86_64mysql-community-libs-8.0.33-1.el7.x86_64 3. Ð¶ÔØÒѰ²×°µÄ°ü ¸ù¾ÝÉÏÒ»²½µÄ²éѯ½á¹û£¬Öð¸öÐ¶ÔØ°ü£¨°´ÒÀÀµË³Ðò´Ó·þÎñ¶Ë¿ªÊ¼£©£º bash sudo rpm -e --nodeps °üÃû1 °üÃû2 .. . ʾÀý£º bash sudo rpm -e --nodeps mysql-community-server-8.0.33-1.el7.x86_64 sudo rpm -e --nodeps mysql-community-client-8.0.3¡¡
²é¿´ MySQL Á¬½ÓÊý¿ÉÒÔͨ¹ýÒÔϼ¸ÖÖ³£Ó÷½·¨£¬¸ù¾ÝÐèҪѡÔñºÏÊʵķ½Ê½£º 1. ²é¿´µ±Ç°ËùÓÐÁ¬½ÓÃ÷ϸ sql -- ²é¿´¼ò½àµÄÁ¬½ÓÐÅÏ¢£¨Ä¬ÈÏÏÔʾǰ100Ìõ£© SHOW PROCESSLIST ; -- ²é¿´ÍêÕûµÄÁ¬½ÓÐÅÏ¢£¨°üÀ¨ÍêÕûSQLÓï¾ä£© SHOW FULL PROCESSLIST ; ½á¹ûÖÐ Id ÊÇÁ¬½Ó ID£¬ User ÊÇÁ¬½ÓÓû§£¬ Host Êǿͻ§¶ËµØÖ·£¬ Command ÏÔʾÁ¬½Ó״̬£¨Èç Sleep¡¢Query µÈ£© 2. ͳ¼ÆÁ¬½ÓÊý sql -- ͳ¼Æµ±Ç°×ÜÁ¬½ÓÊý SELECT COUNT ( * ) AS ×ÜÁ¬½ÓÊý FROM information_schema . PROCESSLIST ; -- °´Óû§·Ö×éͳ¼ÆÁ¬½ÓÊý SELECT USER , COUNT ( * ) AS Á¬½ÓÊý FROM information_schema . PROCESSLIST GROUP BY USER ; -- °´Êý¾Ý¿â·Ö×éͳ¼ÆÁ¬½ÓÊý SELECT DB , COUNT ( * ) AS Á¬½ÓÊý FROM information_schema . PROCESSLIST WHERE DB IS NOT NULL GROUP BY DB ; 3. ²é¿´Á¬½Ó״ָ̬±ê sql -- ²é¿´¹Ø¼üÁ¬½Ó״̬ SHOW STATUS WHERE Variable_name IN ( Threads_connected , -- µ±Ç°Òѽ¨Á¢µÄÁ¬¡¡
ÔÚ MySQL ÖУ¬Äã¿ÉÒÔͨ¹ý¶àÖÖ·½Ê½²é¿´µ±Ç°µÄÊý¾Ý¿âÁ¬½ÓÊý¡¢Á¬½Ó״̬¼°Ïà¹ØÅäÖã¬ÒÔÏÂÊdz£Ó÷½·¨£º 1. ²é¿´µ±Ç°ËùÓÐÁ¬½ÓÐÅÏ¢ ʹÓà SHOW PROCESSLIST ÃüÁMySQL 5.7 ¼°ÒÔÏ£©»ò SHOW FULL PROCESSLIST £¨ÏÔʾÍêÕû SQL Óï¾ä£©£º sql -- ²é¿´¼òÂÔÁ¬½ÓÐÅÏ¢£¨½öǰ100Ìõ£© SHOW PROCESSLIST ; -- ²é¿´ËùÓÐÁ¬½ÓµÄÍêÕûÐÅÏ¢£¨°üÀ¨ÍêÕûSQL£© SHOW FULL PROCESSLIST ; ½á¹û˵Ã÷ £º Id £ºÁ¬½Ó ID User £ºÁ¬½ÓµÄÓû§Ãû Host £º¿Í»§¶ËÖ÷»úµØÖ· db £ºµ±Ç°Á¬½ÓµÄÊý¾Ý¿â Command £ºÁ¬½Ó״̬£¨Èç Sleep¡¢Query¡¢Connect µÈ£© Time £ºÁ¬½Ó³ÖÐøÊ±¼ä£¨Ã룩 Info £ºÖ´ÐÐµÄ SQL Óï¾ä 2. ͳ¼Æµ±Ç°Á¬½ÓÊý ͨ¹ý²éѯ information_schema ¿âÖÐµÄ PROCESSLIST ±íͳ¼ÆÁ¬½ÓÊý£º sql -- ͳ¼Æ×ÜÁ¬½ÓÊý SELECT COUNT ( * ) AS total_connections FROM information_schema . PROCESSLIST ; -- °´Óû§Í³¼ÆÁ¬½ÓÊý SELECT USER , COUNT ( * ) AS connections FROM information_schema . PROCESSLIST ¡¡
ÔÚ MySQL ÖÐɾ³ýÖØ¸´Êý¾ÝÐèÒª±£ÁôÒ»Ìõ¼Ç¼¶øÉ¾³ýÆäËûÖØ¸´Ï¾ßÌå·½·¨È¡¾öÓÚ±í½á¹¹ºÍÖØ¸´Åжϱê×¼¡£ÒÔÏÂÊǼ¸ÖÖ³£¼û³¡¾°µÄʵÏÖ·½·¨£º 1. ÓÐΨһ±êʶÁУ¨Èç×ÔÔö ID£©µÄÇé¿ö Èç¹û±íÖÐÓÐΨһ±êʶÁУ¨Èç id £©£¬¿ÉÒÔͨ¹ý·Ö×éÕÒµ½Öظ´¼Ç¼£¬±£Áô ID ×îС£¨»ò×î´ó£©µÄÄÇÌõ¡£ ʾÀý±í½á¹¹£º sql CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT , name VARCHAR ( 50 ) , email VARCHAR ( 50 ) -- ¼ÙÉè email ¿ÉÄÜÖØ¸´ ) ; ɾ³ýÖØ¸´ÓÊÏ䣬±£Áô ID ×îСµÄ¼Ç¼£º sql DELETE FROM users WHERE id NOT IN ( SELECT min_id FROM ( -- ×Ó²éѯ»ñȡÿ¸öÓÊÏäµÄ×îСID SELECT MIN ( id ) AS min_id FROM users GROUP BY email ) AS temp ) ; ˵Ã÷£º ÄÚ²ã×Ó²éѯ SELECT MIN(id) AS min_id FROM users GROUP BY email ÓÃÓÚ»ñȡÿ¸öÖØ¸´×éÖÐÒª±£ÁôµÄ¼Ç¼ ID Íâ²ã DELETE Óï¾äɾ³ýËùÓв»ÔÚ±£Áô ID ÁбíÖеļǼ ʹÓÃÁÙʱ±í£¨ AS temp £©ÊÇΪÁ˱ÜÃâ MySQL µÄ ²»ÄÜ´ÓÕýÔÚÐ޸ĵġ¡
Äã¿ÉÒÔͨ¹ýÒÔϹٷ½ÇþµÀÏÂÔØ MySQL µÄÔ´´úÂ룺 1. ¹Ù·½ÍøÕ¾ÏÂÔØ ·ÃÎÊ MySQL ¹Ù·½ÏÂÔØÒ³Ãæ»ñȡԴÂ룺 µØÖ·£º https://dev.mysql.com/downloads/mysql/ Ñ¡Ôñ¶ÔÓ¦µÄ°æ±¾£¬ÔÚ Select Operating System ÖÐÑ¡Ôñ Source Code Ñ¡ÔñºÏÊʵÄÔ´Âë°ü¸ñʽ£¨Èç.tar.gz »ò.zip£©½øÐÐÏÂÔØ 2. ͨ¹ý GitHub ²Ö¿â»ñÈ¡ MySQL µÄÔ´ÂëÒ²ÍйÜÔÚ GitHub ÉÏ£º ²Ö¿âµØÖ·£º https://github.com/mysql/mysql-server ¿ÉÒÔÖ±½Ó¿Ë¡²Ö¿â£º bash git clone https://github.com/mysql/mysql-server.git ÈçÐèÌØ¶¨°æ±¾£¬¿É²é¿´²Ö¿âµÄ tags ²¢Çл»£º bash cd mysql-server git tag # ÁгöËùÓа汾±êÇ© git checkout 8.0 .34 # Çл»µ½Ö¸¶¨°æ±¾ 3. ͨ¹ý wget ÃüÁîÖ±½ÓÏÂÔØ£¨Linux »·¾³£© ÀýÈçÏÂÔØ MySQL 8.0.34 °æ±¾Ô´Â룺 bash wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.34.tar.gz Ô´Âë±àÒë×¢ÒâÊÂÏî ÏÂÔØºóÐèÒª°²×°±ØÒªµÄÒÀÀµ¿â£¨Èç cmake¡¢gcc¡¢libssl µÈ£© ²»Í¬°æ±¾µÄÔ´Âë±àÒë¡¡
ÔÚ Java ÖÐÁ¬½Ó MySQL Êý¾Ý¿âͨ³£Ê¹Óà JDBC£¨Java Database Connectivity£©¼¼Êõ¡£ÒÔÏÂÊÇÏêϸµÄʵÏÖ²½ÖèºÍʾÀý´úÂ룺 1. ×¼±¸¹¤×÷ ÏÂÔØ MySQL JDBC Çý¶¯£¨mysql-connector-java£©£¬¿É´Ó Maven ²Ö¿â »ñÈ¡ Èç¹ûʹÓà Maven ÏîÄ¿£¬Ìí¼ÓÒÀÀµ£º xml dependency groupId mysql / groupId artifactId mysql-connector-java / artifactId version 8.0.33 / version !-- ʹÓÃ×îÐÂÎȶ¨°æ±¾ -- / dependency 2. Á¬½Ó MySQL Êý¾Ý¿â ´úÂë˵Ã÷ Á¬½Ó URL ²ÎÊý˵Ã÷ £º jdbc:mysql://localhost:3306/your_database_name £ºÊý¾Ý¿âµØÖ·¡¢¶Ë¿ÚºÍ¿âÃû useSSL=false £º½ûÓà SSL£¨¿ª·¢»·¾³³£Óã© serverTimezone=UTC £ºÉèÖÃÊ±Çø£¬±ÜÃâʱ¼äת»»ÎÊÌâ allowPublicKeyRetrieval=true £ºÔÊÐí»ñÈ¡¹«Ô¿ ºËÐIJÙ×÷²½Öè £º ¼ÓÔØÇý¶¯£º Class.forName(com.mysql.cj.jdbc.Driver) £¨MySQL 8.0 + ʹÓôËÀࣩ »ñÈ¡Á¬½Ó£º DriverManager.getConnection() Ö´ÐÐ SQL£ºÊ¹Óà Statement »ò PreparedStatement¡¡
MySQL Á¬±í²éѯÊǽ«¶à¸ö±íÖеÄÊý¾Ýͨ¹ý¹²Í¬×ֶιØÁªÆðÀ´½øÐвéѯµÄ²Ù×÷£¬Ö÷ÒªÓÃÓÚ»ñÈ¡·Ö²¼ÔÚ²»Í¬±íÖеÄÏà¹ØÊý¾Ý¡£ÒÔÏÂÊdz£¼ûµÄÁ¬±í²éѯÀàÐͼ°Ê¾Àý£º 1. ÄÚÁ¬½Ó£¨INNER JOIN£© Ö»·µ»ØÁ½¸ö±íÖÐÆ¥ÅäÌõ¼þµÄ¼Ç¼£¨½»¼¯£©¡£ Óï·¨£º sql SELECT ×Ö¶ÎÁбí FROM ±í 1 INNER JOIN ±í 2 ON ±í 1. ¹ØÁª×Ö¶Î = ±í 2. ¹ØÁª×Ö¶Î ; ʾÀý£º ¼ÙÉè´æÔÚ users ±íºÍ orders ±í£¬Í¨¹ý user_id ¹ØÁª²éѯÓû§¼°Æä¶©µ¥£º sql SELECT u . id , u . name , o . order_no , o . amount FROM users u INNER JOIN orders o ON u . id = o . user_id ; 2. ×óÁ¬½Ó£¨LEFT JOIN£© ·µ»Ø×ó±íËùÓмǼ£¬ÒÔ¼°ÓÒ±íÖÐÆ¥ÅäÌõ¼þµÄ¼Ç¼£¨×ó±íÈ«²¿ + ½»¼¯£©¡£ Óï·¨£º sql SELECT ×Ö¶ÎÁбí FROM ±í 1 LEFT JOIN ±í 2 ON ±í 1. ¹ØÁª×Ö¶Î = ±í 2. ¹ØÁª×Ö¶Î ; ʾÀý£º ²éѯËùÓÐÓû§£¬°üÀ¨Ã»Óж©µ¥µÄÓû§£º sql SELECT u . id , u . name , o . order_no , o . amount FROM users u LEFT JOIN orders o ON u . id ¡¡
ÔÚ MySQL ÖУ¬Äã¿ÉÒÔͨ¹ý¼¸ÖÖ·½Ê½²éѯµ±Ç°µÄËø±íÇé¿ö£¬²»Í¬°æ±¾ºÍ´æ´¢ÒýÇæÖ§³ÖµÄ·½·¨ÂÔÓвîÒì¡£ÒÔÏÂÊdz£ÓõÄËø±í²éѯ·½·¨£º 1. ²éѯԪÊý¾ÝËø£¨MDL£© ÊÊÓÃÓÚ MySQL 5.5+£¬²é¿´ÄÄЩ»á»°³ÖÓлòµÈ´ýËø£º sql SELECT r . trx_id waiting_trx_id , r . trx_mysql_thread_id waiting_thread_id , r . trx_query waiting_query , b . trx_id blocking_trx_id , b . trx_mysql_thread_id blocking_thread_id , b . trx_query blocking_query FROM information_schema . innodb_lock_waits w JOIN information_schema . innodb_trx b ON b . trx_id = w . blocking_trx_id JOIN information_schema . innodb_trx r ON r . trx_id = w . requesting_trx_id ; 2. ²é¿´ËùÓлîÔ¾ÊÂÎñºÍËø sql SELECT trx_id , trx_state , trx_started , TIME_TO_SEC ( TIMEDIFF ( NOW ( ) , trx_started ) ) AS trx_duration_sec , trx_mysql_thread_id , trx_query FROM information_schema¡¡
MySQL ÔöÁ¿±¸·ÝÊÇÒ»ÖÖ¸ßЧµÄ±¸·Ý²ßÂÔ£¬Ö»±¸·Ý×ÔÉÏ´ÎÈ«Á¿±¸·Ý»òÔöÁ¿±¸·ÝÒÔÀ´·¢Éú±ä»¯µÄÊý¾Ý£¬Ïà±ÈÈ«Á¿±¸·Ý¸ü½ÚÊ¡´æ´¢¿Õ¼äºÍʱ¼ä¡£ÒÔÏÂÊÇʵÏÖ MySQL ÔöÁ¿±¸·ÝµÄ³£Ó÷½·¨ºÍʾÀý£º 1. ʹÓöþ½øÖÆÈÕÖ¾£¨Binary Log£©½øÐÐÔöÁ¿±¸·Ý MySQL µÄ¶þ½øÖÆÈÕÖ¾¼Ç¼ÁËËùÓÐÊý¾ÝÐ޸IJÙ×÷£¬ÊÇʵÏÖÔöÁ¿±¸·ÝµÄ»ù´ £ ÅäÖöþ½øÖÆÈÕÖ¾£¨my.cnf »ò my.ini£©£º ini [ mysqld ] log_bin = /var/log/mysql/mysql-bin.log # ¶þ½øÖÆÈÕÖ¾Îļþ·¾¶ expire_logs_days = 7 # ÈÕÖ¾×Ô¶¯¹ýÆÚÌìÊý server-id = 1 # ·þÎñÆ÷ID£¬±ØÐëΨһ È«Á¿±¸·Ý + ¶þ½øÖÆÈÕÖ¾ÔöÁ¿±¸·ÝÁ÷³Ì£º ´´½¨È«Á¿±¸·Ý £¨×÷Ϊ»ù×¼£©£º bash # ʹÓÃmysqldump´´½¨È«Á¿±¸·Ý²¢Ë¢Ð¶þ½øÖÆÈÕÖ¾ mysqldump -u root -p --all-databases --flush-logs --master-data = 2 full_backup_ $( date +%Y%m%d ) .sql ÔöÁ¿±¸·Ý£¨¶þ½øÖÆÈÕÖ¾£© £º bash # ±¸·ÝвúÉúµÄ¶þ½øÖÆÈÕÖ¾ mysqlbinlog --read-from-remote-server --raw mysql-bin.000002 # ±¸·Ý¡¡
Ò»´ÎÓÅ»¯µÄ³É¹¦²»ÊÇÖÕµã¡£Ëæ×ÅÊý¾ÝÁ¿µÄÔö³¤ºÍÊý¾Ý·Ö²¼µÄ±ä»¯£¬½ñÌì¸ßЧµÄÖ´Ðмƻ®Ã÷Ìì¿ÉÄÜÓÖ»áʧЧ¡£ÈçºÎ³ÖÐø¼à¿Ø¹Ø¼ü²éѯµÄÐÔÄÜ£¬È·±£ÓÅ»¯Ð§¹û³¤¾ÃÓÐЧ£¿ ½â¾ö·½°¸Ò»£º¿ªÆôÂý²éѯÈÕÖ¾²¢¶¨ÆÚ·ÖÎö ÕâÊÇMySQLÄÚÖõij¤ÆÚ¼à¿Ø·½°¸¡£ 1. ÅäÖÃÂý²éѯÈÕÖ¾£ºÔÚ`my.cnf`ÖÐÉèÖ㺠```ini slow_query_log = 1 slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 2 # ¶¨Ò峬¹ý2ÃëµÄ²éѯΪÂý²éѯ log_queries_not_using_indexes = 1 # ¼Ç¼δʹÓÃË÷ÒýµÄ²éѯ ``` 2. ʹÓù¤¾ß·ÖÎö£º¶¨ÆÚʹÓÃ`mysqldumpslow`»ò`pt-query-digest`µÈ¹¤¾ß·ÖÎöÂýÈÕÖ¾Îļþ£¬ÕÒ³öеÄÐÔÄÜÆ¿¾±»ò¸´·¢µÄ¾ÉÎÊÌâ¡£ 3. ¶¨ÆÚÔËÐÐEXPLAIN£ºÕë¶ÔÂýÈÕÖ¾ÖÐץȡµ½µÄ²éѯ£¬ÔÙ´ÎÔËÐÐ`EXPLAIN`£¬¼ì²éÆäÖ´Ðмƻ®ÊÇ·ñ·¢ÉúÁ˱仯£¨ÈçË÷ÒýʧЧ£©¡£ ½â¾ö·½°¸¶þ£ºÊ¹ÓÃ80KM-mysql±¸·Ý¹¤¾ß½¨Á¢ÐÔÄܻعé²âÊÔ»ùÏß 80KM-mysql±¸·Ý¹¤¾ß¿ÉÒÔÓëÄãµÄ¼à¿ØÌåϵÐγɻ¥²¹¡£Äã¿ÉÒÔ¶¨ÒåÒ»¸öÐÔÄÜ»ùÏߣº 1. ÔÚÍê³ÉÒ»´Î¡¡
ÓÐʱ£¬Äã¿ÉÄÜÐèÒªÔÚһЩÇáÁ¿¼¶¡¢ÁÙʱÐÔµÄLinux»·¾³£¬»òÕßûÓа²×°MySQL¿Í»§¶Ë¹¤¾ßµÄ»úÆ÷ÉÏÁ¬½ÓÊý¾Ý¿â¡£ÎªÁËÒ»¸ö¼òµ¥µÄÁ¬½ÓÈÎÎñ¶ø°²×°Ò»ÕûÌ×Èí¼þÏÔÈ»²»»®Ë㣬¶øDockerÈÝÆ÷»¯µÄ¼´Óü´Å×ÀíÄîÍêÃÀÆõºÏÁËÕâ¸ö³¡¾°¡£ ½â¾ö·½°¸Ò»£ºÊ¹Óùٷ½MySQL¿Í»§¶ËDocker¾µÏñ Docker HubÌṩÁ˹ٷ½µÄMySQL¾µÏñ£¬ÆäÖÐ×Ô´øÁËÍêÕûµÄ¿Í»§¶Ë¹¤¾ß¡£ 1. ÀÈ¡¾µÏñ£¨Èç¹û±¾µØÃ»ÓУ©£º `docker pull mysql:latest` »ò `docker pull mysql:8.0` £¨ÍƼöÖ¸¶¨°æ±¾£© 2. ÔËÐÐÈÝÆ÷²¢Ö´ÐÐmysqlÃüÁʹÓÃ`docker run --rm`ÃüÁîÆô¶¯Ò»¸öÁÙʱÈÝÆ÷£¬²¢ÔÚÈÝÆ÷ÄÚÖ´ÐÐ`mysql`ÃüÁîÀ´Á¬½ÓÄãµÄÊý¾Ý¿â¡£ ```bash docker run -it --rm mysql:8.0 mysql -h your_mysql_host -u your_username -p your_database ``` `-it`£º½»»¥Ä£Ê½²¢·ÖÅäÒ»¸öαÖÕ¶Ë¡£ `--rm`£ºÈÝÆ÷Í˳öºó×Ô¶¯É¾³ý£¬²»Õ¼ÓôÅÅ̿ռ䡣 ×îºóµÄ`mysql`ÊÇÒªÔÚÈÝÆ÷ÄÚÖ´ÐеÄÃüÁî¡£ ϵͳ»áÌáʾÄãÊäÈëÃÜÂë¡£ ÄãÒ²¿ÉÒÔͨ¹ý»·¾³±äÁ¿`-e MYSQL_ROOT_PASSWORD=¡¡
MySQLÈ¥ÖØ²éѯµÄÖÕ¼«¿¼Ñé²»ÊǼ¼Êõ£¬¶øÊǶԷçÏյĹܿء£ÈκÎÖ±½ÓÕë¶ÔÉú²úÊý¾ÝµÄ²Ù×÷¶¼°éËæ×Å·çÏÕ£¬ÈçºÎÉè¼ÆÒ»¸öÈÝ´íÁ÷³Ì£¬È·±£È¥ÖزÙ×÷ÍòÎÞһʧ£¬ÊÇÿ¸öDBA¶¼±ØÐëÕÆÎÕµÄ˼ά¡£ ½â¾ö·½°¸Ò»£ºÍêÕûµÄÊÂÎñ°ü¹üÓëÖðÌõÑéÖ¤ ÔÚSQL²ãÃæ£¬Äã¿ÉÒÔͨ¹ýÑϸñµÄÊÂÎñ¿ØÖÆÀ´Ôö¼Ó°²È«ÐÔ¡£ 1. ¿ªÆôÊÂÎñ£ºÔÚ¿ªÊ¼ÈκÎ`DELETE`»ò`UPDATE`²Ù×÷ǰ£¬ÏÔʽ¿ªÆôÒ»¸öÊÂÎñ (`BEGIN` »ò `START TRANSACTION`)¡£ 2. Ö´ÐвÙ×÷£ºÔÚÄãµÄÈ¥ÖØSQLÓï¾ä¡£ 3. ×ÐϸÑéÖ¤£ºÔÚÊÂÎñÄÚ£¬Ö´ÐжàÌõ`SELECT`Óï¾ä£¬È·ÈÏÊý¾Ý״̬ÊÇ·ñ·ûºÏÔ¤ÆÚ¡£ÒòΪÄ㻹ÔÚÊÂÎñÖУ¬ËùÒÔËù×öµÄ¸ü¸ÄÉÐδÌá½»£¬ÆäËûÓû§¿´²»µ½¡£ 4. ×ö³ö¾ö²ß£º Èç¹ûÈ·ÈÏÕýÈ·£ºÌá½»ÊÂÎñ (`COMMIT`) £¬Ê¹¸ü¸ÄÓÀ¾Ã»¯¡£ Èç¹û·¢ÏÖÈκÎÎÊÌ⣺»Ø¹öÊÂÎñ (`ROLLBACK`) £¬ËùÓиü¸Ä½«±»³·Ïú£¬Êý¾Ý»Ö¸´Ô×´¡£ ÕâÊÇÒ»¸öºÃϰ¹ß£¬µ«ËüµÄ±£»¤·¶Î§½öÏÞÓÚµ¥¸öÊÂÎñÄÚ¡£Èç¹ûÄãÎó²Ù×÷ÁË`WHERE`Ìõ¼þ£¬Ìá½»ºóÒÀÈ»ÎÞ·¨Íì»Ø¡£ ½â¾ö·½°¸¶þ£ºÊ¹ÓÃ80KM-mysql±¸·Ý¹¤¾ß¹¹½¨ÖÕ¼«°²È«Íø ¡¡
ûÓÐÑéÖ¤µÄ±¸·ÝµÈÓÚûÓб¸·Ý¡£ÕâÊÇMySQL±ØÖª±Ø»áÖÐ×îÈÝÒ×±»ºöÊÓÈ´ÓÖÖÁ¹ØÖØÒªµÄÒ»¿Î¡£¶¨ÆÚÑéÖ¤±¸·ÝÎļþµÄÍêÕûÐԺͿɻ¹ÔÐÔ£¬²ÅÄÜÈ·±£ÔÚÕæÕýµÄΣ»úÀ´ÁÙ֮ʱ£¬ÄãµÄ¾ÈÃüµ¾²Ý×ã¹»½áʵ¡£ ½â¾ö·½°¸Ò»£ºÊÖ¶¯´î½¨²âÊÔ»·¾³½øÐл¹ÔУÑé ÕâÊÇÒ»ÖÖÖ±½Óµ«×ÊÔ´ÏûºÄ½Ï´óµÄ·½·¨¡£ 1. ×¼±¸¸ôÀë»·¾³£º×¼±¸Ò»Ì¨ÓëÉú²ú»·¾³¸ôÀëµÄ²âÊÔ·þÎñÆ÷£¬°²×°Ïàͬ°æ±¾µÄMySQL¡£ 2. ¶¨ÆÚ»¹ÔÑÝÁ·£º¶¨ÆÚ£¨Èçÿ¼¾¶È£©½«×îеı¸·ÝÎļþ¿½±´µ½²âÊÔ·þÎñÆ÷¡£ 3. Ö´Ðл¹Ô£ºÊ¹ÓÃ`mysql`¿Í»§¶Ë»ò`mysqldump`µ¼ÈëÃüÁ½«±¸·ÝÎļþÖеÄÊý¾Ý»¹Ôµ½²âÊÔÊý¾Ý¿â¡£ 4. ÔËÐÐУÑé½Å±¾£º±àд¼òµ¥µÄSQL½Å±¾£¬¼ì²éºËÐıíµÄ¼Ç¼ÊýÁ¿¡¢½øÐÐһЩÑù±¾²éѯ£¬»òÕßÔËÐÐÓ¦ÓóÌÐòµÄ²âÊÔÌ×¼þÀ´ÑéÖ¤Êý¾ÝµÄÂß¼ÕýÈ·ÐÔ¡£ 5. ÇåÀí»·¾³£ºÑéÖ¤Íê³Éºó£¬Ïú»Ù²âÊÔʵÀýÒÔÊÍ·Å×ÊÔ´¡£ ¸Ã·½·¨×îÕæÊµ¿É¿¿£¬µ«¹ý³ÌÍêÈ«ÊÖ¶¯£¬ºÄʱºÄÁ¦£¬ÄÑÒÔ¸ßÆµ´ÎÖ´ÐУ¬ÈÝÒ×Á÷ÓÚÐÎʽ¡£ ½â¾ö·½°¸¶þ£ºÊ¹ÓÃ80KM-mysql±¸·Ý¹¤¾ß×Ô¶¯ÑéÖ¤¹¦ÄÜ ÓÅÐãµÄ±¸·Ý½â¾ö·½°¸»á½«Ñé¡¡
MySQL ×Ô¶¨Ò庯Êý£¨User-Defined Function, UDF£©ÊÇÓû§¸ù¾ÝÒµÎñÐèÇó±àдµÄº¯Êý£¬¿ÉÏñÄÚÖú¯ÊýÒ»ÑùÔÚ SQL Óï¾äÖе÷Óã¬ÓÃÓÚ·â×°ÖØ¸´µÄ¼ÆËãÂß¼»ò¸´ÔÓ²Ù×÷¡£ ×Ô¶¨Ò庯ÊýµÄ»ù±¾Óï·¨ sql -- ´´½¨×Ô¶¨Ò庯Êý DELIMITER // -- ÁÙʱÐ޸ķָô·û£¬±ÜÃ⺯ÊýÌåÖÐµÄ ; Ìáǰ½áÊø¶¨Òå CREATE FUNCTION º¯ÊýÃû ( ²ÎÊý 1 ÀàÐÍ , ²ÎÊý 2 ÀàÐÍ , . . . ) RETURNS ·µ»ØÀàÐÍ [ DETERMINISTIC | NOT DETERMINISTIC ] -- ÊÇ·ñ·µ»ØÈ·¶¨½á¹û [ CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA ] -- º¯Êý¶ÔSQLµÄÓ°Ïì BEGIN -- º¯ÊýÌ壨SQLÓï¾ä£© RETURN ·µ»ØÖµ ; END // DELIMITER ; -- »Ö¸´Ä¬ÈÏ·Ö¸ô·û ×Ô¶¨Ò庯ÊýµÄ¹ÜÀí ²é¿´º¯Êý sql -- ²é¿´ËùÓÐ×Ô¶¨Ò庯Êý SHOW FUNCTION STATUS WHERE Db = Êý¾Ý¿âÃû ; -- ²é¿´º¯Êý´´½¨Óï¾ä SHOW CREATE FUNCTION º¯ÊýÃû ; Ð޸ĺ¯Êý MySQL ²»Ö§³ÖÖ±½ÓÐ޸ĺ¯Êý£¬ÐèÏÈɾ³ýÔÙÖØ½¨£º sql DROP FUNCTION IF EXISTS º¯ÊýÃû ; -- È»ºóÖØÐ´´½¨¡¡
MySQL ÂÌÉ«°æ£¨±ãЯ°æ£©ÊÇÎÞÐè°²×°¼´¿ÉʹÓÃµÄ MySQL °æ±¾£¬½âѹºó¿ÉÖ±½ÓÔËÐУ¬ÊʺÏÁÙʱ²âÊÔ¡¢¿ª·¢»·¾³»òÐèҪƵ·±Ç¨ÒƵij¡¾°¡£ÒÔÏÂÊÇ MySQL ÂÌÉ«°æµÄ»ñÈ ¢ÅäÖúÍʹÓ÷½·¨£º Ò»¡¢»ñÈ¡ MySQL ÂÌÉ«°æ ¹Ù·½ÇþµÀ £º·ÃÎÊ MySQL ¹Ù·½ÏÂÔØÒ³£¨ https://dev.mysql.com/downloads/mysql/ £©£¬Ñ¡Ôñ¶ÔӦϵͳµÄ ZIP Archive °æ±¾£¨Windows£©»ò Compressed TAR Archive £¨Linux£©£¬Õâ¾ÍÊÇÂÌÉ«°æ°²×°°ü¡£ °æ±¾Ñ¡Ôñ £º½¨ÒéÑ¡Ôñ MySQL 8.0 »ò 5.7 µÄÎȶ¨°æ±¾£¬¸ù¾Ý²Ù×÷ϵͳλÊý£¨32/64 룩ÏÂÔØ¶ÔÓ¦µÄ°ü¡£ ¶þ¡¢Windows ÏÂÅäÖà MySQL ÂÌÉ«°æ 1. ½âѹÎļþ ½«ÏÂÔØµÄ ZIP °ü½âѹµ½ÈÎÒâĿ¼£¨Â·¾¶Öн¨Òé²»ÒªÓÐÖÐÎÄ»ò¿Õ¸ñ£©£¬ÀýÈ磺 D:\mysql-8.0.30-winx64 2. ´´½¨ÅäÖÃÎļþ ÔÚ½âѹĿ¼ÏÂн¨ my.ini ÅäÖÃÎļþ£¬ÄÚÈÝÈçÏ£¨¸ù¾Ýʵ¼Ê·¾¶Ð޸ģ©£º ini [ mysqld ] # ÉèÖö˿ڣ¨Ä¬ÈÏ3306£© port = 3306 # ÉèÖÃMySQL°²×°Ä¿Â¼£¨Ì滻ΪÄãµÄ½âѹ·¾¶£© basedir = D:\mysql-8.0.30-winx64 # ÉèÖá¡
ÔÚ MySQL ÖÐÐÞ¸ÄÃÜÂëµÄ·½·¨ÓжàÖÖ£¬¾ßÌåÈ¡¾öÓÚÄãµÄ MySQL °æ±¾ºÍµÇ¼״̬¡£ÒÔÏÂÊǼ¸ÖÖ³£ÓõĸÄÃÜÂ뷽ʽ£º 1. µÇ¼ MySQL ºóÐ޸ĵ±Ç°Óû§ÃÜÂ루ͨÓ÷½·¨£© ÊÊÓÃÓÚÒѵǼ MySQL ¿Í»§¶ËµÄÇé¿ö£º sql -- MySQL 5.7.6 ¼°ÒÔÉϰ汾£¨°üÀ¨ 8.0+£© ALTER USER CURRENT_USER ( ) IDENTIFIED BY ÐÂÃÜÂë ; -- MySQL 5.7.5 ¼°¸üÔç°æ±¾ SET PASSWORD = PASSWORD ( ÐÂÃÜÂë ) ; -- Ö´ÐкóË¢ÐÂȨÏÞ FLUSH PRIVILEGES ; 2. µÇ¼ʱÐÞ¸ÄÆäËûÓû§ÃÜÂë ÐèÒªÓйÜÀíԱȨÏÞ£¨Èç root Óû§£©£º sql -- ͨÓÃÓï·¨£¨MySQL 8.0+ ÍÆ¼ö£© ALTER USER Óû§Ãû @Ö÷»úÃû IDENTIFIED BY ÐÂÃÜÂë ; -- ʾÀý£ºÐÞ¸Ä root Óû§ÃÜÂ루ÔÊÐíËùÓÐÖ÷»úµÇ¼£© ALTER USER root @% IDENTIFIED BY NewPassword123! ; -- ʾÀý£ºÐ޸ĽöÏÞ±¾µØµÇ¼µÄ root Óû§ ALTER USER root @localhost IDENTIFIED BY NewPassword123! ; -- Ë¢ÐÂȨÏÞ FLUSH PRIVILEGES ; ˵Ã÷£º Ö÷»úÃû ͨ³£ÊÇ localhost £¨±¾µØ£©»ò % £¨ËùÓÐÔ¶³Ì¡¡
MySQL ¿ÉÊÓ»¯¹¤¾ß¿ÉÒÔ°ïÖúÓû§Í¨¹ýͼÐνçÃæ¸üÖ±¹ÛµØ¹ÜÀíÊý¾Ý¿â¡¢Ö´Ðвéѯ¡¢Éè¼Æ±í½á¹¹µÈ£¬ÎÞÐèÍêÈ«ÒÀÀµÃüÁîÐС£ÒÔÏÂÊÇһЩ³£ÓÃµÄ MySQL ¿ÉÊÓ»¯¹¤¾ß¼°ÆäÌØµã£º 1. MySQL Workbench£¨¹Ù·½¹¤¾ß£© ÌØµã £ºÓÉ MySQL ¹Ù·½¿ª·¢£¬¹¦ÄÜÈ«Ãæ£¬Ö§³ÖÊý¾Ý¿âÉè¼Æ¡¢½¨Ä£¡¢²éѯ¿ª·¢¡¢±¸·Ý»Ö¸´µÈ ÓÅÊÆ £ºÃâ·Ñ¿ªÔ´£¬¿çƽ̨£¨Windows/macOS/Linux£©£¬Ö§³ÖÊý¾Ý¿âÇ¨ÒÆÏòµ¼ ÊÊÓó¡¾° £ºÊý¾Ý¿âÉè¼Æ¡¢SQL ¿ª·¢¡¢·þÎñÆ÷¹ÜÀí¡¢Êý¾ÝÇ¨ÒÆ ÏÂÔØµØÖ· £º https://dev.mysql.com/downloads/workbench/ 2. Navicat for MySQL ÌØµã £º½çÃæ¼ò½àÃÀ¹Û£¬¹¦ÄÜÇ¿´ó£¬Ö§³Ö¶àÁ¬½Ó¡¢Êý¾Ýµ¼Èëµ¼³ö¡¢Êý¾Ýͬ²½ ÓÅÊÆ £º²Ù×÷Ö±¹Û£¬Ö§³Ö¶àÖÖÊý¾Ý¿â£¨MySQL¡¢PostgreSQL¡¢SQL Server µÈ£© ²»×ã £ºÉÌÒµÈí¼þ£¬ÐèÒª¸¶·Ñ£¨ÓÐÃâ·ÑÊÔÓð棩 ÊÊÓó¡¾° £ºÈÕ³£Êý¾Ý¿â¹ÜÀí¡¢Êý¾Ý±¸·Ý¡¢¶àÊý¾Ý¿â¼äÊý¾ÝÇ¨ÒÆ 3. DBeaver ÌØµã £º¿ªÔ´Ãâ·ÑµÄͨÓÃÊý¾Ý¿â¹¤¾ß£¬Ö§³Ö°üÀ¨ MySQL ÔÚÄڵĶàÖÖÊý¾Ý¿â ÓÅÊÆ £º¿çƽ̨£¬Ö§³ÖÊý¾Ý¿ÉÊÓ»¯¡¢ER ͼ¡¡
ÔÚ MySQL ÖУ¬µÝ¹é²éѯÖ÷ÒªÓÃÓÚ´¦Àí¾ßÓвã´Î½á¹¹µÄÊý¾Ý£¬Èç×éÖ¯½á¹¹¡¢·ÖÀàĿ¼¡¢ÆÀÂۻظ´µÈÊ÷ÐνṹÊý¾Ý¡£MySQL 8.0 ¼°ÒÔÉϰ汾֧³Öͨ¹ý WITH RECURSIVE Ó﷨ʵÏֵݹé²éѯ¡£ µÝ¹é²éѯ»ù±¾Óï·¨ sql WITH RECURSIVE µÝ¹éCTEÃû³Æ ( ÁÐ 1 , ÁÐ 2 , . . . ) AS ( -- 1. êµã³ÉÔ±£¨·ÇµÝ¹é²¿·Ö£©£º³õʼ²éѯ£¬·µ»Ø»ù´¡½á¹û¼¯ SELECT ÁÐ 1 , ÁÐ 2 , . . . FROM ±íÃû WHERE ³õʼÌõ¼þ UNION ALL -- ×¢Ò⣺ÕâÀï±ØÐëʹÓà UNION ALL -- 2. µÝ¹é³ÉÔ±£ºÒýÓõݹéCTEÃû³Æ£¬Óë×ÔÉíÁ¬½Ó SELECT ÐÂÁÐ 1 , ÐÂÁÐ 2 , . . . FROM µÝ¹éCTEÃû³Æ JOIN ±íÃû ON Á¬½ÓÌõ¼þ WHERE µÝ¹éÖÕÖ¹Ìõ¼þ ) -- 3. ʹÓõݹé½á¹û SELECT * FROM µÝ¹éCTEÃû³Æ ; ʵ¼ÊʾÀý£º²éѯ×éÖ¯½á¹¹ ¼ÙÉèÎÒÃÇÓÐÒ»¸ö²¿Ãűí departments £¬´æ´¢¹«Ë¾µÄ²ã¼¶½á¹¹£º id name parent_id 1 ¹«Ë¾×ܲ¿ NULL 2 ¼¼Êõ²¿ 1 3 Êг¡²¿ 1 4 ¿ª·¢×é 2 5 ²âÊÔ×é 2 6 Êг¡Íƹã×é 3 ²éѯ½á¹û»áÏÔʾÿ¸ö²¿ÃÅµÄ ID¡¢Ãû³Æ¡¢¸¸ ID¡¢²ã¼¶ÒÔ¼°ÍêÕû·¡¡
MySQL ΨһË÷Òý£¨Unique Index£©ÊÇÒ»ÖÖÔ¼ÊøÐÔË÷Òý£¬ÓÃÓÚÈ·±£±íÖÐÖ¸¶¨ÁУ¨»òÁÐ×éºÏ£©µÄÖµ¾ßÓÐΨһÐÔ£¬·ÀÖ¹ÖØ¸´Êý¾Ý²åÈë¡£Ëü¼È¿ÉÒÔÌá¸ß²éѯÐÔÄÜ£¬ÓÖÄܱ£Ö¤Êý¾ÝÍêÕûÐÔ¡£ ΨһË÷ÒýµÄÌØµã ±»Ë÷ÒýµÄÁÐ / ÁÐ×éºÏ²»ÄÜÓÐÖØ¸´Öµ£¨µ«¿ÉÒÔÓжà¸ö NULL Öµ£¬ÒòΪ NULL ±»ÊÓΪδֵ֪£¬±Ë´Ë²»ÏàµÈ£© Ò»Õűí¿ÉÒÔÓжà¸öΨһË÷Òý ΨһË÷Òý»á×Ô¶¯¶Ô²åÈë / ¸üвÙ×÷½øÐÐΨһÐÔУÑé ÈçºÎ´´½¨Î¨Ò»Ë÷Òý 1. ´´½¨±íʱ¶¨ÒåΨһË÷Òý sql -- µ¥ÁÐΨһË÷Òý CREATE TABLE users ( id INT PRIMARY KEY , username VARCHAR ( 50 ) NOT NULL , email VARCHAR ( 100 ) NOT NULL , UNIQUE INDEX idx_email ( email ) -- ΪemailÁд´½¨Î¨Ò»Ë÷Òý ) ; -- ¶àÁÐΨһË÷Òý£¨×éºÏΨһË÷Òý£© CREATE TABLE orders ( order_id INT PRIMARY KEY , product_id INT , customer_id INT , order_date DATE , UNIQUE INDEX idx_product_customer ( product_id , customer_id ) -- Á½ÁÐ×éºÏΨһ ) ; 2. ¶ÔÒÑÓбíÌí¼Ó¡¡
ÔÚ MySQL ÖУ¬»·¾³±äÁ¿¿ÉÒÔÓÃÓÚÅäÖÃÊý¾Ý¿âµÄÔËÐвÎÊý¡¢Â·¾¶ÐÅÏ¢µÈ£¬±ÜÃâÔÚÃüÁîÐÐÖÐÖØ¸´ÊäÈë²ÎÊý¡£ÒÔÏÂÊÇ MySQL Öг£ÓõĻ·¾³±äÁ¿¼°ÅäÖ÷½·¨£º ³£Óà MySQL »·¾³±äÁ¿ MYSQL_HOME Ö¸¶¨ MySQL µÄ°²×°Ä¿Â¼£¬Ðí¶à¹¤¾ß»áÒÀÀµ´Ë±äÁ¿ÕÒµ½ÅäÖÃÎļþºÍ¿ÉÖ´ÐÐÎļþ¡£ PATH ½« MySQL µÄ bin Ŀ¼Ìí¼Óµ½ PATH ÖУ¬¿ÉÖ±½ÓÔÚÃüÁîÐÐʹÓà mysql ¡¢ mysqldump µÈÃüÁÎÞÐèÊäÈëÍêÕû·¾¶¡£ MYSQL_PWD ´æ´¢ MySQL µÄÃÜÂ루²»ÍƼöÔÚÉú²ú»·¾³Ê¹Ó㬴æÔÚ°²È«·çÏÕ£©¡£ MYSQL_TCP_PORT Ö¸¶¨ MySQL ·þÎñÆ÷µÄĬÈ϶˿ڣ¨Ä¬ÈÏ 3306£©¡£ MYSQL_UNIX_PORT Ö¸¶¨ Unix ϵͳϵÄÌ×½Ó×ÖÎļþ·¾¶£¨Ä¬ÈÏ /tmp/mysql.sock £©¡£ ÅäÖû·¾³±äÁ¿µÄ·½·¨ 1. ÁÙʱÉúЧ£¨µ±Ç°Öն˻Ự£© ÊÊÓÃÓÚÁÙʱ²âÊÔ£¬¹Ø±ÕÖն˺óʧЧ£º bash # Linux/macOS export PATH = $PATH :/usr/local/mysql/bin # Ìí¼ÓMySQLµÄbinĿ¼µ½PATH export MYSQL_HOME = /usr/local/mysql # ÉèÖÃMySQL°²×°Ä¿Â¼ # Windows£¨PowerShell£© $env : P¡¡
MySQL Êý¾ÝÇ¨ÒÆÊǽ«Êý¾Ý´ÓÒ»¸ö MySQL Êý¾Ý¿â×ªÒÆµ½ÁíÒ»¸ö MySQL Êý¾Ý¿â£¨¿ÉÄÜÔÚ²»Í¬·þÎñÆ÷¡¢°æ±¾»òÅäÖÃÏ£©µÄ¹ý³Ì¡£ÒÔÏÂÊǼ¸ÖÖ³£¼ûµÄ MySQL Êý¾ÝÇ¨ÒÆ·½·¨£º 1. ʹÓà mysqldump ÃüÁÊÊÓÃÓÚÖÐСÐÍÊý¾Ý¿â£© ÕâÊÇ MySQL ×Ô´øµÄ±¸·ÝÇ¨ÒÆ¹¤¾ß£¬Í¨¹ýµ¼³ö SQL ÎļþʵÏÖÇ¨ÒÆ£º bash # µ¼³öÊý¾Ý¿â£¨°üÀ¨½á¹¹ºÍÊý¾Ý£© mysqldump -u Óû§Ãû -p Ô´Êý¾Ý¿âÃû ±¸·ÝÎļþ.sql # µ¼È뵽Ŀ±êÊý¾Ý¿â mysql -u Óû§Ãû -p Ä¿±êÊý¾Ý¿âÃû ±¸·ÝÎļþ.sql 2. ʹÓà SELECT INTO OUTFILE ºÍ LOAD DATA INFILE£¨ÊÊÓÃÓÚ´óÁ¿Êý¾Ý£© ÕâÖÖ·½·¨Í¨¹ýµ¼³öΪÎı¾ÎļþÔÙµ¼È룬ËÙ¶Èͨ³£±È SQL Îļþ¿ì£º sql -- µ¼³öÊý¾Ýµ½Îı¾Îļþ SELECT * INTO OUTFILE /tmp/data.txt FIELDS TERMINATED BY , OPTIONALLY ENCLOSED BY LINES TERMINATED BY \n FROM ±íÃû ; -- µ¼ÈëÊý¾Ý LOAD DATA INFILE /tmp/data.txt INTO TABLE ±íÃû FIELDS TERMINATED BY , OPTIONALLY ENCLOSED BY LINES TERMINATED BY \n ; 3. ʹ¡¡
ΪÁ˸ôÀ벻ͬ»·¾³£¨È翪·¢¡¢²âÊÔ£©»ò²»Í¬ÏîÄ¿£¬ÎÒÃÇ¿ÉÄÜÐèÒªÔÚһ̨ÎïÀí·þÎñÆ÷ÉÏÔËÐжà¸öMySQLʵÀý¡£Ã¿¸öʵÀý¶¼ÐèÒª¶ÀÁ¢µÄÅäÖá¢Êý¾ÝĿ¼£¬ÒÔ¼°Î¨Ò»µÄ¶Ë¿ÚºÅ¡£ÈçºÎ¸ßЧµØ¹ÜÀíºÍ²¿Êð¶àʵÀý»·¾³£¿ ·½·¨Ò»£ºÊÖ¶¯ÅäÖöàʵÀý MySQL¹Ù·½Ö§³Öͨ¹ý²»Í¬ÅäÖÃÆô¶¯¶à¸ö`mysqld`½ø³Ì¡£ 1. ×¼±¸¶à¸öÅäÖÃÎļþ£ºÎªÃ¿¸öʵÀý´´½¨¶ÀÁ¢µÄÅäÖÃÎļþ£¨Èç `my3307.cnf`, `my3308.cnf`£©¡£ÔÚÿ¸öÎļþÖУ¬±ØÐëÖ¸¶¨²»Í¬µÄ `port`¡¢`socket`¡¢`datadir`£¨Êý¾ÝĿ¼£©¡¢`pid-file` µÈ²ÎÊý¡£ 2. ³õʼ»¯Êý¾ÝĿ¼£ºÊ¹Óà `mysqld --initialize-insecure --datadir=/path/to/data3307 ...` Ϊÿ¸öʵÀý³õʼ»¯¶ÀÁ¢µÄÊý¾ÝĿ¼¡£ 3. Ö¸¶¨ÅäÖÃÆô¶¯£ºÊ¹Óà `mysqld_safe --defaults-file=/path/to/my3307.cnf ` ÃüÁîÀ´·Ö±ðÆô¶¯Ã¿¸öʵÀý¡£ 4. Óŵ㣺Áé»îÐԸߣ¬¿ÉÒÔ¶Ôÿ¸öʵÀý½øÐо«Ï¸»¯µÄ×ÊÔ´¿ØÖÆ¡£ 5. ȱµã£ºÅäÖú͹ÜÀí¼«Æä¸´ÔÓ£¬Æô¶¯¡¢Í£Ö¹¡¢±¸·Ý¶¼ÐèÒªÖ¸¶¨¶ÔÓ¦µÄÅäÖÃÎļþ£¬ÈÝÒ×»ìÏý£¬Î¬»¤³É±¾¸ß¡£ ·½·¨¶þ¡¡
ÈçºÎÔÚµçÄÔÉϲéÕÒUÅ̱¸·ÝÎļþ
»ùÓÚMySQLµÄQtÏîÄ¿¿ª·¢ÊµÕ½Ö¸ÄÏ
CDRÁÙʱ±¸·ÝÎļþ´æ·ÅλÖýÒÃØ
¡°ÅÄÉãËØ²Ä±¸·ÝÎļþ´æ·ÅλÖÃÖ¸ÄÏ¡±
MySQL°²×°ÂÒÂ룿¿ìËÙ½â¾ö·½·¨£¡
Ö÷°å¹ÊÕϵ¼ÖÂÊý¾ÝÀ§¾³£ºÎļþÎÞ·¨±¸·ÝµÄ½ô¼±Ó¦¶Ô²ßÂÔ
½âËøÃØ¼®£ºÈçºÎÇáËÉ´ò¿ª²¢²é¿´±¸·ÝµÄGHOÎļþ
¡°µçÄÔÆô¶¯±¸·ÝÎļþ´æ·ÅλÖýâÎö¡±
MySQL¾Ü¾øÁ¬½Ó£¿ÅŲéÓë½â¾ö·½°¸
¡¾Êý¾ÝÊØ»¤Ðж¯¡¿¿ªÊ¼¶ÁÈ¡±¸·ÝÎļþ£ºÈ·±£ÐÅÏ¢°²È«ÎÞÓÇ
MySQL SlaveÌø¹ý´íÎ󣺿ìËÙ»Ö¸´Í¬²½½Ì³Ì
MySQLË÷Òýʵ¼ù£º¼ÓËÙ²éѯÐÔÄÜÃØ¼®
MySQLÌí¼ÓÐÂÓû§Ö¸ÄÏ
¸ßЧµçÄÔÎļþÊØ»¤ÕߣºÃâ·Ñ±¸·ÝÈí¼þ¾«Ñ¡ÍƼö
CentOS±¸·ÝÎļþ»¹ÔλÖÃÖ¸ÄÏ
ÈçºÎʵÏÖ¸ßЧ×Ô¶¯±¸·Ý£¬±£ÕÏÎļþ¹²ÏíÊý¾Ý°²È«ÎÞÓÇ
MySQLË«±íÁªºÏ´´½¨ÊÓͼָÄÏ
ÕÆÎÕMySQL IN×Ó¾äµÄ˳ÐòÅÅÐò¼¼ÇÉ£¬ÌáÉýÊý¾Ý²éѯЧÂÊ
MySQL²éѯ£ºÇáËÉɸѡСÓÚÆ½¾ùÖµµÄÊý¾Ý
¹ãÁª´ï±¸·ÝÎļþ±£´æÖ¸ÄÏ
´ÅÅÌÕóÁиßЧ±¸·ÝÊý¾Ý¿âÎļþÖ¸ÄÏ
webm¸ñÊ½ÔÆ±¸·ÝÄÑÌâ½âÎö