数据库是什么
- 存储数据的仓库
为什么要使用数据库
与excel对比:
- 可以管理大量数据
- 可以并发操作同一个数据表格
- 数据支持高级的操作, 比如: 分组, 链表等
数据库的分类
- 关系型数据库
- 对每一列数据的数据类型会有约束, 例如id(整型), name(字符串类型)
- 常见的关系型数据库软件: MySQL, Oracle
- 非关系型数据库
- 非关系型数据库是key-value存储的, 没有表结构
- 常见非关系型数据库软件: redis, mongodb(文档型数据库)
- 两者最大区别: 关系型数据库把数据存在硬盘中, 而非关系型数据库把数据存在内存中
mysql的架构
- 类似于socket 的服务端和客户端
- 流程:
- mysql服务端先启动, 监听在某一个特定的端口(默认3306)
- mysql客户端连接服务端
- mysql客户端可以发送相关的操作命令, 去操作服务端存储的数据
mysql的安装及初始化
-
添加环境变量, 使cmd终端可以不需切换盘符直接开启服务端和客户端
-
初始化mysqld服务端并创建data目录: mysqld --initialize-insecure
-
启动mysqld服务端: mysqld
-
启动mysql客户端连接mysqld服务端: mysql -u root -p
-
将mysqld服务端制作成windows服务, 使其不会阻塞: "mysqld绝对路径" --install
- 将mysqld服务端从windows服务中移除: "mysqld绝对路径" --remove
-
注册成windows服务后, 开启和关闭服务端命令(需管理员权限开启cmd):
- 开启mysql服务端: net start mysql
- 关闭mysql客户端: net stop mysql
-
设置初始密码: mysqladmin -u root -p password "密码"
修改密码: mysqladmin -u root -p "原密码" password "新密码" # 修改密码需要输入原密码
-
忘记密码, 操作方式:
- 关闭mysql
- 在cmd中执行:mysqld --skip-grant-tables
- 在cmd中执行:mysql
- 执行如下sql:
update mysql.user set authentication_string=password('设置新密码') where user = 'root';
flush privileges; - tskill mysqld #或taskkill -f /PID 7832
- 重新启动mysql
-
mysql常用参数:
-u: user 用户名
-p: password 密码
-h: host主机名或ip, mysql -u root -p -h 192.168.1.10
-P: port默认是3306, mysql -u root -p -h 192.168.1.10 -P 3307
数据库/数据表/表记录
- 数据库: 即文件夹, 用来组织文件/表
- 表: 即文件, 用来存放多条记录/多行内容
- 记录: 多个字段的信息组成的一条记录, 即文件中的一行内容
- 数据库服务器: 一台运行数据库管理软件的计算机(对内存要求比较高)
- 数据库管理系统: 即数据库管理软件
sql指令
操作数据库
-
增: create database 数据库名 charset utf8;
-
删: drop database 数据库名;
-
改: 删除再添加, 删除之前做好备份
alter database 数据库名 charset utf8 # 修改数据库编码
-
查: show databases;
show create database 数据库名;
select database(); # 查看当前在哪个数据库下
-
使用数据库 use 数据库名;
操作数据表
- 查: show tables