- 存储数据的演变过程
- 随意的存到一个文件中
- 数据格式也是千差万别的完全取决于我们自己
- 软件开发目录规范
- 限制了存储数据的具体位置
- bin启动文件
- conf配置文件
- core业务逻辑(核心代码)
- db数据文件夹(dbhandler)
- lib公共方法
- readme.txt用户使用说明
- log日志文件
- 如何将单机变成联网
- 将数据库保存部分全部统一,所有人操作数据都在同一个地方操作
- 数据库的本质
- 本质其实是一款基于网络通信的应用程序
- 数据库软件:
- 关系型数据库:
- 数据之间彼此有联系/关系或者约束
- 存储数据的表现形式通常是以表格存储
==========================
name password age
张三 123 18
李四 345 19
==========================
每个字段还会有存储数据类型的限制
MySql、oracle、db2、access、sql server
非关系型数据库:
- 存储数据通常是以key,value键值对的形式
- 主要用于作缓存,减轻数据库的压力
- redis、mongodb、memcache
MySQL
- 任何的基于网络通信的应用程序,底层用的都是socket
- 服务端
- 基于socket通信
- 收发消息
- 客户端
- 基于socket通信
- 收发消息
- MySQL自己编写的客户端APP
- python代码书写的客户端
- php代码书写的客户端
- Java书写的客户端
- SQL语句
- 如何解决语言沟通的障碍?
- 让服务端兼容所有的语言
- 采用统一的语言(SQL语句)
重要概念介绍
- 库------>文件夹
- 表------>文件
- 记录------>文件内一行行的记录
- 表头------>表格的第一行字段
- 字段------>表格的第一行的内容
在IT界,一般都不会使用最新版的软件,
因为新版本可能会出现各种问题BUG(墨守成规的原则)
MySQL服务端与客户端
- 服务端:
- mysqld.exe
- 客户端:
- mysql.exe
- 注意:
- 在前期配置MySQL的时候,cmd终端是以管理员方式运行的终端
Window中搜索cmd---以管理员方式运行
启动
先切换到mysql所在的bin目录下,然后输入mysqld启动服务端即可
保留原来的cmd窗口,重新打开一个cmd窗口
常见软件的默认端口号:Mysql:3306redis:6379mongodb:27017django:8000flask:5000mysql第一次在连接的时候是以管理员的方式连接的,没有登录密码客户端连接服务端完整命令:mysql -h 127.0.0.1 -P 3306 -uroot -p命令可以简写为:mysql -uroot -p
sql语句初始
MySQL中的sql语句是以分号作为结束的标志
- 基本命令:
show databases;查看所有的库名
当输入的命令不对,又不想让服务端执行并返回报错信息,可以用\c取消
客户端退出(退出命令不加分号也能执行)
quit
exit
只输入mysql也能进入客户端,但是此时不是管理员模式,只是游客模式
环境变量配置及系统服务制作 如何查看当前具体进程 tasklist tasklist |findstr mysqld 如何杀死进程(只有在管理员cmd窗口下才能成功) taskkill /F /PID PID号(进程号)环境变量配置 将mysql所在的文件路径添加到环境变量中 【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ;分割】将mysql服务端制作成系统服务(开机自启动) 查看当前计算机的运行进程数 services.msc 将mysql制作成系统服务命令 mysqld --install 移除mysql系统服务 mysqld --remove 注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令: # 启动MySQL服务 net start mysql # 关闭MySQL服务 net stop mysql
- 设置密码
mysqladmin -uroot -p原密码 password 新密码 直接在终端下输入该命令 无需进入mysql myadmin -uroot -p666 password 12345
- 忘记密码
你可以将mysql获取用户名和密码校验的功能堪称是一个装饰器装饰在了客户端请求访问的功能上我们如果将该装饰器移除,那么mysql服务端就不会校验用户名和密码了 1、先关闭当前MySQL服务端 命令行的方式启动(让MySQL跳过用户名密码验证功能) mysqld --skip-grant-tables 2、直接以无密码的方式连接 mysql -uroot -p直接回车 3、修改当前用户的密码 update mysql.user set password=password(密码) where user='root' and host='localhost'; 真正存储用户表的密码字段 存储的肯定是密文 只有用户自己知道明文是什么 其他人都不知道 密码比对也只能比对密文 4、立刻将修改数据刷到硬盘 flush privileges; 5、关闭当前服务端,以正常校验授权表形式启动
- 统一编码格式
\s 查看当前配置下的编码格式my-default.iniini结尾的一般都是配置文件 程序启动会先加载配置文件中的配置之后才会真正的启动 # xml [mysqld] # 一旦服务端启动就会加载下面的配置sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES[mysql] # 一旦客户端启动,就会加载下面的配置...[client] # 其他语言客户端... # 需要你自己新建一个my.ini的配置文件 # 配置文件修改好后,需要重启服务端 #1. 修改配置文件[mysqld]character-set-server=utf8collation-server=utf8_general_ci[client]default-character-set=utf8[mysql]user="root"password=123 default-character-set=utf8 #2. 重启服务 #3. 查看修改结果:\sshow variables like '%char%'
- 基本的sql语句
大部分程序的业务逻辑其实都是增删改查针对库的增删改查(文件夹)增create database 文件夹名; creat database db1;查 show databases; # 查所有 show create database db1; # 查单个改 alter database db1 charset latin1; # 修改db1的编码格式为latin1编码格式删 drop database db1; # 删除数据库db1针对表的增删改查(文件)操作表(文件)的时候,需要指定所在的库(文件夹)查看当前所在的库(文件夹):select database();切换库(文件夹):user db1 ;# 切换到db1这个库下增 create table t1(id int,name char(4)); # 创建的表的名称为t1,id字段的类型为int,name字段的类型为char类型,(4)表示最大只能存4字符串查 show tables; # 查看当前库下的所有表 show create table t1; # 查单个 describe t1; # 查单个 以表格的形式展示 简写:desc t1;改 alter table t1 modify name char(6); # 改name字段的字符串长度为6删 drop table t1; # 删除t1表针对数据的增删改查(一行行数据)一定要先有库,先有表才能创建数据增 insert into t1 values(1,'张三'),(2,'李四'),(3,'王五'); # 逗号隔开,支持多个数据插入查 select * from t1; # *所有 查看表t1所有的内容 该命令当数据量特别大的时候不建议使用 slect name from t1; # 将t1表中所有用户的name拿出来 改 update t1 set name='sb' where id=2; # 将t1表中id为2的数据的name改为sb删 delete from t1 where id=1; # 将id为1的数据删除 delete from t1 where name = 'sb'; 清空表: delete from t1; #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。 truncate table t1;数据量大,删除速度比上一条快,且直接从零开始, auto_increment 表示:自增 primary key 表示:约束(不能重复且不能为空);加速查找
完