首页 > 数据库 >数据库(部分讲解)

数据库(部分讲解)

时间:2022-11-22 19:55:27浏览次数:56  
标签:数据 数据库 mysql 讲解 localhost 表名 部分 服务端

存取数据的演变史

文本文件

  • 文本文件有两个主要的缺点:

    ​ 第一个就是不能保证多用户存取的文件路径一致

    ​ 第二个就是不能保证多用户存取的数据格式一致

软件开发目录规范

  • 软件开发目录规范了数据文件的大致存储位置:

    ​ db文件夹;但是针对数据格式还是没有完全的统一

数据库服务(重点)

  • 统一路径 统一操作方式

    降低学习成本 提高开发效率

数据库软件应用史

单机模式

  • 在不同计算机上的相同程序,数据是无法共享,因为数据库服务全部在本地完成

网络游戏

  • 在不同计算机上的相同程序,数据可以共享,因为数据库服务单独在网络架设(远程数据库服务)

数据库的本质

  • 数据库三字在不同角度下描述的意思是不一样的,当我们不做特殊说明的情况下提供数据库其实都是在指数据库软件,我们也称数据库软件本质上是一款C/S架构的应用程序,言外之意所有的程序员理论上都可以编写(市面上已经有很多数据库软件)

站在底层原理角度

数据库指的是专用于操作数据的进程
eg:运行在内存中的代码

站在实际应用的角度

数据库指的是拥有操作界面的应用程序
eg:用于操作进程的界面

数据库的分类

  • 数据库分为:关系型数据库和非关系型数据库

关系型数据库

特征1:数据的组织方式有明确的表结构(字段名 字段类型)
	eg:id name password
    ps:关系型数据库存取数据的方式可以看成是表格
特征2:数据之间可以建立数据库层面关系
	eg:用户表数据 豪车表数据 豪宅表数据
    ps:只要获取到某一表的一条数据,就可以获取到与之相关的其他表数据
3.常用的关系型数据库:MySQL、PostgreSQL、MariaDB、Oracle、sqlite、db2、sq1、server
    1.MySQL:是开源的,使用最为广泛的,数据库学习必须要学习的
    2.Oracle:收费 使用成本较高但是安全性也最高
    3.PostgreSQL:是开源的,支持二次开发,兼容性极高
    4.MariaDB:跟MySQL是一个作者 开源免费
    5.sqlite:小型数据库 主要用于本地测试(django框架自带该数据库)

非关系型数据库

特征1:数据的组织方式没有明确结构,是以k:v键值对的形式组织的
    eg:{'name': 'jason', 'pwd': 123}
        {'username': 'kevin'}
特征2:数据之间无法直接建立数据库层面的关系
    ps:可以直接编写代码建立逻辑层面的关系
3.常用的非关系数据库:redis、mongoDB、memcache
    redis:是目前最火的,使用频率最高的缓存型数据库
    mongoDB:文档型数据库,最像关系型的非关系型,主要用于爬虫、大数据
    memcache:已经被redis淘汰
  • 总结:虽然数据库软件有很多 但是存在方式都差不多 学会了一个几乎就可以学会所有

    ​ 其中MySQL最为典型

  • 数据库的架构可以大致区分为三个概括层次:内层、概念层和外层

MySQL

Mysql介绍

  • mysql是一款Oracle公司出口的轻量级数据库软件,广泛应用于互联网场景,同时也是目前最主流的数据库

Mysql的优点

Mysql相对于文件系统,优点如下:

  1. mysql的结构相对于文件系统更方便管理
  2. mysql支持各种编程语言
  3. mysql比文件系统支持更大规模的数据
  4. mysql更具备扩展性
  5. mysql数据能更快的检索
  6. mysql支持分布式

版本问题

  • 8.x:最新版

  • 5.7:使用频率较高

  • 5.6:学习推荐使用

  • ps:站在开发的角度使用哪个版本学习都没有关系

下载流程

  1. 访问官方网址
    2.点击DOWNLOADS并点击GPL
    image
    image
    3.点击community server
    image
    4.点击Archives
    image
    5.选择对应系统的对应版本下载即可(zip压缩包)
    image
    把下载好的文件拖到桌面进行解压即可
    image

主要目录介绍

  • bin目录
存放启动文件
   	mysqld.exe(服务端)	mysql.exe(客户端)
  • data目录
存放核心数据
	my-default.ini(默认的配置文件)
	readme(软件说明)

MySQL基本使用

cmd建议你使用管理员身份打开
image
1.切换到mysql的bin目录下先启动服务端

mysqld

image
2.保持窗口不关闭 重新打开一个新的cmd窗口
3.切换到mysql的bin目录下启动客户端

mysql

image
'''直接使用mysql命令默认是游客模式 权限和功能都很少'''

管理员账户登录

管理员默认是没有密码的 连续回车即可
image
mysql -u用户名 -p密码

常见报错解决方案

1.localhost上的mysql无法连接

报错代码:

ERROR 2003 (HY000):Can’t connect to MySQL server on 'localhost' (10061)

报错原因:

① 很明显,localhost本机是存在的;但是它却没有提供mysql的服务供给使用

② 检查磁盘空间是否还有剩余可用空间,尽量保持有足够的磁盘空间可用

③ 查看mysql的负载能力,可能存在mysql的负载过高我们连接不上;一般是看processlist来看下具体线程和连接数运行情况:
       
       1、show processlist只能列出当前100条,我们可以看到所有用户的连接情况
       
       mysql> show processlist;
        +----+-----------------+-----------+------+---------+-------+------------------------+------------------+
        | Id | User            | Host      | db   | Command | Time  | State                  | Info             |
        +----+-----------------+-----------+------+---------+-------+------------------------+------------------+
        |  4 | event_scheduler | localhost | NULL | Daemon  | 30404 | Waiting on empty queue | NULL             |
        | 14 | root            | localhost | NULL | Query   |     0 | starting               | show processlist |
        +----+-----------------+-----------+------+---------+-------+------------------------+------------------+
        2 rows in set (0.00 sec)
       
       2、查看全部的链接情况
       
       mysql> show full processlist;
        +----+-----------------+-----------+------+---------+-------+------------------------+-----------------------+
        | Id | User            | Host      | db   | Command | Time  | State                  | Info                  |
        +----+-----------------+-----------+------+---------+-------+------------------------+-----------------------+
        |  4 | event_scheduler | localhost | NULL | Daemon  | 30527 | Waiting on empty queue | NULL                  |
        | 14 | root            | localhost | NULL | Query   |     0 | starting               | show full processlist |
        +----+-----------------+-----------+------+---------+-------+------------------------+-----------------------+
        2 rows in set (0.00 sec)
        
# 注意,针对以上查看结果进行详细字段说明:

① Id 当用户登录mysql时,系统会为用户分配一个"connection_id",可以使用函数connection_id()来查看:
    mysql> select connection_id();
    +-----------------+
    | connection_id() |
    +-----------------+
    |              14 |  -- 系统分配的id为14
    +-----------------+
    1 row in set (0.01 sec)

② User 展示当前链接用户

③ Host 连接mysql的ip地址;可查到来源端口,同时可以跟踪出现问题语句的用户

④ db   连接数据库的名称

⑤ Command 当前链接执行的命令;query(查询)、sleep(休眠)、connect(连接)、daemon(守护进程)

⑥ Time  当前连接持续时长,单位时间是秒

⑦ State 展示当前连接的sql语句状态

⑧ Info 展示sql语句,对用来判断sql语句是否有问题很重要

问题解决方案:

① mysql未启动,则启动即可:

    mac端:brew services start mysql   mysql.server start 
    centos端: systemctl start mysqld.service    service mysql start
    其他:找到执行文件根目录执行 启动也ok

2.localhost/IP地址连接不上

报错代码:

➜  ~ mysql -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

报错原因:

① 概述:用户root访问localhost/IP被拒绝访问

② 一般是数据库的用户名或者密码跟服务器上mysql设置的不一致,导致匹配失败

问题解决方案:

# 注意解决步骤:

① 查看mysql配置文件

② 查看 mysql 配置文件加载顺序

③ 修改配置文件跳过权限验证(skip-grant-tables)

④ 登录mysql客户端修改密码
  • 总结:遇到报错不要慌,拷贝报错信息,然后百度搜索

系统服务的制作

1.bin目录添加到环境变量

image

image
image
清空之前打开所有的cmd窗口 一定要把之前的cmd启动的服务端关闭,快捷键(ctrl+c)

2.将mysql添加到系统服务

  • 如何查看系统服务
    第一种方法:打开设置,搜索任务管理器,点击服务即可查看
    image
    第二种方法:cmd输入services.msc回车即可查看
    image
  • 以管理员身份打开cmd窗口
    image

3.首次添加不会自动启动 需要人为操作一下

  • 方式1:鼠标右键点击启动
  • 方式2:命令行启动
    输入:net start mysql
    image

如果想卸载重新安装

cmd窗口
1.先关闭服务端
net stop mysql
2.移除系统服务
mysqld --remove

密码相关操作

修改密码

  • 方式1:mysqladmin
    先输入下列指令:
    mysqladmin -u用户名 -p原密码 password 新密码
  • 方式2:直接修改存储用户数据的表
    select * from mysql.user\G
    这种方式需要先登录才能修改
    \G读取的内容出现格式错乱,跟上\G后可以一行行展示文件内容
  • 方式3:冷门操作 有些版本可能还不支持
    set password=password('新密码')

忘记密码

  • 方式1:卸载重新装

  • 方式2:把data目录删除 拷贝他人的目录

  • 方式3:小把戏操作
    关闭正常的服务端
    net stop mysql
    image
    以跳过授权表的方式重启服务端(不校验密码)
    mysqld --skip-grant-table
    image
    重新开一个cmd窗口
    以管理员身份进入然后修改mysql.user表数据即可
    mysql -uroot -p
    image

    update mysql.user set password=password('123') where Host='localhost' and User='root';
    最后一行的代码的作用是设置root账号的密码为123
    image
    关闭服务端 然后正常方式启动即可

SQL与NoSQL

  • 数据库服务端是可以服务多种类型的客户端,客户端可以是自己开发的,也可以是python代码编写,也可以是java代码编写,但是这样就导致了数据库服务端操作会变得复杂。

  • SQL和NoSQL就相当于是数据库服务端规定了客户端操作服务端的数据时需要使用的语言。

SQL(操作关系型数据库的语言)

  • SQL结构化查询语言是一种数据库操作的非过程式编程语言,用于存取数据以及查询、更新和管理关系型数据库系统,一般脚本文件后缀为.sql

NoSQL(操作非关系型数据库的语言)

  • NoSQL泛指非关系型数据库,主要用于针对超大规模和高并发的社交SNS类型网站的解决方案

    ps:要想跟数据库交互就必须使用数据库指定的语言。

  • 总结:SQL有时候也指代关系型数据库

    NoSQL有时候也指代非关系型数据库

数据库重要概念

什么是数据库服务器

  • 运行有DBMS服务端的计算机,该计算机对内存和硬盘要求都相对较高

什么是数据库管理系统

管理数据的套接字软件,CS架构

记录 数据
文件夹 文件 文件夹里面的文件中一行行代码 事物的状态

验证指令

查看所有的库名称 查看所有的表名称 查看所有的记录
show databases; show tables; select * from mysql.user;

基本SQL语句

注意事项

  • sql语句必须以分号结尾
  • sql语句编写错误之后不用担心 可以直接执行报错即可

基于库的增删改查指令

创建库 查看库 编辑库 删除库
create database 库名; show databases; 查看所有的库名称 alter database 库名 charset='utf8'; drop database 库名;

基于表的增删改查

​ 操作表之前需要先确定库
​ create database db1;
​ 切换操作库
​ use db1;

  • 创建表
    create table 表名(字段名 字段类型,字段名 字段类型);
  • 查看表
    show tables; 查看库下所有的表名称
    show create table 表名; 查看指定表信息
    describe 表名; 查看表结构
    desc 表名;
    ps:如果想跨库操作其他表 只需要在表名前加库名即可
    desc mysql.user;
  • 编辑表
    alter table 表名 rename 新表名;
  • 删除表
    drop table 表名

基于记录的增删改查

插入数据 查询数据 编辑数据 删除数据
insert into 表名 values(数据值1,数据值2); select * from 表名; 查询表中所有的数据 update 表名 set 字段名=新数据 where 筛选条件; delete from 表名;
delete from 表名 where id=2;

标签:数据,数据库,mysql,讲解,localhost,表名,部分,服务端
From: https://www.cnblogs.com/oiqwyig/p/16916289.html

相关文章

  • 数据库
    总结存取数据的演变史数据库软件应用史数据库的本质数据库的分类MySQL简介MySQL基本使用SQL与NoSQL数据库相关概念常见基本SQL语句存取数据的演变史1.文本......
  • 数据库与MySQL
    目录数据库一.初识数据库1.存取数据的演变史1).文本文件2.软件开发目录规范3.数据库服务(重点)2.数据库软件应用史3.数据库的本质4.数据库的分类1).关系型数据库2).非关系......
  • MySQL数据库
    ***>##MySQL数据存取方式的演变1.文本文件文件路径不固定:C:\aaa.txtD:\bbb.txtE:\ccc.txt数据格式不统一:jason|123 jason$123 jason1232.软件开发目录规范......
  • 数据库基础知识
    目录数据库软件一、存取数据的演变史二、数据库软件应用史三、数据库的本质四、数据库的分类五、MySQL简介MySQL的基本使用六、SQL与NoSQL七、数据库相关概念八、常见基本S......
  • 解决MDL锁导致无法操作数据库的问题
    背景信息MySQL5.5版本开始,引入了MDL锁,用于解决或者保证DDL操作与DML操作之间的一致性,但是在部分场景下会出现阻塞,例如执行DML操作时执行ALTER操作、存在长时间查询时执行......
  • 11月22日内容总结——存取数据的历史和数据库的介绍、MySQL介绍、下载和相关操作
    目录一、存取数据的演变史1、文本文件2、软件开发目录规范3、数据库服务(重点)1.数据库管理软件的由来①程序所有的组件就不可能运行在一台机器上②数据安全问题③并发总结......
  • redis 指定数据库并模糊匹配删除
    目录redis指定数据库并模糊匹配删除实例脚本实例redis指定数据库并模糊匹配删除实例//指定database为1,且key为cicd:v2:cp:metadataDataSecurity2开头的所有redis-cli......
  • MySQL数据库基础
    今日内容详细存储数据的演变史数据库软件应用史数据库的本质数据库的分类MySQL简介MySQL基本使用系统服务的制作密码相关操作SQL与NoSQL数据库重要概念基本SQL......
  • 使用JDBCTemplate时idea的字符集和数据库的字符集都是utf-8但是在数据中中文变为了?
     修改过程1:在jdbc的配置文件中连接的后面手动设置字符集结果:       ......
  • MySQL数据库
    MySQL数据库数据库介绍存取数据的演变史1.原始阶段:文本文件存在文件路径不固定,数据格式不统一的问题2.软件开发目录规范规定了数据应该保存在db目录下路......