数据库mysql(初识mysql)

今日内容概要

  • 存取数据的演变史
  • 数据库软件应用史
  • 数据库的本质
  • 数据库的分类
  • MySQL简介
  • MySQL的基本使用
  • SQL与NOSQL
  • 数据库相关概念
  • 常见基本SQL语句

🐬 存取数据的演变史

数据的存取方式在学习了那么久的时间中,认识到了好几种,现在一起看看:
1.文本文件
	文件路径不固定:C:\aaa.txt  D:\bbb.txt  E:\ccc.txt
	数据格式不统一:jason|123	jason$123	jason 123
    
2.软件开发目录规范
	规定了数据应该保存在db目录下>>>:路径偏向统一
        db/user.txt  db/userinfo.txt   db/jason.json  db/jason
	数据格式还是没有得到统一
    	 文本 json格式 对象

这两种方式都还不够,今天就一起认识一种全新的存储方式

🐬数据库服务(划重点)

数据库的出现它统一了路径,统一了操作方式
	降低了学习成本,提高了开发效率

🐳数据库简介

官方的定义数据库是 "按照数据结构来组织、存储和管理数据的仓库"。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

数据库的用途:

  • 共享数据:数据包括所有用户可同时存取数据库中的数据,也包括使用者可以通过接口使用数据库获取的数据。
  • 减轻冗余程度:和文件系统相比避免了使用者各自建立各种文件。减少了大量重复数据,减少了冗余的数据。
  • 集中控制数据:文件管理中,数据分散,不同的用户或同一用户在不同处理中其文件之间无关。数据库可对数据进行集中控制,管理。
  • 确保数据的安全可靠:安全性控制,完整性控制,并发性控制,在同一时间周期内,可对数据实现多路存取,防止用户之间的不正常交互作用。
  • 恢复故障:及时发现故障并修复,防止数据被破坏。数据库能尽快恢复数据库系统运行时出现的故障。

🐬数据库软件应用史

大家使用了多年的电脑,应该都知道,计算机系统的c盘,D盘...上面都会存储一些大量的文件,这些文件一旦过多或者损坏就可能造成数据的丢失,如果是计算机自己的系统文件数据,就可能会造成系统蓝屏、死机等现象。
数据本身就是以文件为载体的形式保存的,所以数据库的数据也是依靠文件的来保存的。

下面举个小例子

	1.单机游戏
        数据存储于各个计算机的本地 无法共享
    2.网络游戏
        数据存储于网络中 可以共享(数据库服务)
可以的知数据库服务就是专门跑在一台计算机上面给外面数据可以进行增删改查的服务,有了数据库,数据就可以进行共享了。
我们将所有的数据放在一起,如果这个数据库意外损坏或者其他的意外就可能会丢失,所以我们为了保证数据的安全性,我们就实行多台的数据库服务器(备份)
这个操作叫数据库集群(由许多台计算机,跑的服务是一样的,功能也是一样的):为了防止数据的丢失,做"备份",提升数据的安全性

🐬数据库的本质

1.站在底层原理的角度
	数据库指的是操作数据的进程(就是一堆代码)
2.站在实际应用的角度
	数据库指的是可视化操作界面(就是一些软件)
PS:以后不做特殊说明的情况下将数据库其实就是指数据库软件

数据库软件的本质也是CS架构的程序
	也就意味着所有的程序员以后都会有资格编写一款数据库软件

🐬 数据库的分类

数据库被分为两类:关系型数据库,非关系型数据库。

关系型数据库

关系型数据库的定义:关系型数据库是数据库的一种类型,是指使用了关系模型的数据库系统。

其实很简单,数据库是用来存放数据的,如果将数据都写到一个数据文件里,比如说既有人员信息,又有交易记录等等,这样的数据文件就不是那么的好管理。数据乱七八糟的,数据库要经常去判断数据的归属类型,这样一来的话数据的读取速度就会变慢。

于是就有人想了一个办法:将数据分门别类的保存到不同的文件里面,这样就更好的管理数据了。如下:

人员基本信息保存到名为 user_info 的文件里
交易消费信息保存到 transaction 的文件里
亲属关系信息保存到 mail_list 的文件里

以上数据分开单独存放,但是数据之间还是会有关联关系的。比如说 “人员信息” “亲属关系” 就是有关联关系的,需要的时候可以从数据库多个数据文件里联合提取出数据,并不是数据拆分完之后就无法联合提取信息了。

所以 "关系型数据" 总结成一句话:数据分类存放在不同的文件里,数据之间是可以有关联关系的。 这么说,大家是否是不是就好理解关系型的数据库了呢?
关系数据库的特征:

1.拥有固定的表结构(字段名,字段类型)

image

2.数据之间可以建立数据库层面的关系

上面说了:用户表数据,亲属关系表数据

关系型数据库软件有哪些:

1.MySQl:这个数据库是我们接下来要学习的内容之一;它是一款开源免费的产品,使用最广,性价比还很高

2.Oracle:收费,使用的成本较高,但是安全性也是最高

3.PostgreSQL:这也是一款开源免费的产品,支持二次开发,兼容性是极高的

4.MariaDB:跟MySQL是一个作者,开源免费。因为担心以后MySQL会收费导致一些小公司用不起,就编写这个软件。

5.sqlite:小型数据库 主要用于本地测试

6.SQL server :这款数据库是 微软出品,图形界面做的挺不错,而且在教育领域是让大家免费使用的。(很多大学在将数据库课程的时候用的就是这款数据库)上面几种数据库都是跨平台的,在各个操作系统上都能安装,唯独 SQL server 很特殊。早期微软出品的数据库只能安装在 Windows 系统。所以也就造成了在生产领域没人会去使用,不建议使用。虽然说最近的 SQL server 也支持了 Linux 系统,但是长期没有人使用,当你遇到问题的时候在查找资料时也会遇到很多的困难,所以…

🐬非关系型数据库

因为 SQL语句是来操作关系型数据库的,所以大家常常将非关系型数据库也叫做 NoSQL数据库。

什么是非关系型数据库?

NoSQL 数据库也是把数据分类存储到不同的数据文件里面, 但是数据之间是没有关联关系的,这是因为 NoSQL 数据库根本就没有提供 SQL语言 从多个数据库问价提取关键数据。

非关系型数据库特征:

1.没有固定的表结构,数据的存储采用的是k:v键值对的形式

    {'name':'jason'}
    {'username':'kevin','pwd':123}

2.数据之间无法建立数据库层面的关系,可以自己编写代码建立逻辑层面的关系

非关系型数据库使用的软件:

	Redis:一种用内存来保存数据的 NoSQL 数据库,新浪微博用它来保存很多大V用户的热点信息,内存的速度是远远超过硬盘的,所以 Redis 的读写速度要比硬盘快很多。(缓存数据库)
	MemCache:也是一种使用内存来保存数据的 NoSQL 数据库。(已经被Redis淘汰了)
	MongoDB: 是一种使用硬盘保存数据的 NoSQL 数据库(文档型数据库,最像关系型数据库的非关系型数据库),保存海量低价值的数据是非常适合的;比如说新闻、留言、回帖等等。
  """
虽然数据库软件有很多 但是操作方式大差不差 学会了一个几乎就可以学会所有
	其中以MySQL最为典型
"""

🐬 MySQL简介

1.版本问题
	8.0:最新版
 	5.7:使用频率较高
 	5.6:学习推荐使用
	ps:站在开发的角度使用哪个版本学习都没有关系
    
2.下载流程
	1.访问官网
 	2.点击DOWNLOADS并点击GPL
	3.点击community server
 	4.点击Archives
 	5.选择对应系统的对应版本下载即可(zip压缩包)
 
3.主要目录介绍
	bin目录
    	存放启动文件
        	mysqld.exe(服务端)		mysql.exe(客户端)
	data目录
    	存放核心数据
  	my-default.ini
    	默认的配置文件
	readme
    	软件说明

🐬 MySQL下载

安装MySQL的方法主要有两种,通过 “命令行” 和 "可视化界面安装"这两种方法,这里我选择的是 “可视化界面安装” 的方法。

访问链接:MySQL官方下载页面

img

接下来,选择 MySQL Community Server

img

然后会跳转到资源下载页面,会自动识别你当前的电脑系统

img

点击下载的时候,会提示是否注册个账号登录,这里选择 "[No thanks, just start my download.]" 即可。

img

这样就可以下载MySQL的安装包了,安装的时候按照界面上一直点下一步就好了。

下面是命令行的形式

🐬MySQL的基本使用

首先打开cmd窗口,建议以管理员的身份打开
1.切换到mysql的bin目录下先启动服务端
	mysqld
2.保持窗口不关闭 重新打开一个新的cmd窗口
3.切换到mysql的bin目录下启动客户端
	mysql
"""
直接使用mysql命令默认是游客模式 权限和功能都很少
	mysql -u用户名 -p密码

管理员默认没有密码 连续回车即可
	mysql -uroot -p
	
PS:有的电脑可能在启动服务端的时候就会报错,不要慌,拷贝报错的信息,然后百度搜索,将MySQL启动报错的信息进行粘贴

🐬 系统服务的制作

1.先把bin目录添加到环境变量中
	清空之前打开的cmd窗口,一定要把之前使用cmd启动的服务端关闭(Ctrl + c)
 2.将MySQL添加到系统服务中
	1.如何查看系统服务
    	鼠标右键任务栏选择服务
        cmd输入 service.msc 回车
    2.以管理员身份打开cmd窗口
    	mysqld --install
3.首次添加不会自动启动,需要认为操作一下
	1.鼠标右键点击启动
    2.命令行启动
      net start mysql
        
如果想要卸载的话,可以按照
1.关闭服务端
	set stop mysql
2.移除系统服务
	mysqld --remove

🐬 密码相关操作

之前我们安装 MySQL 的时候 默认的 root 账户(即管理员账户)。这个账户是权限最高的账户,一般情况下只有数据库管理员 - DBA 才会使用该账户登录 MySQL 。像是开发人员,一般情况下会创建一个权限较低的账户交付开发、测试人员使用,比如说增删改查等一系列操作,销毁数据库、数据表这种操作一般是不会赋予的。

我们在使用的时候可能会出现,会有忘记密码的情况,如果是用户忘记密码, 执行以下 SQL 语句即可重置用户的密码。

1.修改密码
方式一:mysqladmin
	mysqladmin -u用户名 -p原密码 password 新密码
方式二:
	直接修改存储用户数据的表
方式三:比较冷门,有的版本可能还不支持
	set password = password('新密码') #只是修改当前用户的密码
    
2.忘记密码处理方式:
	1.卸载重新装
    2.把data目录删除,拷贝其他人的目录
    3.小技巧
    	1.关闭正常的服务端
        2.以跳过授权表的方式重启服务端(不校验密码)
        3.以管理员的身份进入然后修改mysql.user表数据即可
        net stop mysql
        mysql --skip-grant-table
        mysql -uroot -p
        update mysql.user set
 password = password('111') wher host='localhost'and User='root';
	4.关闭服务端,然后以正常方式启动即可

🐬SQL与NoSQL

数据库服务端是可以服务多种类型的客户端
	客户端可以是自己开发,也可以是用编程语言写出来
    
SQL:操作关系型的数据语言
NOSQL:操作非关系型数据库语言

PS:想要跟数据库交互就必须使用数据库指定的语言
"SQL有时候指代关系型数据库
noSQL有时候也指代非关系型数据库"

🐬 数据库相关概念

什么是数据:

事物的状态

什么数记录

由一组数据所构成一条记录,在文件中的内容

什么是表

简单来说就是文件夹里的文件

什么是库

就是指文件夹

什么是数据库管理系统

管理数据的套接字软件,cs架构

验证是否如此:
	1.查看所有库名称
    	show database;
     2.查看所有表名称
    	show tables;
     3.查看所有的记录
    	select * from mysql.user;

🐬常见基本SQL语句

温馨小提示:
sql语句必须以分号作为结尾(;)
SQL语句编写错误之后不用担心,可以直接执行报错即可

"基于库的增删改查

1.创建库
	create database 库名;
2.查看库
	show databases; '查看所有的库的名称'
    show create database 库名;;'查看指定库的信息'
3.编辑库
	alter database 库名 charset='utf8';
4.删除库
	drop database 库名;
    

基于表的增删改查

操作表之前需要先确定库
	create database '操作的库名';
切换操作库
	user db1;
    
1.创建表
	create table 表名(字段名 字段类型,字段名 字段类型);
2.查看表
	show tables; 查看库下所有的表名称
    show create table 表名;查看指定表信息
    describe 表名;查看表结构
    desc 表名;
 PS;如果想跨库看其他表,只需要在表名前加上库名即可
   desc mysql.user;
3.编辑表
	alter table 表名 rename  新表名;
4.删除表
	drop table 表名;

基于记录的增删改查

1.插入数据
	insert into 表名 values(数据值1,数据值2);
2.查询数据
	select * from 表名; '查询表中所有的数据'
3.编辑数据
	update 表名 set 字段名=新数据 where 筛选条件;
4.删除数据
	delete from 表名;
    delete from 表名 where id=2;
posted @ 2022-11-22 20:20  亓官扶苏  阅读(178)  评论(0)    收藏  举报