初识MySQL
一、数据库基础知识
1、什么是数据库
数据库的概念诞⽣生于60年前,随着信息技术和市场的快速发展,数据库技术层出不穷,随着应用的扩展和深入,数据库的数量和规模越来越大,其诞生和发展给计算机信息管理带来了一场巨大的革命。
数据库的发展大致划分为以下几个阶段:⼈⼯管理阶段、文件系统阶段、数据库系统阶段、高级数据库阶段。其种类大概有3种:层次式数据库、网络式数据库和关系式数据库。不同种类的数据库按不同的数据结构来联系和组织。
对于数据库的概念,没有一个完全固定的定义,随着数据库历史的发展,定义的内容也有很大的差异,其中一种比较普遍的观点认为,数据库(DataBase,DB)是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。它是一个按数据结构来存储和管理数据的计算机软件系统。即数据库包含两层含义:保管数据的“仓库”,以及数据管理的方法和技术。
数据库的特点包括:实现数据共享,减少数据冗余;采用特定的数据类型;具有较⾼的数据独立性;具有统一的数据控制功能。
2、为何需要数据库
存储数据的方法
第一种方法:用大脑来记住数据
第二种方法:写在纸上
第三种方法:写在计算机的内存中
第四种方法:写成磁盘文件
……
3、数据库能够做什么
存储大量数据,方便检索和访问
保持数据信息的一致、完整
共享和安全
通过组合分析,产生新的有用信息
4、数据库和应用程序
应用程序 | 数据库 | |
---|---|---|
作用 | 响应操作并显示结果、向数据库请求数据 | 存储数据、检索数据、生成新的数据 |
要求 | 美观、操作简单方便 | 统一、安全、性能等 |
5、时下流行的数据库
Oracle | SqlServer | MySQL |
---|---|---|
Oracle公司的产品 | 针对不同用户群体的多个版本 | 开放源代码 |
产品免费、服务收费 | 易用性好 | 网站应用广泛 |
6、数据库的基本概念
在关系数据库中,数据库的表是一系列二维数组的集合,用来存储数据和操作数据的逻辑结构。它是由纵向的列和横向的行组成,行被称为记录,也叫作实体,是组织数据的单位;列被称为字段,每一列表示记录的一个属性,都有相应的描述信息,如数据类型、数据宽度等。
(1)实体
这些客观存在的、可以被描述的事物都是“实体”。
二、MySQL数据库
MySQL是一个开放源代码的数据库管理系统(DBMS),它是由MySQL AB公司开发、发布并支持的。MySQL是一个跨平台的开源关系数据库管理系统,广泛地应用在Internet上的中小型网站公司开发中。
1、MySQL的优势
1. 运行速度快。
2. 使用成本低:MySQL对多数个人用户来说是免费的。
3. 容易使用:与其他大型数据库的设置和管理相比,其复杂程度较低,易于学习。
4. 可移植性强:能够工作在众多不同的系统平台上,例如:Windows、Linux、Unix等。
5. 支持丰富的接口:提供了用于C、C++、Java、perl、PHP、Ruby、Python等语言的API
6. 支持查询语言:MySQL可以利用标准SQL语法和支持ODBC(开放式数据库连接)的应用程序
7. 安全性和连续性:十分灵活和安全的权限和密码系统,允许基于主机的验证。连接到服务器器时,所有的密码传输均采用加密形式,从而保证了密码安全。并且由于Mysql是网络化的,因此可以在因特网上的任何地方访问,提高数据共享的效率。
2、MySQL版本
MySQL分为2个不同的版本:
社区版(Community Server) | 企业版(Enterprise Server) |
---|---|
免费、开源 | 收费,不可自由下载 |
适合普通用户 | 适合对功能和安全要求高的企业用户 |
功能和服务更完善 它能够以很高的性价比为企业提供数据仓库应⽤, 支持ACID事务处理, 提供完整的提交、回滚、崩溃恢复和行级锁定功能。 |
3、MySQL的命名
MySQL的命名机制由3个数字和1个后缀组成,例如mysql-5.5.13.
第1个数字(5)是主版本号,描述了文件格式,所有版本5的发行版都有相同的文件格式。
第2个数字(5)是发行级别,主版本号和发行级别组合在一起便构成了发行序列号
第3个数字(13)是在此发行系列的版本号,随每次新发布版本递增,通常选择已经发行的最新版本。
4、MySQL的运行机制
(1)讲解思路
就一个SQL语句,如select * from tablename ,从支持接口进来后,进入连接池后做权限、验证等环节,然后判断是否有缓存,有则直接放回结果,否则进入SQL接口,在查询之前查询优化器进行优化,最后进行解析,查询。并通过存储引擎与文件交互。 然后再介绍MySQL的企业管理服务和工具。
(2)名词解释
支持接口:
不同的编程语言与SQL的交互
连接池:
管理缓冲用户连接,线程处理等需要缓存的需求
SQL接口:
接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL接口
解析器:
SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本。
主要功能:
1. 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的;例如将 select * from tablename where 1=1;分解为select、*、from、tablename、where 、1=1,并去解析。
2. 如果在分解构成中遇到错误,那么就说明这个SQL语句是不合理的。
查询优化器:
SQL语句在查询之前会使用查询优化器对查询进行优化,使用的是“选取-投影-联接”策略进行查询。
例: select uid,name from user where gender = 1;
a.先根据where 语句进行选取,而不是先将表全部查询出来以后再进行gender过滤
b.先根据uid和name进行属性投影,而不是将属性全部取出以后再进行过滤
将这两个查询条件联接起来生成最终查询结果。
缓存:
如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。
这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等。
存储引擎:
存储引擎是MySql中具体的与文件打交道的子系统。也是Mysql最具有特色的一个地方。
Mysql的存储引擎是插件式的。它根据MySql AB公司提供的文件访问层的一个抽象接口来定制一种文件访问机制(这种访问机制就叫存储引擎)。
现在有很多种存储引擎,各个存储引擎的优势各不一样,最常用的MyISAM、InnoDB、BDB。
MyISAM引擎,它查询速度快,有较好的索引优化和数据压缩技术。但是它不支持事务。
InnoDB支持事务,并且提供行级的锁定,应用也相当广泛。
Mysql也支持自己定制存储引擎,甚至一个库中不同的表使用不同的存储引擎,这些都是允许的。
MySQL5.7默认使用InnoDB存储引擎。
5、MySQL安装与配置
(1)安装步骤(略)
(2)基本配置
端口号:3306
默认字符集:utf-8
root密码设置
(3)安装目录介绍
bin:
include:
lib:
share:
(4)命令行连接MySQL
1)检查MySQL服务是否启动
方式1:Windows服务
方式2:dos命令
net start mysql57
net stop mysql57
修改了配置文件,必须重启MySQL服务才能生效。
2)连接MySQL
语法格式:
mysql -h服务器主机地址 -u 用户名 -p 密码
示例:
mysql -u root -p
方式1:dos命令启动
方式2:MySQL Command Line Client
默认root登录,仅输入密码。
三、MySQL数据库类型
1、系统数据库
安装完MySQL服务器后,MySQL会附带系统数据库,包括:
information_schema:主要存储系统中的一些数据库对象信息,如用户表信息、字段信息、权限信息、字符集信息和分区信息等。
performance_schema:主要存储数据库服务器性能参数
mysql:主要存储系统的用户权限信息
test:MySQL数据库管理系统自动创建的测试数据库,任何用户都可以使用
2、用户数据库
用户数据库是用户根据实际需求创建的数据库。本章后面的讲解主要针对用户数据库。
四、数据库基本操作
1、查看数据列表
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila |
| sys |
| world |
+--------------------+
6 rows in set (0.36 sec)
2、创建数据库
mysql> create database test;
Query OK, 1 row affected (0.08 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila |
| sys |
| test |
| world |
+--------------------+
7 rows in set (0.00 sec)
3、选择数据库
mysql> use test;
Database changed
4、删除数据库
mysql> drop database test;
Query OK, 0 rows affected (0.33 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila |
| sys |
| world |
+--------------------+
6 rows in set (0.00 sec)