MySQL_01 安装、密码设置、"库 、表、记录"的增删改查、字符编码设置


概要   1 数据演变史 2 数据存储发展史 3 数据库的本质 4 数据库的分类(重点) 5 SQL于NoSQL的由来 6 MySQL数据库的安装及基本使用 7 系统服务 8 密码相关 9 重要概念介绍 10 如何查"数据库名"、"表名"、"所有的记录" 11 库的"增、删、改、查" 12 表的"增、删、改、查" 13 记录的"增、删、改、查" 14 字符编码相关   详细   1 数据演变史  
# 1.单独的文本文件
    没有固定的存放位置和格式
        文件名:user.txt userinfo.txt data.txt
        数据格式:jason|123 tony~123 kevin$123
    """程序彼此之间无法兼容"""
 
# 2.软件开发目录规范
    规定了文件名和存储位置
    """文件的查找变得简单了  并没有解决核心问题"""
 
# 3.数据库阶段
    规定了文件的存储位置和数据格式
    """目前正在使用的阶段  解决了核心问题"""
2 数据存储发展史  
# 1.单机游戏阶段
    数据各自保存在各自的计算机上 无法实现共享
 
# 2.多机游戏阶段
    数据统一保存在某个固定的服务器上(计算机)  实现数据共享
    前提:必须有网络
 
'''为了数据的安全 还会采用集群策略来分担风险'''
  3 数据库的本质  
# 本质也是一款cs架构的软件
    既然数据库本质是一款cs架构的软件 也就意味着我们每个人都可以编写一个数据库软件
    在目前地球上有很多牛逼的程序员 他们都具备编写数据库软件的能力 并且目前市面上真的有很多款数据库软件
"""
 
数据库在狭义层面上来说
    指的是处理数据的底层程序
 
数据库在广义层面上来说
    指的是操作这些底层程序的便捷应用软件
 
其实学习数据库很多时候学习的是配套的数据库软件
"""
  4 数据库的分类(重点-要能默写出来)  
# 市面上有很多数据库软件 但是大致就分为两类
1.关系型数据库
    MySQL、Oracle、PostgreSQL、MariaDB、sqlite、sql server、db2
        MySQL:开源免费 使用非常规范
        Oracle:收费 维护成本高 大型公司可能会使用
        PostgreSQL:支持二次开发
        MariaDB:MySQL的替代产品(并且有自己的特性)
        sqlite:小型数据库(django框架自带该数据库)
        
            
2.非关系型数据库
    Redis、mongoDB、memcache
        Redis:目前最火的缓存数据库 具有很多数据结构 功能强大
        mongoDB:文档型数据库 可以用在大数据和爬虫领域
        memcache:已经被redis淘汰
       
"""
1.两类数据库的区别
    关系型数据库
        拥有固定的表结构 并且表与表之间可以建立代码层面的关系    
    非关系型数据库
        没有固定的表结构 数据存储采用的是K:V键值对的形式
2.这么多数据库如何学习
    两大类数据库操作逻辑基本一致
        每一类学习一个基本就可以掌握所有
            关系型学MySQL
            非关系型学redis、mongodb
"""
  5 SQL于NoSQL的由来  
数据库的服务端为了能够兼容不同类型的客户端实现数据交互
所以规定了统一的交互方式
    关系型数据库>>>:SQL语句
     非关系型数据库>>>:NoSQL语句
# NoSQL有时候也表示 非关系型数据库
  关系型与非关系型数据库   6 MySQL数据库的安装及基本使用     若想重新安装MySQL怎么操作:
  • step1 停止服务
    • 退出客户端-命令: exit; 回车
    • 关闭当前cmd窗口
  • step2 移除服务
    • 以管理员身份重新打开cmd窗口
    • 停止服务-命令: net stop mysql
    • 移除服务端-命令: mysqld --remove
  • step3 重新安装
    6-1 安装   step1 浏览器输入mysql,找见并进入官网 step2 点击下载 step3 找见社区版,点击进入 step4  点击如下框 step5 step6 版本选择和位数选择   版本: """不同的版本主要区别在于底层的逻辑 SQL语句几乎是一模一样的"""     5.6:使用频率较高的版本(√)     5.7:目前正在过渡的版本     8.0:目前最新的版本   详细 step7 解压   说明:   6-2 关于解压后内相关文件夹介绍   1) bin文件夹 
  • mysqld.exe 服务端可执行文件
  • mysql.exe 客户端可执行文件
2) data 文件夹
  • 保存数据的文件夹
  6-3 基本使用   step1 先启动服务端(第7部分会将服务端设置成开机自启动,然后本步就不需要了) 以管理员运行cmd,环境变量配置好后,直接输入mysqld启动服务端(当前cmd窗口不要关闭) step2 客户端启动并链接服务端   只输入mysql也能链接,不过是以游客身份进去的 mysql -u用户名 -p密码  # 账号登录(本地使用) mysql -hIP地址 -P端口号 -u用户名 -p密码  # 完整命令 """第一次登录 root用户没有密码 直接连续回车即可"""   演示参考(未配置环境变量时)   补充:   输入错误命令后如何取消: \c 退出客户端: quit 或 exit       7 将mysql服务端设置成系统服务(开机自启动) """前期在配置MySQl时候最好使用管理员cmd操作,防止以普通用户运行一些命令无法生效"""     step1   环境变量配置:  背景: 每次启动mysqld(服务端)需要先切到对应文件路径下才能操作,太繁琐 方法: 将mysqld.exe(在bin文件夹下)的路径添加到环境变量path.   step2 停止服务(若之前开启的话)   step2.1 方式1-cmd窗口输入   net stop mysql <末尾没有分号> ~注: 若没有,以管理员身份新打开一个cmd窗口   方式2-任务管理器->服务>中的mysql选择停止   step2.2 最后关闭服务端和客户端cmd窗口,若之前打开的话     step3 制作系统服务   命令 mysqld --install  # 仅仅是添加到了系统服务 第一次需要手动启动   step4 启动服务   方式1-命令行方式重启服务端(mysqld) 以管理员身份新打开一个cmd窗口 net start mysql <末尾没有分号>   方式2-任务管理器中服务栏中的mysql选择启动     补充:    补充#1  查看当前及计算机系统服务   方式1: cmd命令: services.msc 回车   方式2: 任务管理器->服务 中可以看到   补充#2  移除mysqld服务端服务   cmd命令:  mysqld --remove   补充#3 停止服务 命令: net stop mysql   补充#4 
  • 如何查看当前具体进行
    • tsaklist
    • tasklist | findstr mysqld
  • 如何杀死进程
    • taskkill /F /PID PID号
    8 密码相关   8.1 处于未登陆状态时 命令: mysqladmin -uroot -p password   8.2 处于登陆状态时 命令: set password=PASSWORD('密码')   8.3 忘记密码怎么办? step1 先关闭MySQL服务端 step2 命令行以跳过授权表的方式重新启动服务端 命令: mysqld --skip-grant-tables step3 打开一个新cmd窗口,客户端登陆,发现无密码即可登陆 step4 修改当前用户密码 命令: update mysql.user set password=password(123) where user="root" and host="localhost"; step5 关闭服务端 关闭cmd窗口服务端及客户端   step6 重新启动MySQL服务端 方式1-命令行方式重启 新打开一个cmd窗口 net stop mysql net start mysql 方式2-任务管理器中服务栏中的mysql选择启动   step7 以校验密码的方式登陆 以用户名和新设定密码登陆成功       9 重要概念介绍   9-1 什么是"库" 即 文件夹 以下是一一对应的 9-2 什么是表: 文件夹里的文件 9-3 什么是记录: 文件夹的文件里的内容     10 如何查"数据库名"、"表名"、"所有的记录"以及"切换库" ~注: SQL语句的结束必须用分号   10-1.如何查看所有的数据库名称 cmd命令:  show databases;  '''会有一个临时产生在内存的库:in...sc'''   10-2.如何查看所有的表名称     cmd命令:     use 库名;  '''切换库(类似于双击了文件夹)'''     show tables;   10-3.如何查看所有的记录     cmd命令:     select * from 表名;     如果内容较多展示补全出现错乱的情况 可以在语句后面加\G     11 库的"增、删、改、查"   cmd命令:   11.1 增 create database 数据库名; 11.2 查 1) show databases;  # 查看所有的库名 2) show create database 数据库名;  # 定向查看某个库 演示 注意:以下三个是默认库,不要对其做任何增删改查操作,否则会出问题.   11.3 改 alter database 数据库名 charset='gbk'; 11.4 删 drop database 数据库名; 演示     12 表的"增、删、改、查"   """ 要想操作表必须得先有库     1.没有则先创建库     2.有,则查看当前所在的库名         select database();     3.切换库到库名对应的库         use bd1; """ 演示   cmd命令:   12-1 增: create table 表名(字段名1 字段类型1,字段2 字段类型2); 12-2 查: describe 表名;  # 查看表的具体信息(常用)  简写 desc 表名; 其他查 show tables;  # 查看当前库下面所有的表名 show create table 表名;  # 查看指定的表信息 演示   12-3 改   1)修改表名   2)修改字段名和字段类型 如 id改为nid; int 改为char(4)   格式: alter table ttt change id nid int;  # 修改字段名 alter table ttt modify nid char(4);  # 修改字段类型   演示   12-4 删:  格式:  drop table 表名;   演示     13 针对"记录"的"增、删、改、查" """ 肯定得先确定库和表 """ 13-1增 cmd命令: insert into 表名 values(数据,数据,数据);  '''单条数据''' insert into 表名 values(),(),();  '''多条数据'''   13-2查 cmd命令: select * from 表名;  '''查询表中所有的数据'''   13-3改 cmd命令: update 表名 set 字段名='新数据' where 筛选条件;   演示   13-4 删 cmd命令: delete from 表名 where 筛选条件; delete from 表名 ;  # 不加条件,删除所有.   演示     14 字符编码设置- 防止中文不显示   14-1 不识别中文现象   原因: 字符编码问题   14-2 查看当前字符编码 命令: \s   14-3 修改成统一的字符编码: utf-8 [属于新安装MySQL后要设置内容] """MySQL默认的配置文件>>>:mydefault.ini"""   步骤 14-31 拷贝默认配置文件到当前文件夹,且重命名为my.ini """ ini结尾的一般都是配置文件 -程序启动会先加载配置文件中的配置才真正启动   [mysqld]  # 服务端启动,加载下面的文件 character-set-server=utf8 collation-server=utf8_general_ci [client]  # 其他语言(python、java等)写的客户端启动,加载下面的文件 default-character-set=utf8 [mysql] # mysql自己客户端启动,加载下面的文件 default-character-set=utf8   """   演示 新建文件,并改后缀.   14-32 拷贝固定信息到my.ini   """ [mysqld] character-set-server=utf8 collation-server=utf8_general_ci sql_mode=strict_trans_tables [client] default-character-set=utf8 [mysql] default-character-set=utf8 """   14-33 重启MySQL服务端   step1 关闭windows系统的服务端cmd窗口 step2 以管理员打开cmd step3 重启mysql服务 step4 登陆mysql 本次为root用户无密码,若已设置密码,要输入新密码 step5 查看字符编码是否更改生效-发现已生效 ~注意: 原来的库的"Db characterset"对应的字符编码还是原来的,即输入汉字原来的库可能会因为字符编码问题无法继续无法展示,若要显示则需手动更改为utf8; step6 新建一个库: create database xxx; step7 进入该库: use xxx; step8 新建一个表,新建一个有汉字的记录,查看发现汉字正常显示   补充: 退出命令