荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: achang (阿昌), 信区: Database
标  题: 跟我学SQL:(一)数据查询
发信站: 荔园晨风BBS站 (2005年12月20日23:22:13 星期二), 站内信件

跟我学SQL:(一)数据查询
作者: 不详  来源:不详   http://www.csai.cn  2005年12月14日

  且不说你是否正在从事编程方面的工作或者不打算学习SQL,可事实上几乎每一位开发
者最终都会遭遇它。你多半还用不着负责创建和维持某个数据库,但你怎么着也该知道以
下的一些有关的SQL知识。
  我为那些感兴趣的开发者或者能从数据库操作中得益的读者撰写了这篇关于基本SQL语
法的概述性文章。本文主要讨论基本的数据操作查询,后续的文章还会继续讨论如何修改
数据库自身以及更高级的查询概念。
SQL数据库是怎么回事?

  SQL(结构化查询语言)就是负责与ANSI维护的数据库交互的标准。最新的版本是SQL-
99,还有一个新标准SQL-200n尚处于制定过程中。大多数的数据库都至少遵守ANSI-92标准
的部分子集。不过,目前对最新标准的有效性还存在一些争论。专有数据库制造商根据这
些标准开发自己的产品,同时制定出自己特有的数据库存储操作新概念。几乎各种不同的
数据库都包含了自己特有的语法集合,只是通常很类似ANSI标准。在大多数情况下,尽管
有一些数据库实例基于特定的扩展语法会因数据库的不同而产生不同的结果,但总的说来
,这些新加的语法不过是对原有标准的扩充。如果数据库操作并没有得到你希望的结果,
那么你不妨事先读一读数据库制造商提供的产品说明。

  假如到目前为止你头回遭遇SQL语言,那么你怎么也得先理解一些基本的SQL概念。我
尽量把这些基本知识阐述得简明扼要,如果你对那些数据库术语还能忍受,你尽可跳到下
一节,此外你还可以把自己的问题提交给以下的讨论区。

  笼统地说,“SQL数据库”其实就是关系型数据库管理系统(RDMS)通俗的叫法。对某
些系统来说,“数据库”也指一组数据表、数据以及相互区分但结构类似的配置信息。在
这种情况下,每一SQL数据库的安装都可能由若干数据库组成。在有些系统上,这种数据库
则指的是表空间。

  数据表是一种包含多行数据的数据库构造,这种数据库构造由命名的列组成。通常数
据表构造为包含关系信息,同一数据库或表空间以内可以创建若干数据表。

  表内的列保存某一种类型的数据而且应根据其保存数据的内容得以命名。例如,被称
为“LastName”的列就应该在每一行包含姓氏条目。正是这一前提的存在才能让关系数据
库查询返回一致的结果。

  字段(field)指的是某一行某一列对应的数据(或保存数据的地方)。另外,数据集
合(data set)则指的是多行多列的数据,而且数据集合通常说明你的数据库或数据表内
的全部数据。结果集合(result set)就是从数据库查询返回的数据;它能够描述从单一
字段到数据库内全部数据这一范围内的全部信息。

  数据库查询就是发送给数据库的SQL指令,这些指令向数据库请求某种施加在数据集合
或数据库上的功能。

  现在我们就来看看基本的数据库查询,这些查询主要涉及到对数据库内数据的操作。
在本文中,所有的例子都采用了标准SQL语言,而且这些基本功能可以转换为应用在几乎各
种环境下。

数据查询类型

SQL语言中的数据查询分为4种基本类型:

SELECT:这条语句要求数据库返回指定结果的数据集合;你可以用这一语句检索数据库中
保存的信息。
INSERT:这条语句用来给数据表增加新一行数据。
DELETE:该语句从你的数据库中删除若干行数据。
UPDATE:该语句修改数据库内的现有数据。
以上的这些语句都有各种各样的限定词和函数供你用来定义有关的数据集合,同时控制查
询返回的结果集合。SELECT语句的选项最多。有许多种组合SELECT的查询选项,例如JOIN
和UNION等。不过就我们目前来说,本文主要还是关注基本用途。

用SELECT语句检索保存的信息
为了获得数据库中保存的信息就必须采用SELECT语句。其基本功能限制在针对单一数据表
操作,当然,其他范围的构造也是有的。为了返回特定列所对应的所有数据行,你可以使
用以下语句:

SELECT column1, column2 FROM table_name;

另外,使用通配符“*”可以从表中选出所有的列:

SELECT * FROM table_name;

你要愿意自己编码分析以上返回的结果当然也没问题,不过你完全可以采用方便的WHERE子
句限制返回的结果集合,该子句可以让你为选择数据定义某些条件。以下查询就会返回“c
olumn1”数值等于3的所以数据行:
SELECT * FROM table_name WHERE column1 = 3;

除了“=”(等于)条件之外你还可以用到下列条件运算符:

表A

= 等于

<> 不等于

> 大于

< 小于

>= 大于或等于

<= 小于或等于


SQL 条件语句

  另外,你还可以联合WHERE语句使用BETWEEN、LIKE等比较运算符以及AND和OR这类逻辑
运算符。注意,OR语句是包含性的的。以下有一个例子组合了以上这些概念:

  SELECT * FROM table_name WHERE ((Age < 18) AND (LastName BETWEEN ‘Anderson
’ AND ‘Miller’)) OR Company LIKE ‘%School%’;

  用自然语言来说,这条选择语句的含义是这样的:从数据表中选出年龄小于18岁而且
姓氏在“Anderson”和“MIller”之间的或者其公司名称类中有“School”字样的数据行


用INSERT语句加入新数据
  使用INSERT语句可以创建新的数据行。如果你希望在某一行的某个字段中赋值则要用
到UPDATE语句。

插入语句的语法如下:
INSERT INTO table_name (column1, column2, column3)
VALUES (‘data1’, ‘data2’, ‘data3’);

  如果你想按照表内现有列的同一顺序插入所有的值,那么你不必指定列名,当然,从
可读性考虑最好不要这样做。另外,如果你列出列名则不必要按照它们在数据库中出现的
顺序包括它们,只要你列出的值与它们一一对应即可。有些列你并没有为其输入新的信息
所以你自然没有必要列出它们来。

一旦数据库中有了数据要修改起来也与此很相似。

UPDATE语句和WHERE子句
  UPDATE用来修改现有的值或行里的空字段,因此它必须在匹配现有的数据集合同时提
供可接受的值。除非你真地想要修改所有数据行上的值,否则你必须使用WHERE子句。
UPDATE table_name SET column1 = ‘data1’, column2 = ‘data2’
WHERE column3 = ‘data3’;

  你可以采用WHERE子句随意匹配任何一列,正在修改的一列都可以。这样会有助于你把
某一特定的值修改为另一个值:

UPDATE table_name SET FirstName = ‘Shelley’
WHERE FirstName = ‘Shelly’ AND LastName = ‘Doll’;


小心DELETE语句
  DELETE语句会从数据库的数据表中删除整行。如果你仅仅想删除单一的字段则应该使
用UPDATE语句把它修改为代表应用程序中的NULL的其他空值。一定要小心使用带WHERE子句
的DELETE语句,否则你可能会遭遇清空全部数据表的风险。
DELETE FROM table_name WHERE column1 = ‘data1’;

  一旦你数据库中删除某一行数据就不可再后悔了,因此一般来说,最好在数据表中包
括一名为“IsActive”的列或类似的指示信息,这样你就可以把该列数据设置为零表示数
据禁用。只有在你确信不再需要受到影响的信息之后你才可以用DELETE语句。

小结
  SQL就是数据库的语言,我们已经了解了数据查询中所采用的最基本命令语句。但还有
很多基本概念尚未涉及,例如SUN和COUNT函数等,但以上列出的这些命令应该足够你开始
着手数据库操作了。


--
提供服务器空间出租:50元/(50MB●年)    100元/(100MB●年)
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.110.128]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店