数据库

发布时间 2023-10-31 22:16:44作者: 朱饱饱

数据库
如何将单机变成联网:将数据保存部分全部统一起来,所有人操作数据都来一个地方操作
数据库的本质:其实就是一款基于网络通信的应用程序,那其实每个人都可以开发一款数据库软件,因为它仅仅就是一个基于网络通信的应用程序
也就意味着数据库软件有很多:MYSQL,oracle,db2,access,sql server,redis,mongodb,memcache
mysql参考网站:https://www.mysql.com/
注意:在前期配置MySQL的时候cmd终端尽量以管理员的身份运行:
搜索cmd 找到命令提示 右键,以管理员。。。即可输入命令运行
Windows+r 输入cmd 进入的是普通用户终端有一些命令是无法执行的
库☞文件夹
表☞文件
记录☞文件内一行行数据
bin 启动
data 数据
docs 文档
lib 公共功能
scripts 放脚本
readme 软件介绍

服务端:MySQLd.exe
客户端: mysql.exe
启动:

先切换到MySQLd所在的bin目录下,然后输入mysqld即可(命令提示符不可关闭)当做服务端
保留原来的cmd窗口,重新打开一个,链接我们刚刚创建的服务端
输入服务端的地址-h 127.0.0.1-p 3306-uroot-p这是MySQL的默认窗口
常见软件的默认端口号:记一下
MySQL 3306
redis 6379
mongkdb 27017
django 8000
flask 5000

 

MySQL第一次以管理员身份进入,是没有密码的以回车进入即可
SQL语句初识:
1.MySQL中SQL语句是以分号作为结束的标志
2.show databases; 查看全部数据库名查看全部
3.客户端连接服务端完整命令和简写命令:
mysql-h 127.0.0.1-p 3306 -uroot-p
mysql-uroot-p
4.当我输入的命令不对,不需要执行并返回错误信息,可以用\c取消,可以不加分号
5.如何退出客户端,命令行:quit exit 退出命令加不加分号都可以
6.当在连接服务端的时候,发现只输入mysql也能连接,当时这是用不了管理员权限


环境变量配置及系统服务制作:
1,查看当前具体进程
tasklist
tasklist | findstr mysqld
2.如何杀死具体进程(只有在管理员cmd窗口下才能成功)taskkill//F /PID PID号
例如:终止进程8504:
taskkill /F /PID 8504

环境变量配置
每次启动mysqld需要先切换到对应的文件路径下才能操作太多繁琐,所以可以将MySQLd所在的文件路径添加到环境变量中

优化--->将MySQL服务端制作成系统服务(开机自启动)
查看当前计算机的运行进程数:
1.Windows+r 里面运行 写services.msc --☞服务
2.右键最下方一行即可查看进程
将MySQL制作成服务系统:mysqld--install
移除MySQL的系统服务:mysqld--remove
修改密码在终端输入,无需进客户端:
mysqladmin -uroot-p 原密码 password 新密码
后会出现警告和验证旧密码
遗忘密码怎么办:
1.先关闭mysql服务器,直接手动关闭停止
命令行的方式启动(让mysql跳过用户名验证功能) mysqld--skip-grant-tables
2.直接以无密码的方式连接
mysql-uroot-p直接回车
3.修改当前用户的密码,在公司直接告诉运维即可不用自己写
update mysql.user set password=password(新密码)where user='root' and host='localhost'是本地的,将用户名是root的改成新密码,不写后面这一段是将全部用户名密码改为统一新密码,不要这样做
真正存储用户表的密码字段,存储的肯定是密文
只有用户自己知道明文是什么,其他人都不知道,这样更加安全
4.立刻将修改数据刷到硬盘
flush privileges;
5.关闭当前服务器,然后以正常的校验验证授权表的形式启动
屏幕最下方 右键 任务 服务 找到mysql 开始 右键重新运行
统一编码:
mysql默认的配置文件
my-default.ini
ini结尾的一般都是配置文件
程序启动会先加载配置文件中的配置之后才真正的启动
[mysqld] 一旦服务端启动立刻加载下面的配置
sql_mode=NO_ENGINE_SUBSTITUTION,SRANS_TABLES
[mysql]一旦客户端启动立刻加载下面的配置
[client]其他客户端
需要先自己新建一个my.ini的配置文件
验证配置是否真的是自动加载
[mysql]
print('hello Word')
修改配置文件之后一定要重启服务才能生效
把字符编码改成utf-8,写在my.ini里面:
[mysqld] #服务端
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]#客户端
default-character-set=utf8
统一编码的配置无需掌握,直接拷贝即可
Ctrl+s 保存 再重新启动 再链接
\s查看编码是否统一
偷懒:将管理员的用户名的密码也添加到配置文件中,在mysql下写:
user="root"
password=自己的密码
后输入mysql可以直接进来mysql-uroot-p查看库名


基本SQL语句:
desc t5;查看这个表信息,名字类型等
ps:大部分程序的业务逻辑都是增删改查
针对库、表、数据的增删查改
库(文件夹):
增:create database db1;增加库名db1
create database db2 charset='gbk';增加库名db2,格式为gbk
查:show databases;查全部
show create database db1;查单个
改:alter database db2 charset='utf-8';
删:drop database db2;

表:要操作表,就先要找到具体的库下,所以:
查看当前所在的库的名字
select database();
切换库:use db1;就找到具体的库里,下面就开始对表操作
增:create table t1(id int,name char(4)
增加表t1,id字段必须是数字,那么必须是字符串,字符串也可以规定最大的位数,例如4
create table db2.t1(id int);
也可以用绝对路径的形式操作不同的库
查看:show tables;查看当前库下面所有的表名
show create table t1;
describe t1;描述t1,会出现一张表格,描述更全,支持简写:desc t1;
改:alter table t1 modify name char(16)修改,char会变成16位
删:drop table t1;

复制粘贴时,复制正常粘贴鼠标右键即可
数据:
先确定库---->表---->才能操作数据
增:insert into values(1,'zhu'),(2,'qi');
可以增加一个或者多个,中间用逗号隔开
查:
select * from t1;查看t1所有的数据,数据量大时不建议使用
select name from t1;单独查阅name这一列的数据
改:update t1 set name='shasha' where id>1;
删:delete from t1 where id>1;删除id>1的
delete from t1 where name='shasha';删除name为shasha的
将表所有的数据清空:delete from t1;


复习:
修改密码:在cmd中输入
mysqladmin -uroot-p原密码password新密码