SELECT|INSERT]INTO destination IN
{path|["path" "type"]|[""[type;DATABASE=path]]}
FROM tableexpression IN
{path|["path" "type"]|[""[type;DATABASE=path]]}
destination
PartA....FROM Table
IN ""[dBASE IV;DATABASE=C:\DBASE\DATA\SALES;];
PartB....FROM Table
IN "C:\DBASE\DATA\SALES" "dBASE IV;"
例如:Microsoft Jet database
SELECT 顾客编号
FROM 顾客表格
IN CUSTOMER.MDB
WHERE 顾客编号 Like "A*";
其中CUSTOMER.MDBO 为Jet database 的数据库名称,其中包含了顾客表格。
例如:dBASE III or IV
SELECT 顾客编号
FROM 顾客表格
IN "C:\DBASE\DATA\SALES" "dBASE IV;"
WHERE 顾客编号 Like "A*";
所以当我们使用不同于ACCESS 的数据库时,必须指明该数据库的类型名称。作者: 江南细雨 时间: 2006-10-12 09:31 标题: 全面接触SQL语法(4)
HAVING 条件子句
指定一特定的分组记录,并满足HAVING 所指定的条件或状态,但条件是针对分组的条件设置。
SELECT fieldlist
FROM table
WHERE selectcriteria
GROUP BY groupfieldlist
HAVING groupcriteria
fieldlist
显示被查询的字段名称。(可与ALL,DISTINCT,DISTINCTROW,或TOP相结合)
table
欲查询数据的表格名称。
selectcriteria
选取标准。
groupfieldlist
分组记录的字段名称,到多10个字段。而这些字段的顺序决定最高到最低的分组阶层。
groupcriteria
决定什么样的分组记录要被显示。
HAVING跟WHERE 的用法相当类似,不同之处在于HAVING必须用于GROUP之后的分组数据上。
例如:
SELECT 分类编,Sum(库存数量)
FROM 产品表格
GROUP BY 分类编号
HAVING Sum(库存数量)>100 AND 产品名称 LIKE "*纸";
GROUP BY 条件子句
依据指定的字段,将具有相同数值的记录合并成一条。
SELECT fieldlist
FROM table
WHERE criteria
GROUP BY groupfieldlist
fieldlist
欲读取的字段名称。(可与ALL,DISTINCT,DISTINCTROW,或TOP合并使用)
table
被查询的表格名称。
groupfieldlist
分组记录的字段名称,到多10个字段,而这些字段的顺序决定最高到最低的分组层次。
例如:
SELECT 姓名,Count(姓名)AS 职员姓名
FROM 职员表格
WHERE 部门名称='业务部'
GROUP BY 姓名
FROM 条件子句
指定表格名称或是查询,其中包含列在SELECT语句的字段数据。
SELECT fieldlist
FROM tableexpression[IN externaldatabase]
fieldlist
表格中的字段名称。(可与ALL,DISTINCT,DISTINCTROW,或TOP相结合)
tableexpression
表格名称,或多个表格的算式。
externaldatabase
若该表格参考到外部的数据库时,将其完整的路径名称记下。
例如:
从职员表格下,查询出所有姓名字段的数据(只有姓名字段被查询,其他则不显示)。
SELECT 姓名 FROM 职员表格;
WHERE 条件子句
指定查询的条件与限制。
SELECT fieldlist
FROM tableexpression
WHERE criteria
fieldlist
字段名称。(可与ALL,DISTINCT,DISTINCTROW,或TOP相结合)
tableexpression
表格名称,或多个表格的算式。
criteria
查询的结果,必须依照这一限制标准。
例如:
要查询出职员表格中,所有姓氏是李的数据,可以用下面的语句。
SELECT 姓名
FROM 职员表格
WHERE 姓氏='李';作者: 江南细雨 时间: 2006-10-12 09:31 标题: 全面接触SQL语法(5)
BETWEEN...AND 运算符
决定某一人数值是否介于特定的范围之内,此运算符只可以用在SQL的语句中。
expr[Not]BETWEEN value1 AND value2
expr
指定要加以计算的字段与表达式的组合。
value1,value2
所指明的数值范围。
例如:
若是要从职员表格查询出所有年龄介于25-30岁的员工,可以利用下面的程序来做。
SELECT 姓名,年龄 BETWEEN 25 AND 30
FROM 职员表格;
[TABLE]query1 UNION [ALL][TABLE]query2 [UNION [ALL]
[TABLE]queryn [...]]
query1,query2,queryn
为一个SELECT的语句,或是一个已存在的查询名称,或是一个已存在的表格名称。
例如:
你可以利用下面的SQL语句,将订单数量超过1000的顾客表格记录,与新客户表格作UNION的操作。
TABLE 新客户表格 UNION ALL
SELECT *
FROM 顾客表格
WHERE 订单数量>1000;
ALTER语句
在一个表格被建立之后,利用ALTER语句,我们可以去修改表格的字段设计。
ALTER TABLE table
{ADD {COLUMN field type[(size)][CONSTRAINT index]
|CONSTRAINT multifieldindex}
|DROP {COLUMN field|CONSTRAINT indexname}}
table
欲被ALTER的表格名称。
field
要被增加或删除的字段名称。
type
字段数据类型。
size
字段大小。
index
对此字段的索引。
例如:
在职员表格中新建一个“薪水”的字段。
ALTER TABLE 职员表格
ADD COLUMN 薪水 CURRENCY;
例如:
在职员表格中删除一个“薪水”的字段。
ALTER TABLE 职员表格 DROP COLUMN 薪水;
DROP语句
针对所指定的表格或字段加以删除,或是把索引删除。
DROP {TABLE table|INDEX index ON table}
table
欲删除之表格或索引依附之表格名称。
index
欲从表格中删除的索引名称。
例如:
从职员表格中,删除编号索引。
DROP INDEX MyIndex ON Employees;
例如:
从数据库中,删除整个表格。
DROP TABLE 职员表格;
INSERT INTO语句
新建一条数据到表格当中。
多条记录新建查询:
INSERT INTO target [IN externaldatabase][(field1[,field2[,...]])]
SELECT [source.]field1[,field2[,...]
FROM tableexpression
单条记录新建查询:
INSERT INTO target[(field1[,field2[,...]])]
VALUES(value1[,value2[,...])
target
新建记录的表格名称。
externaldatabase
外部数据库的路径,搭配IN条件子句使用。
source
若是记录从其它表格中拷贝时,指明该表格的名称。
field1,field2
欲增加数据的字段名称。
tableexpression
表格名称或描述记录是从哪一个表格中插入的表格名称。配合INNER JOIN,LEFT JOIN,或 RIGHT JOIN 运算符一起使用。
value1,value2
欲插入表格中的数值。
例如:
在客户数据表格中,从新的表格插入数据。
INSERT INTO 客户数据表格
SELECT 新客户数据表格.*
FROM 新客户数据表格;
例如:
在职员表格中插入数据。
INSERT INTO 职员表格(姓名,生日,职称)
VALUES("王荣","57/12/11","经理");
例如:
从训练人员表格中,将职员雇用时间超过30天者,加入到正式职员表格中。
INSERT INTO 职员表格
SELECT 训练人员表格.*
FROM 训练人员表格
WHERE 雇用天数>30;
UPDATE语句
建立一个UPDATE的查询,通过条件的限制来修改特定的数据。
UPDATE table
SET newvalue
WHERE criteria;
table
欲修改数据的表格名称。
newvalue
欲修改成的数值(将该项数值插入到特定的字段当中)。
criteria
查询条件,用来决定要修改哪些记录。
例如:
若是要把订单表格中的订单数量修改成1.1倍,运费为1.03倍,可利用下列之SQL语句来完成。
UPDATE 订单表格
SET 订单数量=订单数量 * 1.1,运费=运费 * 1.03倍
WHERE 运达地点='美国';
当我们完成修改后,你可以利用 SELECT 语句,配合同样的 WHERE 条件子句,来察看修改的数据是否正确。
事实上,要利用SQL完成某些看似复杂的操作,并不需要繁琐的SQL命令组合,或是许许多多的步骤才能完成,其实最重要的还是要活用SQL命令,才会在最精简的SQL语句里获得最高的效率。作者: haotian 时间: 2008-5-7 16:47