在SQL语言中,join啥时候用,啥时候不用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SQL语言中,join啥时候用,啥时候不用?相关的知识,希望对你有一定的参考价值。

参考技术A JOIN 在内连接时,可以不使用,其它类型连接必须使用。\\x0d\\x0a如SELECT * FROM TABLEA INNER JOIN TABLEB ON A.ID=B.ID\\x0d\\x0a可以这样写:\\x0d\\x0aSELECT * FROM TABLEA,TABLEB WHERE A.ID=B.ID\\x0d\\x0a\\x0d\\x0aJOIN 有以下几种类型:\\x0d\\x0a\\x0d\\x0aINNER(内连接)\\x0d\\x0a指定返回每对匹配的行。废弃两个表中不匹配的行。如果未指定联接类型,则这是默认设置。\\x0d\\x0aFULL(全连接)\\x0d\\x0a指定在结果集中包含左表或右表中不满足联接条件的行,并将对应于另一个表的输出列设为 NULL。这是对通常由 INNERJOIN返回的所有行的补充。\\x0d\\x0aLEFT(左连接)\\x0d\\x0a\\x0d\\x0a指定在结果集中包含左表中所有不满足联接条件的行,且在由内联接返回所有的行之外,将另外一个表的输出列设为 NULL。\\x0d\\x0aRIGHT(右连接)\\x0d\\x0a指定在结果集中包含右表中所有不满足联接条件的行,且在由内联接返回的所有行之外,将与另外一个表对应的输出列设为 NULL。\\x0d\\x0aCROSS JOIN(交叉连接)\\x0d\\x0a得到连接表符合WHERE 子句的条件的记录数的乘积,即第一个表的每一个记录都与别一个表的所有记录连接出一个新的记录。\\x0d\\x0a交叉连接不带ON子句,其它连接必须有ON子句

sql语句啥时候加引号

select * from a where `name`=$_post['name'];
这么写对吗,写这种语句时什么时候应该加单引号,什么时候不加

明显不对。
select...是sql语句。
$_post...是php语句。

如果你写的是sql语句,那就不能有$_post[]
如果你写的是php语句,那就应该把其中的sql语句部分作为一般的字符串处理:
$sql = "select * from a where `name`=";
$sql .= $_post['name'];
然后再用php的sql library的function来运行这个字符串$sql

在纯sql语句中,如 爱老婆 所说,字段名加`或者什么也不加;字符类型的数值加单引号。
在php语句中,由于sql部分被认为是字符串,所以要加单/双引号。但因为sql语句中,本身可能包含单引号,所以为了分辨,必须用双引号。
而$_post['name']的意思是,php在载入页面的时候,把所有用html的post方法得到的变量都放入了一个叫_post的数组中。$_post['name']就是调用_post数组中,名称为字符串name的那个变量的值。
参考技术A 代表字段名的时候不加,代表字段值得时候如果是字符类型的时候加

以上是关于在SQL语言中,join啥时候用,啥时候不用?的主要内容,如果未能解决你的问题,请参考以下文章

SQL查询语句中,为啥在WHERE后面查询条件有的要加单引号,有的不用加,啥时候加,啥时候不加?

MySQL 的子查询和left join的比较,啥时候用子查询效率高,啥时候用left join效率高?

对于 SQL,啥时候开始需要始终使用“Inner Join”而不是隐式连接?

在SQL联表查询的时候,in和inner join各有啥优点?

sql语句中啥时候用单引号啥时候用双引号?如图中的红为啥用双引号?

PL/SQ连接oracle,L 新建表的时候, virtual那一列是啥意思