MySQL数据库学习——子查询与连接

一、子查询(Subquery)是指出现在其他SQL语句内的select子句

例:select * from t1 where col1 =selectcol2 from t2);其中select * from t1,称为Quter Query/Outer Statementselect col2 fromt2 ,称为SubQuery

子查询指:嵌套在查询内部,且必须始终出现在圆括号内。

子查询可以包含多个关键字或条件,

      DISTINCTgroup byorderbylimit,函数等。

子查询的外层查询可以是:selectinsertupdatesetdo

子查询可以返回标量、一行、一列或子查询

 

使用比较运算符的子查询

=>, <,>=, <=, <>, !=, <=>

语法结构

      Operand comparison_operatorsubquery

当子查询出的结果为多个时,可以通过anysomeall来修饰比较符。Any为满足任意一个,some为满足某些,all为全满足

      Operand comparison_operator{any | some | all}subquery

 

 

使用[not] in的子查询

Operand comparison_operator[not] in (subquery)

= Any运算符与In等效。

= ALL <> ALL运符与not In等效。

使用[not] exists的子查询

      如果子查询返回任何行,exists将返回true;否则为false

 

将查询结果写入数据表

Insert [into]表名 [列名]select …

例:insert tdb_goods_cates(cate_name) select goods_cate fromtdb_goods group by goods_cate;

二、多表更新

Update table_references

Set列名= {expr1 | default} [,…]

[where where_condition]

 

Table_reference

{[inner | cross] join | {left | right} [outer] join}

Table_reference

On conditional_expr

tdb_goods


例:将表tdb_goodstdb_goods_cates中的goods_catecate_name相同的项链接起来,将表中tdb_goods_catescate_id的值赋给tdb_goods中的goods_cate

updatetdb_goods inner join tdb_goods_cates on goods_cate = cate_name

   set goods_cate =cate_id;

 

三、创建数据表并将查询结果写入到数据表

Create table [if not exists] tbl_name [(create_definition…)]

Select_statement

例:

create tabletdb_goods_brands(

brand_id smallint unsigned primary key auto_increment,

brand_namevarchar(40) not null

)

selectbrand_name from tdb_goods group by brand_name;

四、连接

MySQLselect语句、多表更新、多表删除语句中支持join操作

Table_reference

{[inner | cross] join | {left | right} [outer] join}

Table_reference

On conditional_expr

 

连接方式inner join内连接,在MySQLjoincross joininnerjoin是等价的

Left [outer] join左外连接 right [outer] join右外连接

 

内连接:显示两个表中共有的部分

左连接:显示左表中全部和与右表中共有的。

右连接:显示右表的全部和与左表中共有的。

五、无限级分类表

Type_id type_name parent_id;

通过自身连接实现

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值