如果不使用事务处理的话,一个SQL文件会依次执行里面的每行SQL语句,直到执行完或者出错(语法错或者执行出错都一样),这和XML是不同的——后者大概是翻译成了一套事务,一旦出错会回滚。
与XML相比,用SQL操作数据库相对来说灵活一些。当然XML也有优势,比如要插入一列很长的数据,XML看起来很规则

虽然长了一些,不过表项和值的对应关系还是很明确的;而如果用SQL写:

就很乱了
尽管如此,很多情况下用SQL还是能很大程度上精简你的代码。我对SQL基本也停留在小学生阶段,不过基本上也够用了。如果你想学SQL,最好自己找本书看。
C5中最常用的SQL语句是insert ... values,比如你要新建一个UA,可以这么写:
insert into Traits(Type, Description, ShortDescription) values(*TRAIT_FOO*, *TXT_KEY_TRAIT_FOO*, *TXT_KEY_TRAIT_FOO*);
注意表项名且不论,你要插入的值,除了NULL,都要用单引号括起来。
SQLITE对引号的处理很怪,C5用的版本也不是那么标准,反正最好用单引号了。
你也可以一次插入很多数据,比如
insert into Traits(Type, Description, ShortDescription) values
(*TRAIT_FOO1*, *TXT_KEY_TRAIT_FOO1*, *TXT_KEY_TRAIT_FOO1*),
(*TRAIT_FOO2*, *TXT_KEY_TRAIT_FOO2*, *TXT_KEY_TRAIT_FOO2*),
(*TRAIT_FOO3*, *TXT_KEY_TRAIT_FOO3*, *TXT_KEY_TRAIT_FOO3*),
(*TRAIT_FOO4*, *TXT_KEY_TRAIT_FOO4*, *TXT_KEY_TRAIT_FOO4*),
(*TRAIT_FOO5*, *TXT_KEY_TRAIT_FOO5*, *TXT_KEY_TRAIT_FOO5*);
据说标准的sqlite引擎不支持这种语法,但C5用的是可以的。
有时候你会想根据已有的东西弄个新东西出来,比如想弄一个远古高达——名字、类型、造价、依赖科技和高达有些不同,那么你就可以先找到高达的定义:

把它用到的列提取出来,然后写成SQL语句:

这样你就可以根据高达的相关资料生成一个造价为1的远古高达。注意那个NULL,如果你要把某个值置空的话,是不能加引号的。
另外SQLITE里实际是没有boolean类型的,如果某个值是真的话那么实际值为1,反之为0。所以不要写什么values(False)了。
可能有人会问了:那我直接写成<Row>...</Row>或者insert into Units... values...,把具体的值写进去不好吗?
这么写有几个好处。其一,你的代码避免了大量魔数;其二,
你的数据必然和你当前的游戏数据是同步的。例如你的MOD依赖于某个MOD,而这个MOD对高达进行了某些修改(比如把高达的攻击力增加到了250),那么你的高达的力量也会自动调整到250;当然,如果GK的高达力是150,BNW是250的话,那么你的高达在两个版本里也会不同,而不用多写代码。
insert...select...可能会插入多行数据。举个例子,你想把未来主义的效果增加“生产空军单位时对所有文明增加300的影响力”,一行一行的写无疑是很累的,那么你可以简写为

同样的,如果你依赖了某个MOD,而那个MOD里增加很多新空军单位,你的代码对那个MOD是自然生效的