存放数据的仓库
为什么会有数据库? 因为我们所学的数据管理可以用文件来存储 但存在以下缺陷:
IO 操作 效率问题
多用户竞争数据
网络访问
用户的验证
所以产生了数据库.
conclusion:
数据库服务器 -: 运行数据库管理软件
数据库管理软件: 管理 - 数据库
数据库: 即文件夹, 用来组织文件 / 表
表: 即文件, 用来存放多行内容 / 多条记录
二, 常见的数据库
关系型 数据之间存在某种关联关系 数据存在硬盘内 速度慢
Oracle ------ 目前最好关系型数据库, 体现在用户管理, 分布式, 商业用途收费
MySQL ------ 免费开源, 功能支持没有 Oracle 强 但是足以满足中小企业使用, 先后被 Sun 和 Oracle 收购
MySQL 创始人 wedenius 担心 MySQL 会闭源 于是另起灶炉 搞了 MarriaDB
MariaDB 和 MySQL 使用方法一模一样
SqlServer ------- 属于微软生态链, 需要和 Windows 配合使用
DB2 ------IBM 开发的大型关系型数据库 , 收费的, 通常与硬件捆绑销售
非关系型 数据以 key -value 的形式来存储 数据存在内存中 速度快
- MongoDB
- Redis
- MemCache
三, 数据库的相关概念
1,age = 18 一个变量 无法描述清楚数据称之为一个字段
2,age = 18,name = Jack,genger = man 一堆变量在一起, 可以描述清楚数据称之为一条记录 对应着文件中的一行
3, 文件需要分门别类 每个文件存储不同的数一个文件称之为表文件越来越多 得分文件夹
4. 一个文件称之为库
数据库中包含所有内容:
字段 (列)
记录
表
库
DBMS 数据库管理系统
数据库服务器 : 一个库可以包含多个表 一个表可以包含多条记录 一条记录中有多个字段
数据库是什么, 本质上就是一套 C/S 架构得 socket 软件
四, 安装数据库与配置使用环境
Mac 安装方法:
https://www.jianshu.com/p/fd3aae701db9
win10 安装方法:
https://blog.csdn.net/weixin_41557632/article/details/78943248
注意:
1. 代码界面版 傻瓜式安装 记住初始密码
2. 绿色解压版
1. 5.7 以后的版本需要先初始化 mysqld --initialize-insecure
2. 启动需要先进入安装目录 比较麻烦 需要添加到环境变量打开环境变量 将 MySQL 安装目录下的 bin 加入 path 变量
3. 将 mysqld 加入到 Windows 的系统服
4. 绿色版修改默认密码修改默认密码需要先登录成功执行 update 语句直接修改 user 表中的密码
5.7 版本:
update MySQL.user set authentication_string = password("root") where user = "root";
5.6 版本:
update MySQL.user set password = password("root") where user = "root";
修改密码方式 2 不需要登录 需要知道旧密码
mysqladmin -uroot -p 旧密码 password 123
破解密码, 当忘记密码时 无法登录 也就不能值执行 update 语句
思路:
启动服务器时 控制它不要加载授权表
无密码登录服务器
执行 update MySQL.user set authentication_string = password("root") where user = "root"
重启服务器
用到的系统指令:
mysqld 直接运行服务器程序
mysqld --skip-grant-tables 跳过授权表 用于重设密码
tasklist | findstr mysqld taskkill /f /pid 结束服务器程序
MySQL 运行客户端程序 -u 用户名 -p 密码 -h 主机地址 -P 端口号
mysqld --install 将 mysqld 注册当 Windows 服务中 在服务中叫 MySQL
Windows 就是绑定了一个 exe 程序
sc delete MySQL 删除 Windows 服务
exit 退出客户端
配置文件放在安装路径根目录中 就是和 bin 同级 名称必须叫 my.INI
- # 客户端的配置
- [client]
- #MySQL 这个客户端的配置
- [MySQL]
- user = root
- password = root
- default-character-set = utf8
- # 服务器端的配置
- [mysqld]
- character-set-server = utf8
修改默认编码
1. 5.7 需要初始化
2. 5.6 游客模式 没有密码可以登录 但是无法操作数据
只能看到 information_schema MySQL
3. 5.7 中 data 数据存放目录 是由初始化时决定
带界面的 在 C:\ProgramData 中
不带界面的就在安装目录中
5.6 就在安装目录中
4. 密码存储字段名 在 5.6 中时 password 5.7 中叫 authentication_string
Mysql5.6 版 与 5.7 版的区别
五, 初识 MySQL 语句 (每句命令操作后记得加 ;)
库的相关操作:
增
create database 库名称 ;
删
drop database 库名称 ;
改
alter database 库名称 要改的属性名称 ;
- alter database db1 DEFAULT CHARACTER SET utf8;
- alter database db1 CHARSET utf8;
注意 在 MySQL 中 utf-8 不能带 - 写成 utf8
查
show databases 查看所有数据库 ;
show create databases 库名称 查看建库的语句 ;
1. 不能使用纯数字
2. 可以是数字 字母 下滑线的组合
3. 可以下滑线开头
4. 不能是关键字 如 create
大致和 python 相同
不区分 大小写
库命名规范
表相关的操作:
增
建表时要明确数据库
use db1;
create table 表名称 (字段名 类型 (长度),....);
- create table dog(nikename char(10),gender char(1),age int);
- #创建时同时指定数据库
create table 库名称. 表名称 (字段名 类型 (长度),....);
删
drop table 表名;
改
alter table 表名称 drop|change|modify|add
drop 字段名称
alter table dog drop color;
change 旧的字段名 新的字段名 新的类型
alter table dog change gender sex char(2);
modify 字段名 新的类型
alter table dog modify color char(5);
add 字段名称 类型
alter table dog add color char(10);
重命名表
rename table 旧表名称 to 新表名称
rename table dog to dogtable;
修改表的属性
alter table 表名 属性名 值
alter table dogtable DEFAULT CHARSET gbk;
查
show tables; 查看所有表
desc 表名称; 查看表结构
show create table 表名; 查建表语句
记录相关操作:
增
insert into 表名 values(值 1, 值 n,....)
要求值得顺序 个数 必须与表字段完全对应
另一种写法
insert into 表名 (字段名 1, 字段名 n,....) values(值 1, 值 n,....)
可以选择性得插入某些字段 要求值得顺序 必须与表名后面声明得字段一致
删
delete from 表名 where 字段名称 = 值
没有条件的话删除全部数据
改
update 表名 set 字段名 = 新的值 where 字段名 = 值
没有条件的话修改全部
查
select *from 表名; * 表示通配符 查看所有字段
select 字段名称 1, 字段名 2.. from 表名;
来源: https://www.cnblogs.com/wanlei/p/9991138.html