初始MySQL
1.1 数据库 (DataBasse)
数据库就是一个存储数据的仓库,它是一个可以轻易获取形式来存储的数据的集合。
数据库 和 数据结构 有什么区别?
数据结构一门学科。
数据库是一个软件,数据库底层也用到了数据结构,且很依赖于这个数据结构。
高级数据结构B树B+Tree
1、数据存储方式
① 人工管理阶段
存储在纸袋,磁带上,或者是直接通过手工记录。
② 文件系统阶段
通过文件系统来管理这些文件,但是它没有进行结构化处理,查询起来不方便。 文件保存数据有以下几个缺点:
- 文件的安全性问题
- 文件不利于数据查询和管理
- 文件不利于存储海量数据
- 文件在程序中控制不方便
③ 数据库系统阶段
数据库存储介质:
- 磁盘
- 内存
为了解决文件系统阶段的问题,专家们设计出更加利于管理数据的软件——数据库,它能更有效的管理数据。
数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。
1.2 数据库的分类
数据库大体可以分为 关系型数据库 和 非关系型数据库
1、关系型数据库(RDBMS)
是指采用了关系模型来组织数据的数据库。
简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。基于标准的SQL,只是内部一些实现有区别。
常用的关系型数据库如:
-
Oracle:甲骨文产品,适合大型项目,适用于做复杂的业务逻辑,如ERP、OA等企业信息系 统。收费,最好!
-
MySQL:属于甲骨文,不适合做复杂的业务。开源免费。
-
SQL Server:微软的产品,安装部署在windows server上,适用于中大型项目。收费。
2、非关系型数据库
(了解)不规定基于SQL实现。现在更多是指NoSQL数据库,如:
- 基于键值对(Key-Value):如 memcached、redis
- 基于文档型:如 mongodb
- 基于列族:如 hbase
- 基于图型:如 neo4j
3、区别对比
| 关系型数据库 | 非关系型数据库 | |
|---|---|---|
| 使用SQL | 是 | 不强制要求,一般不基于SQL实现 |
| 事务支持 | 支持 | 不支持 |
| 复杂操作 | 支持 | 不支持 |
| 海量读写操作 | 效率低 | 效率高 |
| 基本结构 | 基于表和列,结构固定 | 灵活性比较高 |
| 使用场景 | 业务方面的OLTP系统 | 用于数据的缓存、或基于统计分析的OLAP系统 |
注:OLTP(On-Line Transaction Processing)是指联机事务处理
OLAP(On-Line Analytical Processing)是指联机分析处理。
1.3 数据库系统
数据库系统的范围比数据库大很多,数据库系统不是一个单纯的数据库,而是由数据库、数据库管理系统、应用开发工具等构成。
| 数据库 | 数据库管理系统 |
|---|---|
| 存储数据的地方 | 定义数据、管理和维护数据的软件 |
| 仓库 | 软件 |
client:
1、MySQL自带的
2、cmd 配置环境变量
第一步:此电脑 --> 右键 属性 --> 高级系统设置 --> 环境变量
第二步:新建 --> 变量名:MYSQL_HOME --> 选择浏览目录中,找到C:\Program Files\MySQL,选中自己的下载 --> 确定
第三步:在系统变量中,选中Path --> 编辑 --> 新建 --> 加入自己选择的数据库的bin目录 -->点击三次确定
第四步:测试是否配置成功 win + R --> cmd --> 输入命令mysql -u root -p密码 如成功,则会出现一下的代码
Microsoft Windows [版本 10.0.19041.985]
(c) Microsoft Corporation。保留所有权利。
C:\Users\Jin>mysql -u root -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.17-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>
3、工具 Navicat等
1.4 SQL语言
数据库管理系统通过SQL语言来管理数据库中的数据
1、SQL的概念
SQL语言是一种数据库查询和程序设计语言。主要用于存取数据,查询数据,更新数据和管理关系数据库系统。它是关系型数据语言的标准。
2、SQL的分类
- DDL数据定义语言,用来维护存储数据的结构
代表指令: create, drop, alter
(刚进公司的我们,也不会用到,用在项目开始的时候) - DML数据操纵语言,用来对数据进行操作
代表指令: insert,delete,update
DML中又单独分了一个DQL,数据查询语言,代表指令: select
(使用频率最高的,CURD) - DCL数据控制语言,主要负责权限管理和事务
代表指令: grant,revoke,commit
(运维,对于后端开发来说使用频率不高)
3、存储引擎
存储引擎:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
在mysql中查询拥有的搜索引擎
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)
mysql>
了解:
① MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法。不是事务安全的,而且不支持外键,如果执行大量的select,insert MyISAM比较适合。
② InnoDB:支持事务安全的引擎,支持外键、行锁、事务是他的最大特点。如果有大量的update和insert,建议使用InnoDB,特别是针对多个并发和QPS较高的情况。
③ 区别
1.5 数据库访问技术
应用系统中,程序语言需要使用数据库访问技术来访问数据库。只有使用数据库访问技术,程序中嵌入的SQL语句才会起作用。
不同程序语言访问数据库的方式是不一样的。
① 早期的数据库访问技术 ODBC
为访问不同的关系数据库提供了一个共同的接口。
② ADO.NET 是微软公司提供的组件
C#语言主要是用,通过方法来访问数据库。
③ JDBC 是一种执行SQL语句的Java API。
Java语言通过JDBC可以访问多种关系数据库。JDBC是由一组用Java语言编写的类和接口组成。