This Domain(Admin5.com) is for Sale:

My SQL数据库实用技术(04)

时间:2007-12-23  来源:不详  作者:迈克DB

既然现在已经知道学分保存的各个表的结构,现在可以创建它们了。student 表的C R E ATE TABLE 语句如下:

将上述语句键入mysql 或执行下列外壳程序命令:

C R E ATE TABLE 语句创建了一个名为student 的表,它含有三列,分别为: n a m e、s e x和s t u d e n t _ i d。name 是一个可变长的字符串列,最多可存放20 个字符。这个名字的表示比历史同盟表中所用的表示要简单,它只用了单一的列而不是分别的名和姓列。这是因为我们已经预先知道,不存在无需做另外的工作就使得在多个列上工作得更好的查询样例。sex 表示学生是男孩还是女孩。这是一个E N U M(枚举)列,表示只能取明确地列在说明中的值之一,这里列出的值为:“F”和“M”,分别表示女和男。在某列只具有一组有限值时,ENUM 类型非常有用。我们可以用CHAR(1) 来代替它,但是ENUM 更明确规定了列可以取什么值。假如对包括一个ENUM 列的表发布一条DESCRIBE tbl_name 语句,MySQL 将确切地显示可取的值有哪些。顺便说一下, ENUM 列中的值不一定只是单个字符。此列还可以定义为E N U M(‘f e m a l e’,‘m a l e’)。 内容来自dedecms
student_id 为一个整数型列,它将包含唯一的ID 号。通常,大概会从一个中心资料来源处(如学校办公室)取得学生的ID 号,但在这里是我们自己定的。虽然student_id 列只包含一个数,但其定义包括几个部分:
■ INT 说明此列的值必须取整数(即无小数部分)。
■ UNSIGNED 不答应负数。
■ NOT NULL 表示此列的值必须填入。(任何学生都必须有一个ID 号。)
■ A U TO_INCREMENT 是MySQL 中的一个非凡的属性。其作用为:假如在创建一个新的student 表记录时遗漏了student_id 的值(或为N U L L),MySQL 自动地生成一个大于当前此列中最大值的唯一ID 号。在录入学生表时将用到这个这特性,录入学生表时可以只给出name 和sex 的值,让MySQL 自动生成student_id 列值。
■ P R I M A RY KEY 表示相应列的值为快速查找进行索引,并且列中的每个值都必须是惟一的。这样可防止同一名字的I D出现两次,这对于学生ID 号来说是一个必须的特性。(不仅如此,而且MySQL 还要求每个A U TO_INCREMENT 列都具有一个惟一索引。)假如您不理解A U TO_INCREMENT 和P R I M A RY KEY 的含义,只要将其想像为一种为每个学生产生ID 号的魔术方法即可。除了要求值唯一外,没有什么别的东西。请注重:假如确实打算从学校办公室取得学生ID 号而不是自动生成它们,则可以按相同的方法定义student_id 列,只不过不定义A U TO_INCREMENT 属性即可。event 表如下定义:
dedecms.com


将此语句键入mysql 或执行下列外壳程序的命令:

所有列都定义为NOT NULL,因为它们中任何一个值都不能省略。date 列存储标准的MySQL DATE 日期值,格式为“Y Y Y Y- M M - D D”(首先是年)。type 代表学分类型。像student 表中的sex 一样,type 也是一个枚举列。所答应的值为“T”和“Q”,分别表示“测试”和“测验”。event_id 是一个AUTO_INCREMENT 列,类似于student 表中的student_id 列。采用AUTO_INCREMENT 答应生成唯一的事件ID 值。正如student 表中的student_id 列一样,与值的惟一性相比,某个特定的值并不重要。score 表如下定义:

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息