MySQL数据库学习笔记
今日内容概要
- 数据存取演变史
- 数据库软件应用史
- 数据库的本质
- 数据库的分类
- MySQL数据库
- 基本SQL语句
今日内容详细
数据存取演变史
1.文本文件
文件路径不一致: C:\a.txt D:\aaa\b.txt E:\ccc.txt
数据格式不一致: jason|123 tony^123 kevin@123
2.软件开发目录规范
规定了数据文件的大致存储位置: db文件夹
针对数据格式还是没有完全统一: 比如统一json文件但是内部键值对不同
3.数据库服务
统一了存取位置,也统一了数据格式(完全统一)
数据库软件应用史
1.单机游戏
不同计算机上的相同程序,数据无法共享
数据库服务全部在本地完成
2.网络游戏
不同计算机上的相同程序,数据可以共享
数据库服务单独在网络架设(远程数据库服务)
"""
远程数据库服务
数据库集群
1.数据安全性问题
2.服务器负载问题
让多台服务器运行相同的数据库服务
"""
数据库的本质
1.数据库站在底层原理的角度:数据库指的是专门用于操作数据的进程。
eg:运行在内存中的代码
2.数据库站在现实应用的角度:数据库指的是拥有操作界面的应用程序。
eg:用于操作进程的界面
我们平时在说数据库的时候大部分指的是操作数据库的应用软件
数据库软件本质是一款cs架构的应用程序
言外之意所有的程序员理论上都可以编写!!!>>>:市面上已经有很多数据库软件
数据库的分类
关系型数据库
1.数据的组织方式有明确的表结构(最主要的特征)
eg: id name password
ps:关系型数据库存取数据的方式可以看成是表格
2.表与表之间可以建立数据库层面的关系
eg: 用户表 房屋表
ps:只要获取到用户表的一条数据,就可以获取到与之相关的其他数据
常见关系型数据库名称
名称 | 说明 |
---|---|
MySQL | 开源免费,使用最广泛,数据库学习必学 |
postgreSQL | 开源免费,支持二次开发 |
MariaDB | 开源免费,与MySQL是同一个作者,用法也极其相似 |
Oracle | 收费,安全性极高,但是使用成本高,主要用于银行及各大重要机关 |
sqlite | 小型数据库,主要用于本地测试(django框架自带该数据库) |
db2 | IBM开发的一种大型关系型数据库平台 |
sql server | 老牌数据库软件,目前主流不用 |
非关系型数据库
1.数据的组织方式没有明确的表结构,是以k:v键值对的形式组织的(最主要特征)
2.数据之间无法直接建立数据库层面的关系
常见的非关系型数据库名称
名称 | 说明 |
---|---|
redis | 目前最火,使用频率最高的缓存型数据库 |
mongoDB | 稳定型数据库,最像关系型的非关系型,主要用于爬虫,大数据 |
memcache | 已经被redis淘汰 |
SQL与NoSQL
数据库的服务端支持各种语言充当客户端
eg:以MySQL服务端为例
MySQL客户端,python代码编写的客户端,java代码编写的客户端
为了能够兼容所有类型的客户端,有两种策略
1.服务端兼容
不合理,消耗太多数据库服务端资源
2.制定统一标准
SQL语句,NoSQL语句
SQL语句的意思是操作关系型数据库的语法
NoSQL语句的意思是操作非关系型数据库的语法
ps:SQL有时候也用来表示关系型数据库,NoSQL也用来表示非关系型数据库
MySQL数据库
MySQL简介
版本问题
5.6X:前几年使用频率最高的版本
5.7X:最近尝试迁移的版本(频率增加)
8.0X:最新版,功能很强大,但是线上环境几乎不用(本地自己用非常好用)
'''虽然版本有区别,但是操作上几乎没有区别,主要体现在底层运作'''
下载
1.下载步骤:
1.访问官网>>>2.点击DOWNLOADS>>>3.点击MySQL Community(GPL) Downloads>>>4.点击MySQL Community Server>>>5.点击archives>>>6.选择版本和系统>>>7.点击download
讲解以windows为基准,mac和linux参考下列博客.
linux:https://www.cnblogs.com/Dominic-Ji/p/15124625.html
mac:https://www.cnblogs.com/Dominic-Ji/articles/15402755.html
2.解压处理
建议压缩到D或者E、F盘的根目录方便查找。mysql-5.6.44-winx64.zip >>> mysql-5.6.44-winx64。
目录结构
bin文件夹
mysqld.exe 服务端
mysql.exe 客户端
'''学习阶段服务端在本地启动即可'''
data文件夹
存放数据
my-default.ini文件
默认配置文件
README文件
说明书
基本使用
1.先启动服务端
可能会报错:拷贝关键信息去百度
2.查找mysql文件位置
输入mysqld,启动服务端
cmd窗口就是服务器,不要关闭
3.再次开启新的cmd窗口
输入mysql,充当客户端
直接回车会以游客模式进入,功能很少
4.用户名密码登录
mysql -u用户名 -p密码
mysql默认管理员账号 用户名是root 密码是空
5.退出
exit
quit
系统服务制作
我们可以直接添加mysql的bin目录到环境变量中,就可以直接输入mysql等命令。
将mysql服务端制作成系统服务(随着计算机的开启而启动 关闭而结束)
1.以管理员身份打开cmd窗口
2.执行系统服务命令
mysqld --install
3.启动服务端
1.右键直接点击启动
2.命令启动
net start mysql
命令 | 说明 |
---|---|
services.msc | 查看系统服务的命令 |
net start mysql | 启动mysql服务端 |
net stop mysql | 关闭mysql服务端 |
mysqld --remove | 移除系统服务(先确保服务已经关闭) |
密码相关操作
直接输入mysql登入的是默认的游客模式,没有太多的操作权限,我们可以使用用户名和密码的方式登录。
1.修改密码
通用方式:在cmd窗口下直接修改(不要登录进去)
mysqladmin命令
mysqladmin -u用户名 -p原密码 password 新密码
第一次修改
MySQLadmin -uroot -p password 123
第二次修改
mysqladmin -uroot -p123 password 321
偏门方式:登录状态下修改当前用户密码(先登录)
set password=PASSWORD('新密码');
2.忘记密码
1.直接重装\拷贝对应文件
2.先关闭服务端 然后以不需要校验用户身份的方式启动 再修改 最后再安装正常方式启动
1.net stop mysql
2.mysqld --skip-grant-tables
3.mysql -uroot -p
4.update mysql.user set password=password(123) where Host='localhost' and User='root';
5.net stop mysql
6.net start mysql
数据库重要概念
名称 | 相当于 |
---|---|
库 | 文件夹 |
表 | 文件夹里面的文件 |
记录 | 文件里面一行行数据 |
查看库,表,记录的命令
命令 | 说明 |
---|---|
show databases; | 查看所有的数据库 |
show tables; | 查看所有的表 |
select * from mysql.user; | 查看user表里面所有的记录 |
补充
符号 | 作用 |
---|---|
; | SQL语句结束符 |
\c | 取消SQL语句的执行 |
基本SQL语句
针对库的基本SQL语句
语句和类型 | 说明 |
---|---|
增 | |
create database 库名; | 创建一个库 |
查 | |
show databases; | 查看所有库的名称 |
show create database 库名; | 指定查看某个库的信息 |
改 | |
alter database 库名 charset='gbk'; | 修改字符编码 |
删 | |
drop database 库名; | 删除库 |
针对表的基本SQL语句
查看当前所在的库名: select database(); 如果没有切换指定的库 那么默认是NULL
切换或进入库:use 库名;
语句和类型 | 说明 |
---|---|
增 | |
create table 表名(字段名1 字段类型1,字段名2 字段类型2); | 创建一个表,表里含有字段1和2 |
查 | |
show tables; | 查看当前库下所有的表的名称 |
show create table 表名; | 指定查看某个表的信息 |
describe 表名; | 指定查看表的字段信息 |
desc 表名; | describe 表名;的简写 |
改 | |
alter table 旧表名 rename 新表名; | 修改表名 |
删 | |
drop table 表名; | 删除表 |
针对记录的基本SQL语句
前提:要想操作记录,那么肯定得先有库和表。
语句和类型 | 说明 |
---|---|
增 | |
insert into 表名 values(数据,数据); | 增加单条数据 |
insert into 表名 values(数据,数据),(数据,数据); | 增加多条数据 |
查 | |
select * from 表名; | 查看表里所有的数据 |
select 字段1,字段2 from 表名; | 查看表里指定的字段 |
改 | |
update 表名 set 字段名=新数据 where 筛选条件; | 根据条件筛选数据并修改 |
删 | |
delete from 表名; | 删除表里所有数据 |
delete from 表名 where 筛选条件; | 根据条件删除数据 |
ps:如果查看表的时候表中字段较多出现了错乱,可以结尾写\G
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了