文档章节

mysql基础之创建数据库和表

柳哥
 柳哥
发布于 2015/02/01 22:03
字数 1397
阅读 372
收藏 2

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

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再用

© 著作权归作者所有

共有 人打赏支持
柳哥
粉丝 207
博文 405
码字总数 347782
作品 0
杭州
技术主管
私信 提问
SQL基础-DDL数据定义语言

SQL数据定义语言-DDL语句 DDL语句部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。 语句 释义 CREATE DATABASE 创建新数据库 ALTER DATA...

ZHAO_JH
2018/08/10
0
0
MySQL数据库基础(四)——MySQL数据库创建实例

MySQL数据库基础(四)——MySQL数据库创建实例 一、创建数据库 1、创建数据库 创建数据库,指定数据库的默认字符集为utf8。 create database schoolDB default character set utf8; 连接数据...

642960662
2018/03/26
0
0
MySQL基础命令

CMD窗口登录MySQL: 基本命令:mysql -u用户名 -p 回车 Enter Password:* 授权特定用户操作数据库(授权特定用户对数据库中的某一张表拥有的相应权限): 基本命令:mysql>grant 权限名称(或...

Aaron_DMC
2016/12/13
17
0
MySQL基础教程

这是一个基础的MySQL教程,通过教程的学习后可以到达一个初级到中级 MySQL应用水平级别 ,主要介绍一些MySQL中基本的SQL语句。如果这是您第一次使用关系数据库管理系统(之前没有学习SQL相关...

易百教程
2016/10/11
37
0
mysql入门很简单(一)

之前一直都只会一些mysql简单的操作,对mysql的理解也不是很熟悉,找了很多mysql的基础书籍,也不是很理想,后来发现一本《mysql入门很简单》发现还不错,看了两遍,mysql基础的教程也不是很...

3147972
2014/01/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

IOS  学习记录

1.StackView=>IOS 9及以上支持 2.布局方式: AutoLayout / StackView 堆布局 (线性布局) 3.屏幕适配 (资源分辨率、设计分辨率、屏幕分辨率) Size Class技术 可以针对 屏幕的方向进行设置...

萨x姆
今天
4
0
第四次工业革命:自主经济的崛起

https://36kr.com/p/5170370.html

shengjuntu
昨天
3
0
Cloud Native 与12-Factor

12-Factor(twelve-factor),也称为“十二要素”,是一套流行的应用程序开发原则。Cloud Native架构中使用12-Factor作为设计准则。 12-Factor 的目标在于: 使用标准化流程自动配置,从而使...

waylau
昨天
9
0
java多线程2

“非线程安全”问题存在于“实例变量”中,如果是方法内部的私有变量,则不存在线程安全问题。这是因为方法内部的变量都是私有造成的。 synchronized 获取的都是对象锁。如果多个线程访问多个...

一滴水穿石
昨天
4
0
今天的学习

1,document.location.href:获取整个url 2,str.split(' '):用字符分割字符串 3,$this->load->library(' '):引用图像处理类 4,$this->load->library(' '):引用Email类 5,特殊访问指针$th......

墨冥
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部