MON.MySQL

Mysql

数据库

SQL、DB、DBMS 分别是什么

  • DB:DataBase – 数据库,数据库实际上在硬盘上以文件的形式存在
  • DBMS:DataBase Management System – 数据库管理系统(本质上是 C/S 架构)
  • SQL:结构化查询语言,是一门标准通用的语言,属于高级语言。标准的 SQL 适合于所有数据库产品。SQL 语句在执行的时候,实际上内部也会先进编译,然后再进行 SQL(SQL 语句的编译由 DBMS完成)

三者之间的关系

  • DBMS 负责执行 SQL 语句,通过执行 SQL 语句来操作 DB 中的数据
DBMS -(执行)-> SQL -(操作)-> DB

存储数据的演变过程

  1. with open 方法,随意存到一个文件中,数据格式也是千差万别的

  2. 软件开发目录规范

    - bin    -->  启动文件
    - conf   -->  配置文件
    - lib    -->  公共方法
    - core   -->  业务逻辑
    - db     -->  数据
    - readme -->  产品说明书
    - log    --> 数据库 --> elasticsearch elk 全文搜索引擎
    
    # 单机软件数据只会保存在本地文件,只在自己的计算机上有效
    
  3. 如何将单机变成联网

    • 将数据保存部分全部统一起来
    • 所有数据都放在一个地方操作

数据库的本质

  • 基于网络通信的应用程序

数据库的分类

  • 关系型数据库

    1.数据之间彼此有关系或者约束
    2.存储数据的表现形式通常是以表格存储,且每个字段还会有存储类型的限制
    3.有固定的表结构,可以建立表与表之间的关系
    
    """MySQL、Oracle、db2、access、sql server、SQLite"""
    
    专门用以存储数据
    
  • 非关系型数据库

    1.没有固定的表结构,没有表结构
    2.多以 key:value 键值对的形式存储数据
    
    """redis(字符串、无需集合、有序集合、哈希类型、列表类型)--> 主要用于缓存、MongoDB(爬虫)、mecache(只支持字符串)"""
    
    主要用作缓存,缓解数据库的压力
    

MySQL

  • 任何基于网络通信的应用程序底层用的都是 socket
  • 本质上是 C/S 架构
- 服务端
		- 基于 socket 通信
  	- 收发消息
    
- 客户端
		- 基于 socket 通信
    - 收发消息 
  • MySQL 采用统一的语言(SQL 语句),以达到兼容各类计算机编程语言的目的

概念

  • 库:相当于文件夹

  • 表:相当于文件

  • 记录:相当于文件内的一行行数据

  • 字段:相当于关键字

常见软件的默认端口号

MySQL   ----- 3306
redis   ----- 6379
MongoDB ----- 27017
django  ----- 8000
flask   ----- 5000
tomcat  ----- 8080

客户端链接服务端命令

# 完整版
mysql -h 127.0.0.1 -p 3306 -uroot -p

# 简写版
mysql -uroot -p

SQL 语句知识

  • MySQL 中的 SQL 语句是以";"作为结束的标志
  • SQL 语句不区分大小写
  • SQL 语句字符串使用单引号标注
  • mysqld 表示服务端

基本命令

1.show databases; ---- 查看所有的库名

2.mysql -uroot -p ---- 连接服务端命令

3.错误命令 \c(;) ---- 取消该命令,";"可省略

4.exit/quit(;) ---- 退出 MySQl,";"可省略

5.mysql ---- 可以直接连接服务端,但并非管理员用户,仅为游客模式

知识点补充

1.查看当前具体进程
tasklist
tasklist | findstr mysqld

2.杀死具体进程
taskkill /F /PID PID号

MySQL 的下载与安装

Windows 系统
1.官网下载压缩包
2.解压得到文件夹
3.进入到 bin 目录下
		- mysql.exe   mysql 的客户端
  	- mysqld.exe  mysql 的服务端
4.先启动服务端,再启动客户端
5.进入到 bin 目录,执行 mysqld 启动服务端
6.启动服务端后,再另起一个 cmd 窗口,进入 bin 目录,执行 mysql.exe 客户端,连接 mysql
7.添加环境变量
	-bin目录路径添加到环境变量中
8.制作系统服务
	- 以管理员身份进入 cmd 中
  - services.msc/任务管理器 --> 服务  # 查看当前计算机的服务及应用程序
  - mysqld --install  # 添加系统服务
  - mysqld --remove  # 移除系统服务
  - 默认情况是未启动状态,需要手动启动,再在属性中将启动方式修改为自动即可

Mac 系统

1.官网下载 DMG Archive 文件
2.打开文件并安装,安装过程中设置登录密码即可
3.配置环境变量
	- 首先,检查你的默认shell是什么,echo $SHELL。
	- 打开终端,输入:sudo vim ~/.zshrc(执行root权限,当前用户的根目录下的.zshrc)
	- 然后在里面输入:export PATH=$PATH:/usr/local/mysql/bin
  - 按ESC,然后输入::wq
  - source ~/.zshrc(重新加载)
  - 通过 which 命令验证:which mysql 输出:/usr/local/mysql/bin/mysql 则配置成功
  • 安装 MySQL 后,系统会自动将 MySQL 制作为系统服务

配置 MySQL 配置文件

my-default.ini
# ini结尾一般都是配置文件
# 程序启动会先加载配置文件中的配置后才真正启动
"""但不能直接在该文件内修改,需要新建一个 my.ini  的配置文件"""
# 只要改变了配置文件需要重启服务端

修改密码

Windows 系统
mysqladmin -uroot -p原密码 passwod 密码
# 该命令直接在终端输入即可,无需进入客户端

破解密码

  • 本质上就是跳过 MySQL 的认证登录功能,相当于跳过认证功能装饰器
1.先关闭 mysql 服务端,并跳过认证功能
mysql --skip-grant-tables

2.直接无密码登录
mysql -uroot -p

3.修改当前用户密码
update mysql.user set password=password(密码) where user='root' and host='localhost';
"""
password(密码) --> password将括号中的密码转化为密文存储
where user='root' and host='localhos' --> 表示修改指定用户密码,若不加此命令即修改所有用户密码
"""

4.立刻将数据刷入硬盘
flush privileges;

5.关闭当前服务端 然后以正常校验授权表的形式启动

增删改查

  • 大部分程序的业务逻辑其实都是增删改查

针对库的增删改查(文件夹)

# 增 -- 创建库
create database 库名;c
create database 库名 charset='gbk'; # 为数据库指定编码,配置文件后可省略

# 删 -- 删除库
drop database 库名;

# 改 -- 修改库的编码
alter databases 库名 charset='utf8';
# MySQL 由于数据安全考虑,在 5.1.23 之后的版本中不再支持库名的修改

# 查 -- 查看库
shows databases;  # 查看所有数据库
show create database 库名;  # 查单个指定数据库

针对表的增删改查(文件)

"""
在操作表的时候,需要指定所在的库
"""

# 查看当前库的名字
select database();

# 切换库
use 库名;

# 增
create table 表名(id int, name char(长度);

# 删
drop table 表名;

# 改
alter table 原表名 renmae 新表名;  # 修改表名
alter table 表名 modify <字段名> char(4);  # 修改字段类型
alter table 表名 modify <字段名> varchar(4);  # 修改字段类型
""" 
- char 代表固定长度数据,即使数据长度不足4个字节,依然占用4字节的空间
- varchar 是可变数据长度,即数据的最大长度为4个字节,若不足4个字节,以实际长度为准
- 一般情况下推荐使用 varchar,只有在确定数据长度且不会改变数据长度的情况下使用 char
"""

# 查
show tables();  # 查看当前库下面所有表名
show create table 表名;  # 查看创建表的语句  
describe/desc 表名;  # 查看表结构

针对记录的增删改查(数据)

# 增
insert into 表名(id, name, age) values (1, 'egon', 18);
insert into 表名(id, name, age) values (1, 'egon', 18), (2, 'ly', 28), (3, 'jason', 20)  
# 批量添加可以提高效率,每添加一条数据需要连接一次数据库,因此将多条数据拼接为一条数据添加即可提升效率
alter table <表名> add <新字段名><数据类型>[约束条件];  # 在表末尾添加字段

# 删
delete from <表名> where id=id;

# 改
update `表名` set `name`='egon' where id=id; # 必须添加 where 限制条件,否则即全表修改

# 查
select * from table;  # 只适用于数据量较小的表,若数据量过大容易造成内存溢出
select id, name from table;  # 在不确定表中数据量的时候,推荐此方法,数据提取更快
  • 在字段、表名、库名标注反引号,增强可读性,且方便底层识别
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值