zoukankan      html  css  js  c++  java
  • 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创建表时,需要多注意数据格式,会给数据库查询带来一些性能的提升。

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

  • 相关阅读:
    程序员下班去超市购物与收银员的一段搞笑对白 续集
    2010年9月02日周四_Deploying ArcGIS Mobile applications_4.1
    2010年8月30日周一_Adding layers _7.2
    2010年8月30日周一_Creating A Map_7.1
    2010年9月01日周三_CreatingAndPublishingaMobileWebService_3.2
    2010年8月29日周日_Deployment_6
    2010年8月31日周二_Navigating the map_7.3
    2010年8月30日周一_Introduction to ArcGIS Mobile SDK_1
    2010年9月01日周三_Using GPS data and devices_3.3
    2010年8月29日周日_Using the Sample Xcode Projects_5
  • 原文地址:https://www.cnblogs.com/aaron---blog/p/10771471.html
Copyright © 2011-2022 走看看