作者:axeon
创建表
首先,我们在我们的示例数据库创建其中一张表 coffees,包含在咖啡店所卖咖啡的必要的信息,包括咖啡名字,他们的价格,本星期卖了多少磅及迄今为止卖的数目。关于 coffees 表我们以后会详细描述,如下:
cof_name sup_id price sales total
colombian 101 7.99 0 0
french_roast 49 8.99 0 0
espresso 150 9.99 0 0
colombian_decaf 101 8.99 0 0
french_roast_decaf 49 9.99 0 0
存储咖啡名的列是 cof_name,它的 sql 数据类型是 varchar,最大的长度为 32 个字符。因为我们所卖的每种类型咖啡都使用不同的名字,名字可用于作为唯一识别咖啡的标识,因此可用于作主键。第二个列叫 sup_id,用于保存咖啡供应商标识;其 sql 数据类型为 integer。第 3 列叫 price,因为它需要保存带小数的十进制数,因此它的 sql 类型为 float。(注意,通常钱的 sql 类型为 decimal 或 numeric,但在不同 dbmss 间存在差异,为了避免于老版本的 jdbc 的不兼容性在本教程我们采用更标准的 float 类型)sales 列的 sql 类型为 integer,其值为本星期所卖咖啡的磅数。最后一列,total 的 sql 类型为 integer,保存了迄今为止所卖咖啡的总磅数。
数据库里的第二个表 suppliers,保存了每个供应商的信息:
sup_id sup_name street city state zip
101 acme, inc. 99 market street groundsville ca 95199
49 superior coffee 1 party place mendocino ca 95460
150 the high ground 100 coffee lane meadows ca 93966
coffees 跟 suppliers 都包含列 sup_id,它意味着可以用 select 语句从这两张表中取得有关信息。列 sup_id 是 suppliers 表的主键,用于唯一识别每个咖啡供应商。在 coffees 表中,sup_id 列被称外键。注意每个 sup_id 值在 suppliers 表里只出现一次;这对主键是必须的。在 coffees 表里,它作为外键,显然它可以有重复的 sup_id 值,因为同一供应商可以提供很多种的咖啡。在本节的最后,你将看见如何在 select 语句中使用主键及外键的一个例子。
下面的 sql 语句用于创建 coffees 表。列由列名跟空格跟 sql 类型组成。列(包括列名及其 sql 类型)跟下一个之间用逗号分隔。varchar 类型创建定义了最大长度, 因此它需要有一个参数来表示最大长度。参数必须在类型后面的括号内。sql 语句如下,列 cof_name 的长度 被限定为不得超过 32 个字符:
create table coffees
(cof_name varchar(32),
sup_id integer,
price float,
sales integer,
total integer)
这些代码不带 dbms 语句结束符, 因为每个 dbms 都可能不同。例如, oracle 使用一个分号 (;) 作为语句的结束,而 sybase 使用 go。你所使用的驱动程序会自动提供合适的语句结束符,因此你无须把它包括在你的 jdbc 代码中。
另外,我们应该指出的的是 sql 语句的格式。在 create table 语句中,关键字采用大写字符,并且每个项目都另起一行。sql 并没有此要求;仅仅是为了更容易阅读。sql 标准是不区分关键词的大小写的, 因此,如下例中的 select 语句可以有多种写法。因此下面两个不同写法的语句对 sql 来说是一样的。
select first_name, last_name
from employees
where last_name like washington
select first_name, last_name from employees where