# 用来存储数据的仓库 # 数据库可以在硬盘及内存中存储数据 # 数据库与文件存储数据区别 # 数据库本质也是通过文件来存储数据, 数据库的概念就是系统的管理存储数据的文件
数据库服务器端: 存放数据库的主机集群 数据库客户端: 可以连接数据库的任意客户端 数据库管理员: DBA # socket套接字的C/S架构应用
# 重要性: *** # 库: 多表构建一个数据库, 本质就是文件夹 # 表: 多条数据构建一张表, 本质就是文件 # 记录: 存放一条条数据, 本质就是文件中一条条数据记录 # (字段)id, name, age, gender...一个老师的数据 => 一条数据记录
# 重要性: *** # 关系型数据库 # 1.有表的概念 # 2.以表中一条条记录存储数据 # mysql oracle sqlServer access db2 # 非关系型数据库 # 1.没有表的概念 # 2.通过key-value键值对方式存储数据 # mongodb redis memcache
1. 安装server端与client端
# 下载安装包 https://dev.mysql.com -> DOWNLOADS -> GPL ->MySQL Community Server
# 解压后丢到c盘 Program Files文件夹的新建Mysql文件夹下 因为安装到c盘下,我们将权限改一下 右击Mysql文件夹点击安全->编辑 ->User ->完全控制 ->应用
2.如何启动server? 如何通过client连接server
# 前提:配置环境变量(bin文件夹的路径) # 了解 # 1.前往数据库安装路径,bin文件夹下,cmd执行 mysqld 启动mysql服务器端 # 2.前往数据库安装路径,bin文件夹下,cmd执行 mysql 启动mysql客户端连接服务器端 # 掌握 # 将mysql服务器添加到系统服务,在系统服务中启动mysql, 以管理员身份运行cmd,在cmd中执行命令: mysqld --install # 进入系统服务: win+r => services.msc => 找到mysql服务手动启动或关闭
启动出现问题,启动后停止,在cmd下执行 mysqld --initialize-insecure --user=mysql ,再次启动 # 连接数据库:mysql -hlocalhost -P3306 -uroot -p # 通过最高权限进入数据库, 要采用root用户进入, 连入本地数据库: mysql -uroot -p # 查看mysql版本: select version(); # 查看当前用户: select user(); # 查看mysqld下的(当前用户可以操作的)所有数据库: show databases;
# *** # 知道旧密码 # 修改密码: mysqladmin -uroot -p旧密码 password "新密码" # ** # 遗忘旧密码 # 1.绕过授权表启动服务(安全认证的服务停止): mysqld --skip-grant-tables; # 2.以任意密码登录root用户: mysql -uroot -P任意 # 3.更新密码: update mysql.user set password=password("新密码") where user="root" and host="localhost" # 4.刷新权限: flush privileges;
# *** # 查看数据库配置信息: s => 统一编码 => 防止乱码(读取不方便,数据丢失) # 1.在mysql安装根目录下:创建my.ini (my.cnf) (命令:type nul>文件名.文件后缀) # 2.设置配置信息并保存 [mysqld] #port=7777 注释 character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 # 3.重启服务
# 前提: 连接上数据库 # 1.增,创建数据库 # 采用默认编码集: create database db1; # db1为数据库名 # 自定义编码集: create database db1 charset="gbk"; # 2.查,查看数据库全部信息 # 纵观所有数据库: show databases; # 详细信息: show create database db1; # 3.改,修改数据库编码集 # alter database db1 charset="utf8"; # 4.删, 移除数据库 # drop database db1;
#前提: 在具体的某个库下创建表 # 进入指定数据库: use db1 # 确定当前使用的数据库: select database(); #1.增, 创建表(字段1 类型, ..., 字段n 类型) # create table t1(name char, age int); # 2.查,查看表信息 # 纵观所有数据库: show tables; # 详细信息: show create table t1; # 表字段结构信息: desc t1; # 3.改 # 修改字段属性: alter table t1 modify name char(20); # 修改字段名: alter table t1 change name usr char(16); # 修改表名: alter table t1 rename t2; # 4.删, 移除表 # drop table t1;
# 前提: 知道具体操作的是哪张表 # 1.增, 添加字段 # insert into t1 (usr, age) values ("aa", 18),("bb", 8); # 2.查 # select * from t1; # 3.改 # update t1 set age=28 where usr="aa"; # 4.删 # delete from t1 where age>8;
分表的方式: 1.垂直分表 2.水平分表 用的最多 0-1000w 第一张表:1-100w 第二张表:100-200w ... 第十张表:900w-1000w 怎么进行查询? 取余法/取模法 最简单的分布式算法 id = 300 将300的值用某个哈希函数进行处理,处理完成以后用对表的数量进行取余,余下的余数就是到第几表进行查询 hash(300) % 10 = 1 添加规则和获取的规则都是一样的,都是对表的数量进行取模,最后的余数是几就放到第几张表里面