初识MySQL数据库
文章目录
一、数据库
1、什么是数据库?
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
2、数据库的本质
数据库的本质就是一个C/S架构基于网络通信的应用程序。
- 数据库拥有服务端与客户端
- 服务端
- 基于socket通信
- 收发消息
- 客户端
- 基于socket通信
- 收发消息
- 服务端
3、数据库的分类
经过多年的发展,根据不同的需求,市面上出现了各种存储方式,存取速度不同的数据库,我们通常根据数据库的存取数据的特点来进行分类。将不同的数据库分为这两类:关系型数据库与非关系型数据库。
- 关系型数据库
- 特点:有固定的表结构, 可以建立表与表之间的关系
- eg: MySQL、Oracle 、 sqllite 、SQLserver 、access 、db2
- 非关系型数据库
- 特点:没有固定的表结构,表与表之间没有关系,存储格式:k:v键值对
- eg: Redis (字符串,无序集合,有序集合,哈希类型,列表类型)、MongoDB (爬虫用的多)、Memcached (只支持字符串)
4、常见数据库默认端口
关系型数据库 | 默认端口号 |
---|---|
MySQL | 3306 |
Oracle | 1521 |
SQL Server | 1433 |
db2 | 5000 |
access | 不需要 |
非关系型数据库 | 默认端口号 |
---|---|
MongoDB | 27017 |
Redis | 6379 |
Memcached | 11211 |
- 了解
web框架 | 默认端口号 |
---|---|
django | 8000 |
flask | 5000 |
tomcat | 8080 |
二、MySQL简介
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL 使用标准的 SQL 数据语言形式;目前MySQL是开源免费的,隶属于 Oracle 旗下产品,拥有社区版与商业版两个版本。
1、MySQL的组成
库 | 文件夹 |
---|---|
表 | 文件 |
记录 | 文件中的数据 |
字段 | 文件的表头 |
三、MySQL的下载与启动
查看我这篇详细版:https://blog.csdn.net/weixin_44884608/article/details/119112963?spm=1001.2014.3001.5502
四、MySQL基本设置
4 .1、将mysql服务端制作成系统服务(开机自启动)
1. 以管理员身份进入到cmd中
2. mysqld --install 添加服务 了解:mysqld --remove 删除服务
3. 默认情况是未启动状态,需要手动点击启动
4.如何查看服务是否启动?
1.services.msc
2.我的电脑 -> 右键 -> 管理 -> 服务和应用程序
3.任务管理器 -> 服务 -> MySQL
五、MySQL客户端设置
5 .1 客户端登录
mysql -u root -p # 客户端用户在cmd窗口登录
mysql -u root -p 密码 # 在cmd中命令尾部跟密码,明文密码显示不建议使用
5 .2 设置密码
# MySQL客户端第一次登录不需要密码登录,密码输入 回车键即可
mysqladmin -uroot -p原密码 password 新密码 # 在cmd窗口输入即可
改密码例子:
mysqladmin -uroot -p123 password 123456
5 .3 破解密码(了解)
当时间过长忘记MySQL密码,如何破解?
可以将MySQL获取用户名和密码校验的功能看成是一个装饰器,装饰在客户端请求访问的功能上,如果将装饰器移除,那么MySQL服务端就不会校验用户名和密码了。
# 1、先关闭当前mysql服务端
命令行方式启动(让mysql跳过用户名密码验证功能)
mysqld --skip-grant-tables
# 2、直接以无密码的方式连接
mysql -uroot -p 直接回车
# 3、修改当前用户的密码
update mysql.user set password=(123456) where user='root' and host='localhost';
'''
真正存储用户表的密码字段 存储的肯定是密文
只有用户自己知道明文是什么 其他人都不知道 这样更加安全
'''
# 4、立刻将修改数据刷到硬盘
flush privileges;
# 5、关闭当前服务端 然后以正常情况启动
六、设置MySQL配置文件
MySQL默认的配置文件是在MySQL的软件目录下的my-default.ini
,my-default.ini
是一个模板配置文件,一般是不可动,不可修改。ini
结尾的一般为配置文件。程序启动会先加载配置文件中的配置之后真正的启动。
[mysqld] # 一旦服务端启动立刻加载下面配置
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql] # 一旦客户端端启动立刻加载下面配置
...
[client] # 其他客户端
...
6 .1 统一编码
- 统一编码需要自己新建一个
my.ini
的配置文件,修改配置文件后一定要重启服务才能生效
# 统一编码的配置 直接拷贝即可
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
6 .2 将管理员用户名添加到配置文件
作用:方便登录
# 偷懒 将管理员的用户名密码添加到配置文件中
[mysqld] # MySQL服务端
character-set-server=utf8
collation-server=utf8_general_ci
[client] # 其他客户端
default-character-set=utf8
[mysql] # MySQL客户端
user="root" # 不识别单引号
password=123456
default-character-set=utf8
七、基本的SQL语句
ps:大部分的业务逻辑都是增删改查(远程操控文件夹)
- 针对库的增删改查(文件夹)
# 增
create database db1;
create database db1 charset='gbk';
# 查
show databases; # 查所有. 查看数据库下的所有库名信息
show create database db1; # 查单个,查看以及创建的数据库db1是用的什么字符编码.
# 改
alter database db1 charset='utf8'; # 改的只是数据库的字符编码
# 删除
drop database db2;
- 针对表的增删改查(文件)
'''
在操作表(文件)的时候 需要指定所在的库(文件夹)
'''
# 查看当前所在的库的名字
select database();
# 切换库
use db1;
# 增(表)
create table t1(id int,name char(4));
# 查
show tables; # 查看当前库下面的所有表名
show create table t1; # 查单个表
# 查看表结构
describe t1; # 支持简写 desc t1;
# 改字段类型
alter table t1 modify name char(16);
# 删
drop table t1;
"""
craete table db2.t1(id int); # 也可以用绝对路径的形式操作不同的库
"""
- 针对数据的增删改查(一行行数据)
'''
1、一定要先有库 有表 最后才能操作记录
'''
# 增
# 加into不加into都可以, 不过为了语义完整还是加into
insert into t1 values(1,'xiao'); # 为表t1中的第一个字段, 第二个字段插值, 一个小括号就是一条记录.
insert into t1 values(1,'xiao'),(2,'chen'),(3,'a');
# 查 *代表所有字段
select * from t1; # 将t1表的数据都查出来 ;当数据量特别大的时候不建议使用
select name from t1; # 在当前路径查看t1表中属于字段name的记录
# 改
update t1 set name='DSB' where id > 1; # 将表t1中id>1的name字段修改为DSB
# 删
delete from t1 where id > 1;
delete from t1 where name='xiao';
# 将表所有的数据清空
delete from t1;