MySQL入门

1. 数据演变史


# 1. 单独的文本文件  -- 文件操作
    没有固定的存放位置和格式
        文件名:user.txt  info.txt...不规范
        数据格式: jack|123  tony-234
    """程序彼此之间无法兼容"""

# 2. 软件开发目录规范
    规定了文件名和存储位置
    """
    文件的查找变得简单了
    但是并没有解决核心问题(程序兼容性问题)
    """

# 3. 数据库阶段
    规定了文件的存储位置和数据格式
    """
    目前正在使用的阶段
    解决了核心问题
    """

2. 数据存储发展史

# 1. 单机游戏阶段  == 游戏演变史
    数据各自保存在各自的计算机上,无法实现共享。

# 2. 多机游戏阶段
    数据统一保存在某个固定的服务器上(计算机)实现数据共享。
    # 前提是必须有网络!!!

"""为了数据的安全,还会采用集群的策略来分担风险"""

3. 数据库的本质


# 本质也是一款 C/S架构的软件
    既然数据库本质是一款 C/S 架构的软件,
    也就意味着每个人都可以编写一个数据库软件,
    所有目前有很多nb的程序员,都具备编写数据库软件的能力,
    并且确实目前市面上真的有很多款数据库软件

"""
数据库在狭义层面上来说
    指的是处理数据的底层程序

数据库在广义层面上来说
    指的是操作这些底层程序的便捷的应用软件

其实数据库很多时候学习的是配套的数据库软件。

"""

4. 数据库的分类(重点)


# 市面上有很多数据库软件,但是大致分为 两类。
1. 关系型数据库
    MySQL      # 目前开源免费,使用非常广泛
    Oracle     # 收费,维护成本高,大型公司可能会使用
    PostgreSQL # 支持二次开发
    # 它可以暴露给用户一个接口,在原本基础上添加更多功能

    MariaDB    # 与MySQL是一个作者,MySQL的替代产品,自身还在发展中(有自己的特性)
    sqllite    # 小型数据库(django框架自带数据库)
    sql server
    db2

2. 非关系型数据库
    Redis
    # 目前最火的缓存数据库,具有很多数据结构,功能强大两种持久化方式

    mongoDB    # 文档型数据库,可以应用在大数据和爬虫领域
    
    memcache   # 几乎没有了,已经被Redis淘汰

"""
1. 两类数据库的区别
    关系型数据库
        **拥有固定的表结构**,并且表与表之间可以建立代码层面的关系
        可以看作一张表,并且拥有固定字段

    非关系型数据库
        没有固定的表结构,数据存储采用的是key:value键值对的形式


2. 这么多数据库,如何学习
    两大类数据库操作逻辑基本一致
    每一类学习一个,基本就可以掌握所有
        关系型:  MySQL
        非关系型:redis,mongodb

"""

5. SQL 与 NoSQL的由来

关系型和非关系型
SQL各种客户端发给关系型数据库的统一语言
NoSQL是非关系型的

数据库的服务端,为了能够兼容不同类型的客户端实现数据交互,所以规定了统一的交互方式
    关系型数据库:  SQL语句
    非关系型数据库:NoSQL语句
# NoSQL有时候也表示 非关系型数据库


6. MySQL

6.1 下载安装


# 1. 主要版本
    5.6  当前市面上使用频率较高的
    5.7  目前正在过渡的版本
    8.x  目前最新的版本(功能强大)

"""不同的版本主要区别在于底层的逻辑,SQL语句几乎是一模一样"""

# 2. 下载
    Windows:
        访问官网 -- 下载 --
        https://downloads.mysql.com/archives/community/

    Mac:
    
    Linux: ji置顶博客


# 3. 目录介绍
    bin文件夹
        mysqld.exe    服务端
        mysql.exe     客户端

    data文件夹
        存储使用过程中需要保存的数据
    my-default.ini
        配置文件(自己可以配置)
    readme
        说明文件


# 4. 基本使用
    一定要先启动服务端,在启动客户端
    "前期操作的时候最好使用管理员cmd操作"
    1. 环境变量的配置
    2. 启动直接输入mysqld启动服务端(不要关闭)
    3. 开设新的cmd窗口操作客户端
        mysql    # 游客模式登录
        mysql -u root -p  # 账户登录(本地使用)
        mysql -h ip地址 -P 端口 -u 用户名 -p 密码
        "第一次登录root用户无密码"


6.2 系统服务


# 将MySQL的服务端制作成系统服务,开机自启动,关机自关闭
1. 先关闭之前的服务端
2. 查看当前计算机系统服务列表
    win r
    services.msc
3. 以管理员身份运行cmd
    mysqld --install  # 仅仅是添加到系统服务中,第一次需要手动启动
4. 启动系统服务
    方式1:鼠标右键 选择启动
    方式2:命令行方式
        net start mysql

"""
停止服务
    net stop mysql

移除系统服务
    mysqld --remove

"""

6.3 密码相关


# 针对管理员用户需要设置密码
    方式1:直接在cmd窗口使用mysqladmin命令
    mysqladmin -u root -p原密码 password 新密码
    eg:由于第一次没有密码,则
        mysqladmin -r root -p password 新密码

    方式2:直接在登录状态下修改当前登录用户的密码
        set password=PASSWORD('密码')

# 忘记密码如何解决(了解)
    方式1:前期数据库里面没有数据,干脆重来!!!

    方式2:稍作了解
        1. 关闭服务端
        2. 以跳过授权表的方式重新启动服务端
            只需要提供用户名就可以登录
            mysqld --skip-grant-tables
        3. 以管理员身份登录
            mysql -u root -p
        4. 修改管理员用户密码
            update mysql.user set password=password(123) where user="root" and host="localhost";    # 修改密码
        5. 关闭服务端再正常启动
            ctrl c
            net start mysql
        6. 使用修改账户的密码登录

6.5 重要概念介绍

"库"    -- 文件夹
"表"    -- 文件夹里面的文件
"记录"  -- 文件夹里面的文件里面的每行的内容


6.6 基本SQL语句

"编写SQL语句的时候,有明确的结束符号 ;分号 "

# 1. 如何查看所有的数据库名称
    show databases;
    "会有一个临时产生在内存的库"
    # information_schema

# 2. 如何查看所有的表名称
    1. 切换库
        use 数据库;
    2. 查看表
        show tables;

# 3. 如何查看所有的记录
    select * from 表名;
    如果内容较多展示不全,出现错乱的情况
    可以在语句后面加 \G


6.7 针对库的 SQL 语句

# 增
create database 数据库名称;

# 查
show databases;  # 查看所有的库名
show create database 数据库名;  # 定向查看某个库

# 改
alter database db1 charset="utf-8";

# 删
drop database 数据库名称;


6.8 针对表的 SQL 语句

"要想操作表必须得先有库"
# 1.建库
    create database db1;
   
# 2.查看当前所在库
    select database();
    
# 3.切换库
    use db1;

# 增
"在关系型数据库中创建表的时候一定要带有字段"
    create table 表名(字段名1 字段类型1,字段2 字段类型2);

# 查
    show tables;    # 查看当前库下面所有的表名。
    show create table 表名;  # 查看指定的表信息。
    describe 表名;  # 提前预览表的字段(具体信息),使用频率高!
    # 可简写:desc 表名;

# 改
    alter table t1 rename tt;  # 修改表名
    alter table tt change id nid int;  # 修改字段名和类型
    alter table tt modify nid char(4); # 修改字段类型

# 删 
    drop table 表名;


6.9 针对记录的操作

"也是先建库和表"
create table t1(id int, name varchar(32), age int);

# 增
    insert into 表名 values(数据,数据,数据);
    insert into t1(1,'jack',22);
    insert into 表名 values(第一条),(第二条),(第三条);

# 查
    select * from 表名;    # 查询表中所有的数据。

# 改
    update 表名 set name="jack123" where id=1;
    update 表名 set 字段名="新数据" where 筛选条件。

# 删
    delete from 表名 where 筛选条件;



6.10 字符编码问题


# 查看MySQL内部默认的编码情况
	\s

"MySQL默认的配置文件>>>:mydefault.ini"
1. 拷贝默认配置文件,并且重新命名为 my.ini

2. 拷贝固定的配置信息
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

3. 重启MySQL服务端

posted @ 2022-02-17 16:12  Joshua_jiaxue  阅读(37)  评论(0编辑  收藏  举报