mysql基础之建立数据库和表

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

CREATE DATABASE bookstore

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

建立好数据库后,这虽然只是空库,可是咱们可经过下面的语句从默认数据库切换到新数据库服务器

USE bookstore

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

下面,咱们将建立第一个表,之后blog将把数据添加到此表中。首先建立一个存放图书基本信息的数据库,由于这是书店业务的核心信息:操作系统

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

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

DESCRIBE books;

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

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的列。ip

在第三行子句中,咱们修改了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再用

相关文章
相关标签/搜索