码迷,mamicode.com
首页 > 数据库 > 详细

mysql基础之创建数据库和表

时间:2015-02-01 23:27:28      阅读:634      评论:0      收藏:0      [点我收藏+]

标签:

假设你已拥有创建和修改服务器上数据库所必需的权限,那么我们来看一下如何创建数据库以及数据库中的表。在本章的示例中,我们将为一个虚拟的书店建立一个数据库:

CREATE DATABASE bookstore;

通过这条简单的SQL语句,我们已经创建了名为bookstore的数据库。另外,MySQL语句以及子句中的保留字大小写不敏感数据库与表名对大小写是否敏感取决于你所用的操作系统,比如在Linux系统上对大小写是敏感的,而Window系统对大小写不敏感。按照通常的习惯,在SQL说明文档中保留字均使用大写字母,而数据库名,表名以及字段名都使用小写字母。你可能也注意到了SQL语句结尾处的分号。一条完整的SQL语句可能不止一行,直到输入分号以后,客户机程序才会将SQL语句发送到服务器解析执行。

创建好数据库后,这虽然只是空库,但是我们可通过下面的语句从默认数据库切换到新数据库

USE bookstore

使用上述语句,就不必在每个SQL语句中都指定所用到的数据库名了。默认情况下,MySQL会把最后一个指定的数据库作为当前使用的数据库。该语句是基于客户机程序的SQL语句,所以在句尾不必添加分号

下面,我们将创建第一个表,以后blog将把数据添加到此表中。首先创建一个存放图书基本信息的数据库,因为这是书店业务的核心信息:

CREATE TABLE books (
    book_id INT,
    title VARCHAR(50),
    author VARCHAR(50)
);

上面的SQL语句创建了带有三个列的图书信息表。圆括号内是列的全部列表。接下来输入DESCRIBE语句可查看刚刚创建的表的结果,该结果以表格形式输出:

DESCRIBE books;

技术分享

考虑到书店规模有点大,我们认为还需要为数据元素多添加几个列:出版商,出版年份,ISBN码,图书类型,图书描述等等。我们还想让MySQL自动为book_id列分配一个数字编号,这样在添加一行新记录时就不必担心有重复问题发生。另外,我们决定将作者字段的真实作者名改为标识码,通过标识码可将本表与包含作者名字段的其他表关联起来。这种方式将数据统一起来,可以简化数据的输入,也使排列查找操作更容易实现。输入下列SQL语句可在已创建好的数据表中完成修改操作:

ALTER TABLE books
CHANGE COLUMN book_id book_id INT AUTO_INCREMENT PRIMARY KEY,
CHANGE COLUMN author author_id INT,
ADD COLUMN description TEXT,
ADD COLUMN genre ENUM (‘novel‘,‘poetry‘,‘drama‘),
ADD COLUMN publisher_id INT,
ADD COLUMN pub_year VARCHAR(4),
ADD COLUMN isbn VARCHAR(20);

在这个SQL语句的起始行后,可以看到每个修改或添加字段的子句都是由一个逗号分开的。第二行子句修改book_id列,即便是使用原来的列名和数据类型,我们也要将其重写一遍。我们还要为其添加AUTO_INCREMENT标记,它负责执行前一段提到的任务,就是将任意一个唯一的值分配给表中的每条记录。另外,我们还要将该字段设为主键,以提高数据检索的速度。

第一个CHANGE子句可能会让人感到迷惑,因为其中列名(book_id)出现了二次。当了解CHANGE子句的语法时,你就会明白其中的意义了,第一个book_id表示将要修改的现在列,该子句余下的部分用于指定一个新列。要想更好地理解这个子句的意思,可查看第二条CHANGE子句:该子句用新列author_id替代了现有列author。数据表中不再有名为author的列。

在第三行子句中,我们修改了author列,令其名称及数据类型与将要创建的authors表中的名称与类型一致。如同books表中的索引列代表图书一样,authors表中也有一个代表每个作者的索引列。我们把books表和authors表关联起来做查询操作,这样就可通过books表的author_id列找到author表中相应的记录。由于authors表中相应列的数据类型是INT,所以该子句中author_id列的数据类型也一定是INT。

第四行子句为每本书添加了一个描述列。该列的数据类型是文本类型,文本类型是可变长数据类型,可支持长度小于64千字节的数据。

在genre列中,为了确保统一性,事先已列举了几个可用的值。该字段允许为空值或NULL,空值或NULL并不需要指定。

向books表输入数据之前,我们先快速建立一个authors表。该表做为备查表。首先要向authors表中添加数据,因为我们向books表中添加数据时,需要知道books表中authors列的标识号:

CREATE TABLE authors(
    author_id INT AUTO_INCREMENT PRIMARY KEY,
    author_last VARCHAR(50),
    author_first VARCHAR(50),
    country VARCHAR(50)
);

根据需要,我们还要把books表与authors表通过author_id字段关联起来。这个例子先保存起来后面blog再用

mysql基础之创建数据库和表

标签:

原文地址:http://my.oschina.net/fhd/blog/374207

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!