首页 SQL语法大全——中文版

SQL语法大全——中文版

举报
开通vip

SQL语法大全——中文版 SQL 语法大全语法大全语法大全语法大全————————中文版中文版中文版中文版 第 1 页 共 40 页 操作数据操作数据操作数据操作数据::::SQLSQLSQLSQL 本部分内容本部分内容本部分内容本部分内容 ���� SQL SQL SQL SQL 基础基础基础基础 ...

SQL语法大全——中文版
SQL 语法大全语法大全语法大全语法大全————————中文版中文版中文版中文版 第 1 页 共 40 页 操作数据操作数据操作数据操作数据::::SQLSQLSQLSQL 本部分 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 本部分内容本部分内容本部分内容 ���� SQL SQL SQL SQL 基础基础基础基础 ���� 中级中级中级中级 SQLSQLSQLSQL � 高级高级高级高级 SQLSQLSQLSQL SQLSQLSQLSQL 基础基础基础基础 本章内容本章内容本章内容本章内容 SQL SQL SQL SQL 介绍介绍介绍介绍 使用使用使用使用 SELECT SELECT SELECT SELECT 语句从表中取数据语句从表中取数据语句从表中取数据语句从表中取数据 创建新表创建新表创建新表创建新表 字段属性字段属性字段属性字段属性 向表中添加数据向表中添加数据向表中添加数据向表中添加数据 删除和修改表删除和修改表删除和修改表删除和修改表 SQL 语法大全语法大全语法大全语法大全————————中文版中文版中文版中文版 第 2 页 共 40 页 为了建立交互站点,你需要使用数据库来存储来自访问者的信息。例如,你要建立一个职业介 绍服务的站点,你就需要存储诸如个人简历,所感兴趣的工作等等这样的信息。创建动态网叶也需 要使用数据库,如果你想显示符合来访者要求的最好的工作,你就需要从数据库中取出这份工作的 信息。你将会发现,在许多情况下需要使用数据库。 在这一章里,你将学会怎样使用“结构化查询语言”(SQL〕来操作数据库。SQL 语言是数据库 的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 语言。在 Active Sever Pages 中,无论何时你要访问一个数据库,你就要使用 SQL 语言。 因此,掌握好 SQL 对 ASP 编程是非常重要的。 注意: 你 可 以 把 “ SQL ” 读 作 “ sequel ”, 也 可 以 按 单 个 字 母 的 读 音 读 作 S - Q - L 。 两种发音都是正确的,每种发音各有大量的支持者。在本书里,认为“SQL”读作“sequel”。 通过这一章的学习,你将理解怎样用 SQL 实现数据库查询,你将学会怎样使用这种查询从数据 表中取出信息,最后,你将学会怎样 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 和建立自己的数据库。 注意: 通过下面几章对 SQL 的介绍,你将对 SQL 有足够的了解,从而可以有效地使用 Active Sever Pages。但是,SQL 是一种复杂的语言,本书不可能包括它的全部细节。要全面掌握 SQL 语言,你需 要学习在 Microsoft SQL Sever 中使用 SQL。你可以到附近的书店去买一本Microsoft SQL Sever 6.5。 SQL 介绍: 本书假设你是在 SQL 操作 Microsoft SQL Sever 的数据库。你也可以用 SQL 操作许多其它类型 的数据库。SQL 是操作数据库的标准语言。(事实上,关于 SQL 语言有一个专门的 ANSI 标准〕 注意: 不要在你的站点上试图用 Microsoft Access 代替 Microsoft SQL Sever。SQL Sever 可以同时 服务于许多用户,如果你希望你的站点有较高的访问率,MS Access 是不能胜任的。 在学习 SQL 的细节之前,你需要理解它的两大特点。一个特点容易掌握,另一个掌握起来有点 困难。 第一个特点是所有 SQL 数据库中的数据都存储在表中。一个表由行和列组成。例如,下面这个 简单的表包括 name 和 e-mail address: Name Email Address ................................................................ Bill Gates billg@microsoft.com president Clinton president@whitehouse.com Stephen Walther swalther@somewhere.com 这个表有两列(列也称为字段,域〕:Name 和 Email Address。有三行,每一行包含一组数据。 一行中的数据组合在一起称为一条记录。 无论何时你向表中添加新数据,你就添加了一条新记录。一个数据表可以有几十个记录,也可 以有几千甚至几十亿个记录。虽然你也许永远不需要存储十亿个 Email 地址,但知道你能这样做总 是好的,也许有一天你会有这样的需要。 你的数据库很有可能包含几十个表,所有存储在你数据库中的信息都被存储在这些表中。当你 考虑怎样把信息存储在数据库中时,你应该考虑怎样把它们存储在表中。 SQL 语法大全语法大全语法大全语法大全————————中文版中文版中文版中文版 第 3 页 共 40 页 SQL 的第二个特点有些难于掌握。这种语言被设计为不允许你按照某种特定的顺序来取出记录, 因为这样做会降低 SQL Sever 取记录的效率。使用 SQL,你只能按查询条件来读取记录。 当考虑如何从表中取出记录时,自然会想到按记录的位置读取它们。例如,也许你会尝试通过 一个循环,逐个记录地扫描,来选出特定的记录。在使用 SQL 时,你必须训练自己,不要有这种思 路。 假如你想选出所有的名字是“Bill Gates”的记录,如果使用传统的编程语言,你也许会构造 一个循环,逐个查看表中的记录,看名字域是否是“Bill Gates”。 这种选择记录的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 是可行的,但是效率不高。使用 SQL,你只要说,“选择所有名字域等于 Bill Gates 的记录”,SQL 就会为你选出所有符合条件的记录。SQL 会确定实现查询的最佳方法。 建设你想取出表中的前十个记录。使用传统的编程语言,你可以做一个循环,取出前十个记录 后结束循环。但使用标准的 SQL 查询,这是不可能实现的。从 SQL 的角度来说,在一个表中不存在 前十个记录这种概念。 开始时,当你知道你不能用 SQL 实现某些你感觉应该能实现的功能,你会受到挫折。你也许会 以头撞墙甚至想写恶毒的信件给 SQL 的设计者们。但后来你会认识到,SQL 的这个特点不仅不是个 限制,反而是其长处。因为 SQL 不根据位置来读取记录,它读取记录可以很快。 综上所述,SQL 有两个特点:所有数据存储在表中,从 SQL 的角度来说,表中的记录没有顺序。 在下一节,你将学会怎样用 SQL 从表中选择特殊的记录。 使用 SQL 从表中取记录。 SQL 的主要功能之一是实现数据库查询。如果你熟悉 Internet 引擎,那么你已经熟悉查询了。 你使用查询来取得满足特定条件的信息。例如,如果你想找到有 ASP 信息的全部站点,你可以连接 到 Yahoo!并执行一个对 Active Sever Pages 的搜索。在你输入这个查询后,你会收到一个列表, 表中包括所有其描述中包含搜索表达式的站点。 多数 Internet 引擎允许逻辑查询。在逻辑查询中,你可以包括特殊的运算符如 AND、OR 和 NOT, 你使用这些运算符来选择特定的记录。例如,你可以用 AND 来限制查询结果。如果你执行一个对 Active Sever Pages AND SQL 的搜索。你将得到其描述中同时包含 Active Sever Pages 和 SQL 的记录。当你需要限制查询结果时,你可以使用 AND。 如果你需要扩展查询的结果,你可以使用逻辑操作符 OR。例如,如果你执行一个搜索,搜索所 有的其描述中包含 Active Sever Pages OR SQL 的站点,你收到的列表中将包括所有其描述中同 时包含两个表达式或其中任何一个表达式的站点。 如果你想从搜索结果中排除特定的站点,你可以使用 NOT。例如,查询“Active Sever Pages ” AND NOT “SQL”将返回一个列表,列表中的站点包含 Active Sever Pages,但不包含 SQL。当必 须排除特定的记录时,你可以使用 NOT。 用 SQL 执行的查询与用 Internet 搜索引擎执行的搜索非常相似。 当你执行一个 SQL 查询时, 通过使用包括逻辑运算符的查询条件,你可以得到一个记录列表。此时查询结果是来自一个或多个 表。 SQL 查询的句法非常简单。假设有一个名为 email_table 的表,包含名字和地址两个字段,要 得到 Bill Gates 的 e_mail 地址,你可以使用下面的查询: SELECT email from email_table WHERE name="Bill Gates" 当这个查询执行时,就从名为 email_table 的表中读取 Bill Gates 的 e_mail 地址。这个简单 的语句包括三部分: ■ SELECT 语句的第一部分指名要选取的列。在此例中,只有 email 列被选取。当执行 时, SQL 语法大全语法大全语法大全语法大全————————中文版中文版中文版中文版 第 4 页 共 40 页 只显示 email 列的值 billg@microsoft.com。 ■ SELECTT 语句的第二部份指明要从哪个(些)表中查询数据。在此例中,要查询的表名为 email_table 。 ■ 最后,SELECT 语句的 WHERE 子句指明要选择满足什么条件的记录。在此例中,查询条件为 只有 name 列的值为 Bill Gates 的记录才被选取。 Bill Gates 很有可能拥有不止一个 email 地址。如果表中包含 Bill Gates 的多个 email 地址。 用上述的SELECT语句可以读取他所有的email地址。SELECT语句从表中取出所有name字段值为Bill Gates 的记录的 email 字段的值。 前面说过,查询可以在查询条件中包含逻辑运算符。假如你想读取 Bill Gates 或 Clinton 总 统的所有 email 地址,你可以使用下面的查询语句: SELECT email FROM email_table WHERE name="Bill Gates" OR name="president Clinton" 此例中的查询条件比前一个复杂了一点。这个语句从表 email_table 中选出所有 name 列为 Bill Gates 或 president Clinton 的记录。如果表中含有 Bill Gates 或 president Clinton 的多个地址, 所有的地址都被读取。 SELECT 语句的结构看起来很直观。如果你请一个朋友从一个表中为你选择一组记录,你也许以 非常相似的方式提出你的要求。在 SQL SELECT 语句中,你“SELECT 特定的列 FROM 一个表 WHERE 某 些列满足一个特定的条件”。 下一节将介绍怎样执行 SQL 查询来选取记录。这将帮助你熟悉用 SELECT 语句从表中取数据的各 种不同方法。 使用 ISQL 执行 SELECT 查询 当你安装 SQL Sever 时,你同时安装了一个叫作 ISQL/w 的应用程序。ISQL/w 允许你执行交互 的 SQL 查询。在把查询包括到你的 ASP 网页中之前,用 ISQL/w 对其进行测试是非常有用的。 注意: 在这本书的第一部份,你学习了怎样安装和配置 Microsoft SQL Sever 。如果没有安装 SQL Sever 或者 SQL Sever 不能运行,请参阅第三章“安装和使用 SQL Sever”。 选择任务上 SQL Sever 程序组中的 ISQL_w 以启动该程序。程序启动时,首先会出现一个对话框, 要求输入服务器信息和登录信息(见图 10.1)。在 Sever 框中,输入你的 SQL 服务器的名字。如果 服务器正运行在本地计算机上,服务器名字就是你计算机的名字。在登录信息框中,输入一个登录 帐号和密码或选择使用“可信连接”,然后单击 Connect 按钮。 图 10。1 注意: 如果你将 SQL Sever 配置为使用完整安全或混合安全,那么你可以使用可信连接。如果你使用 标准安全,你则需要提供用户帐号和密码。要了解更多信息,参见第三章。 如果一切正常,在你单击连接按钮后会出现一个查询窗口,如图 10.2 所示。(如果有异常,请 SQL 语法大全语法大全语法大全语法大全————————中文版中文版中文版中文版 第 5 页 共 40 页 参考第三章) 图 10.2 在执行查询之前,你需要选择数据库。安装 SQL Sever 时你已为自己创建了一个数据库,SQL Sever 还有许多系统数据库,如 master,model,msdb,和 tempdb。 方便的是,SQL Sever 带有一个特殊的名为 pubs 的例子数据库。库 pubs 中包含供一个虚拟的 出版商使用的各个表。文档中所有的例子程序都是针对这个库来设计的。本书中的许多例子也使用 这个数据库。 在查询窗口顶部的 DB 下拉框中选择数据库 pubs,这样你就选择了数据库。你所有的查询都将 针对这个库中的各个表来执行。现在你可以执行你的第一个查询了。这真让人兴奋! 你的第一个查询将针对一个名为 autrors 的表,表中包含所有为某个虚拟出版商工作的作者的 相关数据。单击查询窗口并输入以下的语句: SELECT phone FROM authors WHERE au_name="Ringer" 输入完成后,单击执行查询按钮(一个绿色三角形,看起来像 VCR 播放键)。单击此按钮后,任 何出现在查询窗口中的语句均会被执行。查询窗口会自动变成结果显示窗口,你可以看到查询的结 果(见图 10.3)。 你看到的查询结果也许与图 10.3 所示的不同。在 SQL Sever 的不同版本中,库 pubs 中的数据 会有所不同。对 SQL Sever 6.5 来说,将会找到两条记录。结果显示窗口中应显示如下内容: phone ………………. 801 826_0752 801 826_0752 (2 row(s) affected) 图 10.3 你所执行的 SELECT 语句从表 authors 中取出所有名字为 Ringer 的作者的电话号码。你通过在 WHERE 子句中使用特殊的选择条件来限制查询的结果。你也可以忽略选择条件,从表中取出所有作 者的电话号码。要做到这一点,单击 Query 标签,返回到查询窗口,输入以下的 SELECT 语句: SELECT Phone FROM authors 这个查询执行后,会取出表 authors 中的所有电话号码(没有特定的顺序)。如果表 authors 中 包含一百个电话号码,会有一百个记录被取出,如果表中有十亿个电话号码,这十亿条记录都会被 取出(这也许需要一些时间)。 表 authrs 的字段包括姓,名字,电话号码,地址,城市,州和邮政编码。通过在 SELECT 语句 SQL 语法大全语法大全语法大全语法大全————————中文版中文版中文版中文版 第 6 页 共 40 页 的第一部份指定它们,你可以从表中取出任何一个字段。你可以在一个 SELECT 语句中一次取出多个 字段,比如: SELECT au_fname ,au_lname, phone FROM authors 这个 SELECT 语句执行后,将取出这三个列的所有值。下面是这个查询的结果的一个示例(为了 节省纸张,只显示查询结果的一部分,其余记录用省略号代替): au_fname au_lname phone …………………………………………………………………………. Johnson White 408 496_7223 Marjorie Green 415 986_7020 Cheryl Carson 415 548_7723 Michael O’Leary 408 286_2428 … (23 row(s) affected) 在 SELECT 语句中,你需要列出多少个字段,你就可以列出多少。不要忘了把字段名用逗号隔开。 你也可以用星号(*)从一个表中取出所有的字段。这里有一个使用星号的例子: SELECT * FROM authors 这个 SELECT 语句执行后,表中的所有字段的值都被取出。你会发现你将在 SQL 查询中频繁使用 星号。 技巧: 你可以使用星号来查看一个表的所有列的名字。要做到这一点,只需要在执行完 SELECT 语句后 看一下查询结果的列标 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 。 操作多个表 到现在为止,你只尝试了用一句 SQL 查询从一个表中取出数据。你也可以用一个 SELECT 语句同 时从多个表中取出数据,只需在 SELECT 语句的 FROM 从句中列出要从中取出数据的表名称即可: SELECT au_lname ,title FROM authors, titles 这个 SELECT 语句执行时,同时从表 authors 和表 titles 中取出数据。从表 authors 中取出所 有的作者名字,从表 titles 中取出所有的书名。在 ISQL/w 程序中执行这个查询,看一下查询结果。 你会发现一些奇怪的出乎意料的情况:作者的名字并没有和它们所著的书相匹配,而是出现了作者 名字和书名的所有可能的组合,这也许不是你所希望见到的。 出了什么差错?问题在于你没有指明这两个表之间的关系。你没有通过任何方式告诉 SQL 如何 把表和表关联在一起。由于不知道如何关联两个表,服务器只能简单地返回取自两个表中的记录的 所有可能组合。 要从两个表中选出有意义的记录组合,你需要通过建立两表中字段的关系来关联两个表。要做 到这一点的途径之一是创建第三个表,专门用来描述另外两个表的字段之间的关系。 表 authors 有一个名为 au_id 的字段,包含有每个作者的唯一标识。表 titles 有一个名为 SQL 语法大全语法大全语法大全语法大全————————中文版中文版中文版中文版 第 7 页 共 40 页 title_id 的字段,包含每个书名的唯一标识。如果你能在字段 au_id 和字段 title_id 之间建立一 个关系,你就可以关联这两个表。数据库 pubs 中有一个名为 titleauthor 的表,正是用来完成这个 工作。表中的每个记录包括两个字段,用来把表 titles 和表 authors 关联在一起。下面的 SELECT 语句使用了这三个表以得到正确的结果: SELECT au_name,title FROM authors,titles,titleauthor WHERE authors.au_id=titleauthor.au_id AND titles.title_id=titleauthor.title_id 当这个 SELECT 语句执行时,每个作者都将与正确的书名相匹配。表 titleauthor 指明了表 authors 和表 titles 的关系,它通过包含分别来自两个表的各一个字段实现这一点。第三个表的唯 一目的是在另外两个表的字段之间建立关系。它本身不包含任何附加数据。 注意在这个例子中字段名是如何书写的。为了区别表 authors 和表 titles 中相同的字段名 au_id,每个字段名前面都加上了表名前缀和一个句号。名为 author.au_id 的字段属于表 authors, 名为 titleauthor.au_id 的字段属于表 titleauthor,两者不会混淆。 通过使用第三个表,你可以在两个表的字段之间建立各种类型的关系。例如,一个作者也许写 了许多不同的书,或者一本书也许由许多不同的作者共同完成。当两个表的字段之间有这种“多对 多”的关系时,你需要使用第三个表来指明这种关系。 但是,在许多情况下,两个表之间的关系并不复杂。比如你需要指明表 titles 和表 publishers 之间的关系。因为一个书名不可能与多个出版商相匹配,你不需要通过第三个表来指明这两个表之 间的关系。要指明表 titles 和表 publishers 之间的关系,你只要让这两个表有一个公共的字段就 可以了。在数据库 pubs 中,表 titles 和表 publishers 都有一个名为 pub_id 的字段。如果你想得 到书名及其出版商的一个列表,你可以使用如下的语句: SELECT title,pub_name FROM titles,publishers WHERE titles.pub_id=publishers.pub_id 当然,如果一本书是由两个出版商联合出版的,那么你需要第三个表来代表这种关系。 通常,当你予先知道两个表的字段间存在“多对多”关系时,就使用第三个表来关联这两个表。 反之,如果两个表的字段间只有“一对一”或“一对多”关系,你可以使用公共字段来关联它门。 操作字段 通常,当你从一个表中取出字段值时,该值与创建该表时所定义的字段名联系在一起。如果你 从表 authors 中选择所有的作者名字,所有的值将会与字段名 au_lname 相联系。但是在某些情况下, 你需要对字段名进行操作。在 SELECT 语句中,你可以在缺省字段名后面仅跟一个新名字来取代它。 例如,可以用一个更直观易读的名字 Author Last Name 来代替字段名 au_lname: SELECT au_lname "Author Last Name" FROM authors 当这个 SELECT 语句执行时,来自字段 au_lname 的值会与“Author Last Name”相联系。查询 结果可能是这样: Author Last Name …………………………………………………………………….. White Green SQL 语法大全语法大全语法大全语法大全————————中文版中文版中文版中文版 第 8 页 共 40 页 Carson O’Leary Straight … (23 row(s) affected) 注意字段标题不再是 au_lname,而是被 Author Last Name 所取代。 你也可以通过执行运算,来操作从一个表返回的字段值。例如,如果你想把表 titles 中的所有 书的价格加倍,你可以使用下面的 SELECT 语句: SELECT price*2 FROM titles 当这个查询执行时,每本书的价格从表中取出时都会加倍。但是,通过这种途径操作字段不会 改变存储在表中的书价。对字段的运算只会影响 SELECT 语句的输出,而不会影响表中的数据。为了 同时显示书的原始价格和涨价后的新价格,你可以使用下面的查询: SELECT price "Original price", price*2 "New price" FROM titles 当数据从表 titles 中取出时,原始价格显示在标题 Original price 下面,加倍后的价格显示 在标题 New price 下面。结果可能是这样: original price new price ………………………………………………………………. 19.99 39.98 11.95 23.90 2.99 5.98 19.99 39.98 … (18 row(s) affected) 你可以使用大多数标准的数学运算符来操作字段值,如加(+),减(-),乘(*)和除(/)。你 也可以一次对多个字段进行运算,例如: SELECT price*ytd_sales "total revenue" FROM titles 在这个例子中,通过把价格与销售量相乘,计算出了每种书的总销售额。这个 SELECT 语句的结 果将是这样的: total revenue …………………………………………….. 81,859,05 46,318,20 55,978,78 81,859,05 40,619,68 … SQL 语法大全语法大全语法大全语法大全————————中文版中文版中文版中文版 第 9 页 共 40 页 (18 row(s) affected) 最后,你还可以使用连接运算符(它看起来像个加号)来连接两个字符型字段: SELECT au_fname+" "+au_lname "author name" FROM authors 在这个例子中,你把字段 au_fname 和字段 au_lname 粘贴在一起,中间用一个逗号 隔开,并把 查询结果的标题指定为 author name。这个语句的执行结果将是这样的: author names ………………………………………………………… Johnson White Marjorie Green Cheryl Carson Michael O’Leary Dean Straight … (23 row(s) affected) 可以看到,SQL 为你提供了对查询结果的许多控制。你应该在 ASP 编程过程中充分利用这些优 点。使用 SQL 来操作查询结果几乎总是比使用有同样作用的脚本效率更高。 排序查询结果 本章的介绍中曾强调过,SQL 表没有内在的顺序。例如,从一个表中取第二个记录是没有意义 的。从 SQL 的角度看来,没有一个记录在任何其他记录之前。 然而,你可以操纵一个 SQL 查询结果的顺序。在缺省情况下,当记录从表中取出时,记录不以特定 的顺序出现。例如,当从表 authors 中取出字段 au_lname 时,查询结果显示成这样: au_lname ……………………………………. White Green Carson O’Leary Straight … (23 row(s) affected) 看一列没有特定顺序的名字是很不方便的。如果把这些名字按字母顺序排列,读起来就会容易 得多。通过使用 ORDER BY 子句,你可以强制一个查询结果按升序排列,就像这样: SELECT au_lname FROM authors ORDER BY au_lname 当这个 SELECT 语句执行时,作者名字的显示将按字母顺序排列。ORDER BY 子句将作者名字按 升序排列。 SQL 语法大全语法大全语法大全语法大全————————中文版中文版中文版中文版 第 10 页 共 40 页 你也可以同时对多个列使用 ORDER BY 子句。例如,如果你想同时按升序显示字段 au_lname 和 字段 au_fname,你需要对两个字段都进行排序: SELECT au_lname,au_fname FROM authors ORDER BY au_lname ,au_fname 这个查询首先把结果按 au_lname 字段进行排序,然后按字段 au_fname 排序。记录将按如下的 顺序取出: au_lname au_fname ……………………………………………………………………. Bennet Abraham Ringer Albert Ringer Anne Smith Meander … (23 row(s) affected) 注意有两个作者有相同的名字 Ringer。名为 Albert Ringer 的作者出现名为 Anne Ringer 的作 者之前,这是因为姓 Albert 按字母顺序应排在姓 Anne 之前。 如果你想把查询结果按相反的顺序排列,你可以使用关键字 DESC。关键字 DESC 把查询结果按降序 排列,如下例所示: SELECT au_lname,au_fname FROM authors WHERE au_lname=”Ringer” ORDER BY au_lname ,au_fname DESC 这个查询从表 authors 中取出所有名字为 Ringer 的作者记录。ORDER BY 子句根据作者的名字 和姓,将查询结果按降序排列。结果是这样的: au_lname au_fname ………………………………………………………………………………………. Ringer Anne Ringer Albert (2 row(s) affectec) 注意在这个表中,姓 Anne 出现在姓 Albert 之前。作者名字按降序显示。 你也可以按数值型字段对一个查询结果进行排序。例如,如果你想按降序取出所有书的价格,你可 以使用如下的 SQL 查询: SELECT price FROM titles ORDER BY price DESC 这个 SELECT 语句从表中取出所有书的价格,显示结果时,价格低的书先显示,价格高的书后显 示。 警告: 不是特别需要时,不要对查询结果进行排序,因为服务器完成这项工作要费些力气。这意味着 带有 ORDER BY 子句的 SELECT 语句执行起来比一般的 SELECT 语句花的时间长。 SQL 语法大全语法大全语法大全语法大全————————中文版中文版中文版中文版 第 11 页 共 40 页 取出互不相同的记录 一个表有可能在同一列中有重复的值。例如,数据库 pubs 的表 authors 中有两个作者的名字是 Ringer。如果你从这个表中取出所有的名字,名字 Ringer 将会显示两次。 在特定情况下,你可能只有兴趣从一个表中取出互不相同的值。如果一个字段有重复的值,你 也许希望每个值只被选取一次,你可以使用关键字 DISTINCT 来做到这一点: SELCET DISTINCT au_lname FROM authors WHERE au_lname="Ringer" 当这个 SELECT 语句执行时,只返回一个记录。通过在 SELECT 语句中包含关键字 DISTINCT,你 可以删除所有重复的值。例如,假设有一个关于新闻组信息发布的表,你想取出所有曾在这个新闻 组中发布信息的人的名字,那么你可以使用关键字 DISTINCT。每个用户的名字只取一次——尽管有 的用户发布了不止一篇信息。 警告: 如同 ORDER BY 子句一样,强制服务器返回互不相同的值也会增加运行开销。福气不得不花费一 些时间来完成这项工作。因此,不是必须的时候不要使用关键字 DISTINCT。 创建新表 前面说过,数据库中的所有数据存储在表中。数据表包括行和列。列决定了表中数据的类型。 行包含了实际的数据。 例如,数据库 pubs 中的表 authors 有九个字段。其中的一个字段名为为 au_lname,这个字段 被用来存储作者的名字信息。每次向这个表中添加新作者时,作者名字就被添加到这个字段,产生 一条新记录。 通过定义字段,你可以创建一个新表。每个字段有一个名字和一个特定的数据类型(数据类型 在后面的“字段类型”一节中讲述),例如字段 au_lname 存储的是字符型数据。一个字段也可以存 储其它类型的数据。 使用 SQL Sever,创建一个新表的方法是很多的。你可以可执行一个 SQL 语句或使用 SQL 事务 管理器(SQL Enterprise Manager)来创建一个新表。在下一节里,你将学会如何用 SQL 语句来创 建一个新表。 用 SQL 创建新表 注意: 如果你还没有建立自己的数据库,现在就跳回到第三章创建这个库。你绝不能向 master,tempdb 或任何其他任何系统数据库中添加数据。 从 SQL Sever 程序组(在任务栏中)中启动 ISQL/w 程序。出现查询窗口后,从窗口顶部的下拉 列表中选择你在第三章所创建的数据库。下一步,在查询窗口中键入下面的 SQL 语句,单击执行查 询按钮,执行这个语句: CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate DATETIME) 如果一切正常,你会在结果窗口中看到如下的文字(如果出现异常,请参阅第三章): SQL 语法大全语法大全语法大全语法大全————————中文版中文版中文版中文版 第 12 页 共 40 页 This command dit not return data ,and it did not return any rows 祝贺你,你已经建立了你的第一个表! 你所创建的表名为 guestbook,你可以使用这个表来存储来字你站点访问者的信息。你是用 REEATE TABLE 语句创建的这个表,这个语句有两部分:第一部份指定表的名子;第二部份是括在括 号中的各字段的名称和属性,相互之间用逗号隔开。 表 guestbook 有三个字段:visitor,comments 和 entrydate。visitor 字段存储访问者的名字, comments 字段存储访问者对你站点的意见,entrydate 字段存储访问者访问你站点的日期和时间。 注意每个字段名后面都跟有一个专门的表达式。例如,字段名 comments 后面跟有表达式 TEXT。 这个表达式指定了字段的数据类型。数据类型决定了一个字段可以存储什么样的数据。因为字段 comments 包含文本信息,其数据类型定义为文本型。 字段有许多不同的数据类型。下一小节讲述 SQL 所支持的一些重要的数据类型。 字段类型 不同的字段类型用来存放不同类型的数据。创建和使用表时,更你应该理解五种常用的字段类 型:字符型,文本型,数值型,逻辑性和日期型。 字符型数据 字符型数据非常有用。当你需要存储短的字符串信息时,你总是要用到字符型数据。例如,你 可以把从 HTML form 的文本框中搜集到的信息放在字符型字段中。 要建立一个字段用来存放可变长度的字符串信息,你可以使用表达式 VARCHAR。考虑你前面创 建的表 guestbook: CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate DATETIME) 在这个例子中,字段 visitor 的数据类型为 VARCHAR。注意跟在数据类型后面的括号中的数字。 这个数字指定了这个字段所允许存放的字符串的最大长度。在这个例子中,字段 visitor 能存放的 字符串最长为四十个字符。如果名字太长,字符串会被截断,只保留四十个字符。 VARCHAR 类型可以存储的字符串最长为 255 个字符。要存储更长的字符串数据,可以使用文本 型数据(下一节中讲述)。 另一种字符型数据用来存储固定长度的字符数据。下面是一个使用这种数据类型的例子: CREATE TABLE guestbook (visitor CHAR(40),comments TEXT,entrydate DATETIME) 在这个例子中,字段 visitor 被用来存储四十个字符的固定长度字符串。表达式 CHAR 指定了这 个字段应该是固定长度的字符串。 VARCHAR 型和 CHAR 型数据的这个差别是细微的,但是非常重要。假如你向一个长度为四十个字 符的 VARCHAR 型字段中输入数据 Bill Gates。当你以后从这个字段中取出此数据时,你取出的数据 其长度为十个字符——字符串 Bill Gates 的长度。 现在假如你把字符串输入一个长度为四十个字符的 CHAR 型字段中,那么当你取出数据时,所取 出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。 SQL 语法大全语法大全语法大全语法大全————————中文版中文版中文版中文版 第 13 页 共 40 页 当你建立自己的站点时,你会发现使用 VARCHAR 型字段要比 CHAR 型字段方便的多。使用 VARCHAR 型字段时,你不需要为剪掉你数据中多余的空格而操心。 VARCHAR 型字段的另一个突出的好处是它可以比 CHAR 型字段占用更少的内存和硬盘空间。当你 的数据库很大时,这种内存和磁盘空间的节省会变得非常重要。 文本型数据 字符型数据限制了字符串的长度不能超过255个字符。而使用文本型数据,你可以存放超过二 十亿个字符的字符串。当你需要存储大串的字符时,应该使用文本型数据。 这里有一个使用文本型数据的例子: CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate DATETIME) 在这个例子中,字段 comments 被用来存放访问者对你站点的意见。注意文本型数据没有长度, 而上一节中所讲的字符型数据是有长度的。一个文本型字段中的数据通常要么为空,要么很大。 当你从 HTML form 的多行文本编辑框(TEXTAREA)中收集数据时,你应该把收集的信息存储于 文本型字段中。但是,无论何时,只要你能避免使用文本型字段,你就应该不适用它。文本型字段 既大且慢,滥用文本型字段会使服务器速度变慢。文本型字段还会吃掉大量的磁盘空间。 警告: 一旦你向文本型字段中输入了任何数据(甚至是空值),就会有 2K 的空间被自动分配给该数据。 除非删除该记录,否则你无法收回这部分存储空间。 数值型数据 SQL Sever 支持许多种不同的数值型数据。你可以存储整数、小数、和钱数。 通常,当你需要在表中的存放数字时,你要使用整型(INT)数据。INT 型数据的表数范围是从 -2,147,483,647 到 2,147,483,647 的整数。下面是一个如何使用 INT 型数据的例子: CREATE TABLE visitlog (visitor VARCHAR(40),numvisits INT) 这个表可以用来记录你站点被访问的次数。只要没有人访问你的站点超过 2,147,483,647 次, nubvisits 字段就可以存储访问次数。 为了节省内存空间,你可以使用 SMALLINT 型数据。SMALLINT 型数据可以存储从-32768 到 32768 的整数。这种数据类型的使用方法与 INT 型完全相同。 最后,如果你实在需要节省空间,你可以使用 TINYINT 型数据。同样,这种类型的使用方法也 与 INT 型相同,不同的是这种类型的字段只能存储从0到 255 的整数。TINYINT 型字段不能用来存 储负数。 通常,为了节省空间,应该尽可能的使用最小的整型数据。一个 TINYINT 型数据只占用一个字 节;一个 INT 型数据占用四个字节。这看起来似乎差别不大,但是在比较大的表中,字节数的增长 是很快的。另一方面,一旦你已经创建了一个字段,要修改它是很困难的。因此,为安全起见,你 应该预测以下,一个字段所需要存储的数值最大有可能是多大,然后选择适当的数据类型。 为了能对字段所存放的数据有更多的控制,你可以使用 NUMERIC 型数据来同时表示一个数的整 数部分和小数部分。NUMERIC型数据使你能表示非常大的数——比INT型数据要大得多。一个NUMERIC 型字段可以存储从-1038到 1038范围内的数。NUMERIC 型数据还使你能表示有小数部分的数。例如, 你可以在 NUMERIC 型字段中存储小数 3.14。 SQL 语法大全语法大全语法大全语法大全————————中文版中文版中文版中文版 第 14 页 共 40 页 当定义一个 NUMERIC 型字段时,你需要同时指定整数部分的大小和小数部分的大小。这里有一 个使用这种数据类型的例子: CREATE TABLE numeric_data (bignumber NUMERIC(28,0), fraction NUMERIC (5,4) ) 当这个语句执行时,将创建一个名为 numeric_data 的包含两个字段的表。字段 bignumber 可以 存储直到 28 位的整数。字段 fraction 可以存储有五位整数部分和四位小数部分的小数。 一个 NUMERIC 型数据的整数部分最大只能有 28位,小数部分的位数必须小于或等于整数部分的 位数,小数部分可以是零。 你可以使用 INT 型或 NUMERIC 型数据来存储钱数。但是,专门有另外两种数据类型用于此目的。 如果你希望你的网点能挣很多钱,你可以使用 MONEY 型数据。如果你的野心不大,你可以使用 SMALLMONEY 型数据。MONEY 型数据可
本文档为【SQL语法大全——中文版】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_729775
暂无简介~
格式:pdf
大小:356KB
软件:PDF阅读器
页数:40
分类:计算机考试
上传时间:2013-02-20
浏览量:22