44.MySQL数据库1
数据库
- 随意存到一个文件中,数据格式也是千差万别的,完全取决于我们自己
#小李 jason|123|NB #小红 egon~123~NB #小王 tank-123-NB
- 软件开发目录,限制了数据的具体存储位置
bin
conf
core
db
lib
interface
readme
假设上述是一个单机游戏
那么每个人的游戏记录也只能在自己的计算机上保存
注册登陆的账号也只能在自己的计算机上有效
- 如何将单机编程联网
先将数据保存部分统一起来,所有人都来同一个地方操作数据
""" 数据库的本质其实就是一款基于网络通信的应用程序 其实每个人都可以开发一款数据库软件,因为它仅仅就是一个基于网络通信的应用程序 也就意味着数据库软件其实有很多种 关系型数据库 MySQL、oracle、db2、access、SQLserver 非关系型数据库 redis、mongodb、memcache """ # 关系型 1.数据之间彼此有关系或者有约束 男生表和前女友表 2.存储数据的表现格式通常都是表格 name password hobby jason 123 read egon 123 DBJ tank 123 吃生蚝 每个字段还有存储类型的限制 比如姓名只能存成字符串形式 # 非关系型 存储数据一般都是以k/v键值对的形式
""" 任何基于网络通信的应用程序底层用的都是socket -服务端 -基于socket通信 -收发消息 -SQL语句 -客户端 -基于socket通信 -收发消息 -SQL语句 """ MySQL不单单支持MySQL自己的客户端app,还支持其他编程语言来充当客户端操作 如何解决语言沟通的障碍 # 1.让服务端兼容所有的语言(一个人兼通多国语言) # 2.采用统一的语言(SQL语句)
""" 库 》》》》》》》》》 文件夹 表 》》》》》》》》》 文件 记录 》》》》》》》》》 文件内的一行行内容 表头 》》》》》》》》》 表格内的第一行字段 字段 》》》》》》》》》 name,age.hobby name age hobby jason 18 reak egon 32 DBJ tank 50 swwiming """
""" 在IT界,一般都不会轻易地使用最新版本的软件,因为新版本可能会出现各种
问题(你原本的项目跑的好好地,非要画蛇添足更新版本,然后项目崩溃) """ MySQL有很多版本,目前使用的是5.7的版本 """ 参考网站: https://www.mysql.com/(官网)--------》DOWNLOADS--------》[MySQL community(GPL)Downloads]----------》
MySQL community server -----------》looking for previous GA versions?------------》
选择 select os verSion:windows(x86-64bit)-----------》
downloads ZIP archive 和zip archive,debug binaries & test suite(两个文件下载好之后,解压即可) 注意:5.7版本解压之后,没有data文件夹,这时候以管理员身份打开cmd命令窗口 切换到MySQL的bin目录下,然后执行:mysqld --initialize-insecure --user=mysql 回车,data文件夹安装成功 为了学习方便,我们将服务端和客户端都在本地启动,后期到了公司,服务端会专门跑在一台服务器上,所有人基于网络链接服务端操作即可 """
""" 服务端 mysqld.exe 客户端 mysql.exe """
""" 在前期配置MySQL的时候,cmd终端尽量 以管理员身份运行 win + r 输入cmd,进入的是普通用户终端,有一些命令是无法执行的 在开始菜单里输入cmd,鼠标右键选择以管理员身份运行 """
- 先切换到mysqld所在的bin目录下,然后输入mysqld即可
- 保留原来的cmd窗口,重新打开一个cmd窗口
""" 服务端启动: 以管理员身份打开cmd终端,切换到bin目录下,输入mysqld回车即可 输入: d: ,切换到d盘 输入:cd 文件夹名称\ 切换到对应的文件夹下面 客户端启动: 保留原来的服务端cmd窗口,重新打开一个cmd窗口,输入以下命令 mysql -h 127.0.0.1 -P 3306 -uroot -p 回车,返回以下内容表示连接成功 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.35 MySQL Community Server (GPL) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL首次以管理员身份进入是没有密码的,直接回车即可 客户端链接服务端完整命令: mysql -h 127.0.0.1 -P 3306 -uroot -p """ 常见软件的默认端口号 MySQL 3306 Redis 6379 mongodb 27017 Django 8000 flask 5000 Tomcat 8080
""" 1.MySQL中的SQL语句是以分号作为结束的标志的 2.基本命令 show databases; 查看所有库名 返回 +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec) 3.连接服务端的命令可以简写为 mysql -uroot -p 4.当你输入的命令不对,又不想让服务端执行并返回消息的时候,可以再语句后面用\c取消执行 错误命令 \c 5.客户端退出命令,退出命令可以不用加分号 quit exit 6.当你在链接服务端的时候,发现输入mysql也能连接 但是你不是管理员身份,而只是一个游客模式,只能使用部分功能或者命令 """
小知识点补充 """ 1.如何查看当前具体进程 tasklist tasklist |findstr mysqld 2.如何杀死具体进程(只有管理员cmd窗口下才能成功) tasklkill /F /PID PID号 """ 环境变量配置 """ 每次启动mysql需要先切换到对应的文件路径下才可以操作,太过繁琐 将mysql所在的文件路径添加到系统环境变量中 """ 这样设置了之后还是繁琐 将mysql服务制作成系统服务(开机自启动) """ 查看当前计算机运行的进程 win+r :输入services.msc命令 将mysql制作成系统服务 win+r 输入 cmd,在命令窗口输入:mysqld --install 移除mysql系统服务 win+r 输入 cmd,在命令窗口输入:mysqld --remove """
""" 在终端输入命令,无需进入客户端 mysqladmin -uroot -p原密码 password 新密码 再次修改密码: mysqladmin -uroot -p123 password 123456 """
出去玩了好几个月,回来发现密码忘记了,死活进不去
""" 你可以将mysql获取用户名和密码校验的功能看成是一个装饰器 装饰在了客户端请求访问的功能上 我们如果将该装饰器移除,那么mysql服务端就不会校验用户名和密码了 """ #1 先关闭当前mysql服务端 #命令行的方式启动(让mysql跳过用户名和密码的验证功能) mysqld --skip-grant-tables #2 直接以无密码的方式连接 mysql -uroot -p 回车 #3 修改当前用户的密码 update mysql.user set authentication_string=password(123456) where user='root' and host='localhost'; """ 真正存储用户表的密码字段,肯定存储的是密文 只有用户自己知道明文是什么,其他人都不知道,这样更加的安全 密码对比也只能对比密文 """ #4 立刻将密码刷到硬盘 flush privilege; #5 关闭当前服务端,然后以正常校验表的形式启动
- mysql默认的配置文件
""" 5.6及之前的版本,有一个默认的配置文件 my_default.ini #这个文件不可以修改 ini结尾的一般都是配置文件 程序启动会先加载配置文件,然后才真正的启动 """ [mysqld] #一旦服务端启动会立刻加载下面的配置 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysql] #一旦客户端启动会立刻加载下面的配置 ... [client] #其他客户端 ... #需要你自己新建一个my.ini的配置文件 #验证配置是否真的是自动加载 [mysql] print('hello world!') #修改配置文件后一定要重启服务端才能生效 #统一编码的配置无需掌握,只需拷贝 #偷懒,将管理员的用户名和密码也写进去 [mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 [mysql] user="root" password=123456 default-character-set=utf8
""" #增 create database db1; create database db2 charset='utf8'; #查 show databases; show create database db1; #改 alter database db2 charset='gbk'; #删 drop database db2; """
""" 在操作表的时候,需要指定所在的库 # 查看当前所在的库名 select database(); # 切换库 use db1; #增 create table t1(id int,name char(16)); #查 show tables; show create table t1; describe t1; desc t1; #改 alter table t1 mofify name char(32); #删 drop table t1; create table db2.t2(id int) # 也可以采用绝对路径的方式操作不同的库 """
""" 一定要先有库,再有表,才可以操作数据 #增 insert into t1 values(1,'jason'); insert into t1 values(1,'jason'),(2,'egon'); #查 select * from t1; select id,name from t1; #改 update t1 set name='jasonNB' where id = 1; #删 delete from t1 where id=1; delete from t1; """