Josh 的学习笔记之 MySQL

MySQL官网:https://www.mysql.com/

1. 数据库的基本概念

此部分介绍数据库的基本概念,包括数据库存储方式、数据库技术的发展历史、数据库的存储结构以及数据库在开发中的作用。·

1.1 数据存储方式

计算机数据(Data)的存储一般以硬盘为数据存储空间资源,从而保证计算机内的数据能够持续保存。对于数据的处理,一般会采用数据库相关的技术进行处理,从而保证数据处理的高效性。

采用数据库的管理模式不仅提高了数据的存储效率,而且在存储的层面上提高了数据的安全性。通过分类的存储模式让数据管理更加安全便捷,更能实现对数据的调用和对比,并且方便查询等操作的使用。

1.2 什么是数据库

数据库是数据管理的有效技术,是由一批数据构成的有序集合,这些数据被存放在结构化的数据表里。数据表之间相互关联,反映客观事物间的本质联系。数据库能有效地帮助一个组织或企业科学地管理各类信息资源。

数据是数据库中存储的基本对象,是按一定顺序排列组合的物理符号。数据有多种表现形式,可以是数字、文字、图像,甚至是音频或视频,它们都可以经过数字化后存入计算机。

数据库是数据的集合,具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。

在日常生活中,人们可以直接用中文、英文等自然语言描述客观事物。在计算机中,则要抽象出对这些事物感兴趣的特征,并组成一个记录来描述。

例如,在学生档案中,学生信息是由学号、姓名、性别、年龄、籍贯、联系电话等特征组成的,那么这些具体的特征值所构成的一条记录就是一个学生的信息数据,例如“2016010102,张三,男,26,山西,计算机学院,185********”。

值得注意的是,数据的描述形式还不能完全表达其内容,需要经过解释。例如,对于上面这条学生记录,了解其含义的人会得到这样的信息:张三的学号是 2016010102,今年 26 岁,山西人,就读于计算机学院,他的联系电话是 185********;而不了解其语义的人则无法理解其含义。所以,数据和对数据的解释是不可分的,数据的解释是指对数据含义的说明,数据的含义也称数据的语义,因此数据与其语义密不可分,没有语义的数据是没有意义和不完整的。

扫描二维码关注公众号,回复: 11295345 查看本文章

1.3 数据库的存储结构

数据库的存储结构是指数据库中的物理数据和逻辑数据的表示形式、物理数据和逻辑数据之间关系映射方式的描述。在数据库技术中,可以使用两种形式描述客观现实的数据:物理数据描述逻辑数据描述。物理数据和逻辑数据之间的转换通过数据库管理系统实现。

1.3.1 物理数据描述

物理数据描述是指数据在存储设备上的存储方式,物理数据是实际存放在存储设备上的数据,这些数据也称为物理记录。根据物理记录存储的位置,又可以分为有序存储和无序存储。

物理数据描述中,使用的数据描述术语包括以下各项。

中文术语 英文术语 描述
bit 二进制的一个单位称为位,位只能取 1 或 0。
字节 byte 8 个位称为一个字节,可以存放对应 ASCII 码的一个字符。
word 若干个字节组成一个字。一个字所含的二进制的位数称为字长,许多计算机的字长是不同的,例如计算机的字长可以是 8 位、16 位、24 位、32 位等。
block 内存储器和外存储器交换信息的最小单位,又称为物理块或物理记录,每块的大小通常为 256 字节、512 字节、1024 字节等。
volume 一台输入输出设备所能装载的全部有用信息,例如磁带机的一盘磁带即为一卷,磁盘设备的一个盘组也是一卷。
无序存储 unordered 数据记录按照插入的顺序进行存储。
######## ########

1.3.2 逻辑数据描述

逻辑数据描述是指用户或程序员用于操作的数据形式,逻辑数据是一种抽象的概念,是对客观现实世界的反映和记录,这些数据也可以称为逻辑记录。

逻辑数据包含两个层次:

  • 一个层次是对客观现实信息世界的描述
  • 另一个层次是对数据库管理系统中数据的描述

在对客观现实信息的描述中,使用的术语包括以下几项。

中文术语 英文术语 描述
实体 entity 客观现实存在的东西使用实体来描述。实体既可以是具体的、有形的对象,也可以是抽象的、无形的对象。例如,一本书是一个有形对象,一次借书过程则是一个无形的对象。
实体集 entities 特性完全相同的同类实体的集合称为实体集。例如,一个图书馆所有的书籍是一个实体集,该图书馆的所有借书过程也是一个实体集。
属性 attribute 实体的特性称为属性。每个属性都有一个值域,这些值域可以是整数类型、浮点数类型、字符类型或日期类型等。例如,实体书的属性包括书名、书号、出版日期、页数、价格以及出版社等,这些属性对应的值域分别为字符类型、字符类型、日期类型、整数类型、浮点数类型和字符类型等。
标识符 identifier 能够唯一地标识每个实体的属性或属性集。例如,书的书号属性是实体书的标识符,借书过程实体的标识符包括借书证号、书号两个属性。
######## ########

这些逻辑数据最终要通过数据库管理系统来转换成物理数据。在数据库管理系统中,描述逻辑数据的术语包括哪些呢?

下面以关系型数据库管理系统为例进行介绍。

中文术语 英文术语 描述
数据项
/字段
data item
/field
标记实体属性的可以命名的最小信息单位,数据项的命名一般采用属性的描述性名称。这些名称可以是中文、英文或汉语拼音。
元组
/记录
tuple
/record
数据项的集合称为元组。一个元组表示一个具体的实体。
关系 relation 在关系型数据库系统中,同一类元组所在的集合称为关系。关系适用于描述实体集,它包括一个实体集的所有元组。例如,所有的图书可以组成一个 books 关系。
键码 key 在关系型数据库系统中,能够唯一地标识关系中每个元组的数据项或数据项的组合称为关系的键码。
######## ########

客观实体经过两层逻辑数据的描述,最后转变成实际存储的物理数据。

1.4 数据库在开发中的作用

从数据库系统应用角度来看,数据库系统常见的运行与应用结构有

  • 客户端/服务器结构
  • 浏览器/服务器结构

在客户端/服务器(Client/Server, C/S)结构中,数据库的使用者(如 DBA、程序设计者)通过命令行客户端、图形化界面管理工具或应用程序等连接到数据库管理系统,可以通过数据库管理系统查询和处理存储在底层数据库中的各种数据。

数据库使用者与命令行客户端、图形化界面管理工具或应用程序等直接交互,而不与数据库管理系统直接联系。

在这种结构中,命令行客户端、图形化界面管理工具或应用程序等称为“客户端”或“前台”,主要完成与数据库使用者的交互任务;而数据库管理系统则称为“服务器”或“后台”,主要负责数据管理。这种结构经常被称为“C/S”结构。

在客户端/服务器模式中,客户端和服务器可以同时工作在同一台计算机上,这种工作方式称为“单机方式”;也可以“网络方式”运行,即服务器被安装和部署在网络中某一台或多台主机上。

对于客户端应用程序的开发,目前常用的语言工具主要有 Visual C++、Delphi、.NET 框架、Visual Basic、Python 等。

数据库能有效存储数据,读取数据、查找数据更是方便,其实那些管理软件就是通过软件的界面向内部的数据库进行数据的增、删、改、查操作。


2. 数据库涉及到的技术

数据库系统由硬件和软件共同构成,硬件主要用于存储数据库中的数据,包括计算机、存储设备等。软件部分则主要包括 DBMS、支持 DBMS 运行的操作系统,以及支持多种语言进行应用开发的访问技术等。

此部分主要介绍数据库涉及到的技术,包括数据库系统、SQL 语言和数据库访问接口。

2.1 数据库系统

数据库系统主要有以下 3 个组成部分:

  1. 数据库:用于存储数据的地方。
  2. 数据库管理系统:用于管理数据库的软件。
  3. 数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库库的软件补充。

数据库管理系统(DBMS 是位于操作系统与用户之间的一种操纵和管理数据库的软件,按照一定的数据模型科学地组织和存储数据,同时可以提供数据高效地获取和维护。

数据库管理系统的主要功能包括以下几个方面。

  1. 数据定义功能:DBMS 提供数据定义语言(DDL),用户通过它可以方便地对数据库中的数据对象进行定义。

  2. 数据操纵功能:DBMS 还提供数据操纵语言(DML),用户可以使用 DML 操作数据,实现对数据库的基本操作,如查询、插入、删除和修改等。

  3. 数据库的运行管理:数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。例如:

    • 数据的完整性检查功能保证用户输入的数据应满足相应的约束条件;
    • 数据库的安全保护功能保证只有赋予权限的用户才能访问数据库中的数据;
    • 数据库的并发控制功能使多个用户可以在同一时刻并发地访问数据库的数据;
    • 数据库系统的故障恢复功能使数据库运行出现故障时可以进行数据库恢复,以保证数据库可靠地运行。
  4. 提供方便、有效地存取数据库信息的接口和工具:编程人员可通过编程语言与数据库之间的接口进行数据库应用程序的开发。数据库管理员(DBA)可通过提供的工具对数据库进行管理;数据库管理员是维护和管理数据库的专门人员。

  5. 数据库的建立和维护功能:数据库功能包括数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监控、分析功能等。这些功能通常由一些使用程序来完成。

数据库系统是指在计算机系统中引入数据库后的系统。一个完整的数据库系统(DBS)一般由数据库、数据库管理系统、应用开发工具、应用系统、数据库管理员和用户组成。完整的数据库系统结构关系如图所示:

用户
应用系统
用户
用户
应用开发工具
数据库管理系统
数据库
数据库管理员

2.2 了解SQL语言

MySQL 服务器正确安装以后,就已经完成了一个完整的 DBMS 的搭建,可以通过命令行管理工具或者图形化的管理工具对 MySQL 数据库进行操作。这种对数据库进行查询和修改操作的语言叫做 SQLSQL 语言是目前广泛使用的关系数据库标准语言,是各种数据库交互方式的基础。

SQL 是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。 与其他程序设计语言(如 C语言、Java 等)不同的是,SQL 由很少的关键字组成,每个 SQL 语句通过一个或多个关键字构成。

SQL 具有如下优点。

  1. 一体化:SQL 集数据定义、数据操作和数据控制于一体,可以完成数据库中的全部工作。
  2. 使用方式灵活:SQL 具有两种使用方式,可以直接以命令方式交互使用;也可以嵌入使用,嵌入C、C++、Fortran、COBOL、Java 等语言中使用。
  3. 非过程化:只提操作要求,不必描述操作步骤,也不需要导航。使用时只需要告诉计算机“做什么”,而不需要告诉它“怎么做”,存储路径的选择和操作的执行由数据库管理系统自动完成。
  4. 语言简洁、语法简单:该语言的语句都是由描述性很强的英语单词组成,而且这些单词的数目不多。

SQL 包含以下 4 部分:

  1. 数据定义语言(DDL):DROPCREATEALTER 等语句。
  2. 数据操作语言(DML):INSERTUPDATEDELETE语句。
  3. 数据查询语言(DQL):SELECT 语句。
  4. 数据控制语言(DCL): GRANTREVOKECOMMITROLLBACK 等语句。

下面是一条 SQL 语句的例子,该语句声明创建一个名叫 students 的表:

CREATE TABLE students (
    student_id INT UNSIGNED,
    name VARCHAR(30) ,
    sex CHAR(1),
    birth DATE,
    PRIMARY KEY(student_id)
);

该表包含 4 个字段,分别为 student_idnamesexbirth,其中 student_id 定义为表的主键。

现在只是定义了一张表格,但并没有任何数据,接下来这条 SQL 声明语句,将在 students 表中插入一条数据记录:

INSERT INTO students (student_id, name, sex, birth)
VALUES (1120179876, 'Josh Gao', '1', '1998-11-11');

执行完该 SQL 语句之后,students 表中就会增加一行新记录,该记录中字段 student_id 的值为“1120179876”,name 字段的值为“Josh Gao”,sex 字段值为“1”,birth 字段值为“1998-11-11”。

再使用 SELECT 查询语句获取刚才插入的数据,如下:

SELECT name FROM students WHERE student_id=41048101;
+--------------+
| name         |
+--------------+
|C语言中文网MySQL教程|
+--------------+

上面简单列举了常用的数据库操作语句,在这里留下一个印象即可,后面我们会详细介绍这些知识。

注意:SQL 语句不区分大小写,许多 SQL 开发人员习惯对 SQL 本身的关键字进行大写,而对表或者列的名称使用小写,这样可以提高代码的可阅读性和可维护性。本教程也按照这种方式组织 SQL 语句。大多数数据库都支持通用的 SQL 语句,同时不同的数据库具有各自特有的 SQL 语言特性。

2.3 数据库访问接口

不同的程序设计语言会有各自不同的数据库访问接口,程序语言通过这些接口,执行 SQL 语句,进行数据库管理。主要的数据库访问接口主要有 ODBCJDBC、ADO.NET 和 PDO

ODBC
ODBC 为访问不同的 SQL 数据库提供了一个共同的接口。ODBC 使用 SQL 作为访问数据的标准。这一接口提供了最大限度的互操作性。一个应用程序可以通过共同的一组代码访问不同的 SQL 数据库管理系统。

一个基于 ODBC 的应用程序对数据库的操作不依赖任何 DBMS,不直接与 DBMS 打交道,所有的数据库操作由对应的 DBMSODBC 驱动程序完成。也就是说,不论是 MySQL 还是 Oracle 数据库,均可用 ODBC API 进行访问。由此可见,ODBC 的最大优点是能以统一的方式处理所有的数据库。

JDBC
Java Data Base(JDBC,Java 数据库连接)用于 Java 应用程序连接数据库的标准方法,是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 语言编写的类和接口组成。

ADO.NET
ADO.NET 是微软在 .NET 框架下开发设计的一组用于和数据源进行交互的面向对象类库。ADO.NET 提供了对关系数据、XML 和应用程序的访问,允许和不同类型的数据源以及数据库进行交互。

PDO
PDO 为 PHP 访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO 是 PHP 5 新加入的一个重大功能。


3. MySQL的优势

MySQL 是一个关系型数据库管理系统,由瑞典 MySQLAB 公司开发,目前属于 Oracle 公司。

MySQL 使用的 SQL 语言是用于访问数据库的最常用的标准化语言。

由于 MySQL 数据库体积小、速度快、总体拥有成本低、开放源代码,其有着广泛的应用,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,因此搭配 PHP 和 Apache 服务器可组成良好的开发环境。

MySQL 数据库管理系统具有以下系统特性:

  • 使用 C 和 C++ 编写,并使用多种编译器进行测试,保证源代码的可移植性。
  • 支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows 等多种操作系统。
  • 为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
  • 支持多线程,充分利用 CPU 资源。
  • 优化的 SQL 查询算法,有效地提高查询速度。
  • 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入其他的软件中。
  • 提供多语言支持,常见的编码如中文的 GB 2312、BIG 5,日文的 Shift_JIS 等都可以用作数据表名和数据列名。
  • 提供 TCP/IP、ODBCJDBC 等多种数据库连接途径。
  • 提供用于管理、检查、优化数据库操作的管理工具。
  • 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
  • 支持多种存储引擎。

4. MySQL客户端和服务器端工具集

MySQL 一般是安装在服务器上的,我们在客户端可以进行连接,然后可以进行一些增删改查操作。下面分服务器端和客户端来讲解一下 MySQL 的实用工具集。

4.1 MySQL 服务器端实用工具

  1. mysqld
    SQL 后台程序(即 MySQL 服务器进程)。该程序必须运行之后,客户端才能通过连接服务器来访问数据库。
  2. mysqld_safe
    服务器启动脚本。在 UNIX 和 NewWare 中推荐使用 mysqld_safe 来启动 mysqld 服务器。mysqld_safe 增加了一些安全性,例如,当出现错误时,重启服务器并向错误日志文件中写入运行时间信息。
  3. mysql.server
    服务器启动脚本。该脚本用于使用包含为特定级别的、运行启动服务器脚本的、运行目录的系统。它调用 mysqld_safe 来启动 MySQL 服务器。
  4. mysqld_multi
    服务器启动脚本,可以启动或停止系统上安装的多个服务器。
  5. mysamchk
    用来描述、检查、优化和维护 MyISAM 表的实用工具。
  6. mysql.server
    服务器启动脚本。在 UNIX 中的 MySQL 分发版包括 mysql.server 脚本。
  7. mysqlbug
    MySQL 缺陷报告脚本。它可以用来向 MySQL 邮件系统发送缺陷报告。
  8. mysql_install_db
    该脚本用默认权限创建 MySQL 授予权表。通常只是在系统上首次安装 MySQL 时执行一次。

4.2 MySQL 客户端实用工具

  1. myisampack
    压缩 MyISAM 表以产生更小的只读表的一个工具。
  2. mysql
    交互式输入 SQL 语句或从文件经批处理模式执行它们的命令行工具。
  3. mysqlacceess
    检查访问主机名、用户名和数据库组合的权限的脚本。
  4. mysqladmin
    执行管理操作的客户程序,例如创建或删除数据库、重载授权表、将表刷新到硬盘上以及重新打开日志文件。Mysqladmin 还可以用来检索版本、进程以及服务器的状态信息。
  5. mysqlbinlog
    从二进制日志读取语句的工具。在二进制日志文件中包含执行过的语句,可用来帮助系统从崩溃中恢复。
  6. mysqlcheck
    检查、修复、分析以及优化表的表维护客户程序。
  7. mysqldump
    将 MySQL 数据库转储到一个文件(例如 SQL 语句或 Tab 分隔符文本文件)的客户程序。
  8. mysqlhotcopy
    当服务器在运行时,快速备份 MyISAM 或 ISAM 表的工具。
  9. mysql import
    使用 LOAD DATA INFILE 将文本文件导入相应的客户程序。
  10. mysqlshow
    显示数据库、表、列以及索引相关信息的客户程序。
  11. perror
    显示系统或 MySQL 错误代码含义的工具。

5. MySQL的下载、安装与基本配置

传送门:


6. 登录MySQL数据库

猜你喜欢

转载自blog.csdn.net/weixin_43870101/article/details/105047963
今日推荐