目录

数据库

存储数据的演变过程

返回

  • 随意的存到一个文件中,数据的格式也有很大的差别,完全取决于存数据的人

  • 软件开发目录规范

    限制了存储数据的具体位置

    """
    bin		启动文件
    conf	配置文件
    core	核心逻辑代码
    db		数据存储
    lib		公共方法
    readme	说明文本
    """
    
  • 如何将单机变成联网

    """
    将数据库保存部分统一起来
    所有人操作数据都来一个地方操作
    """
    

数据库的本质

返回

"""
本质其实就是一款基于网路通信的应用程序

也就意味着数据库软件其实有很多很多
	关系型数据库
		MySQL、Oracle、db2、access、sql、server
	非关系型数据库
		Redis、MongoDB、memcache
"""
# 关系型数据库
	1、数据之间彼此有关系或者约束
    2、存储数据的表现形式通常都是以表格存储
    	每个字段还会有存储类型的限制
# 非关系型数据库
	存储数据通常都是以k,v键值对的形式

MySQL

返回

"""
任何基于网络通信的应用程序都是socket

-服务端
	-基于socket通信
	-收发消息
	-SQL语句

-客户端
	-基于socket通信
	-收发消息
	-SQL语句
"""
MySQL不单单支持MySQL自己的客户端APP,还支持其他编程语言来充当客户端操作
为了解决语言沟通的问题,MySQL采用了统一的语言标准(SQL语句)

重要概念介绍

返回

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


name	password	hobby
jason	123			学习
egon	123			女教练
tank	123			吃饭

表头			表格的第一行字段
字段			name password hobby
"""

MySQL的安装

返回

"""
在IT界:一般都不会轻易的使用最新版本的软件,因为新版本可能会出现各种问题
"""

参考网址https://www.mysql.com/

按照教学方式下载,会将服务端和客户端一并下载到本地

为了学习方便我们将服务端和客户端都在本地启动,后期到了公司服务端会专门跑在一台服务器上,所有人基于网路连接服务端操作

MySQL服务端与客户端

返回

"""
服务端
mysqld.exe

客户端
mysql.exe
"""
注意

返回

"""
在前期配置MySQL的时候,cmd终端尽量以管理员的身份运行

Windows+r 输入cmd进入的是普通用户终端,有一些命令是无法运行的
搜索cmd右键,以管理员身份运行
"""
启动

返回

  • 先切换到mysql所在的bin目录下,然后输入mysqld即可
  • 保留原来的cmd窗口重新打开一个
"""
常见软件的默认端口号
	MySQL	3306
	redis	6379
	MongoDB	27017
	djange	8000
	flask	5000
	Tomcat	8080
	。。。
	
MySQL第一次以管理员身份进入是没有密码的,直接回车即可

客户端链接服务端完整命令
	mysql -h 127.0.0.1 -P 3306 -u账号 -p(密码)
"""

sql语句初识

返回

"""
1、MySQL中的sql语句是以分号作为结束的标志

2、基本命令
	show databases;	查看所有的库名
	
3、链接服务端命令可以简写
	mysql -uroot -p(密码)
	
4、当你输入的命令不对,又不想让服务端执行并返回报错信息可以输入 \c 取消错误命令

5、客户端退出  退出命令加不加分号都会执行
	quit
	exit
	
6、当你在链接服务端的时候发现只输入mysql也能连接
	但是你不是管理员身份,而只是一个游客模式
"""

环境变量配置及服务制作

返回

小知识点补充

"""
1、如何查看当前进程
	tasklist
	tasklist |findstr mysqld
	
2、如何杀死具体进程(只有在管理员cmd才可以操作)
	taskkill /F/PID PID号
"""
环境变量配置
"""
每次启动mysql需要先切换到对应的文件路径下才可以操作太过繁琐
将mysqld所在的文件路径添加到环境变量中
"""

还是繁琐,需要起两个cmd,不是蛮好

将mysql服务端制作成系统服务(开机自启)

"""
查看当前计算机运行的进程数
	services.msc
	
将mysql制作成系统服务
	mysqld --install
移除mysql系统服务
	mysqld --remove
"""

设置密码

返回

"""
mysqladmin -uroot -p原密码 password新密码
该命令直接在终端输入,无须进入mysql
"""

破解密码(忘记密码怎么办)

返回

"""
可以将mysql获取用户名和密码校验的功能看成一个装饰器,装饰在了客户端请求访问的的功能上

我们如果将该装饰器移除,那么登录mysql就不会校验用户名和密码了
"""
# 1、关闭当前mysql服务端
	命令行的方式启动(让mysql跳过用户名和密码的校验功能)
	mysqld --skip-grant-tables
# 2、直接以无密码的方式链接
	mysql -uroot -p
# 3、修改当前用户的密码
	update mysql.user set password=password(123456) where user='root' and 
    host='localost';
"""
真正存储用户表的密码字段肯定是密文
只有用户自己知道明文是什么,其他人都不知道,这样更加安全
密码的比对也只能比对密文
"""
# 4、立刻将修改的数据刷到硬盘
	flush privileges;
# 5、关闭当前服务端,然后以正常校验账号密码的功能

统一编码

返回

  • mysql默认的配置文件
"""
my-default.ini
ini结尾的一般都是配置文

程序启动会先加载配置文件中的配置之才会真正启动
"""
[mysqld]  # 一旦服务端启动立刻加载下面的配置
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
[mysql]  # 一旦客户端启动立刻加载下面的配置
......
[client]  # 其他客户端
......


# 需要你自己新建一个my.ini的配置文件

# 统一编码的配置文件
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

# 偷懒,将管理员的用户名和密码也添加到配置文件中(直接输入mysql就可以进入管理员的mysql库)
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
user="root"
password=123
default-character-set=utf8

基本SQL语句

返回

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

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

返回

# 增
create database db1;
create database db2 charset='gbk';  # 可以指定编码
# 查
show databases;  # 查所有的
show create database db2;  # 查单个的
# 改
alter database db2 charset='utf8';
# 删
drop database db2;
针对表的增删改查(文件)

返回

"""
在操作表的时候需要指定所在的库
"""
# 查看当前所在的库的名字
select database();
# 切换库
use db1;
# 增
create table t1(id int,name char(4));
# 查
show tables;  # 查看当前库下面所有的表名
show create table t1;  # 查看某个具体的表
describe t1;  # 推荐使用(支持简写 desc t1;)
# 改
alter table t1 modify name char(16);
# 删
drop table t1;

"""
create table db2.t1(id int);  # 也可以用绝对路径的形式操作不同的库
"""
针对数据的增删改查(一行行的数据)

返回

"""
一定要先有库和表才能操作数据
"""
# 增
insert into t1 values(1,'egon');
insert into t1 values(1,'刘后晟'),(2,'tank');
# 查
select * from t1;  # 该命令在数据量特别大的时候不建议使用
select name from t1;
# 改
update t1 set name='DSB' where id>1;
# 删
delete from t1 where id>1;
delete from t1 where name='刘后晟';

# 清空所有的数据
delete from t1;
posted @   7七柒  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示