mySql入门一

55次阅读

共计 4386 个字符,预计需要花费 11 分钟才能阅读完成。

mySql 入门 -(一)

学了很多乱七杂八的东西,但是依然停留在前端,在工作中一直和后端交流,但是不太了解数据库是怎么回事,为了加强学习,准备学习一些关于数据库相关的东西。

说起数据库可能会有很多很多,SQLServerOracleSybase等等等,还有就是要学习 MySql,说了这么多数据库这些都是 关系型数据库 。既然有 关系型数据库 自然也就会有 非关系型数据 ,比如Neo4jMongodDBCloudant 等等等这些也就都属于 非关系型 数据库,非关系型数据库 又被称为nosql

非关系型数据库与关系型数据库对比

什么是关系型数据库,什么是非关系型数据库两者之间又有什么区别呢?

非关系型数据库

性能 NOSQL 是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过 SQL 层的解析,所以性能非常高。可扩展性同样 shouce 也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。

优势

  1. nosql数据库简单易部署,基本都是开源软件,不需要像使用 oracle 那样花费大量成本购买使用,相比关系型数据库价格便宜。
  2. nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及 nosql 数据库。
  3. nosql的存储格式是 key,value 形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持 基础类型
  4. 关系型数据库有类似 join 这样的多表查询机制的限制导致扩展很艰难。

劣势

  1. 维护的工具和资料有限,因为 nosql 是属于新的技术,不能和关系型数据库 10 几年的技术同日而语。
  2. 不提供对 sql 的支持,如果不支持 sql 这样的工业标准,将产生一定用户的学习和使用成本。
  3. 不提供关系型数据库对事物的处理。
关系型数据库

关系型数据库对于复杂查询可以用 SQL 语句方便的在一个表以及多个表之间做非常复杂的数据查询。事务支持使得对于安全性能很高的数据访问要求得以实现。

优势

  1. 保持数据的一致性(事务处理)
  2. 由于以标准化为前提,数据更新的开销很小(相同的字段基本上都只有一处)
  3. 可以进行 Join 等复杂查询

劣势

  1. 大量数据的写入处理
  2. 为有数据更新的表做索引或表结构(schema)变更
  3. 字段不固定时应用
  4. 对简单查询需要快速返回结果的处理

对于这两类数据库,对方的优势就是自己的弱势,反过来也是如此。

MySql 安装

Windows 上安装 Mysql 还是比较简单的,去 Mysql 官网去现在 zip 包就好了。下载完包之后把包解压到想要存放的存储盘内。

Mysql有提供安装版本,下载好之后安装就能使用了,如果下载 zip 包解压后需要进行配置,比较麻烦,网上也有很多教程。

然后打开刚刚解压的文件夹,在文件夹下面有一个 my.ini 配置文件。

MySql的配置与我们平时学习的语言不太一样,MySql在配置过程中有两点需要注意:

  1. 配置中的 -_是等价的
  2. 分段配置 [] 隔离段
[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:

  1. char(n) 若存入字符数小于 n,则以空格补于其后,查询之时再将空格去掉。所以 char 类型存储的字符串末尾不能有空格,varchar 不限于此。
  2. char(n) 固定长度,char(4) 不管是存入几个字符,都将占用 4 个字节,varchar 是存入的实际字符数 +1 个字节(n<=255)或 2 个字节(n>255),所以 varchar(4), 存入 3 个字符将占用 4 个字节。
  3. char 类型的字符串检索速度要比 varchar 类型的快。

varchar 和 text:

  1. varchar 可指定 n,text 不能指定,内部存储 varchar 是存入的实际字符数 +1 个字节(n<=255)或 2 个字节(n>255),text 是实际字符数 +2 个字节。
  2. text 类型不能有默认值。
  3. varchar 可直接创建索引,text 创建索引要指定前多少个字符。varchar 查询速度快于 text, 在都创建索引的情况下,text 的索引似乎不起作用。

总结

MySql数据关联型数据库,使用 Sql 语句对数据库进行操作。Sql语句不区分大小写,无论是关联型数据库还是非关联型数据库都各有优缺点。

在使用 MySql 创建表时,需要多注意数据格式,会给数据库查询带来一些性能的提升。

注:数据库中如果使用大量索引,虽然查询很快,但是会造成写入过慢的情况,使用的时候要稍加慎重。

正文完
 0