大师网-带你快速走向大师之路 解决你在学习过程中的疑惑,带你快速进入大师之门。节省时间,提升效率

数据库(4) | MySQL入门

MySQL基础

这一章内容,重点讲解数据库的方方面面。数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,我们主要从入门的视角来学习这部分。

数据库的定义

A database is an organized collection of data. It is the collection of schemas, tables, queries, reports, views and other objects. The data are typically organized to model aspects of reality in a way that supports processes requiring information, such as modelling the availability of rooms in hotels in a way that supports finding a hotel with vacancies.

数据库是数据有组织的集合。这是一个对象模式、表、查询、报表、视图和其他对象的集合。该数据通常被组织到现实的方面进行建模,支持需要的信息流程,如模拟酒店房间的可用性的方式,支持查找可用酒店的方式。

什么是数据库

数据库的应用场景:

企业信息:

  • 销售:用于存储客户、产品和购买信息等
  • 会计:用于存储付款、收据、账户余额、资产和其他会计信息
  • 人力资源:用于存储雇员、工资、所得税和津贴的信息,以及产生工资单等

银行和金融

  • 银行业:用于存储客户信息、账户、贷款以及银行的交易记录
  • 信用卡交易:用于记录信用卡消费的情况和产生每月清单

数据库是有组织地存储模型数据的空间,存储各种类型的信息(数据)。每个数据库,除了无模式型的,都有一个模型,提供数据的结构描述。

数据库管理系统是管理数据库结构、大小和排序的应用(或软件)。

数据库逻辑结构体系

数据库:Database,简称为DB。是长期存储在计算机内,有组织的,统一管理的相关数据的集合。

数据库管理系统:Database Management System,简称为DBMS。由相互关联的数据集合以及一组用于访问这些数据的程序组成。

数据库管理系统是位于用户与操作系统之间的一层数据库管理软件。为用户程序提供访问数据库的方法,包括建立数据库、查询、更新以及各种数据库控制等操作。

DBMS的工作模式如下:

  1. 接受应用程序的数据请求和处理请求
  2. 将用户的数据请求转换为复杂的机器代码
  3. 实现对数据库的操作
  4. 从对数据库的操作中接受查询结果
  5. 对查询结果进行处理和格式转换
  6. 将处理结果返回给用户

DBMS的主要功能

  1. 数据库的定义功能

    表格 房子、教室
    创建表格:定义表格的列
    修改表格:修改表格的列(增加列,修改列,删除列)
    删除表格:去掉表格

  2. 数据库的操纵功能

    数据,记录,学员、讲师
    增加记录
    删除记录
    修改记录
    查询记录

  3. 数据库的保护功能

  4. 数据库的维护功能

数据库系统:Database System,简称为DBS。是实现有组织的、动态的存储大量关联数据、方便多用户访问的计算机硬件、软件和数据资源组成的系统。

数据库系统是一种采用数据库技术的计算机系统。

DBS的组成

  • 数据库:包括两类,一类是应用数据的集合,物理数据库,数据库的主体;另一类是各级数据结构的描述,描述数据库。
  • 硬件:包括计算机、服务器等硬件设备。
  • 软件:包括数据库管理系统(DBMS, database management system)、操作系统、各种主语言
  • 数据库管理员(DBA)

数据库发展历史

人工管理阶段

文件系统阶段

数据库阶段

  • 1950年到1960年,磁带用于数据存储。
  • 1968年,美国IBM公司推出层次模型的IMS(Information Management System)系统,硬盘使用系统。
  • 1969年,美国CODASYL(Conference On Data System Language)组织发布了DBTG(Data Base Task Group)报告,总结了当时各式各样的数据库,提出网状模型。
  • 1970年,美国IBM公司的Edgar F.Codd博士连续发表论文,提出关系模型,奠定了关系型数据库的理论基础。Codd也获得了声望很高的ACM图灵奖。
  • 1990年以后,数据库进入了高级应用阶段。面向对象的数据库技术、开放数据库互联技术、数据仓库(大数据)和数据挖掘技术的应用日益广泛。

数据库学习重点

  1. Mysql数据库的连接与命令行操作

  2. SQL的数据基本查询和复杂查询操作

  3. SQL的表对象的创建、删除和修改操作

数据库管理系统

A database management system (DBMS) is a computer software application that interacts with the user, other applications, and the database itself to capture and analyze data. A general-purpose DBMS is designed to allow the definition, creation, querying, update, and administration of databases.

数据库管理系统(DBMS)是与用户,其他应用程序和数据库本身来捕获和分析数据进行交互的计算机软件应用程序。

一般用途的数据库管理系统旨在允许定义,创建,查询,更新和管理数据库。

数据库管理系统分类

关系型数据库

关系型数据库系统实现了关系模型,并用它来处理数据。关系模型在表中将信息与字段关联起来(也就是schemas),从而存储数据。

这种数据库管理系统需要结构(例如表)在存储数据之前被定义出来。有了表,每一列(字段)都存储一个不同类型(数据类型)的信息。数据库中的每个记录,都有自己唯一的key,作为属于某一表的一行,行中的每一个信息都对应了表中的一列——所有的关系一起,构成了关系模型。

非关系型(NoSQL)数据库

  • 文档型存储
  • 列存储
  • 缓存存储

主流数据库介绍

数据库 描述 优点 不足
Oracle 甲骨文公司推出的使用最广泛的关系型数据库管理系统 高稳定性、可靠性、优秀的安全机制、优秀的安全机制、采用标准的SQL结构化查询语言、支持大型数据库,数据类型支持数字、字符、大至2GB的二进制数据,为数据库的面向对象存储提供数据支持。www.oracle.com 贵、对硬件要求很高、对数据库管理员的经验要求较高
Microsoft SQL Server 微软公司的关系型数据库管理系统 真正的客户机/服务器体系结构,图形化的用户界面,使系统管理和数据库管理更加直观、简单、丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地,与WinNT完全集成,提供数据仓库功能和商业智能分析等功能,https://msdn.microsoft.com/library/mt590198.aspx 价格也高,而且不支持跨平台,安全性也相对不高
MySQL 开源的关系型数据库管理系统 开源软件,版本更新较快、开源软件,版本更新较快、性能很出色、价格便宜,官方网站:www.mysql.com 缺乏一些存储程序的功能,技术更新目前进入几乎停滞状态
IBM DB2 IBM公司的大型关系型数据库管理系统 DB2主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于所有常见的服务器操作系统平台下。 DB2提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和SQL命令 管理工具比较简陋、价格贵。
MongoDB 开源流行的文档型NoSQL数据库 关系数据库和非关系数据库之间的产物,其功能丰富,能够支持复杂的数据类型,但仍然保留着关系数据库的一些属性(查询、索引) 在国内流行度不是很高、相关技术资料比较缺乏
PostgreSQL 最先进SQL型开源objective-RDBMS PostgreSQL 的稳定性极强, Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步,比MySQL的性能和负载能力更强和稳定,在 GIS 领域处于优势地位 普及度不够高
Cassandra 开源流行的列存储NoSQL数据库 它是混合型的非关系数据库,在网络社交云计算方面应用较理想,读操作比写操作快很多,较适用于银行、金融、数据分析等领域。 技术推广难度
SQLite 嵌入式使用的关系型数据库管理系统 基于文件、很容易迁移,支持标准化迁移,简洁 没有用户管理功能,不支持额外的性能优化
Redis 开源的内存键值对型NoSQL数据库 有各种丰富的数据结构,支持数据持久化 内存优化有待进一步提升

数据库的评价排名平台:http://db-engines.com/en/ranking_trend

MySQL的介绍

MySQL目前是属于Oracle Corporation(甲骨文公司)推出的的关系型数据库管理系统。

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。

甲骨文公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989年正式进入中国市场。2013年,甲骨文已超越 IBM ,成为继 Microsoft 后全球第二大软件公司。

MySQL数据库产品内容丰富,功能强大。组要特性有:

  • MySQL是开源的,所以你不需要支付额外的费用。
  • MySQL支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
  • MySQL使用标准的SQL数据语言形式。
  • MySQL可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
  • MySQL对PHP有很好的支持,PHP是目前最流行的Web开发语言。
  • MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
  • MySQL是可以定制的,采用了GPL协议,你可以修改源码来开发自己的MySQL系统。

MySQL的安装

MySQL的官网:http://www.mysql.com

  • 下载 windows installer 安装包直接安装

    • MySQL Community Server : MySQL 数据库的服务端,只支持命令行操作

      # windows
      cd "c:\program file\mysql\mysql server 5.7\bin"
      mysql -u root -p 
      ####################### 
      ### 具体示例 ###
      c:\Program Files\MySQL\MySQL Server 5.7\bin>mysql -u root -p
      Enter password: *************
      Welcome to the MySQL monitor.  Commands end with ; or \g.
      Your MySQL connection id is 3
      Server version: 5.7.16-log MySQL Community Server (GPL)
      
      Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
      
      Oracle is a registered trademark of Oracle Corporation and/or its
      affiliates. Other names may be trademarks of their respective
      owners.
      
      Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
      
      mysql> 
      
    • MySQL Workbench:MySQL 客户端(官方),比较卡

    • MySQL on Windows (Installer & Tools) :包括所有的 MySQL工具

      Snap8.jpg
      Snap5.jpg
      Snap6.jpg
  • 使用 XAMPP 中的MySQL

    在新版本的 XAMPP 中的MySQL,实际上是 MariaDB。

  • MySQL 与 MariaDB

MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱,于是决定另开分支,这个分支的名字叫做MariaDB。
MariaDB跟MySQL在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同。目前MariaDB是发展最快的MySQL分支版本,新版本发布速度已经超过了Oracle官方的MySQL版本。

MariaDB 是一个采用Aria存储引擎的MySQL分支版本,是由原来 MySQL 的作者Michael Widenius创办的公司MariaDB Corporation Ab所开发的免费开源的数据库服务器。
这个项目的更多的代码都改编于 MySQL 6.0,例如 “pool of threads”功能提供解决多数据连接问题。MariaDB 5.1.41 RC可以到这里下载,32位和64位已编译Linux版本,还包括源代码包。MariaDB基于GPL 2.0发布。

所以对于大部分的MySQL用户来说,从现在主流的MySQL转到MariaDB应该是没有什么难度的。

# 进入 mysql所在的目录
cd c:\xampp\mysql\bin

##################################
### 具体示例 ####
c:\xampp\mysql\bin>mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.9-MariaDB mariadb.org binary distribution

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

MySQL的主流数据库连接工具

数据库的连接工具,有非常多种,目的一样,就是执行 SQL 脚本,进行表的查询,把查询结果作为数据显示出来

包含的内容:

  1. 数据库的对象的树形(一般在左侧,主要看表 TABLE)

  2. 数据库的脚本编辑框(输入 脚本的地方)

  3. 数据的的查询结果

    Snap12.jpg
  • SQLyog:一个轻量的 MySQL 连接工具(付费)

    Snap9.jpg
  • MySQL Workbench(官方)

  • Navcate(付费),支持多种主流DBMS:Oracle,MySQL,SQL Server,PostgreSQL。。

  • DBeaver(免费):支持所有的数据库。外企,需要操作多种数据库的。

    Beaver:海狸

    Snap10.jpg

SQLyog工具的使用

  1. 选择安装版本,考虑32位还是64操作。

    • 查看操作系统的版本是32位还是64位:

      • 我的电脑 → 右键 → 属性

        Snap13.jpg
      • Windows XP 一般是32位

      • Windows 7 以及以上的版本,需要注意。

    • 32位,选择 x86(i686,i386,i586。。。(x32不标准写法)),代表32位

    • 64位,选择 x64(amd64),代表64位软件。

  2. 安装选定的版本。输入 序列号。

    一般会自动弹出来,填写序列号的窗口。

    Snap14.jpg

    姓名随意填写,序列号填写文件里的。

  3. 连接 MySQL。确保被连接的 MySQL已经启动了。(比如 XAMPP的 MySQL,或者是 Linux 的MySQL,或者 安装好的 官方的 MySQL Community Server)

    • 新建连接
    Snap15.jpg
    • 填写 主机地址,用户名,密码,勾选保存密码,然后点击 测试连接对当前的输入进行测试连接。如果显示连接成功,就代表已经连接。

      Snap16.jpg
  4. 点击连接,访问数据库。