• mysql 语句其它及优化


    将检索到的数据保存到文件

     Select * into outfile ‘文件地址’ from tabname;

    生成的文件以制表符区分字段,以换行符区分记录

    为满足特殊需求会采用不同的分割方式。

    支持在导出时设置 字段,行分隔符

    通过设置如下选项:

    Fiels:字段分割符选项
    lines:行记录分割符

    默认值:

    字段:fields terminated by ‘ ’ enclosed by ‘’ escaped by ‘\’  (字段用什么包裹)

    记录: lines terminated by ‘ ’ starting by ‘’

    select * into outfile 'E:cjb.txt'
    
    fields terminated by ','
    
    lines terminated by '
    ' starting by '->'
    
    from cj;

    注意如果是是二进制数据

    用dumpfile不做任何转义换行处理 也适用于非二进制数据

    导入数据

    Load data infile ‘文件地址’ into table tblname

    考虑到数据冲突,利用主键自增    导出时主键设为Null(添加一列null)

    插入时可以用更新式的语法

    insert into msg (id,name) values(1,'ff');

    insert into msg set id=1,name='ff';

    插入时如果主键已存在的(主键更新)

    比如

    insert into msg (id,name) values(1,'ff'); //报错

    insert into msg values(1,'php') on duplicate key update name='php';

    replace into msg values(1,'php');

    替换一个不存在的也可以

    表数据复制

    insert into msg (name) select name from msg

     

    Delete

    允许使用条件

    Where,limit ,order by

    Delete from teacher order by days limit 10

    允许连接删除

    允许使用类似的join语法

    同时删除多了表内的记录

    Delete from tb1,tb2 using tb1 join tb2 on tb1.id=tb2.id where tb1.id=1;

    也可以分别删除,多条语句组合删除

    删除表数据

    Delete from tb1

    操作成功的话,提示几条数据影响到,不影响自增的主键id,比如删除前最大id=3,

    删除后再插入数据,Id4开始

    Truncate

    重建自动增长的主键,再插入数据时从1开始,不烦胡删除的记录数

    Delete逐行删除

    Truncate:删除表,新建表,比delete

     

    更新数据

    Update也支持多表同时更新

    Update t1 join t2 on t1.x=t2.x  set t1.x=,t2.x= where cond;

    支持order by limit

    备份和还原

    对于mysiam表表的数据结构全在.frm  .MYD .MYI

    直接文件备份拷贝就行

    mysql优化
    a.表的设计合理(符合3NF)
    b.添加适当的索引(普通索引,主键索引,唯一索引,全文)
    c.分表技术(水平,垂直分割)
    d.读写分离
    e.存储过程
    创建存储过程或函数时
    报错
    This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA
    in its declaration and binary logging is enabled
    (you *might* want to use the less safe log_bin_trust_function_creators variable)n_trust_function_creators variable)
    这是我们开启了bin-log, 我们就必须指定我们的函数是否是
    1 DETERMINISTIC 不确定的
    2 NO SQL 没有SQl语句,当然也不会修改数据
    3 READS SQL DATA 只是读取数据,当然也不会修改数据
    4 MODIFIES SQL DATA 要修改数据
    5 CONTAINS SQL 包含了SQL语句

    其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我们开启了 bin-log, 我们就必须为我们的function指定一个参数。
    解决方法:
    show variables like 'log_bin_trust_function_creators';
    OFF
    set global log_bin_trust_function_creators=1;
    show variables like 'log_bin_trust_function_creators';
    ON
    这样添加了参数以后,如果mysqld重启,那个参数又会消失,因此记得在my.cnf(linux下) 或者my.ini(windows下)配置文件中添加:
    log_bin_trust_function_creators=1
    -----------------------
    mysql慢查询配置
    mysql会记录所有执行超过long_query_time参数设定时间阀值的sql语句,慢查询日志就是这些sql的日志
    在Mysql配置文件里(windows下My.ini,linux下my.cnf)
    里的mysqld的下面添加
    log_slow_queries="D:wampinmysqlmysql5.5.28mylogslowquery.log"
    long_query_time=1
    log-queries-not-using-indexes(如果查询的sql没使用索引(无论表有没有索引),也会被记录)

  • 相关阅读:
    mmdetection安装问题(nms is not compiled with GPU support)
    【洛谷日报#75】浅谈C++指针
    NOIP专题复习3 图论-强连通分量
    NOIP专题复习2 图论-生成树
    NOIP专题复习1 图论-最短路
    题解 P1967 货车运输
    【转】linux expoll模型
    spring mvc 4.1支持protobuf converters
    ubuntu install jdk
    nosql理论基础
  • 原文地址:https://www.cnblogs.com/HKUI/p/3648990.html
Copyright © 2020-2023  润新知