在上一个专栏中我们介绍了Oracle数据库的学习(Oracle - 随笔分类),本专栏将会介绍另一个常用的关系数据库——MySQL的学习。MySQL数据库也是支持SQL标准语法的,因此学过上一个专栏再学习MySQL会比较简单。
在具体讲述之前,我们需要介绍下Oracle与MySQL数据库之间的差别。最大的差别就是数据库实例区别,Oracle每一个实例只能对应操作一个库,而MySQL的一个实例可以创建和操作多个库。所以在Oracle数据库中建立数据库之前需要建立一个数据空间(data space),将该空间分配给用户使用(每一个表空间就是一个实际文件夹),用户在其上创建的所有的表和数据文件都会存储在这个配置好的数据空间(物理实体)中。而MySQL中一个实例可以对应多个库,因此MySQL没有表空间的概念,MySQL中可以创建多个库,用户也可以操作这些库,库跟库之间有物理分隔。所以再MySQL中我们需要先创建库。
操作上的区别:
下面我们将进行介绍如何在MySQL中对数据库的创建与删除。
语法格式:
CREATE DATABASE 数据库名 [DEFAULT CHARACTER SET=utf8]
如果不指定字符编码,默认操作系统的编码。
想要查看MySQL中现存的数据库有哪些,以及这些数据库的详细信息,我们可以在information_schema这个数据库中的schemata这张表(数据字典)中查看。当然也可以使用show databases命令查看。
SELECT * FROM information_schema.schemata
在创建表之前我们需要选择在哪一个数据库中创建表,因此我们在创建表之前,要使用以下代码选择数据库。
use 数据库名
之后我们创建的所有的表都会在这个数据库之下。
语法结构:
DROP DATABASE 数据库名
MySQL支持所有标准的SQL数值数据类型。
注意括号中的m表示显示长度,如果字段在创建时使用了zerofill则会根据这个m来填充数据,例如字段设定为int(3),如果输入的数据是4,则查询结果会显示004,左边会采用0来填充到指定长度。
这里需要注意的是此处的n表示的是字符长度,而不是字节长度。下面讲讲其中的一些区别。
char 和 varchar:char(n)若存入的字符数小于n,则会在末尾以空格补充为n长度储存,查询的时候会自动删除末尾的空格。因此char类型储存的字符的末尾不能包含有空格,因为查询时会被自动删除掉
varchar 和 text:varchar可指定n,内部储存varchar是存入实际字符数+1个字节(当n<=255)或者实际字符数+2个字节(当n>255)。text不能有默认值的设定。varchar可以直接创建索引,text创建索引时需要指定前多少个字符。varchar查询更快。
BLOB和text的类型是有区别的,text以文本方式储存,区分大小写,而BLOB是以二进制方式储存,不区分大小写。BLOB储存的数据只能整体读出。TEXT可以指定字符集,BLOB不指定字符集。