用数据库查询(SQL)(0分)

  • 主题发起人 主题发起人 mxb
  • 开始时间 开始时间
M

mxb

Unregistered / Unconfirmed
GUEST, unregistred user!
如何用SQL进行查询功能,要求是查询后的记录都保留在表中!
谢谢!
 
select * into tmptable from table where ...
或利用dbgrid的savetofile/loadfromfile
 
select xxx into DestTable
from SourceTable
where ...

将按照查询结果创建新表,并保存查询结果中的数据,

TDBGrid没有SaveToFile/LoadFromFile方法
TClientDataSet倒是有,但和这个问题无关
 
insert into <table_name>
select * from <table> where <condition>
 
我曾为朋友写过一点关于SQL语句的文章
先贴上查询部分:(奇怪:查询后记录本来就在表中呀,是要显示在DBGrid中吧,简单!用DbSource连接Query和DBGrid就行了)

SELECT 语句从数据库一个或多个数据表中获取数据,并将查询结果提供给用户。从多个数据表中获取数据称为连接查询(JOIN)。

SELECT [DISTINCT]column-list
FROM Table-reference
[WHERE search-condition]
[ORDER BY order-list]
[HAVING having-condition]
[UNION select-expr]
1.SELECT 子句:SELECT 子句指定此查询要检索的数据项(Column-list),各选项间用“,”隔开。按照从左到右的顺序,每个数据选项产生一个列的查询结果。
例如:1-1). 要从雇员表中查出所有雇员的电话:
SELECT 雇员姓名,雇员电话
FROM 雇员表
这里,“雇员姓名,雇员电话”是表“雇员表”的字段名。
例1-2). 要从部门表中查出所有信息。
SELECT * FROM 部门表
“SELECT *”表示选择一个表中所有列的内容,且从左到右的顺序和表本身相同。这在刚录入一个新库想马上看看表结构和内容时很有用。

ANSI/ISO标准规定,SELECT 语句可以有一个所有列选择或一个选择表,但不能两者兼有。但是,许多SQL实现都简单地将“*”当作选择表中的一个元素来处理。所以,以下查询
SELECT *,(部门编号)
FROM 部门表
在大多数商用SQL版本(如DB2,ORACLE 和SQL SERVER)中是合法的,但却不符合ANSI/ISO标准。

SELECT子句中的数据项除了可以为查询表的字段外,还可以为常数或SQL表达式。SQL表达式可以是对所存储的数据进行计算后的计算列。ANSI/ISO SQL标准规定表达式中可用四种算术运算:加(X+Y)、减(X-Y)、乘(X*Y)、除(X/Y),还可以用括号组成更复杂的表达式,如:
(X*1.05)+(Y/3)
SQL表达式还可以是字符串运算、内建函数。函数有:SUM,COUNT,AVG,MAX,MIN。

SUM():计算一列的总和。
COUNT():计算一列中值的个数。
COUNT(*):计算查询结果的行数。
AVG():计算一列的平均值。
MAX():求一列中最大的值。
MIN():求一列中最小的值。

2.FROM 子句:FROM 子句指明从哪些数据表取得数据。Table-reference 可以是一个数据表,或者是用逗号隔开的多个数据表,还可以使用按照SQL-92标准定义的内连接(INNER)或者外连接(OUTER)。这些表称为此SQL语句的源表,因为查询结果都源于它们。

3.WHERE语句:WHERE子句限制查询取得的数据必须符合search-condition中的条件。
在WHERE 子句中可以使用比较操作符(>,=,<,<>,>=,<=),例如:
例3-1)列出所有薪金大于8000元的雇员
SELECT * FROM 雇员表
WHERE 雇员薪金>8000

SQL语句还可以检索某列数据值是否与一个指定的模式相匹配(LIKE)。这种模式可能包括一个或多个通配符。这些字符用特殊方式解释。通配符百分号(%)可以和零个或多个字符组成的任何字符串相匹配。

4. ORDER BY 子句:ORDER BY 子句指明取得数据的排序方式。
例4-1)将取得的记录按照雇员的薪金多少排序(默认为升序)。
SELECT * FROM 雇员表
ORDER BY 雇员薪金

若要按降序排列,则:
例4-2)
SELECT * FROM 雇员表
ORDER BY 雇员薪金 DESC

5.GROUP BY 子句:GROUP BY 子句将记录按照 group-list 中指定的字段来分组。
例如5-1:要把雇员表中的雇员按部门分组,其SQL语句为:
SELECT * FROM 雇员表
GROUP BY 部门代号,雇员编号,雇员姓名,雇员电话,雇佣日期,雇员薪金,雇员职务

HAVING子句:HAVING子句是和GROUP BY 子句一起使用的一个条件子句,分组中不符合HAVING子句中having-condition条件的记录不会出现在查询结果中。
UNION子句:UNION子句将两个或者多个SELECT语句结合起来产生一个单一的数据表。


 
0分?少了点吧?
 
在执行select xxx into DestTablefrom SourceTablewhere ...语句中,会提示错误:非法使用关键字"into"?请教各位朋友们,该如何解决这种问题?
 
接受答案了.
 
后退
顶部