目录

  • 数据库的概念
  • 数据库的分类
    • 关系型数据库
    • 非关系型数据库
  • SQL语句(了解阶段)
  • mysql配置文件
  • 破解MySQL账号密码

数据库的概念


数据库:即存放数据的一个仓库

使用数据库的优势:可供远程读取数据,存取数据方便

我们在未使用数据库时,使用Python存取文件靠的是文件,而一次读和取数据,都会打开整个文件,增加了IO延迟,并且无法取到我们指定的内容,使用数据库存取可以很好解决这一问题,这只是其一优势。

数据库的核心概念:

  • 数据:事务的状态
  • 记录:文件中的信息
  • 表:可以理解为文件,更方便读取和修改数据
  • 库:可以理解为文件夹,存放表的地方
  • 数据库管理软件:MySQL、Oracle等
  • 数据库服务器:运行了数据库管理软件的计算机,供其它计算机访问

数据库的特点:

1、实现数据共享:
     数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。
2、减少数据的冗余度:
     同文件相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。
3、数据实现集中控制:
     文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。
4、数据库的安全性:
     失误操作后可以回滚到上一时刻的状态,分配权限执行操作,库的备份等
5、关联性查询:
     多个表之间可以存在关联性,我们可以使用sql语句进行联表查询

数据库是一个C/S架构的软件

分为客户端与服务端,开启MySQL服务后,会产生端口号,客户端可以根据这个端口号与对应的账号密码登录MySQL。

数据库的分类


数据库本质上就是一个软件,其分为两类

关系型数据库

  • 优点:

    1、易于维护:都是使用表结构,格式一致;
    ​ 2、使用方便:SQL语言通用,可用于复杂查询;
    ​ 3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。

  • 缺点:

    1、读写性能比较差,尤其是海量数据的高效率读写;
    ​ 2、固定的表结构,灵活度稍欠;
    ​ 3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。

常见的有:MySQL、Oracle、SQLserver、SQLite等

非关系型数据库

非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。

  • 优点:

    1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
    ​ 2、速度快:nosql可以使用硬盘或者随机存储器(内存)作为载体,而关系型数据库只能使用硬盘;
    ​ 3、高扩展性;
    ​ 4、成本低:nosql数据库部署简单,基本都是开源软件。

  • 缺点:

    1、不提供sql语句支持,学习和使用成本较高;
    ​ 2、无事务处理;
    ​ 3、数据结构相对复杂,复杂查询方面稍欠。

常见的有:redis、memcache、MongoDB(也有部分作为关系型数据库使用)

SQL语句(了解阶段)


SQL 是用于访问和处理数据库的标准的计算机语言。

使用的主要目的就是来操作数据库,这里使用sql操作的是MySQL数据库

进入数据库前的命令

mysql --verison # 查看数据库版本
结果:mysql  Ver 8.0.20 for macos10.15 on x86_64 (MySQL Community Server - GPL)

MySQL数据库登录

mysql -u用户名 -p密码(不建议在-p后面写,因为会明文显示,直接回车密文输入)

如果没有密码,可以1设置登录密码

mysqladmin -uroot password "hello" # 给root用户设置hello为密码

修改密码

mysqladmin -uroot -p原密码(可以不输入,可以直接回车密文输入) password 新密码(也可以不输入,直接回车密文输入)

操作数据库的sql语句

大部分输入完语句以后需要使用分号;结尾,少数可以不使用,如:exit

退出数据库

exit

取消输入的sql语句,可以ctrl+c,或者

exit\c # 添加\c表示此次输入无效

查看当前登录用户

select user();

数据库相关操作(增删改查)

创建数据库

create database test; # 创建一个库,命名为:test
create database test charset utf8mb4; # 创建库并且指定这个库可以存放字符编码,默认在配置文件已经携带

在MySQL文件夹下面的data文件夹可以查看创建后的库,其实也就是创建了一个特殊的文件夹

查看所有数据库

show databases;

查看单个数据库

show create database test;

修改数据库(不能修改数据库名称)

alter database test charset gbk; # 修改test这个库的编码为gbk

删除数据库

drop database test;

选中库

use test; # 选中到test这个库

查看当前所在库

select database();

表操作(增删改查)

创建表(库下面的一个文件,需要先选中到某个库)

create table student(id int,name varchar(20));

表名为:student
创建了两个字段:id:int整数类型、name:varchar字符串类型长度为20,分号结束

创建完成后,我们可以进入到MySQL所在目录的data下面找到选择的库,cd进去后,可以看到我们刚创建的表

查看当前库下面的所有表

show tables;

查看当前库下面某个表的详细信息

show create table student;

查看当前库下面某个表的字段(结构)

desc student;

修改表的名称

alter table student rename teacher; # 修改student表名为teacher

修改表的字段

alter table teacher modify name varchar(10); # 将name字段长度改为10

删除表

drop table teacher;

另一种指定表的方式,不需要选择库,就可以操作某个库下面的某个表

drop table test.teacher; # 删除test库下面的teacher表

表记录相关操作,以及数据相关操作(增删改查)

我们先创建一张表

create table student(id int,name varchar(20));

向表里插入一条记录(一行数据)

insert student value(1,'jack'); # 按字段插入记录
insert student value(2,'tom'),(3,'jams'); # 插入多条记录

查询表里面的记录

select * from student; # *表示查询这个表里面所有字段的记录
select name from student; # 查询这个表里面name这个字段的数据
select * from student where id >= 2; # 查询id字段大于等于2的所有记录,where表示判断

修改表里面的数据

update student set name = 'pop'; # 修改student表下面所有name字段的数据为'pop'# 推荐使用这种,因为上面是修改表下面所有name字段数据
update student set name = 'pop' where id = 2; # 修改id=2记录下面的name字段的数据为'pop'

删除表的记录

delete from student where id = 2; # 删除id=2的记录
delete from student; # 清除表内的所有记录

如果我们要使用delete清除表里面所有记录时,但后续我们使用到id自增后,delete不能将自增数量清零。需要使用一种新的方式可以完全清空表,清除表内的所有记录建议使用此方法

truncate student;

mysql配置文件


window:C:\ProgramData\MySQL\MySQL Server 8.0 下面的my.ini文件
Linux | Mac:需要在/etc/下面创建my.cnf文件

当我们开启MySQL后,该配置文件就会被加载

我们执行的命令对应的就是文件里面的某个标题下面的内容,如:

1 [client]
2 default-character-set = utf8mb4
3
4 [mysql]
5 user = 'lll'
6 password = '000'
7
8 [mysqld]
9 character-set-client-handshake = FALSE
10 character-set-server = utf8mb4
11 collation-server = utf8mb4_unicode_ci
12 init_connect = 'SET NAMES utf8mb4'

当我们输入mysql时,会触发[mysql]下面代码的运行,那么就会自动帮助我们填写账号为:lll,密码为:000

如果我们没有添加[mysql]时,输入mysql就会触发[client]下面代码的运行

输入mysqld代表MySQL服务

解释一下utf8mb4的作用:它代表字符编码,表示MySQL数据库可以存放什么编码的字符,utf8存放任意字符,mb4可以存放一些表情符号等等。

详细的配置到后面逐个了解,目前只需要了解我们开启MySQL后,输入语句会触发这个配置文件里面的对应标题下面代码的运行

破解MySQL账号密码

ps:里面涉及到的一些SQL命令可能没有接触过,目前了解即可,下一章节会了解到使用方法


1、关闭MySQL服务

2、管理员进入终端/CMD

3、输入命令

mysqld --skip-grant-tables --user=mysql

表示开启mysql服务,且跳过权限表登录mysql

4、当前终端不要关闭,再开启一个新终端,直接输入

mysql # 回车直接登录

5、输入sql语句,清空root用户密码

update mysql.user set authentication_string='' where user='root' and host='localhost';

6、这里需要直接关闭MySQL服务的进程,以管理身份重新开启一个终端,执行命令

Windows:tasklist | finstr mysql 找到PID然后,taskkill /F /PID mysqld的PID
Mac:px aux | grep [m]ysqld 找到PID然后,sudo kill -9 mysqld的PID

7、重新开启MySQL服务,root用户无密码登录MySQL后,执行以下命令

alter user root@localhost identified by '000';

可能会好奇为什么要关闭以后,再无密码登录呢,因为–skip-grant-tables的过程中,我们不允许执行上面这条命令,所以才出现了第六步

技术小白记录学习过程,有错误或不解的地方请指出,如果这篇文章对你有所帮助请点赞 收藏+关注 子夜期待您的关注,谢谢支持!

带你了解什么是MySQL数据库(一)相关推荐

  1. 使用MySQL自带工具mysqlhotcopy快速备份mysql数据库

    使用MySQL自带工具mysqlhotcopy快速备份mysql数据库 发表于82 天前 ⁄ 网站备份 ⁄ 暂无评论 mysqlhotcopy是一个Perl脚本,最初由Tim Bunce编写并提供.它 ...

  2. django 不用自带的mysql_21_django配置使用mysql数据库的两种方式

    配置django项目使用mysql数据库的两种方式 1. 直接在settings.py 文件中添加数据库配置信息 # 配置数据库的第一种方式 DATABASES = { 'default': { 'E ...

  3. 带你了解什么是MySQL数据库(六)索引原理,如何建立与使用索引

    文章目录 前言 索引原理 介绍 查找二叉树.平衡二叉树.B树.B+树 聚集索引与非聚集索引 索引管理 测试索引 正确使用索引 联合索引 索引下推技术 索引优化神器 常见慢查询优化 前言 学习过某一门编 ...

  4. 瞬间带你了解如何优化 Mysql 数据库,老板再也不担心客户投诉了

    Mysql优化(通用版) 一.优化方向 二.优化方法 1.监控分析 2.改变 SQL 执行计划 三.软优化 1.查询语句优化 2.优化子查询 3.使用索引 4.分解表 5.增加中间表 6.增加冗余字段 ...

  5. 带你了解什么是MySQL数据库(八)数据库锁机制

    目录 数据库的锁机制 锁的分类 MySQL中的行级锁,表级锁,页级锁(粒度) 行级锁之共享锁与排他锁(级别) innodb存储引擎的锁机制 行级锁与表级锁区分 三种行锁算法 死锁问题 什么时候使用表锁 ...

  6. 带你了解什么是MySQL数据库(四)

    目录 单表查询语句 联表查询 交叉连接 内连接 左连接 右连接 子查询 单表查询语句 多个语句的使用方式,以及优先级 where 条件 group by 分组字段 having 条件(通常跟在grou ...

  7. win2003下如何自动备份MySQL数据库

    http://www.cnblogs.com/lxJack/archive/2011/05/22/2053270.html 有网友问我在win2003下如何自动备份MySQL数据库,既然是自动备份,那 ...

  8. 初识MySQL数据库(MySQL数据库的基础操作)

    初识MySQL数据库 前言 1.查询所有数据库 2.创建数据库 2.1指令1: 2.2指令2: 3.3指令3: 3.删除数据库 3.1指令1: 3.2指令2: 在这里插入图片描述 4.切换数据库 总结 ...

  9. MySQL数据库常用操作(20221211)

    记录:360 场景:MySQL数据库常用操作,启动.重启.停止MySQL服务:创建用户.数据库.表.主键.索引.注释等.配置远程可连接.配置环境变量.常用系统表操作.常用命令行操作.表的增删改查等操作 ...

最新文章

  1. Linux RSS/RPS/RFS/XPS对比
  2. 学习 jQuery UI
  3. SQL Server 分布式数据库的问题和解决方法
  4. redis介绍以及使用 ppt_光纤收发器的工作原理以及使用方法介绍
  5. 【LeetCode】233. 数字1的个数
  6. 日期时间选择器-jeDate日期控件
  7. 使用vi/vim编辑时按ctrl-s后客户端假死解决方法
  8. 2、django管理网站
  9. Android 4 +https(如何启动TLS1 1 and TLS1 2)
  10. win10录屏工具_win10录屏软件选哪款?没用过别后悔
  11. web前端页面优化——个人见解
  12. 统计学习方法读书笔记3-感知机SVM
  13. Jenkins 之插件 Publish JUint test result reports 的使用
  14. STM32cubemx教程及STM32入门(四)串口通信
  15. win10右键卡顿原因_右键菜单反应慢?win10系统解决右键菜单卡顿方法
  16. xp系统怎么更改计算机用户名和密码,xp系统如何设置开机密码|xp系统电脑怎么改密码-系统城...
  17. Syzmlw蜗居在线播放
  18. MacOS上ESP8266开发板刷microPython教程
  19. OWASP A4 使用已知漏洞的插件
  20. php文件是不是死链,什么是死链?

热门文章

  1. 小学生学计算机,学计算机对小学生的好处
  2. Python抓取数据具体流程
  3. 配置Beyond Compare 4作为git mergetool来解决git merge命令导致的文件冲突
  4. IBM x3750 M4安装ESXi5.5
  5. 常见bootloader介绍
  6. 通达信标记符号_通达信指标中赋值符号“:”、“=”、“:=”区别?
  7. (笔记)神经网络压缩,Ristretto: Hardware-Oriented Approximation of Convolutional Neural Networks(一)
  8. C语言入门(九)>>>循环 - while循环
  9. C# : 软件加密机制以及如何防止反编译
  10. Instagram密友名单与私密账户的区别