MySQL基础之数据库初识

数据库前戏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
储存数据

1 文件:
文件地址与数据格式杂乱(每个人都可以按自己的格式来存) 例如:
user:xxx:age:xxx
user.xxx.age.xxx
user-xxx-age-xxx
从而出现↓↓↓

2 软件开发目录规范:
规定了数据存储的位置,例如:
bin:启动文件
conf:配置文件
core:核心逻辑代码文件
db:数据文件
log:日志文件
lib:公共模块文件
...
(现在还是自己和自己玩,每个人的数据都自己储存--->单机游戏)
接着出现↓↓↓

3 数据库:
实现了数据共享,每个人的数据都储存在一个数据库里--->网络游戏
但是存在安全问题--->所有人的数据都放在一个数据库里,这个数据库没了,所有人的数据就都没了
所以出现了--->数据库集群 图解↓↓↓
(从原先一个数据库存储数据到现在每收到一份数据,就往其他所以数据库发送一份数据,这样一个数据库没了,还有其他数据库,从而避免了一个数据库挂了,所有数据陪葬的问题)

img

数据库分类

1
2
3
4
5
6
7
8
9
10
11
12
数据库本质就是一款cs架构软件(client--->客户端,server--->服务端)


数据库相关软件:
1 关系型数据库:(记)
固定表结构并且表与表之间可以建关系
常见软件:mysql --- postgresql---sqlite---db2---oracle---access---sql server

2 非关系型数据库:(记)
没有固定表结构并且储存数据以key value键值对的形式(类似字典)
常见软件:MongoDB---redis---memcache(逐渐淘汰)

MySQL简介

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
'''
MySQL本质上也是一款基于网络通信的应用程序
'''

任何基于网络通信的软件底层肯定都是socket


服务端
基于socket通信
本地文件操作
解析指令(SQL语句)

客户端
基于socket通信
发送指令
解析指令(SQL语句)

SQL语句的由来:
'''
mysql不单单支持mysql客户端操作,也支持其他编程语言来操作
python、Java、php、c++、go...
这些编程语言语法都不一样,mysql如何做到兼容↓↓↓
两种思路
1 自己精通多种语言,自由切换(不现实,且切换也需要耗费资源)
2 统一的思想(采用统一的一种语言--->sql语句)
'''

重要概念介绍

1
2
3
4
5
6
7
8
'''
库 ------> 文件夹
表 ------> 文件夹里的文件
记录 ------> 文件内一行行的数据

表头 ---> 表格的第一行数据
字段 ---> 字段名 + 字段类型
'''

下载与安装

1
2
3
4
5
6
7
1 版本问题
5.6(主流,逐渐向 5.7 过度)
5.7(主流)
8.0(最新版,一般不采用最新版本)

2 下载
官网 ---> 选择版本 ---> 下载压缩包 ---> 解压安装

系统服务配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1 环境变量添加
我的电脑 ---> 属性 ---> 高级配置 ---> 环境变量 ---> path ---> 将bin目录路径添加进去

2 系统服务制作(全部在管理员身份下操作)
# 初始化(5.7之前需要先初始化)
mysqld --initialize-insecure
# 查看系统服务
services.msc
# 制作成系统服务
mysqld --install
# 启动服务
net start mysql
# 停止服务
net stop mysql
ps(windows操作系统上没有重启mysql服务的命令,如果需要重启服务,只能先stop再start)

用户登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 管理员初次登录无需密码
mysql -u用户名 -p密码 ---> 密码可以换行再输入,会将输入的密码隐藏成*****,如果在-p后直接输入密码,则是明文

# 游客模式
直接输入mysql 则进入游客模式,有很多限制

# 忘记密码
1 跳过授权表启动
mysqld --skip-grant-tables
2 无密码登录
mysql -uroot -p
3 修改用户密码(修改对应用户的密码)
update mysql.user set password=password(新密码) where user="root" and host="localhost";
4 退出正常启动

配置文件

1
2
3
4
5
6
7
8
9
10
11
12
mysql默认配置文件my-default.ini不能修改
自己创建并命名my.ini
# \s 查看基本信息

my.ini文件内容 ---> 将字符编码改成utf8,Windows默认gbk
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

基本SQL语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-------------------------------- 库的增删改查 -----------------------------------------
# 增:
create database 库名(文件夹名)

# 改
alter database 库名(文件夹名) charset='gbk';
alter database ...

# 查
show database;
show create database db1(按创建的库名查)

# 删
drop database 库名(文件夹名);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
--------------------------------- 表的增删改查 --------------------------------------
注意:要先切换到需要操作的库里(文件夹里)--->use 库名(文件夹名)
查看当前所在的库(文件夹):select database();

# 增:
create table 表名(文件名) (id int,name char(4)); # 创建出来的可能是多个文件,解耦管理

# 改
alter table 表名 modify name char(16); # 更改名字的最大字符长度

# 查
show tables; # 查所有表
show create table 表名; # 根据表名查看该表的详细信息
describe 表名; == desc 表名; # 根据表名查看该表的表结构

# 删
drop table 表名;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
----------------------------------- 记录的增删改查 -------------------------------------
# 增
insert into 库名.表名 values(1,'xxx'); # 增加单条数据
insert into 库名.表名 values(2,'xxx'),(3,'xxx'),(4,'xxx') # 增加多条数据

# 改
update 库名.表名 set name='XXX' where id > 1; # 修改名字,条件放在where后
update 库名.表名 set name='XXX' where id = 2 or id = 3; # where后可以用逻辑运算符

# 查
select id,name from 库名.表名; # 库名可不指定,默认当前库
select * from 表名; # 根据表名查看该表下所有记录

# 删
delete from 库名.表名 where id > 3; # 根据where后的条件判断需要删除哪些记录(数据)
delete from 库名.表名 where name='XXX';
delete from 库名.表名; # 删除该表中的所有记录(数据)


# 总结:
库 == 表:show(查)、alter(改)、create(增)、drop(删) ps(表:查看当前所在库:select 库名())
(关键字后要带database/table 再+具体库名/表名)

记录:select(查)、update(改)、insert into(增)、delete(删)

总结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
1 数据库发展史:
bs/cs架构

文件存储(单机) ---> 存储在一个数据库上(不安全) ---> 数据库集群(联机)

2 数据库分类

2.1 关系型数据库
-固定的表结构,表与表之间可以简历关联
-常见软件:mysql、postgresql、oracl、sqlite、db2、sql server access

2.2 非关系型数据库
-没有固定的表结构,存储数据按照kv键值对的格式(类似字典)
-常见软件:MongoDB、redis、memcache

'''
常见软件最好能记住默认端口号
-mysql -3306
-redis -6379
-MongoDB -27017
-Django -8000
-flask -5000
'''

3 mysql简介
# ps:防呆思想
3.1 版本问题
-SQL语句的由来
-统一思想

3.2 下载与安装

4 环境变量及系统服务

4.1 先添加环境变量

4.2 命令
mysqld --install
net start mysql
net stop mysql
mysqld --remove

5 用户登录及密码相关
mysql 游客模式
mysql -u用户名 -p密码

5.1 直接修改
mysqladmin -u用户名 -p原密码 password 新密码

5.2 忘记密码
...

6 重要概念
-库 ---> 文件夹
-表 ---> 文件
-数据 ---> 文件内一行行数据

7 配置文件
my.ini
...

8 基本SQL语句
...