sql 概述
要操作数据源中的数据,可以使用结构化查询语言(structured query language)。sql 的正确念法是s?q?l,不过大家都习惯念成sequel,sql 几乎是所有大型数据服务器都支持的数据操作语言,它提供一些可以帮我们快速的执行数据查询、更新、删除等数据操作的叙述;要撰写操作数据的应用程序,sql 语言是个非常重要的课题。sql 的用法非常灵活,在这里我们不深入讨论,我们只介绍比较常用的sql 叙述。
select 陈述
select 陈述可以从资料源传回我们所指定的字段,其语法如下所示:
select 字段1 [, 字段n] from 数据表名称
例如我们想要传回members 数据表中userid 以及userpwd 这两个字段的数据,可以使用如下叙述:
select userid, userpwd from members
如果要将所有的字段传回,则可以使用「*」来代表。例如我们要将members 数据表中的所有字段传回,则使用下列叙述:
select * from members
利用where 子句来过滤数据
利用where 子句可以限制我们所要过滤的纪录,其语法如下所示:
select 字段一[, 字段n] from 数据表名称where 条件
条件可以是=、>、<、>=、<= 比较运算子,其中如果所要判断的数据是日期或是字符串,必须用单引号「'」刮起来。例如我们要将会员数据中userid 字段为tina 的数据全部传回,使用下列叙述:
select * from members where userid = 'tina'
另外我们也可以搭配逻辑运算子来过滤两个字段的条件。例如我们要将userid 字段为tina 以及userpwd 字段为1234 的数据传回来,可以使用下列叙述:
select * from members where userid = 'tina' and userpwd = '1234'
where in
如果只要符合某些条件的资料我们都要找出来,则可以使用where in。例如下列范例传回使用者名称为tina 或是jacky 的纪录:
select * from members where userid in ('tina', 'jacky')
where like
如果我们想搜寻住台北市的顾客,则可以使用like 比对。like 比对要配合「%」符号来操作,可以找出以特定字符串为开头或是结尾的字段。例如下列sql 叙述将住台北市的使用者列出:
select * from members where useradd like '台北市%'
order by
若要将查询回的资料表进行排序的工作,则可以利用order by 子句。order by 子句是依照字段内数据的顺序进行排序,其语法如下所示:
select 字段一[,字段n] from 数据表[where 子句] [order by 子句]
order by 依照字段顺序排序的方式有升幂以及降序,如过要由小排到大,则在最后指定asc;倘若是由大排到小,则是desc。例如下列叙述将所有使用者数据传回,并依userid 字段作升幂排列:
select * from members order by userid asc
insert 陈述
insert 陈述可以将新的纪录加入数据源中,其语法如下所示:
insert into 数据表名称[(字段1, 字段2, ...字段n)] values(字段1, 字段
2, ...字段n)
数据表后面的字段可以省略。如果省略表示全部的字段都要输入,并且必需按照字段的顺序来输入。例如下列叙述增加一位新的使用者:
insert into members values('elvira', 'wxyz', '邓宜玲', '0935123000',_
'台北县中和市', 'elvira@hotmail.com')
update 陈述
update 陈述可以更新数据源中纪录的数据,其语法如下所示:
update 数据表名称set 字段一= 叙述[,...字段n=叙述] [where 子句]
例如下列叙述将使用者数据表中userid 字段为elvira 的纪录,将其userpwd 更改为zyxw:
update members set userpwd = 'zyxw' where userid = 'elvira'
delete 陈述
delete 陈述可以删除数据源中的纪录,其语法如下所示:
delete 数据表名称[where 子句]
特别注意如果没有设定where 子具的条件,则会将所有数据表中的纪录全部删除。