• mysql 学习笔记


    1、条件语句:

    select if(c.cname IS NULL,b.cname,c.cname) as cname from pw_colonys a
    left join pw_cnstyles b on a.styleid=b.id 
    left join pw_cnstyles c on b.upid = c.id
    where a.id = 13
    select IF ( (select name from table1) IS NOT NULL,
                (select name from table2) , 
                (select name from table3)
              ) as name

    2、导出数据结构:

    mysqldump   -d   -uroot   -p   database>databaseStr.sql  

    1.导出整个数据库
     mysqldump -u 用户名 -p 数据库名 > 导出的文件名    
     mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql

    2.导出一个表
     mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
     mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql

    3.导出一个数据库结构
      mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql
     -d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table 
     
    4.导入数据库
      常用source 命令
      进入mysql数据库控制台,
      如mysql -u root -p
     

    1.备份全部数据库的数据和结构

    mysqldump -uroot -p123456 -A >F:\all.sql

    2.备份全部数据库的结构(加 -d 参数)

    mysqldump -uroot -p123456 -A -d>F:\all_struct.sql

    3.备份全部数据库的数据(加 -t 参数)

    mysqldump -uroot -p123456 -A -t>F:\all_data.sql

    4.备份单个数据库的数据和结构(,数据库名mydb)

    mysqldump -uroot -p123456 mydb>F:\mydb.sql

    5.备份单个数据库的结构

    mysqldump -uroot -p123456 mydb -d>F:\mydb.sql

    6.备份单个数据库的数据

    mysqldump -uroot -p123456 mydb -t>F:\mydb.sql

    7.备份多个表的数据和结构(数据,结构的单独备份方法与上同)

    mysqldump -uroot -p123456 mydb t1 t2 >f:\multables.sql

    8.一次备份多个数据库

    mysqldump -uroot -p123456 --databases db1 db2 >f:\muldbs.sql

    还原:

    1.还原全部数据库:

    (1) mysql命令行:mysql>source f:\all.sql

    (2) 系统命令行: mysql -uroot -p123456 <f:\all.sql

    2.还原单个数据库(需指定数据库)

    (1) mysql>use mydb

    mysql>source f:\mydb.sql

    (2) mysql -uroot -p123456 mydb <f:\mydb.sql

    3.还原单个数据库的多个表(需指定数据库)

    (1) mysql>use mydb

    mysql>source f:\multables.sql

    (2) mysql -uroot -p123456 mydb <f:\multables.sql

    4.还原多个数据库,(一个备份文件里有多个数据库的备份,此时不需要指定数据库)

    (1) mysql命令行:mysql>source f:\muldbs.sql

    (2) 系统命令行: mysql -uroot -p123456 <f:\muldbs.sql

    Usage: mysqldump [OPTIONS] database [tables]
    OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
    OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

    用户:

    1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限

    mysql>grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";

     2、修改密码

    mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='name'; 
    mysql> FLUSH PRIVILEGES; 

    shell

    1、设置连接字符接

    mysql -u root -p --default-character-set=utf8  

    3、相关问题

    错误:MySQL server has gone away 

    1、应用程序(比如PHP)长时间的执行批量的MYSQL语句。最常见的就是采集或者新旧数据转化。 [1]
    解决方案:
    在my.cnf(windows下my.ini)文件中添加或者修改以下两个变量:
    wait_timeout=2880000
    interactive_timeout = 2880000
    关于两个变量的具体说明可以google或者看官方手册。如果不能修改my.cnf,则可以在连接数据库的时候设置CLIENT_INTERACTIVE,比如:
    sql = "set interactive_timeout=24*3600";
    mysql_real_query(...)


    2、执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。比如,图片数据的处理
    解决方案:
    在my.cnf文件中添加或者修改以下变量:
    max_allowed_packet = 10M(也可以设置自己需要的大小)
    max_allowed_packet 参数的作用是,用来控制其通信缓冲区的最大长度。

    方案二[2]

    #进入mysql server
    set global max_allowed_packet = 2*1024*1024*10
    
    #查看下max_allowed_packet是否编辑成功:
    show VARIABLES like '%max_allowed_packet%';

    参考:

      [1] mdxy-dxy.MySQL server has gone away 问题的解决方法[EB/OL].[2014-03-07].http://www.jb51.net/article/23781.htm

      [2] 瓜田守望者.mysql max_allowed_packet 查询和修改[EB/OL].[2014-03-07].http://smilemonkey.iteye.com/blog/660889

    知识共享许可协议
    作品Tim Zhang创作,采用知识共享署名 3.0 中国大陆许可协议进行许可。 。
  • 相关阅读:
    理解TCP/IP,SOCKET,HTTP,FTP,RMI,RPC,webservic
    flyway 管理数据库版本
    【代码工具】Lombok来优雅的编码
    windows常用
    Elasticsearch-基础介绍及索引原理分析
    Zipkin和微服务链路跟踪
    【安装】Mac rabbitMQ
    数论四大定理的证明与部分应用(含算术基本定理)
    洛谷 P1306 斐波那契公约数 题解
    「SWTR-04」Sweet Round 04 游记
  • 原文地址:https://www.cnblogs.com/ccdc/p/2536723.html
Copyright © 2020-2023  润新知