zoukankan      html  css  js  c++  java
  • 关于mysql的一些细节问题

    1. MySQL删除有外键约束的表

    当删除的表中的字段被用作了其他表的外键,因此在删除这个表(父表)之前必须先删除具有外键的表(子表)。也就是说,删除表的过程需要和创建表的过程一致。

    但如果数据库表格之间关系太复杂,数量太多,操作起来就很麻烦。

    因此,MySQL中提供了一个变量FOREIGN_KEY_CHECKS来设置是否在必要的时候检查外键约束。即MySQL的外键约束是可控的

    在MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权 限等。

    下面2个步骤暴力删除

    SELECT concat('DROP TABLE IF EXISTS ', table_name, ';')
    FROM information_schema.tables
    WHERE table_schema = MyDatabaseName;	
    /*MyDatabaseName是你数据库的名称*/
    
    SET FOREIGN_KEY_CHECKS = 0
    -- DROP语句
    SET FOREIGN_KEY_CHECKS = 1;
    

    2. 如何给表中的某个字段授权

    先给此字段创建一个视图,接着对视图授权。

    3. where语句中不能出现聚集函数

    聚集函数也叫列函数,它们都是基于整列数据进行计算的,而where子句则是对数据行进行过滤的(这里过滤是在一个记录里边过滤的,基于"行"),在筛选过程中依赖“基于已经筛选完毕的数据得出的计算结果”是一种悖论,这是行不通的。更简单地说,因为聚集函数要对全列数据时行计算,因而使用它的前提是:结果集已经确定!

    而where子句还处于“确定”结果集的过程中,因而不能使用聚集函数。

    4. 区分大小写比较

    where子句的字符串比较是不区分大小写的,但是可以使用binary关键字设定where子句区分大小写。

    select * from table1 where binary name = 'li';

    5. mysql将字符转换成数字

    1. 将字符的数字转成数字,比如'0'转成0可以直接用加法来实现
      例如:将pony表中的d 进行排序,可d的定义为varchar,可以这样解决
      select * from pony order by (d+0)

    2. 在进行ifnull处理时,比如 ifnull(a/b,'0') 这样就会导致 a/b成了字符串,因此需要把'0'改成0,即可解决此困扰

    3. 比较数字和varchar时,比如a=11,b="11ddddd";
      则 select 11="11ddddd"相等
      绝对比较可以这样:
      select binary 11 =binary "11ddddd"

    4. 字符集转换 : CONVERT(xxx USING gb2312)
      类型转换和SQL Server一样,就是类型参数有点点不同 : CAST(xxx AS 类型) , CONVERT(xxx,类型),类型必须用下列的类型:
      可用的类型:

        二进制,同带binary前缀的效果 : BINARY    
        字符型,可带参数 : CHAR()     
        日期 : DATE     
        时间: TIME     
        日期时间型 : DATETIME     
        浮点数 : DECIMAL      
        整数 : SIGNED     
        无符号整数 : UNSIGNED
      

    6. 三种注释写法

    #DELETE FROM SeatInformation

    /*DELETE FROM SeatInformation */

    -- DELETE FROM SeatInformation

    需要特别注意 -- 这种注释后面要加一个空格

    7. 清除MySQL查询缓存与测试性能

    #关闭查询缓存
    set global query_cache_size = 0;
    set global query_cache_type = off;
    
    #查询系统环境变量
    show variables like '%pro%';
    set profiling=1;	#开启性能测试功能
    -- 需要测试的sql语句
    show profiles;
    
    #清空查询缓存
    RESET QUERY CACHE 
    
    # set sql_safe_updates=0;  #非主键条件下无法执行update或者delete命令
    
  • 相关阅读:
    怎么建立个人网站
    滚动条美化插件jquery.nicescroll
    [bzoj2251][2010Beijing Wc]外星联络——后缀数组+暴力求解
    [bzoj1717][Usaco2006 Dec]Milk Patterns 产奶的模式——后缀数组
    [bzoj1031][JSOI2007]字符加密Cipher——后缀数组
    [bzoj1030][JSOI2007]文本生成器——AC自动机
    [bzoj1009][HNOI2008]GT考试——KMP+矩阵乘法
    [bzoj2038][2009国家集训队]小Z的袜子(hose)——莫队算法
    [bzoj3669][Noi2014]魔法森林——lct
    [bzoj4034][HAOI2015]树上操作——树状数组+dfs序
  • 原文地址:https://www.cnblogs.com/friedCoder/p/12779508.html
Copyright © 2011-2022 走看看