带你了解什么是MySQL数据库(一)
目录
- 数据库的概念
- 数据库的分类
- 关系型数据库
- 非关系型数据库
- 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数据库(一)相关推荐
- 使用MySQL自带工具mysqlhotcopy快速备份mysql数据库
使用MySQL自带工具mysqlhotcopy快速备份mysql数据库 发表于82 天前 ⁄ 网站备份 ⁄ 暂无评论 mysqlhotcopy是一个Perl脚本,最初由Tim Bunce编写并提供.它 ...
- django 不用自带的mysql_21_django配置使用mysql数据库的两种方式
配置django项目使用mysql数据库的两种方式 1. 直接在settings.py 文件中添加数据库配置信息 # 配置数据库的第一种方式 DATABASES = { 'default': { 'E ...
- 带你了解什么是MySQL数据库(六)索引原理,如何建立与使用索引
文章目录 前言 索引原理 介绍 查找二叉树.平衡二叉树.B树.B+树 聚集索引与非聚集索引 索引管理 测试索引 正确使用索引 联合索引 索引下推技术 索引优化神器 常见慢查询优化 前言 学习过某一门编 ...
- 瞬间带你了解如何优化 Mysql 数据库,老板再也不担心客户投诉了
Mysql优化(通用版) 一.优化方向 二.优化方法 1.监控分析 2.改变 SQL 执行计划 三.软优化 1.查询语句优化 2.优化子查询 3.使用索引 4.分解表 5.增加中间表 6.增加冗余字段 ...
- 带你了解什么是MySQL数据库(八)数据库锁机制
目录 数据库的锁机制 锁的分类 MySQL中的行级锁,表级锁,页级锁(粒度) 行级锁之共享锁与排他锁(级别) innodb存储引擎的锁机制 行级锁与表级锁区分 三种行锁算法 死锁问题 什么时候使用表锁 ...
- 带你了解什么是MySQL数据库(四)
目录 单表查询语句 联表查询 交叉连接 内连接 左连接 右连接 子查询 单表查询语句 多个语句的使用方式,以及优先级 where 条件 group by 分组字段 having 条件(通常跟在grou ...
- win2003下如何自动备份MySQL数据库
http://www.cnblogs.com/lxJack/archive/2011/05/22/2053270.html 有网友问我在win2003下如何自动备份MySQL数据库,既然是自动备份,那 ...
- 初识MySQL数据库(MySQL数据库的基础操作)
初识MySQL数据库 前言 1.查询所有数据库 2.创建数据库 2.1指令1: 2.2指令2: 3.3指令3: 3.删除数据库 3.1指令1: 3.2指令2: 在这里插入图片描述 4.切换数据库 总结 ...
- MySQL数据库常用操作(20221211)
记录:360 场景:MySQL数据库常用操作,启动.重启.停止MySQL服务:创建用户.数据库.表.主键.索引.注释等.配置远程可连接.配置环境变量.常用系统表操作.常用命令行操作.表的增删改查等操作 ...
最新文章
- Linux RSS/RPS/RFS/XPS对比
- 学习 jQuery UI
- SQL Server 分布式数据库的问题和解决方法
- redis介绍以及使用 ppt_光纤收发器的工作原理以及使用方法介绍
- 【LeetCode】233. 数字1的个数
- 日期时间选择器-jeDate日期控件
- 使用vi/vim编辑时按ctrl-s后客户端假死解决方法
- 2、django管理网站
- Android 4 +https(如何启动TLS1 1 and TLS1 2)
- win10录屏工具_win10录屏软件选哪款?没用过别后悔
- web前端页面优化——个人见解
- 统计学习方法读书笔记3-感知机SVM
- Jenkins 之插件 Publish JUint test result reports 的使用
- STM32cubemx教程及STM32入门(四)串口通信
- win10右键卡顿原因_右键菜单反应慢?win10系统解决右键菜单卡顿方法
- xp系统怎么更改计算机用户名和密码,xp系统如何设置开机密码|xp系统电脑怎么改密码-系统城...
- Syzmlw蜗居在线播放
- MacOS上ESP8266开发板刷microPython教程
- OWASP A4 使用已知漏洞的插件
- php文件是不是死链,什么是死链?
热门文章
- 小学生学计算机,学计算机对小学生的好处
- Python抓取数据具体流程
- 配置Beyond Compare 4作为git mergetool来解决git merge命令导致的文件冲突
- IBM x3750 M4安装ESXi5.5
- 常见bootloader介绍
- 通达信标记符号_通达信指标中赋值符号“:”、“=”、“:=”区别?
- (笔记)神经网络压缩,Ristretto: Hardware-Oriented Approximation of Convolutional Neural Networks(一)
- C语言入门(九)>>>循环 - while循环
- C# : 软件加密机制以及如何防止反编译
- Instagram密友名单与私密账户的区别