2.1. 介绍 本章提供一个如何使用 SQL 执行简单操作的概述. 本教程的目地只是给你一个介绍,并非完整的 SQL 教程.都许多关于 SQL92 的书,包括 Understanding the New SQLMelton and Simon, 1993A complete guideJimMeltonAlan R.Simon1-55860-245-31993Morgan Kaufmann1993Morgan Kaufmann Publishers, Inc. 和 A Guide to the SQL StandardDate and Darwen, 1997A user's guide to the standard database language SQLFourth EditionC. J.DateHughDarwen0-201-96426-01997Addison-Wesley1997Addison-Wesley Longman, Inc..而且你还要知道有些 PostgreSQL语言特性是对标准的扩展. 在随后的例子里,我们假设你已经创建了名为 mydb 的数据库,就象在前面的章里面介绍的一样,并且已经启动了 psql. 本手册的例子也可以在PostgreSQL 源代码发布里的目录 src/tutorial/ 中找到. 请参考该目录中的 README 文件获取如何使用 它们的信息.要开始这个教程,按照下面说的进行∶ $ cd ..../src/tutorial $ psql -s mydb ... mydb=> \i basics.sql \i 命令从指定的文件中读取命令. -s 选项把你置于单步模式,它在向服务器发送每个查询之前 暂停.在本节使用的命令都在文件 basics.sql 中. -------------------------------------------------------------------------------- 2.2. 概念 PostgreSQL 是一种 关系型数据库管理系统 (RDBMS). 这意味着它是一种用于管理那些以关系形式存储的数据的系统.关系实际上是表的 数学称呼.今天,把数据存储在表里的概念已经快成了固有的常识了,但是还有其它的一些方法用于组织数据库.在类 Unix 操作系统上的 文件和目录就形成了一种层次数据库的例子.更现代的发展是面向对象的数据库. 每个表都是一个命名的行的集合. 每一行由一组相同的命名 列组成. 而且每一列都有一特定的类型. 虽然每列在每行里的位置是固定的,但一定要记住 SQL 并未 对行在表中的顺序做任何保证(但你可以对它们进行明确的排序进行显示). 表组成数据库,一个由一个 PostgreSQL 服务器管理的数据库集合组成一个数据库集群. 2.3. 创建新表 你可以通过声明表的名字和所有字段的名字及其类型来创建表∶ CREATE TABLE weather ( city varchar(80), temp_lo int, -- low temperature temp_hi int, -- high temperature prcp real, -- precipitation date date ); 你可以在 psql 里连换行符一起键入这些东西. psql 可以识别该命令直到分号才结束. 你可以在 SQL 命令中自由使用空白(也就是空格,tab,和换行符). 这就意味着你可以用和上面不同的对齐方式键入命令. 两个划线("--") 引入注释. 任何跟在它后面的东西直到该行的结尾都被忽略. SQL 是对关键字和标识符大小写不敏感的语言,只有在标识符用双引号引起时才能保留它们的大小写属性(上面没有这么干). varchar(80) 声明一个可以存储最长 80 个字符的 任意字符串的数据类型.int 是普通的整数类型. real 是一种用于存储单精度浮点数的类型. date 类型应该可以自解释.(没错,类型为 date 的字段名字也是 date.这么做可能比较方便,也可能容易让人混淆 -- 你自己看啦.) PostgresSQL 支持通常的 SQL 类型 int,smallint, real,double precision, char(N), varchar(N),date, time,timestamp 和 interval,还支持其他的通用类型和丰富的几何类型. PostgreSQL 客户化 为定制任意的用户定义的数据类型.因而类型名并不是语法关键字, 除了 SQL92 标准要求支持的特例外. 第二隔例子将保存城市和它们相关的地理位置∶ CREATE TABLE cities ( name varchar(80), location point ); 类型 point 就是一种 PostgreSQL 特有数据类型的例子. 最后,我们还要提到如果你不再需要某个表,或者你想创建一个不同的 表,那么你可以用下面的命令删除它∶ DROP TABLE tablename; 2.4. 向表中添加行 INSERT 用于向表中添加行∶ INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27'); 请注意所有数据类型都使用了相当明了的输入格式. 那些不是简单数字值的常量必需用单引号(')包围, 就象在例子里一样. date 字段实际上对可接收的格式相当灵活, 不过在本教程里,我们应该坚持使用这里显示的格式. point 类型要求一个座标对作为输入,如下∶ INSERT INTO cities VALUES ('San Francisco', '(-194.0, 53.0)'); 到目前为止使用的语法要求你记住字段的顺序.一个可选的 语法允许你明确地列出字段∶ INSERT INTO weather (city, temp_lo, temp_hi, prcp, date) VALUES ('San Francisco', 43, 57, 0.0, '1994-11-29'); 如果你需要,你可以用另外一个顺序列出字段或者是忽略某些字段, 也就是说,以未知的顺序∶ INSERT INTO weather (date, city, temp_hi, temp_lo) VALUES ('1994-11-29', 'Hayward', 54, 37); 许多开发人员认为明确列出字段要比依赖隐含的顺序是更好的风格. 请输入上面显示的所由命令,这样你在随后的各节中才有可用的数据. 你还可以使用 COPY 从文本文件中装载大量 数据.这么干通常更快,因为 COPY 命令就是为 这类应用优化的,同时还有比 INSERT 少一些的 灵活性.比如∶ COPY weather FROM '/home/user/weather.txt'; 这里源文件的文件名必须是后端服务器可访问的, 而不是客户端可访问的,因为后端服务器直接读取文件.你可以在 参考手册中读到更多有关 COPY 命令的信息. 2.5. 查询一个[1] [2] 下一页
|
|