mysql数据库的基本操作

Mysql数据库之子查询

1:子查询(Subquery)是指出现在其他SQL语句内的SELECT子句。
1.1:子查询指嵌套在查询内部且必须出现在圆括号内。
1.2:子查询可以包含多个关键字或条件
如:DISTINCT , GROUP BY, ORDER BY, LIMIT,函数等。
1.3:子查询的外层查询可以是:SELECT, INSERT, UPDATE, SET或 DO。
1.4:子查询的返回值:子查询可以返回标量,一行,一列或子查询。
1.2例如

//SELECT *FROM tab1称为Outer Query/Outer Statement  
//SELECT col2 FROM tab2被称为SubQuery
SELECT *FROM tab1 WHERE col1 = (SELECT col2 FROM tab2);//将子查询到的作为外查询的条件

查询其水果的价格大于平均价格的水果Id
注意select后面只用*代表任(查询后显示)何字段,使用这里需要指定Id,,AVG()为计算平均
1.3:MySQL数据操作之由[NOT ]IN EXISTS引发的子查询
语法结构:

operand comparision_operator [NOT]IN (subquery)
ANY运算符与IN等效
//使用[NOT] EXISTS的子查询
如果查询返回任何行,EXISTS将返回TRUE,否则为FALSE

原表:
原表
ALL与NOT IN的使用(他们是等效的)
在这里插入图片描述
在这里插入图片描述

MySQL数据库的多表操作

1:MySQL数据库的多表更新
1.1:建立一个product表,表中的字段cityName,用数字代替。
在这里插入图片描述
1.2:建立一个city表,city表中的数据来源于product表
由于product表中的cityName字段有重复的城市名,需要进行分组在插入city表中
在这里插入图片描述
1.3:数据库操作之连接的语法结构:
MySQL在SELECT语句,多表更新,多表删除语句中都支持JOIN操作
语法结构:
table_reference
{INNER(内连接)|CROSS(外连接)] JOIN|{LEFT(左连接)|RIGHT(右连接)}[OUTER] JOIN}
table_reference
ON conditional_expr
1.4.0:使用内连的方式来更新表,将product中的cityName用city表中的id来代替

update product INNER JOIN city ON product.cityName = city.cityname SET product.cityName = city.id;

//ON 后接的是条件,即product和cityname字段的值要相等的情况下用city表对应的ID来取代product表中的cityName
//在执行该语句的时候报错了:
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column.  To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
//出现这种情况决绝的方式有两种:
     1SET SQL_SAFE_UPDATES = 0; //执行该命令更改mysql数据库模式。
     2//在where判断条件中跟上主键id    
     //例如:delete from firstmysqldatabase.user where UserName='zhangsan' and ID>=0;
    //我使用方式1:    

![参考下表(https://img-blog.csdnimg.cn/20201212210541654.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Rlbmd6aGFveHU=,size_16,color_FFFFFF,t_70#pic_center)
id值对应的cityname值

1.5:起别名:即在进行数据库表操作的过程中为表起一个别名:

//city该表的别名叫做c,然后在查询c.id=5
SELECT *FROM city AS c where c.id = 5;

为表起一个别名在实际使用中很重要

MySQL数据操作之连接

1:概述

/*
连接类型:
INNER JOIN-------------内连接
在mysql中,CROSS JOIN和INNER JOIN是等价的。都表示内连接
LEFT[OUTER]JOIN-------左外连接
RIGHT[OUTER]JOIN------右外连接
*/

/*
连接条件的使用
使用ON关键字来设定连接条件,也可以使用where来
通常使用ON关键字来设定连接条件
使用WHERE关键字进行结果集记录的过滤。
*/

2:内连接

//加入有表A和表B,表A和表B存在交集,那么使用内连接则会返回交集部分
SELECT  b.name,a.name FROM b  INNER JOIN a ON b.name = a.name;

在这里插入图片描述
在这里插入图片描述
内连接查询后的交集表
3:右外连接

//显示右表的全部记录和左表符合连接条件的记录:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值