表关系: 一对一,一对多,多对多 1vs1 丈夫表 --> 妻子表 1 vs n 用户 --> 车辆/房产 n vs n 老师/商品 --> 学生/订单 多表联查的SQL 内连接 select * from 表1 inner join 表2 on 表1.字段 = 表2.字段 select * from 表1, 表2 where 表1.字段 = 表2.字段 外连接 select
前面讲解的 ANY 关键字和 AIL,关键字的子査询中使用了 " > ” 比较运算符,子查可以使用其他的比较运算符,如 “ < ” 、“ >= ”、“ = ”、“ != ”等。 例如,使用带比较运算符的子査询,查询小刚是哪个部门的员工,SQL语句如下: SELECT * FROM department WHERE did=(select did from emp
ANY关键字表示满足其中任意一个条件,它允许创建一个表达式对子查询的返回值列表进行比较,只要满足内层子查询中的任意一个比较条什层查询条件。 例如,使用带 ANY关键字的子查询,查询满足条件的部门,SQL 语句如下 SELECT * FROM department WHERE did>any(select did from employee);
在多表查询中,一些SQL开发人员更喜欢使用WHERE来做join,比如: SELECT a.ID, b.Name, b.Date FROM Customers a, Sales b WHERE a.ID = b.ID; 缺点:在上面语句中,实际上是创建了两张表的笛卡尔积,所有可能的组合都会被创建出来。在笛卡尔连接中,在上面的例子中,如果有1000顾客和1000条销售记录,这个查询会先产生100
多表查询 分类: * 合并结果集 * 连接查询 * 子查询 【1】合并结果集 * 要求被合并的表中,列数相同,列的类型要一一对应相同* UNION,去除重复行* UNION ALL,不去除重复行例: select * from table1 union select * from table2;select * from table1 union all selec
在某些情况下还需要删除关联表中的数,如学校的软件一班取消了,就需要在数掘库中将该班级以及该班级的学生一起删除。由于grade 表和 sudent 表之间具有关联关系。参照列被参照的值是不能被删除的,因此,在删除软件一班时,一定要先删除该班级的所有学生,然后再删除班级,具体步骤如下。 (1)将软件一班的所有学生全部删除,具体语句如下: mysql> delete from stu
我们知道建立外键是为了保证数据的完整和统一性,但如果主表中的数据被删除或修改,从表中对应的数据该怎么办?很明显,从表中对应的数据也应该被删除,否则数据库中会存在很多无意义的垃圾数据。MySQL 可以在建立外键时添加 ON DELETE 或 ON UPDATE子句来告诉数据库,怎样避免垃圾数据的产生。具体语法格式如下: alter table 表名 add constraint F