mysql(四)--约束,Having,mysql之any,some all,UNION和UNION ALL

约束

由于当用外键的时候默认的必须是innodb,如果不是innodb 的话,可以更改存储引擎为innodb,在my.ini 中更改存储引擎为innodb

可以通过配置文件更改存储引擎为innodb

 

数据类型不相同不能创建表

禁用外键约束
SET FOREIGN_KEY_CHECKS=0;
启动外键约束
SET FOREIGN_KEY_CHECKS=1;
查看当前FOREIGN_KEY_CHECKS的值
SELECT  @@FOREIGN_KEY_CHECKS; 

 



mysql之any,some all
ALL、ANY和SOME子查询
ALL和ANY操作符的常见用法是结合一个相对比较操作符对一个数据列子查询的结果进行测试。它们测试比较值是否与子查询所返回的全部或一部分值匹配。比如说,如果比较值小于或等于子查询所返回的每一个值,<= ALL将是true;只要比较值小于或等于子查询所返回的任何一个值,<= ANY将是true。SOME是ANY的一个同义词。
下面这条语句用来检索最早出生的总统,具体做法是选取出生日期小于或等于president数据表里的所有出生日期(只有最早的出生日期满足这一条件)的那个数据行:
mysql> SELECT last_name, first_name, birth FROM president  
     -> WHERE birth <= ALL (SELECT birth FROM president);  
 +------------+------------+------------+  
 | last_name  | first_name | birth      |  
 +------------+------------+------------+  
 | Washington | George     | 1732-02-22 |  
 +------------+------------+------------+  
下面这条语句的用处就不大了,它将返回所有的数据行,因为对于每个日期,至少有一个日期(它本身)大于或等于它:

mysql> SELECT last_name, first_name, birth FROM president  
     -> WHERE birth <= ANY (SELECT birth FROM president);   
+------------+---------------+------------+  
 | last_name  | first_name    | birth      |  
 +------------+---------------+------------+  
 | Washington | George        | 1732-02-22 |  
 | Adams      | John          | 1735-10-30 |  
 | Jefferson  | Thomas        | 1743-04-13 |  
 | Madison    | James         | 1751-03-16 |  
 | Monroe     | James         | 1758-04-28 |  
 ...  
当ALL、ANY或SOME操作符与"="比较操作符配合使用时,子查询可以是一个数据表子查询。此时,你需要使用一个数据行构造器来提供与子查询所返回的数据行进行比较的比较值。
mysql> SELECT last_name, first_name, city, state FROM president  
     -> WHERE (city, state) = ANY  
     -> (SELECT city, state FROM president  
     -> WHERE last_name = 'Roosevelt');  
 +-----------+-------------+-----------+-------+  
 | last_name | first_name  | city      | state |  
 +-----------+-------------+-----------+-------+  
 | Roosevelt | Theodore    | New York  | NY    |  
 | Roosevelt | Franklin D. | Hyde Park | NY    |  
 +-----------+-------------+-----------+-------+  
前一节里提到过,IN和NOT IN操作符是= ANY和< > ALL的简写。也就是说,IN操作符的含义是"等于子查询所返回的某个数据行",NOT IN操作符的含义是"不等于子查询所返回的任何数据行"。
UNION和UNION ALL的作用和语法
UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值