学了不少乱七杂八的东西,可是依然停留在前端,在工做中一直和后端交流,可是不太了解数据库是怎么回事,为了增强学习,准备学习一些关于数据库相关的东西。html
提及数据库可能会有不少不少,SQLServer
、Oracle
、Sybase
等等等,还有就是要学习MySql
,说了这么多数据库这些都是关系型数据库
。既然有关系型数据库
天然也就会有非关系型数据
,好比Neo4j
、MongodDB
、Cloudant
等等等这些也就都属于非关系型
数据库,非关系型数据库
又被称为nosql
。前端
非关系型数据库与关系型数据库对比
什么是关系型数据库,什么是非关系型数据库二者之间又有什么区别呢?mysql
非关系型数据库
性能NOSQL
是基于键值对的,能够想象成表中的主键和值的对应关系,并且不须要通过SQL
层的解析,因此性能很是高。可扩展性一样shouce也是由于基于键值对,数据之间没有耦合性,因此很是容易水平扩展。web
优点
nosql
数据库简单易部署,基本都是开源软件,不须要像使用oracle
那样花费大量成本购买使用,相比关系型数据库价格便宜。nosql
数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,天然查询速度远不及nosql
数据库。nosql
的存储格式是key
,value
形式、文档形式、图片形式等等,因此能够存储基础类型以及对象或者是集合等各类格式,而数据库则只支持基础类型
。劣势
nosql
是属于新的技术,不能和关系型数据库10几年的技术同日而语。sql
的支持,若是不支持sql
这样的工业标准,将产生必定用户的学习和使用成本。关系型数据库
关系型数据库对于复杂查询能够用SQL
语句方便的在一个表以及多个表之间作很是复杂的数据查询。事务支持使得对于安全性能很高的数据访问要求得以实现。sql
优点
劣势
对于这两类数据库,对方的优点就是本身的弱势,反过来也是如此。数据库
MySql安装
在Windows
上安装Mysql
仍是比较简单的,去Mysql
官网去如今zip
包就行了。下载完包以后把包解压到想要存放的存储盘内。后端
Mysql
有提供安装版本,下载好以后安装就能使用了,若是下载zip
包解压后须要进行配置,比较麻烦,网上也有不少教程。缓存
而后打开刚刚解压的文件夹,在文件夹下面有一个my.ini
配置文件。安全
MySql
的配置与咱们平时学习的语言不太同样,MySql
在配置过程当中有两点须要注意:服务器
-
与_
是等价的[mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] # 设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=C:\\web\\mysql-8.0.11 # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不须要如下配置,系统本身生成便可,不然有可能报错 # datadir=C:\\web\\sqldata # 容许最大链接数 max_connections=20 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 建立新表时将使用的默认存储引擎 default-storage-engine=INNODB
根据以上内容更改配置就行了,并添加环境变量。这里安装就不详细介绍了。
MySql服务管理
MySQL
在服务中提供了一些对MySQL
管理的一些命令工具。
设置管理员密码
./bin/mysqladmin -u root password "root123";
mysqladmin
是执行不少关于MySQL
的一些管理的工做,一样也是在命令行里面去执行的。执行上面的命令,就会为root
用户建立一个密码。
启动服务
./bin/mysqld_safe & # ./bin/mysqld &
启动服务的时候是使用mysqld_safe
这个命令的,实际上mysqld_safe
是一个脚本,他会管理mysqld
进程进行管理,一旦mysqld
由于异常致使程序崩溃的话mysqld_safe
会重启一下MySQL
服务。
中止服务
./bin/mysqladmin shutdown # kill -9 $mysqld_pid // 重启服务 # kill $mysqld_pid
使用kill $mysqld_pid
命名会中止mysql服务,包括mysqld_safe
也会中止。
还有不少关于MySql
服务管理的命令,这里就不一一赘述了,单独出一篇文章对其进一步介绍。
MySql可视化工具
安装完数据库以后须要安装可视化工具,方便查看数据库内容,以及方便建立数据库和删除数据数据库等操做。
想要可视化MySQL
须要借助Nacicat
,网上有不少破解版能够随便下载一个。Nacicat使用手册。
下载安装好以后能够与数据库作链接,使用方法也很简单。
MySql语法规范
MySql
数据库属于关联型数据库,须要使用Sql
语句对表数据进行查询。一个数据库一般包含一个或多个表。每一个表由一个名字标识。表包含带有数据的记录(行)。Sql
语句对大小写不敏感,可是仍是建议全部的Sql
语句使用大写,查询条件与表名用小写,这样方便区分哪些是Sql
语句哪些是查询条件。
在MySql
系统要求在每条 SQL 命令的末端使用分号。分号是在数据库系统中分隔每条Sql
语句的标准方法,这样就能够在对服务器的相同请求中执行一条以上的语句。
MySql数据类型
数值类型
整数型
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1 字节 | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2 字节 | (-32 768,32 767) | (0,65 535) | 大整数值 |
MEDIUMINT | 3 字节 | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
INT或INTEGER | 4 字节 | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
BIGINT | 8 字节 | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
浮点型
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
FLOAT | 4 字节 | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度,浮点数值 |
DOUBLE | 8 字节 | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度,浮点数值 |
DECIMAL | 对DECIMAL(M,D) ,若是M>D,为M+2不然为D+2 | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
设一个字段定义为 float(5,3),若是插入一个数 123.45678,实际数据库里存的是 123.457,但总个数还以实际为准,即 6 位。
日期和时间类型
注:每一个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
类型 | 大小 | 范围 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3 字节 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 字节 | '-838:59:59'/'838:59:59' | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 字节 | 1901/2155 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
DATETIME | 8 字节 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 字节 | 1970-01-01 00:00:00/2038 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 | YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 |
若定义一个字段为timestamp,这个字段里的时间数据会随其余字段修改的时候自动刷新,因此这个数据类型的字段能够存放这条记录最后被修改的时间。
字符串类型
类型 | 大小 | 用途 |
---|---|---|
CHAR | 0-255字节 | 定长字符串 |
VARCHAR | 0-65535 字节 | 变长字符串 |
TINYBLOB | 0-255字节 | 不超过 255 个字符的二进制字符串 |
TINYTEXT | 0-255字节 | 短文本字符串 |
BLOB | 0-65 535字节 | 二进制形式的长文本数据 |
TEXT | 0-65 535字节 | 长文本数据 |
MEDIUMBLOB | 0-16 777 215字节 | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295字节 | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295字节 | 极大文本数据 |
char和varchar:
varchar 和 text:
总结
MySql
数据关联型数据库,使用Sql
语句对数据库进行操做。Sql
语句不区分大小写,不管是关联型数据库仍是非关联型数据库都各有优缺点。
在使用MySql
建立表时,须要多注意数据格式,会给数据库查询带来一些性能的提高。
注:数据库中若是使用大量索引,虽然查询很快,可是会形成写入过慢的状况,使用的时候要稍加慎重。