数据库概念
数据库概念
- 1.随意的存到了一个文件中 数据格式也是千差万别的
- 2.软件开发目录规范
- PS:数据都是保存在本地的
- 3.将保存数据的部分 存到一个公共的地方 所有的用户涉及到数据相关 都必须来这个公共地方查找
数据库之MySQL
- 本质上就是一款基于网络通信的应用软件
- 任何基于网络通信的应用软件,底层都是用socket的
服务端
- 基于socket通信
- 收发消息
- SQL语句(是一个公共的标准)
客户端
- 基于socket通信
- 收发消息
- SQL语句
PS:MySQL不单单支持MySQL的客户端来操作,也支持其他编程语言直接操作(python java c++ php语法都不一样)
DBMS:数据库管理系统
关系型数据库(MySQL,oracle,sqlite,db2,sqlServer)
- 数据与数据之间可以有关联与限制的
- 关系型数据库通常都是表结构,也就意味着你在创建那个关系型数据库时
- 第一步就是确定表结构
- 字段有特定的类型
- 存名字用字符串
- 存密码用数字
- 存生日用日期
- 第一步就是确定表结构
非关系型数据库(redis(缓存型数据库),mongodb(文档型数据库,非常接近关系型数据库的非关系型数据库),memcache(缓存型数据库))
- 通常都是以k,v键值的形式存储数据
- MySQL其实可以把它看成一款支持远程操作文件的软件
库 >>> 文件夹
表 >>> 文件
记录 >>> 文件内一行行的数据叫做一条条的记录
表头 >>> 就是表格的第一行数据
字段 >>> 就是字段名+字段类型
安装MySQL
8.0好用点,推荐5.6,别下载最新版本的软件就行
下载解压,查看文件目录
- 服务端 -mysqld
- 客户端 -mysql
启动mysql(服务端与客户端)
- 1.切换bin目录下
- 2.执行mysqld或者mysql -h 127.0.0.1 -P 3306 -uroot -p
PS:
- 做前期MySQL配置时,终端建议你用管理员身份运行,win+r启动的是普通用户,右键以管理员身份运行
- mysql在初始登录时是没有密码的,直接回车即可
- mysql中的SQL语句是以分号' ; '结束的,不敲分号,说明你没有输入完,客户端还会让你继续输入
在登录客户端时,直接输入mysql,则会进入访客模式,软件只会让你用测试库,所用格功能也很少
- 客户端登陆 >>> mysql -h 127.0.0.1 -P 3306 -uroot -p
- 客户端登陆(简写) >>> mysql -uroot -p
- 客户端退出登录 >>> exit;或者quit;
- 查看所有的数据库 >>> show databases;
- 查看某个进程 >>> tasklist |findstr mysqld
- 终止进程(依据PID码选择) >>> taskkill /F /PID
制作环境变量
- 将启动文件所在的路径添加到系统的环境变量中
注意:配置完之后一定要重新启动mysql服务端以及cmd终端
将mysqld制作成系统服务
- 制作系统服务,所用cmd终端一定要用管理员身份 >>> mysqld --install
修改密码
- 没有密码的情况下 >>> mysqladmin -uroot -p password 123
- 有密码的情况下 >>> mysqladmin -uroot -p123 password 123456
- 当命令输入错误时可以用命令来取消前面的命令cancel >>> \c
破解密码
前提:
- 先将已启动的服务端停止
- tasklist |findstr mysqld
- taskkill /F /PID XXXX
具体步骤:
- 1.跳过用户名和密码的验证功能,启动服务端
- 重新启动服务端,跳过授权表 >>> mysqld --skip-grant-tables
- 2.修改管理员用户对应的密码
- update mysql.user(服务端所有用户信息的表) set password=password(123) where user='root' and host='localhost';
- 显示Query OK >>> 请求成功
- 3.关闭当前服务端,重新以校验用户名密码的方式启动
- 4.正常以用户名密码的方式,连接mysql服务端
配置文件
- 查看mysql服务端的简单配置 >>> \s
- latinl和gbk编码,解决服务端编码不一致的问题
- 通常情况下配置文件的后缀名都是ini结尾
- mysql自带的配置文件不能修改,但是我们可以新建一个配置文件my.ini,且mysql服务端在启动时就会自动加载这个my.ini配置文件内的配置
- 修改完配置文件后需要先将服务端停止,再重新启动服务端才能生效
my.ini配置文件内容(解决服务端编码不一致的问题,而且可以从客户端直接以管理员身份登录)
[mysqld] character-set-server=utf-8 collation-server=utf-8_general_ci [client] default-character-set=utf-8 [mysql] user='root' password=123 default-charactre-set=utf-8
注意:修改了配置文件一定要重新启动!!!
数据库的基本操作
增删改查
库(文件夹)
增 create databases db1; 查 show databases;查所有 show create databases db1;查单个 改 alter databases db1 charset='gbk';修改编码 删 drop databases db1;删库
表(field就是字段的意思;type就是字段类型的意思)
# 在创建表的时候,需要先指定库 # 指定库: user 库名 # 查看当前所在的库: select databases(); 增 create table userinfo(id int,name char(4)); 查 show tables; 查看某个库下面的所有的表 show created table userinfo; desc userinfo;等价于describle userinfo; 改 alter table userinfo modify name char(32); 删 drop table userinfo;
记录
# 先创建一个库或者指定一个已经存在的库,切换到改库下创建表,然后再操作记录 create databases db1; create table userinfo(id int,name char(32),password int); 增 insert into userinfo values(1,'jason',123); 插入单条数据 insert into userinfo values(1,'jason',123),(2,'egon',123),(3,'tank',123); 插入多条数据 查 select * from userinfo; 查看表中所有内容 select name from userinfo; 查用户表中所有用户的用户名 select id,name from userinfo where id=1 or name=tank; 根据索引查看详细内容 改 update userinfo set name='kevin' where id=1; 修改数据的一个字段 update userinfo set name='tank', password=666 where id=1; 修改数据的多个字段 删 delete from userinfo where id=1; 指定删除符合条件的数据 delete from userinfo; 将表中的数据全部删除