JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)

注:若侵权,告知便删。有错误的地方还请指正

一、MYSQL基础1.1 数据库相关概念

以前的系统,数据持久化的存储采用的是文件存储。存储到文件中可以达到系统关闭数据不会丢失的效果,当然文件存储也有它的弊端。

假设在文件中存储以下的数据:

姓名 年龄 性别 住址 张三 23 男 北京西三旗 李四 24 女 北京西二旗 王五 25 男 西安软件新城

现要修改李四这条数据的性别数据改为男,学习过的IO技术可以通过将所有的数据读取到内存中,然后进行修改再存到该文件中。通过这种方式操作存在很大问题,现在只有三条数据,如果文件中存储1T的数据,那么就会发现内存根本就存储不了。

现需要既能持久化存储数据,也要能避免上述问题的技术使用在我们的系统中。数据库就是这样的一门技术。

1.1.1 数据库
  • 存储和管理数据的仓库,数据是有组织的进行存储。
  • 数据库英文名是 DataBase,简称DB。

数据库就是将数据存储在硬盘上,可以达到持久化存储的效果。那又是如何解决上述问题的?使用数据库管理系统。

1.1.2 数据库管理系统
  • 管理数据库的大型软件
  • 英文:DataBase Management System,简称 DBMS

在电脑上安装了数据库管理系统后,就可以通过数据库管理系统创建数据库来存储数据,也可以通过该系统对数据库中的数据进行数据的增删改查相关的操作。我们平时说的mysql数据库其实是MySQL数据库管理系统。

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(1)

1.1.3 常见的数据库管理系统

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(2)

简介如下:

  • Oracle:收费的大型数据库,Oracle 公司的产品
  • mysql: 开源免费的中小型数据库。后来 Sun公司收购了 MySQL,而 Sun 公司又被 Oracle 收购
  • SQL Server:MicroSoft 公司收费的中型的数据库。C#、.net 等语言常使用
  • PostgreSQL:开源免费中小型的数据库
  • DB2:IBM 公司的大型收费数据库产品
  • SQLite:嵌入式的微型数据库。如:作为 Android 内置数据库
  • MariaDB:开源免费中小型的数据库

学习的是MySQL数据库管理系统,不同的数据库管理系统之间公用一种编程语言,如下图所示:

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(3)

可以通过数据库管理系统操作数据库,对数据库中的数据进行增删改查操作,而想要完成以上操作就需要通过一门编程语言(SQL)来实现

1.1.4 SQL
  • 英文:Structured Query Language,简称 SQL,结构化查询语言
  • 操作关系型数据库的编程语言
  • 定义操作所有关系型数据库的统一标准,可以使用SQL操作所有的关系型数据库管理系统,以后如果使用到了其他的数据库管理系统,也同样的使用SQL来操作。
1.2 MySQL1.2.1 MySQL安装

安装环境:Win10 64位 软件版本:MySQL 5.7.24 解压版

1 下载

https://downloads.mysql.com/archives/community/

点开上面的链接就能看到如下界面:

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(4)

选择选择和自己系统位数相对应的版本点击右边的Download,此时会进到另一个页面,同样在接近页面底部的地方找到如下图所示的位置:

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(5)

不用理会上面的登录和注册按钮,直接点击 No thanks, just start my download. 就可以下载。

2 安装(解压)

下载完成后我们得到的是一个压缩包,将其解压,我们就可以得到MySQL 5.7.24的软件本体了(就是一个文件夹),我们可以把它放在你想安装的位置。

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(6)


1.2.2 MySQL卸载

以下操作在cmd控制台中进行

  1. 敲入net stop mysql,回车。

net stop mysql

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(7)

  1. 再敲入mysqld -remove mysql,回车。

mysqld -remove mysql

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(8)

  1. 最后删除MySQL目录及相关的环境变量。

至此,MySQL卸载完成!

1.2.3 MySQL配置1、 添加环境变量

环境变量里面有很多选项,这里我们只用到Path这个参数。为什么在初始化的开始要添加环境变量呢? 在黑框(即CMD)中输入一个可执行程序的名字,Windows会先在环境变量中的Path所指的路径中寻找一遍,如果找到了就直接执行,没找到就在当前工作目录找,如果还没找到,就报错。添加环境变量的目的就是能够在任意一个黑框直接调用MySQL中的相关程序而不用总是修改工作目录,大大简化了操作。

右键此电脑→属性,点击高级系统设置

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(9)

点击环境变量

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(10)

在系统变量中新建MYSQL_HOME

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(11)

在系统变量中找到并双击Path

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(12)

点击新建

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(13)

最后点击确定。

如何验证是否添加成功?

右键开始菜单(就是屏幕左下角),选择命令提示符(管理员),打开黑框,敲入mysql,回车。 如果提示Can't connect to MySQL server on 'localhost'则证明添加成功; 如果提示mysql不是内部或外部命令,也不是可运行的程序或批处理文件则表示添加添加失败,请重新检查步骤并重试。

2. 新建配置文件

新建一个文本文件,内容如下:

[mysql] default-character-set=utf8 [mysqld] character-set-server=utf8 default-storage-engine=INNODB sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

把上面的文本文件另存为,在保存类型里选所有文件 (*.*),文件名叫my.ini,存放的路径为MySQL的根目录(例如我的是D:\software\mysql-5.7.24-winx64,根据自己的MySQL目录位置修改)。

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(14)

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(15)

上面代码意思就是配置数据库的默认编码集为utf-8和默认存储引擎为INNODB。

3. 初始化MySQL

在刚才的黑框中敲入mysqld --initialize-insecure,回车,稍微等待一会,如果出现没有出现报错信息(如下图)则证明data目录初始化没有问题,此时再查看MySQL目录下已经有data目录生成。

mysqld --initialize-insecure

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(16)

tips:如果出现如下错误

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(17)

是由于权限不足导致的,去C:\Windows\System32 下以管理员方式运行 cmd.exe

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(18)

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(19)

4. 注册MySQL服务

在黑框里敲入mysqld -install,回车。

mysqld -install

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(20)

现在计算机上已经安装好了MySQL服务了。

MySQL服务器

5. 启动MySQL服务

在黑框里敲入net start mysql,回车。

net start mysql // 启动mysql服务 net stop mysql // 停止mysql服务

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(21)

5. 修改默认账户密码

在黑框里敲入mysqladmin -u root password 1234,这里的1234就是指默认管理员(即root账户)的密码,可以自行修改成你喜欢的。

mysqladmin -u root password 1234

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(22)

至此,MySQL 5.7 解压版安装完毕!

1.2.4 MySQL登陆和退出1. 登陆

右键开始菜单,选择命令提示符,打开黑框。 在黑框中输入,mysql -uroot -p1234,回车,出现下图且左下角为mysql>,则登录成功。

mysql -uroot -p1234

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(23)

到这里你就可以开始你的MySQL之旅了!

登陆参数:

mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -P端口号(默认3306)

2. 退出

退出mysql:

exit quit

1.2.5 MySQL数据模型

关系型数据库:

关系型数据库是建立在关系模型基础上的数据库,简单说,关系型数据库是由多张能互相连接的 二维表 组成的数据库

如下图,订单信息表 和 客户信息表 都是有行有列二维表我们将这样的称为关系型数据库。

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(24)

接下来看关系型数据库的优点:

  • 都是使用表结构,格式一致,易于维护。
  • 使用通用的 SQL 语言操作,使用方便,可用于复杂查询。
    • 关系型数据库都可以通过SQL进行操作,所以使用方便。
    • 复杂查询。现在需要查询001号订单数据,我们可以看到该订单是1号客户的订单,而1号订单是李聪这个客户。以后也可以在一张表中进行统计分析等操作。
  • 数据存储在磁盘中,安全。

数据模型:

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(25)

如上图,通过客户端可以通过数据库管理系统创建数据库,在数据库中创建表,在表中添加数据。创建的每一个数据库对应到磁盘上都是一个文件夹。比如可以通过SQL语句创建一个数据库(数据库名称为db1),语句如下。

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(26)

可以在数据库安装目录下的data目录下看到多了一个 db1 的文件夹。所以,在MySQL中一个数据库对应到磁盘上的一个文件夹。

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(27)

而一个数据库下可以创建多张表,我们到MySQL中自带的mysql数据库的文件夹目录下:

而上图中右边的 db.frm 是表文件,db.MYD 是数据文件,通过这两个文件就可以查询到数据展示成二维表的效果。

小结:

  • MySQL中可以创建多个数据库,每个数据库对应到磁盘上的一个文件夹
  • 在每个数据库中可以创建多个表,每张都对应到磁盘上一个 frm 文件
  • 每张表可以存储多条数据,数据会被存储到磁盘中 MYD 文件中
1.3 SQL概述

通过SQL语句对数据库、表、数据进行增删改查操作。

1.3.1 SQL简介
  • 英文:Structured Query Language,简称 SQL
  • 结构化查询语言,一门操作关系型数据库的编程语言
  • 定义操作所有关系型数据库的统一标准
  • 对于同一个需求,每一种数据库操作的方式可能会存在一些不一样的地方,我们称为“方言”
1.3.2 通用语法
  • SQL 语句可以单行或多行书写,以分号结尾。

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(28)

  • 如上,以分号结尾才是一个完整的sql语句。
  • MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
  • 同样的一条sql语句写成下图的样子,一样可以运行处结果。

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(29)

  • 注释
    • 单行注释: -- 注释内容 或 #注释内容(MySQL 特有)

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(30)

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(31)

    • 注意:使用-- 添加单行注释时,--后面一定要加空格,而#没有要求。
    • 多行注释: /* 注释 */
1.3.3 SQL分类
  • DDL(Data Definition Language) : 数据定义语言,用来定义数据库对象:数据库,表,列等
  • DDL简单理解就是用来操作数据库,表等

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(32)

  • DML(Data Manipulation Language) 数据操作语言,用来对数据库中表的数据进行增删改
  • DML简单理解就对表中数据进行增删改

JavaWeb每日学习记录01数据库(JavaWeb每日学习记录01数据库)(33)

  • DQL(Data Query Language) 数据查询语言,用来查询数据库中表的记录(数据)
  • DQL简单理解就是对数据进行查询操作。从数据库表中查询到我们想要的数据。
  • DCL(Data Control Language) 数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户
  • DML简单理解就是对数据库进行权限控制。比如我让某一个数据库表只能让某一个用户进行操作等。

==注意: 最常操作的是 DML 和 DQL==

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页