|
主题:[精品教程分享]官方手把手带您一起学SQL,实例说明,本系列教程不断更新中... [收藏主题] | 转到: |
第二节 实例:用SQL标签实现文章列表 先看下最终要实现的效果:
一般,这种效果我们都是利用系统自带的系统函数标签,这边我是为了举例,还是建议用系统函数标签去实现。 我们分析下: 主要由:. 文章标题 标题带有链接 及文章添加的日期 四个要素组成。 分析完毕,我们着手建标签,到系统后台标签-->>自定义SQL函数标签-->> 点击新建标签-->>
下一步:主表中选择 文章数据表
根据我们以上的分析,我们按住ctrl,利用鼠标点击要用到的
接下来就是写循环语句:
点击“保存标签”,完成标签的制作。 和系统函数标签一样,在模板要调用的位置插入该标签 {SQL_最新文章列表()} 保存模板,生成一下,看到效果了吧^_^...... |
|
支持(0) | 反对(0) 顶端 底部 |
今晚我们接着上面两节课来讲一下利用SQL函数标签来实现通用栏目列表的效果,即可以做一个通用的标签,调用的时候只要填入栏目的ID和要调用的文章数目即可. OK,进入正题: 要达到的效果
新建标签:
主表选择文章数据表,然后和上一节课讲的一样,选择要用到的字段 如下图: 查询语句如下: select top {$Param(1)} ID,Title,Adddate from KS_Article Where tid='{$Param(0)}' and verific=1 order by id desc 备注(帮助新手朋友理解) 其中:{$Param(1)} order by id desc即按降序输出,最新添加的显示在最上面 看明白上面的,我们接着完成循环体:
附循环体内容: [loop={$Param(1)}] <li> [/loop] 最后保存标签,到模板要显示的位置插入该标签如: {SQL_通用栏目列表标签(20071229508802,10)} 系统要提示您输入要调用的栏目ID,及要调用的文章数量,保存模板,发布即可. 第四节课敬请关注,我们会陆续完善,一步步教您利用SQL标签实现各种效果,让您将科汛系统发挥的更自如....
|
|||||||||||||||
支持(0) | 反对(0) 顶端 底部 |
Count 在上一页有提到,COUNT 是函数之一。由于它的使用广泛,我们在这里特别提出来讨论。基本上,COUNT 让我们能够数出在表格中有多少笔资料被选出来。它的语法是: SELECT COUNT("栏位名") 举例来说,若我们要找出我们的示范表格中有几笔 store_name 栏不是空白的资料时, Store_Information 表格
我们就打入, SELECT COUNT(store_name) 结果:
"is not NULL" 是 "这个栏位不是空白" 的意思。 COUNT 和 DISTINCT 经常被合起来使用,目的是找出表格中有多少笔不同的资料 (至于这些资料实际上是什么并不重要)。 举例来说,如果我们要找出我们的表格中有多少个不同的 store_name,我们就打入, SELECT COUNT(DISTINCT store_name) 结果:
Group By 我们现在回到函数上。记得我们用 SUM 这个指令来算出所有的 Sales (营业额)吧!如果我们的需求变成是要算出每一间店 (store_name) 的营业额 (sales),那怎么办呢?在这个情况下,我们要做到两件事:第一,我们对于 store_name 及 Sales 这两个栏位都要选出。第二,我们需要确认所有的 sales 都要依照各个 store_name 来分开算。这个语法为: SELECT "栏位1", SUM("栏位2") 在我们的示范上, Store_Information 表格
我们就打入, SELECT store_name, SUM(Sales) 结果:
当我们选不只一个栏位,且其中至少一个栏位有包含函数的运用时,我们就需要用到 GROUP BY 这个指令。在这个情况下,我们需要确定我们有 GROUP BY 所有其他的栏位。换句话说,除了有包括函数的栏位外,我 们都需要将其放在 GROUP BY 的子句中。 Having 那我们如何对函数产生的值来设定条件呢?举例来说,我们可能只需要知道哪些店的营业额有超过 $1,500。在这个情况下,我们不能使用 WHERE 的指令。那要怎么办呢?很幸运地,SQL 有提供一个 HAVING 的指令,而我们就可以用这个指令来达到这个目标。 HAVING 子句通常是在一个 SQL 句子的最后。一个含有 HAVING 子句的 SQL 并不一定要包含 GROUP BY 子句。HAVING 的语法如下: SELECT "栏位1", SUM("栏位2") 请读者注意: GROUP BY 子句并不是一定需要的。 在我们Store_Information 表格这个例子中, Store_Information 表格
我们打入, SELECT store_name, SUM(sales) 结果:
Create Table 表格是数据库中储存资料的基本架构。在绝大部份的情况下,数据库厂商不可能知道您需要如何储存您的资料,所以通常您会需要自己在数据库中建立表格。虽然许多数据库工具可以让您在不需用到 SQL 的情况下建立表格,不过由于表格是一个最基本的架构,我们决定包括 CREATE TABLE 的语法在这个网站中。 在我们跳入 CREATE TABLE 的语法之前,我们最好先对表格这个东西有些多一点的了解。表格被分为栏位 (column) 及列位 (row)。每一列代表一笔资料,而每一栏代表一笔资料的一部份。举例来说,如果我们有一个记载顾客资料的表格,那栏位就有可能包括姓、名、地址、城市、国家、生日...等等。当我们对表格下定义时,我们需要注明栏位的标题,以及那个栏位的资料种类。 那,资料种类是什么呢?资料可能是以许多不同的形式存在的。它可能是一个整数 (例如 1),、一个实数(例如 0.55)、一个字串 (例如 'sql')、一个日期/时间 (例如 '2000-JAN-25 03:22:22')、或甚至是 以二进法 (binary) 的状态存在。当我们在对一个表格下定义时,我们需要对每一个栏位的资料种类下定义。(例如 '姓' 这个栏位的资料种类是 char(50)━━代表这是一个 50 个字符的字串)。我们需要注意的一点是不同的数据库有不同的资料种类,所以在对表格做出定义之前最好先参考一下数据库本身的说明。 CREATE TABLE 的语法是: CREATE TABLE "表格名" 若我们要建立我们上面提过的顾客表格,我们就打入以下的 SQL: CREATE TABLE customer Drop Table 有时候我们会决定我们需要从数据库中清除一个表格。事实上,如果我们不能这样做的话,那将会是一个很大的问题,因为数据库管理师 (Database Administrator -- DBA) 势必无法对数据库做有效率的管理。还好,SQL 有提供一个 DROP TABLE的语法来让我们清除表格。 DROP TABLE 的语法是: DROP TABLE "表格名" 我们如果要清除在SQL CREATE 中建立的顾客表格,我们就打入: DROP TABLE customer. Truncate Table 有时候我们会需要清除一个表格中的所有资料。要达到者个目的,一种方式是我们在 SQL DROP 那一页 看到的 DROP TABLE 指令。不过这样整个表格就消失,而无法再被用了。另一种方式就是运用 TRUNCATE TABLE 的指令。在这个指令之下,表格中的资料会完全消失,可是表格本身会继续存在。 TRUNCATE TABLE 的语法为下: TRUNCATE TABLE "表格名" 所以,我们如果要清除在 SQL Create 那一页建立的顾客表格之内的资料,我们就打入: TRUNCATE TABLE customer. Insert Into 到目前为止,我们学到了将如何把资料由表格中取出。但是这些资料是如果进入这些表格的呢? 这就是这一页 (INSERT INTO) 和下一页 (UPDATE) 要讨论的。 基本上,我们有两种作法可以将资料输入表格中内。一种是一次输入一笔,另一种是一次输入好几笔。 我们先来看一次输入一笔的方式。 依照惯例,我们先介绍语法。一次输入一笔资料的语法如下: INSERT INTO "表格名" ("栏位1", "栏位2", ...) 假设我们有一个架构如下的表格: Store_Information 表格
而我们要加以下的这一笔资料进去这个表格:在 January 10, 1999,Los Angeles 店有 $900 的营业额。我们就打入以下的 SQL 语句: INSERT INTO Store_Information (store_name, Sales, Date) 第二种 INSERT INTO 能够让我们一次输入多笔的资料。跟上面刚的例子不同的是,现在我们要用 SELECT 指令来指明要输入表格的资料。如果您想说,这是不是说资料是从另一个表格来的,那您就想对了。一次输入多笔的资料的语法是: INSERT INTO "表格1" ("栏位1", "栏位2", ...) 以上的语法是最基本的。这整句 SQL 也可以含有 WHERE、 GROUP BY、 及 HAVING 等子句,以及表格连接及别名等等。 举例来说,若我们想要将 1998 年的营业额资料放入 Store_Information 表格,而我们知道资料的来源是可以由 Sales_Information 表格取得的话,那我们就可以打入以下的 SQL: INSERT INTO Store_Information (store_name, Sales, Date) 在这里,我用了 SQL Server 中的函数来由日期中找出年。不同的数据库会有不同的语法。 举个例来说,在 Oracle 上,您将会使用 WHERE to_char(date,'yyyy')=1998。 Update 我们有时候可能会需要修改表格中的资料。在这个时候,我们就需要用到 UPDATE 指令。这个指令的语法是: UPDATE "表格名" 最容易了解这个语法的方式是透过一个例子。假设我们有以下的表格: Store_Information 表格
我们发现说 Los Angeles 在 01/08/1999 的营业额实际上是 $500,而不是表格中所储存的 $300,因此我们用以下的 SQL 来修改那一笔资料: UPDATE Store_Information 现在表格的内容变成: Store_Information 表格
在这个例子中,只有一笔资料符合 WHERE 子句中的条件。如果有多笔资料符合条件的话,每一笔符合条件的资料都会被修改的。 我们也可以同时修改好几个栏位。这语法如下: UPDATE "表格" Delete From 在某些情况下,我们会需要直接由数据库中去除一些资料。这可以藉由 DELETE FROM 指令来达成。它的语法是: DELETE FROM "表格名" 以下我们用个实例说明。假设我们有以下这个表格: Store_Information 表格
而我们需要将有关 Los Angeles 的资料全部去除。在这里我们可以用以下的 SQL 来达到这个目的: DELETE FROM Store_Information 现在表格的内容变成: Store_Information 表格
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
支持(0) | 反对(0) 顶端 底部 |
<上一主题 | 下一主题 > |