关于mysql的一些问题_关于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将字符转换成数字

将字符的数字转成数字,比如'0'转成0可以直接用加法来实现

例如:将pony表中的d 进行排序,可d的定义为varchar,可以这样解决

select * from pony order by (d+0)

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

比较数字和varchar时,比如a=11,b="11ddddd";

则 select 11="11ddddd"相等

若绝对比较可以这样:

select binary 11 =binary "11ddddd"

字符集转换 : 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命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值