sql语法大全-经营管理(编辑修改稿)内容摘要:

将作者名字按升序排列。 你也可以同时对多个列使用 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 …………………………………………………………………… . Ben 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语句花的时间长。 取出互不相同的记录 一个表有可能在同一列中有重复的值。 例如,数据库 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),ments TEXT,entrydate DATETIME) 如果一切正常,你会在结果窗口中看到如下的文字(如果出现异常,请参阅第三章): This mand dit not return data ,and it did not return any rows 祝贺你,你已经建立了你的第一个表。 你所创建的表名为 guestbook,你可以使用这个表来存储来字你站点访问者的信息。 你是用 REEATE TABLE 语句创建的这个表,这个语句有两部分:第一部份指定表的名子;第二部份是括在括号中的各字段的名称和属性,相互之间用逗号隔开。 表 guestbook有三个字段: visitor,ments 和 entrydate。 visitor字段存储访问者的名字, ments字段存储访问者对你站点的意见, entrydate字段存储访问者访问你站点的日期和时间。 注意每个字段名后面都跟有一个专门 的表达式。 例如,字段名 ments 后面跟有表达式 TEXT。 这个表达式指定了字段的数据类型。 数据类型决定了一个字段可以存储什么样的数据。 因为字段 ments包含文本信息,其数据类型定义为文本型。 字段有许多不同的数据类型。 下一小节讲述 SQL所支持的一些重要的数据类型。 字段类型 不同的字段类型用来存放不同类型的数据。 创建和使用表时,更你应该理解五种常用的字段类型:字符型,文本型,数值型,逻辑性和日期型。 字符型数据 字符型数据非常有用。 当你需要存储短的字符串信息时,你总是要 用到字符型数据。 例如,你可以把从 HTML form的文本框中搜集到的信息放在字符型字段中。 要建立一个字段用来存放可变长度的字符串信息,你可以使用表达式 VARCHAR。 考虑你前面创建的表 guestbook: CREATE TABLE guestbook (visitor VARCHAR(40),ments TEXT,entrydate DATETIME) 在这个例子中,字段 visitor的数据类型为 VARCHAR。 注意跟在数据类型后面的括号中的数字。 这个数字指定了这个字段所允许存放的字符串的最大长度。 在这个例子中,字段visitor能存放的字符串最长为四十个字符。 如果名字太长,字符串会被截断,只保留四十个字符。 VARCHAR类型可以存储的字符串最长为 255个字符。 要存储更长的字符串数据,可以使用文本型数据(下一节中讲述)。 另一种字符型数据用来存储固定长度的字符数据。 下面是一个使用这种数据类型的例子: CREATE TABLE guestbook (visitor CHAR(40),ments TEXT,entrydate DATETIME) 在这个例子中,字段 visitor 被用来存储四十个字符的固定长度字符串。 表达式 CHAR指定了这个字段应该是固定长度的字符串。 VARCHAR 型和 CHAR 型数据的这个差别是细微的,但是非常重要。 假如你向一个长度为四十个字符的 VARCHAR 型字段中输入数据 Bill Gates。 当你以后从这个字段中取出此数据时,你取出的 数据其长度为十个字符 —— 字符串 Bill Gates的长度。 现在假如你把字符串输入一个长度为四十个字符的 CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。 字符串的后面会被附加多余的空格。 当你建立自己的站点时,你会发现使用 VARCHAR 型字段要比 CHAR型字段方便的多。 使用 VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。 VARCHAR 型字段的另一个突出的好处是它可以比 CHAR 型字段占用更少的内存和硬盘空间。 当你的数据库很大时,这种内存和磁盘空间的 节省会变得非常重要。 文本型数据 字符型数据限制了字符串的长度不能超过2 55 个字符。 而使用文本型数据,你可以存放超过二十亿个字符的字符串。 当你需要存储大串的字符时,应该使用文本型数据。 这里有一个使用文本型数据的例子: CREATE TABLE guestbook (visitor VARCHAR(40),ments TEXT,entrydate DATETIME) 在这个例子 中,字段 ments被用来存放访问者对你站点的意见。 注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。 一个文本型字段中的数据通常要么为空,要么很大。 当你从 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型数据占用四个字节。 这看起来似乎差别不大,但是在比较大的表中,字节数的增长是很快的。 另一方面,一旦你已经创建了一个字段,要修改它是很困难的。 因此,为安全起见,你应该预测以下,一个字段所需。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。