49 合并查询

admin 的头像
Submitted by admin on 星期三, 2015-06-10 05:39

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
合并查询是一种特殊的混合查询类型。虽然在SQL2003规范中为它们定义了语法,但实际上几乎没有任何数据库支持该标准语法。然而,大多数数据库通过使用特定于数据库的语法,都提供了一些替代实现。在Drupal中,合并查询构建器把合并查询的概念抽象成为了一个结构化的对象,根据数据库的不同,它们会被编译成特定于数据库的语法。
在一般意义上,合并查询就是插入查询和更新查询的联合体。如果满足了给定条件,比如包含给定主键的记录已经存在,此时运行一个更新查询。如果给定条件未满足,则运行其它查询,比如插入查询。在大多数情况下,它等价于:

Drupal版本:

48 删除查询

admin 的头像
Submitted by admin on 星期三, 2015-06-10 05:37

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
删除查询必须使用一个查询构建器对象。它们使用db_delete()函数作为开始,如下所示:

Drupal版本:

47 更新查询

admin 的头像
Submitted by admin on 星期三, 2015-06-10 05:36

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
更新查询必须使用一个查询构建器对象。对于LOB (大对象, 比如MySQL中的TEXT) 和BLOB(二进制大对象)字段,某些数据库需要特殊处理,所以我们需要一个抽象层,从而允许独立的数据库驱动,按照它们自己的要求实现自己的特殊处理。

Drupal版本:

46 默认值

admin 的头像
Submitted by admin on 星期三, 2015-06-10 05:35

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
在正常情况下,如果你没有为给定字段指定一个值,而表的模式(schema)定义了默认值,那么数据库会自动的为你插入默认值。然而,在大多数的情况下,你需要明确的指示数据库使用默认值。它包括你是否想为整个记录使用所有的默认值。为了明确的告诉数据库,为给定的字段使用默认值,我们可以使用useDefaults()方法。

Drupal版本:

45 基于选择查询的结果插入

admin 的头像
Submitted by admin on 星期二, 2015-06-09 03:15

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
如果你想使用其它数据库表中的结果来填充当前的数据库表,你可以使用SELECT语句将其取出,然后在PHP中对其进行迭代并将其保存到新表中去,另外你还可以使用INSERT INTO...SELECT FROM查询,在这里从SELECT查询返回的每条记录都会送入到INSERT查询中。

Drupal版本:

44 多值插入形式

admin 的头像
Submitted by admin on 星期二, 2015-06-09 03:09

​作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
插入查询对象上还可以使用多值集合。也就是说,values()可被调用多次,从而将多个插入语句排在一起调用。这种形式的具体执行情况,则取决于数据库自身的能力。对于大多数的数据库,多值插入语句都会放在一个事务中一起执行,这样能够保证更好的数据一致性和执行效率。对于MySQL,它将会使用MySQL的多值插入语法。

Drupal版本:

43 退化形式

admin 的头像
Submitted by admin on 星期二, 2015-06-09 03:08

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
$nid = db_insert('node')
->fields(array('title', 'uid', 'created'))
->values(array(
'title' => 'Example',
'uid' => 1,
'created' => REQUEST_TIME,
))
->execute();
?>

Drupal版本:

42 紧凑形式

admin 的头像
Submitted by admin on 星期二, 2015-06-09 03:07

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com​
对于大多数插入查询,推荐的形式就是紧凑形式:

Drupal版本:

页面

Subscribe to Think in Drupal RSS