|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
php本地模拟的prepare底层就是mysql_real_escape_string,所以必须得用mysql_set_character_set去设置mysql->charset,否则就存在字符集问题。攘咏鲅〕隽秸疟碇谢ハ嗥ヅ涞募锹迹虼耍饣岬贾掠惺蔽颐切枰募锹济挥邪础
为更好的了解这个观点,我们先容两个表作演示。苏格兰议会中的政党表(party)订定合同员表(msp)。
party(Code,Name,Leader)
Code:政党代码
Name:政党称号
Leader:政党首脑
msp(Name,Party,Constituency)
Name:议员名
Party:议员地点政党代码
Constituency:选区
在先容左毗连、右毗连和全毗连前,有一个数据库中主要的观点要先容一下,即空值(NULL)。
偶然表中,更切实的说是某些字段值,大概会呈现空值,这是由于这个数据不晓得是甚么值或基本就不存在。
空值不同等于字符串中的空格,也不是数字范例的0。因而,判别某个字段值是不是为空值时不克不及利用=,这些判别符。必须有公用的短语:ISNULL来选出有空值字段的纪录,同理,可用ISNOTNULL选出不包括空值的纪录。
比方:上面的语句选出了没有向导者的政党。(不要奇异,苏格兰议会中的确存在如许的政党)
SELECTcode,nameFROMparty
WHEREleaderISNULL
又如:一个议员被解雇出党,看看他是谁。(即该议员的政党为空值)
SELECTnameFROMmsp
WHEREpartyISNULL
好了,让我们言回正传,看看甚么叫左毗连、右毗连和全毗连。
Aleftjoin(左毗连)包括一切的右边表中的纪录乃至是右侧表中没有和它婚配的纪录。
同理,也存在着不异事理的rightjoin(右毗连),即包括一切的右侧表中的纪录乃至是右边表中没有和它婚配的纪录。
而fulljoin(全毗连)望文生义,摆布表中一切纪录城市选出来。
讲到这里,有人大概要问,究竟甚么叫:包括一切的右边表中的纪录乃至是右侧表中没有和它婚配的纪录。
我们来看一个实例:
SELECTmsp.name,party.name
FROMmspJOINpartyONparty=code
这个是我们上一节所学的Join(注重:也叫innerjoin),这个语句的本意是列出一切议员的名字和他所属政党。
很遗憾,我们发明该查询的了局少了两个议员:CanavanMSP,Dennis。为何,由于这两个议员不属于任何政党,即他们的政党字段(Party)为空值。那末为何不属于任何政党就查不出来了?这是由于空值在作祟。由于议员表中政党字段(Party)的空值在政党表中找不到对应的纪录作婚配,即FROMmspJOINpartyONparty=code 没有把该纪录毗连起来,而是过滤进来了。
在该短语中,msp在Join的右边,一切称为左表。party在Join的右侧,一切称为右表。
如今再看看这句话,“包括一切的右边表中的纪录乃至是右侧表中没有和它婚配的纪录”,意义应当很分明了吧。实行上面这个语句,那两个没有政党的议员就漏不了了。
SELECTmsp.name,party.name
FROMmspLEFTJOINpartyONparty=code
关于右毗连,看看这个查询就分明了:
SELECTmsp.name,party.name
FROMmspRIGHTJOINpartyONmsp.party=party.code
这个查询的了局列出一切的议员和政党,包括没有议员的政党,但不包括没有政党的议员。那末既要包括没有议员的政党,又要包括没有政党的议员该怎样办呢,对了,全毗连(fulljoin)。
SELECTmsp.name,party.name
FROMmspFULLJOINpartyONmsp.party=party.code
在执行崩溃恢复时,理解在一个数据库中的每一个表tbl_name对应的在数据库目录中的3个文件是很重要的: |
|