image

一、数据演变史

1、什么是数据(Data)

描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字、图片,图像、声音、语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机,在计算机中描述一个事物,就需要抽取这一事物的典型特征,组成一条记录,就相当于文件里的一行内容,单纯的一条记录并没有任何意义,如果我们按逗号作为分隔,依次定义各个字段的意思,相当于定义表的标题

# 1.单独的文本文件 
	没有固定的存放位置和格式
    	文件名:user.txt userinfo.txt data.txt
        数据格式:jason|123 tony~123 kevin$123
    """程序彼此之间无法兼容"""
# 2.软件开发目录规范
	规定了文件名和存储位置
    """文件的查找变得简单了  并没有解决核心问题"""
# 3.数据库阶段
	规定了文件的存储位置和数据格式
    """目前正在使用的阶段  解决了核心问题"""
    
    
  数据存储发展史

# 1.单机游戏阶段
	数据各自保存在各自的计算机上 无法实现共享

# 2.多机游戏阶段
	数据统一保存在某个固定的服务器上(计算机)  实现数据共享
    前提:必须有网络
'''为了数据的安全 还会采用集群策略来分担风险'''

2、数据库的本质(DataBase,简称DB)

数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的

过去人们将数据存放在文件柜里,现在数据量庞大,已经不再适用

数据库是长期存放在计算机内、有组织、可共享的数据即可。

数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种 用户共享

在了解了Data与DB的概念后,如何科学地组织和存储数据,如何高效获取和维护数据成了关键

# 本质也是一款cs架构的软件
	既然数据库本质是一款cs架构的软件 也就意味着我们每个人都可以编写一个数据库软件
    在目前地球上有很多牛逼的程序员 他们都具备编写数据库软件的能力 并且目前市面上真的有很多款数据库软件
"""
数据库在狭义层面上来说
	指的是处理数据的底层程序
数据库在广义层面上来说
	指的是操作这些底层程序的便捷应用软件
其实学习数据库很多时候学习的是配套的数据库软件
"""

二、数据库的分类(重点)

可以简单的理解为:

  • 关系型数据库拥有固定的表结构,并且表与表之间可以建立代码层面的关系(存数据之前需要将表建立好(表就是文件),例如这个表是用户相关的表,里面专门存用户相关的数据。还需要建立权限表,里面存用户权限相关的数据。用户跟权限是有对应关系的,表跟表之间是有关系的,还有约束)

  • 非关系型数据库没有固定的表结构,数据存储采用的是key-value键值对的形式

# 市面上有很多数据库软件 但是大致就分为两类
1.关系型数据库
	MySQL、Oracle、PostgreSQL、MariaDB、sqlite、sql server、db2
    	MySQL:开源免费 使用非常规范
    	Oracle:收费 维护成本高 大型公司可能会使用
        PostgreSQL:支持二次开发
        MariaDB:MySQL的替代产品(并且有自己的特性)
        sqlite:小型数据库(django框架自带该数据库)
		
            
2.非关系型数据库
	Redis、mongoDB、memcache
    	Redis:目前最火的缓存数据库 具有很多数据结构 功能强大
        mongoDB:文档型数据库 可以用在大数据和爬虫领域 
        memcache:已经被redis淘汰
       
"""

1.这么多数据库如何学习
	两大类数据库操作逻辑基本一致
		每一类学习一个基本就可以掌握所有
			关系型学MySQL
			非关系型学redis、mongodb
"""

三、SQL与NoSQL的由来

数据库的服务端为了能够兼容不同类型的客户端实现数据交互
所以规定了统一的交互方式
	关系型数据库>>>:SQL语句
     非关系型数据库>>>:NoSQL语句
# NoSQL有时候也表示 非关系型数据库

四、MySQL下载安装

  • windows版本

 windows:瞪大眼睛看
    	访问官网:https://www.mysql.com/
        具体步骤:
            DOWNLOADS
            	MySQL Community (GPL) Downloads
                	MySQL Community Server
                    	Archives
                        	选择版本下载压缩包(客服端 服务端)

img

1、下载:MySQL Community Server 5.6.51
http://dev.mysql.com/downloads/mysql/

2、解压
如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:D:\mysql-5.6.51-winx64

3、添加环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到
 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,D:\mysql-5.6.51-winx64\bin\】
 
4、初始化
C:\Users\Administrator> mysqld --initialize-insecure

5、启动MySQL服务
C:\Users\Administrator> mysqld    # 启动MySQL服务

6、启动MySQL客户端并连接MySQL服务(另开一个cmd)
C:\Users\Administrator> mysql -u root -p # 连接MySQL服务器

  • 将MySQL服务制作成Windows服务

#上一步解决了一些问题,但不够彻底,因为在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题:

#注意:--install前,必须用mysql启动命令的绝对路径
# 制作MySQL的Windows服务,在终端执行此命令:
C:\Users\Administrator>"D:\mysql-5.6.51-winx64\bin\mysqld" --install
 
# 移除MySQL的Windows服务,在终端执行此命令:
C:\Users\Administrator>"D:\mysql-5.6.51-winx64\bin\mysqld" --remove

# 注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:
# 启动MySQL服务
C:\Users\Administrator>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。

# 关闭MySQL服务
C:\Users\Administrator>net stop mysql
MySQL 服务正在停止.
MySQL 服务已成功停止。

1、目录介绍

3.目录介绍
	bin文件夹
    	mysqld.exe		服务端
        mysql.exe		客服端
    data文件夹
    	存储使用过程中需要保存的数据
    my-default.ini
    	配置文件
    redadme
    	说明文件

2、基本使用

4.基本使用
	# 一定要先启动服务端再启动客户端
   	"""前期在操作的时候最好使用管理员cmd操作"""
    1.环境变量的配置
    2.直接输入mysqld启动服务端(当前cmd窗口不要关闭)
    3.开设一个新的cmd窗口操作客户端
    	mysql	# 游客模式登陆
        mysql -u用户名 -p密码  # 账号登录(本地使用)
        mysql -hIP地址 -P端口号 -u用户名 -p密码  # 完整命令
        """第一次登录 root用户没有密码 直接连续回车即可"""

image

五、MySQL软件基本管理

1、登录、设置密码

初始状态下,管理员root,密码为空,默认只允许从本机登录localhost
设置密码
C:\Users\Administrator>mysqladmin -uroot password "123"   设置初始密码 由于原密码为空,因此-p可以不用
C:\Users\Administrator>mysqladmin -uroot -p"123" password "456" 修改mysql密码,因为已经有密码了,所以必须输入原密码才能设置新密码

命令格式:
C:\Users\Administrator>mysql -h172.31.0.2 -uroot -p456
C:\Users\Administrator>mysql -uroot -p
C:\Users\Administrator>mysql                    以root用户登录本机,密码为空

2、破解密码方式

跳过授权表启动服务端:
# 1.先关闭当前mysql服务端
命令行的方式启动(让mysql跳过用户名密码验证功能)
C:\Users\Administrator>mysqld --skip-grant-tables --user=mysql

# 2.直接以无密码方式连接,另外开一个cmd
C:\Users\Administrator>mysql -uroot -p  # 直接回车
mysql> select user();  # 可以看到直接就是管理员用户

# 3.修改当前用户的密码
mysql> update mysql.user set password=password("111") where user="root" and host="localhost";
"""
执行一个update命令,mysql文件夹下面有一个文件user(点代表路径分隔符),把password这个字段
的值改掉(密码一定要存成密文的,所以调了password("111")这个函数,把函数的值赋值给字段)where
user把一个本地管理员账号的密码改成111
"""

# 4.立刻将修改数据刷到硬盘
mysql> flush privilegse;   # 执行命令,刷新权限信息
mysql> exit # 执行退出命令

# 5.然后关掉服务端,再以正常方式启动
改完密码重新启动服务端后再在客户端执行连接登录
C:\Users\Administrator>mysql -uroot -p"111"

img

4、可用此类方式关掉启动MySQL服务

img

5、MySQL配置文件修改

img

6、MySQL默认的配置文件

# 配置文件所在目录D:\mysql-5.6.51-winx64
my-default.ini  # ini结尾的一般都是配置文件文件

程序启动会先加载配置文件中的配置之后才真正的启动

[client] # 其它客户端(mysql既支持自己写的客户端,也支持其它语言客户端)

[mysql]  # 一旦客户端启动立刻加载下面的配置

[mysqld]  # 一旦服务端启动立刻加载下面的配置


# 这个文件不能改,需要自己建一个my.ini的配置文件

# 修改配置文件后一定要重启服务才能生效

# 统一编码的配置,无需掌握直接拷贝即可(偷懒将管理员用户名和密码也添加到配置文件,不是必备项)
[client]
default-character-set = utf8mb4
 
[mysql]
user = "root"  # 用户名
password=111  # 密码
default-character-set = utf8mb4
 
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

img

7、统一编码胚子添加到my.ini

img

8、重启服务后查看配置文件是否修改成功

img

六、重要概念介绍

"""
库			》》》				文件夹
表			》》》				文件
记录			》》》				文件内一行行的数据

		name	password	hobby
		jack	123			篮球
		geng	123			电脑
		tony	123			理发
		
 表头					表格的第一行字段
 字段					name、password、hobby
		
"""

七、SQL语句

  • 有了mysql这个数据库软件,就可以将程序员从对数据的管理中解脱出来,专注于对程序逻辑的编写

"""SQL语句的结束必须使用分号"""
# 1.如何查看所有的数据库名称
	show databases;  '''会有一个临时产生在内存的库:in...sc'''
# 2.如何查看所有的表名称
	use 库名;  '''切换库(类似于双击了文件夹)'''
    show tables;
# 3.如何查看所有的记录
	select * from 表名;
    如果内容较多展示补全出现错乱的情况 可以在语句后面加\G

1、针对库的SQL语句

  • 库---》文件夹:操作文件夹

增:create database day02 charset utf8mb4; # 创建day02数据库,指定字符编码“utf8mb4”

改:alter database day02 charset gbk; # 将字符编码改为“gbk”

查:show databases;   # 查看所有的库
   select database(); # 查看当前所在的库
   show create database day02;  # 查看刚刚创建的库

删:drop database day02; # 删库

img

2、针对表的SQL语句

  • 表----》文件:操作文件

#语法:
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);

#注意:
1. 在同一张表中,字段名是不能相同
2. 宽度和约束条件可选
3. 字段名和类型是必须的

# 表操作:
use day02;  # 先切换到库下
 select database();  # 查看当前所在的库

增:create table t1(id int,name varchar(16)); 
 # 创建表t1当前库下无需加前缀day02,指定id字段、对应类型,名字,名varchar类型的宽度(16个字符)
 
改:alter table t1 rename t2; # 改表名
   alter table t2 modify name varchar(10); # 改字段varchar类型的宽度改为10
   
查:show tables;  # 查看当前库下的表信息
   desc t2;    # 指定查看一张表的信息
   show create table t2\G; # 查看表详细结构,可加\G
   
删:drop table day02.t2; # 指定绝对路径删除表,不在当前库下也能删除

img

3、针对记录的操作

"""
肯定得先确定库和表
"""
# 增
	insert into 表名 values(数据,数据,数据);  '''单条数据'''
    insert into 表名 values(),(),();  '''多条数据'''
# 查
	select * from 表名;  '''查询表中所有的数据'''
# 改
	update 表名 set 字段名='新数据' where 筛选条件;
# 删
	delete from 表名 where 筛选条件;

4、字符编码问题

# 查看MySQL内部默认的编码情况
	\s
 
"""MySQL默认的配置文件>>>:mydefault.ini"""
1.拷贝默认的配置文件并且重新命名为my.ini
2.拷贝固定的配置信息
	[mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
3.重启MySQL服务端

image

posted on 2022-02-17 16:37  耿蜀黍  阅读(46)  评论(0编辑  收藏  举报