MySQL学习——创建数据库以及数据类型介绍
在上一个专栏中我们介绍了Oracle数据库的学习(Oracle - 随笔分类),本专栏将会介绍另一个常用的关系数据库——MySQL的学习。MySQL数据库也是支持SQL标准语法的,因此学过上一个专栏再学习MySQL会比较简单。
在具体讲述之前,我们需要介绍下Oracle与MySQL数据库之间的差别。最大的差别就是数据库实例区别,Oracle每一个实例只能对应操作一个库,而MySQL的一个实例可以创建和操作多个库。所以在Oracle数据库中建立数据库之前需要建立一个数据空间(data space),将该空间分配给用户使用(每一个表空间就是一个实际文件夹),用户在其上创建的所有的表和数据文件都会存储在这个配置好的数据空间(物理实体)中。而MySQL中一个实例可以对应多个库,因此MySQL没有表空间的概念,MySQL中可以创建多个库,用户也可以操作这些库,库跟库之间有物理分隔。所以再MySQL中我们需要先创建库。
操作上的区别:
- 主键:MySQL一般采用自动增长类型,而Oracle需要使用序列这种对象来帮助实现自动增长。
- 单双引号:MySQL支持使用双引号括起字符串,而Oracle中只能使用单引号
- 分页:MySQL中可以使用LIMIT来时间返回数据条数限制,而Oracle需要使用内建视图和rownum来实现
- 事务提交:MySQL默认自动提交,而Oracle需要使用TCL语言(commit / rollback)实现提交
下面我们将进行介绍如何在MySQL中对数据库的创建与删除。
1、创建数据库
语法格式:
CREATE DATABASE 数据库名 [DEFAULT CHARACTER SET=utf8]
如果不指定字符编码,默认操作系统的编码。
想要查看MySQL中现存的数据库有哪些,以及这些数据库的详细信息,我们可以在information_schema这个数据库中的schemata这张表(数据字典)中查看。当然也可以使用show databases命令查看。
SELECT * FROM information_schema.schemata
2、选择数据库
在创建表之前我们需要选择在哪一个数据库中创建表,因此我们在创建表之前,要使用以下代码选择数据库。
use 数据库名
之后我们创建的所有的表都会在这个数据库之下。
3、删除数据库
语法结构:
DROP DATABASE 数据库名
4、数据类型介绍
4.1、整数类型
MySQL支持所有标准的SQL数值数据类型。
- tinyint(m):1个字节(-128~127)
- smallint(m):2个字节
- mediumint(m):3个字节
- int(m):4个字节
- bigint(m):8个字节
注意括号中的m表示显示长度,如果字段在创建时使用了zerofill则会根据这个m来填充数据,例如字段设定为int(3),如果输入的数据是4,则查询结果会显示004,左边会采用0来填充到指定长度。
4.2、浮点类型
- float(m ,d):单精度4字节,m表示总长度,d表示小数长度
- double(m, d):双精度8字节,m表示总长度,d表示小数长度
4.3、字符类型
- char(n):固定长度255个字符
- varchar(n):可变长度,最多65535字符
- text(n):可变长度,最多65535字符
这里需要注意的是此处的n表示的是字符长度,而不是字节长度。下面讲讲其中的一些区别。
char 和 varchar:char(n)若存入的字符数小于n,则会在末尾以空格补充为n长度储存,查询的时候会自动删除末尾的空格。因此char类型储存的字符的末尾不能包含有空格,因为查询时会被自动删除掉
varchar 和 text:varchar可指定n,内部储存varchar是存入实际字符数+1个字节(当n<=255)或者实际字符数+2个字节(当n>255)。text不能有默认值的设定。varchar可以直接创建索引,text创建索引时需要指定前多少个字符。varchar查询更快。
4.4、日期类型
- date:日期“2008-12-18”
- time:时间“12:25:36”
- datetime:日期时间“2008-12-18 22:06:03”
- timestamp:自动储存记录修改时间
4.5、二进制类型(BLOB)
BLOB和text的类型是有区别的,text以文本方式储存,区分大小写,而BLOB是以二进制方式储存,不区分大小写。BLOB储存的数据只能整体读出。TEXT可以指定字符集,BLOB不指定字符集。