博文

C++中的限制修饰符const(2005-11-13 10:12:00)

摘要:const修饰符可以把对象转变成常数对象,什么意思呢?                      意思就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常数一样使用!                     使用方法是:                   const int a=1;//这里定义了一个int类型的const常数变量a;                     但就于指针来说const仍然是起作用的,以下有两点要十分注意,因为下面的两个问题很容易混淆!                     我们来看一个如下的例子:                   #include <iostream> 
                  using namespace std;  ......

阅读全文(2857) | 评论:0

查询多个表格 (2005-11-13 10:11:00)

摘要:  在对跨多个表格的数据进行组合时,有时很难搞清楚要使用哪一个SQL句法。我将在这里对将多个表格中的查询合并至单一声明中的常用方式进行阐述。
-------------------------------------------------------------------------------- 在这篇文章中的样本查询符合SQL92 ISO标准。不是所有的数据库生产商都遵循这项标准,而且很多厂商采取的提升措施会带来一些意料不到的后果。如果你不确定你的数据库是不是支持这些标准,你可以参看生产厂商的有关资料。 SELECT 一个简单的SELECT声明就是查询多个表格的最基本的方式。你可以在FROM子句中调用多个表格来组合来自多个表格的结果。这里是一个它如何工作的实例: SELECT table1.column1, table2.column2 FROM table1, table2 WHERE table1.column1 = table2.column1; 这个实例中,我使用点号(table1.column1)来指定专栏来自哪一个表格。如果所涉及的专栏只在一个参考的表格中出现,你就不需要加入完整的名称,但是加入完整名称会对可读性起到帮助。 在FROM子句中表格之间由逗号来分隔,你可以加入所需的任意多的表格,尽管一些数据库有一个在引入正式的JOIN声明之前他们可以有效地处理的内容这方面的限制,这个将在下面谈到。 这个句法是一个简单的INNER JOIN。一些数据库将它看成与一个外部的JOIN是等同的。WHERE子句告知数据库哪一个区域要做关联,而且它返回结果时,就像列出的表格在给定的条件下组合成一个单独的表格一样。值得注意的是,你的比较条件并不需要与你作为结果组返回的专栏相同。在上面的例子中,table1.column1和table2.column1用来组合表格,但是返回的却是table2.column2。 你可以在WHERE子句中使用AND关键字来将这个功能扩展至多于两个的表格。你还可以使用这样的表格组合来限制你的结果而不用实际地从每个表格返回专栏。在下面的例子中,table3与table1匹配,但是我没有从table3返回任何东西来显示。我只是确保来自table1的有关专栏存在于table3之中。注意此例中table3需要在......

阅读全文(3232) | 评论:0

SQL语言详解 (2005-11-13 10:10:00)

摘要:  Visual FoxPro的诸多特色之一便是结构化查询语言(Structured Query Language)。SQL此一语言提供了用来建立、维护几查询一个关系数据库管理系统的命令。 1.SQL的SELECT命令 SQL有许多重要的层面,但是其语言的核心则依靠数据查询与查询结果的快速回报。对某些使用者而言,他很可能仅使用到SQL此一层面。在SQL中,所有的查询(Query)操作完全由SELECT命令独立完成。 SELECT是一个用来从一个或一个以上的表获取数据的SQL命令。当您使用SELECT命令进行一个查询时,Visual FoxPro会解译此查询并从表中获取指定的数据。SELECT命令叙述可简可繁,命令行的长度依据查询的复杂度而定。它能够包含数据字段、常数值、内存变量、运算式、函数或宏。然而,SQL的SELECT终究还是一个命令,因此其单一命令叙述最长不可超过8192个符号。而任何使用在SELECT命令中的宏替换最大亦不可超过8192个符号。 或许有人会问,此SELECT命令不是与切换工作区用的SELECT命令相同吗?关于此点您大可放心,因为Visual FoxPro不仅是快速,它更是聪明,它会自动分辨您所使用的究竟是SQL之SELECT或是切换工作区的SELECT。 SQL之SELECT命令的语法如下: SELECT[ALL DISTINCT] [TOP nExpr [PERCENT]]
[Alias.] Select_Item [AS Column_Name]
[,[Alias.] Select_Item [AS Column_name]…]
FROM [FORCE]
[DatabaseName!]Table[[AS]Local_Alias]
[[INNer LEFT[OUTER] RIGHT[OUTER] FULL [OUTER]JOIN
DatabaseName!]Table[[AS] Local_Alias]
[ON JoinCondition…]
[[INTO Destination]
[TO FILE FileName [ADDITIVE] TO PRINTER [PROMPT]
TO SCREEN]]
[PREFERENCE Prefere......

阅读全文(5716) | 评论:0

全面接触SQL语法(2005-11-13 10:09:00)

摘要:全面接触SQL语法(1)
SQL功能与特性
  其实,在前面的文章中,已经提及SQL命令的一些基本功能,然而,通过SQL命令,程序设计师或数据库管理员(DBA)可以:
  (一)建立数据库的表格。(包括设置表格所可以使用之空间)
  (二)改变数据库系统环境设置。
  (三)针对某个数据库或表格,授予用户存取权限。
  (四)对数据库表格建立索引值。
  (五)修改数据库表格结构。(新建、删除或是修改表格字段)
  (六)对数据库进行数据的新建。
  (七)对数据库进行数据的删除。
  (八)对数据库进行数据的修改。
  (九)对数据库进行数据的查询。
  这几项便是通过SQL命令可以完成的事情,看起来是不是比起“查询”两个字所代表的功能要多的多了呢?   SQL语法的分类   其实SQL命令并不是非常多,可是要把SQL用到出神入化,却也只需要短短几个命令便够,因为SQL命令是针对关系型数据库所建立出来的语法叙述,
所以SQL在这类数据库中所发挥的功能非常的强,以下将针对在VB中常用的SQL语法基本命令加以分类介绍。在说明SQL的命令以及使用语法之前,以下将SQL做了的分类,在致上SQL语法所使用到的类型,可以说都已包含在这些类别当中。   第一类、属性词(Predicates)   在SQL命令中用来指明所要选择的记录的方式。如ALL、TOP与DISTINCT等等。   第二类、声明(Declaration)   针对SQL Parameter或Parameter Query 的名称与数据类型做声明,如PARAMETERS的声明等等。   第三类、条件子句(Clause)   在SQL的查询中,利用一些表达式定义出查询的条件,以缩小寻找的范围,如WHERE。   第四类、运算符(Operator)与操作数(Operation)   在SQL的查询中,与Operation共同组成表达式(Expression),如BETWEEN....AND 运算符与INNER JOIN操作数。   第五类、函数(Function)   一些SQL常见的函数,像是AVG()是求算数平均数的函数。   第六类、SQL语句(Statement)   SQL的语句,可以说是SQ......

阅读全文(3413) | 评论:0

SELECT 使用经验 (2005-11-13 10:07:00)

摘要: 
Select命令参数很多,功能也很强大,适当的使用一些技巧,可以使程序更洁练,运行速度更快。但如果不是很强求速度的话,我认为太过复杂的命令对以后的维护工作带来困难。呵呵,有时我要理解自己写的命令都有点困难,实在是太复杂了。以下内容是工在工作过程中摸索出来的一些小技巧,希望对别人有帮助。
【在select的输出字段使用函数的技巧】 不要以为select的输出字段只能用“表.字段名”这样的格式,其实这里面大有文章可作。它可用使用函数、甚至自定义函数(当然这样会影响速度,搞不好还会影响结果的正确性,所以很复杂的自定义函数就不要用了)。而在这里最经常用的就是sum()、avg()、iif()之类的函数了。举个例子: 人员资料表ryb,内容如下: 姓名 职称 政治面貌 科室
awfw 助工 党员 通讯科
wafawe 高工 党员 机械科
afawe 技术员 团员 财务科
2wraw 无 无 人事科
afwe 工程师 无 办公室
…… 现要统计每个科室各有几名技术员、助工、工程师、高工、党员、团员,以下列表的形式打印出来 科室 技术员 助工 工程师 高工 党员 团员
财务科 2 2 3 3 4 3
…… 命令如下: sele 科室,sum(iif(职称='技术员',1,0)), sum(iif(职称='助工',1,0)), ;
sum(iif(职称='工程师',1,0)), sum(iif(职称='高工',1,0)), ;
sum(iif(政治面貌='党员',1,0)),sum(iif(政治面貌='团员',1,0)) ;
from ryb grou by 科室 是不是很方便? 这里还有一个更绝的例子:   表recdbf
    〖性质〗分一般、重大、特大;
    〖日期〗 要统计出某年的12个月内每个月每种性质的记录各有多少,若该月没有记录就为零。 结果:
月份  一般 重大 特大  
 1   0  1    3
 2   2  12   3
 ......
 12   3  0   5 这跟上面那个例子有点不同,上例只是按表中科室来分类,而这里就不同,因为不是每个月都有案件的,但在报表里没有案件的月也要占......

阅读全文(5526) | 评论:0