初识数据库
为什么要用数据库
第一,将文件和程序存在一台机器上是很不合理的。
第二,操作文件是一件很麻烦的事
所以就出现了一个新的概念 ---- 数据库
你可以理解为 数据库 是一个可以在一台机器上独立工作的,并且可以给我们提供高效、便捷的方式对数据进行增删改查的一种工具。
如此就帮助我们解决了上面出现的问题,如果将所有的数据都存储在一个独立的机器上,而对用户提供服务的机器只是存放你写的代码。
数据库的优势:
1.程序稳定性 :这样任意一台服务所在的机器崩溃了都不会影响数据和另外的服务。 2.数据一致性 :所有的数据都存储在一起,所有的程序操作的数据都是统一的,就不会出现数据不一致的现象 3.并发 :数据库可以良好的支持并发,所有的程序操作数据库都是通过网络,而数据库本身支持并发的网络操作,不需要我们自己写socket 4.效率 :使用数据库对数据进行增删改查的效率要高出我们自己处理文件很多
初识MySQL
数据库管理软件分类
管理数据的工具有很多种,不止mysql一个.根据它们存取数据的特点来划分,主要分为关系型和非关系型.
可以简单的理解为,关系型数据库需要有表结构,非关系型数据库是key-value存储的,没有表结构
关系型数据库:MySQL,db2,split,Oracle,sql server
非关系型数据库:MongoDB(文档型数据库 非常接近关系型的非关系型数据库),Redis,memcache
关系型数据库通常都是表结构,也就意味着你在用关系型数据库的时候第一步就是确定表结构
字段有特定的类型:存名字用字符串 存密码用数字 存生日用日期
MySQL
MySQL其实可以把它看成一款支持远程操作文件的软件
库 >>> 文件夹
表 >>> 文件
记录 >>> 文件内一行行的数据叫做一条条的记录
表头 就是表格的第一行数据
字段 字段名+字段类型
下载和安装
mysql为我们提供开源的安装在各个操作系统上的安装包,包括ios,linux,windows。
mysql的安装、启动和基础配置 —— linux版本 (https://www.cnblogs.com/Eva-J/articles/9664401.html)
mysql的安装、启动和基础配置 —— mac版本 (https://www.cnblogs.com/Eva-J/articles/9664401.html)
mysql的安装、启动和基础配置 —— windows版本 (https://www.cnblogs.com/Eva-J/articles/9669675.html)
ps:做前期MySQL配置的时候 终端建议你用管理员身份运行
Windows+r 启动的是普通用户
MySQL在初识登陆的时候 是没有密码的 直接回车即可
MySQL中的sql语句 是以分号结束的 不敲分号 默认你没有输入完客户端还会继续让你输入
客户端登陆
mysql -h 127.0.0.1 -p 3306 -uroot -p
可以简写
mysql -uroot -p
如果不输入用户名的密码 默认是访客模式登陆 所能用到的功能很少
客户端退出登陆
exit;
quit;
查看所有的数据库
show databases;
查看某个进程
tasklist |findstr 名称
杀死进程
taskkill /F /PID 进程号
制作环境变量
将启动文件所在的路径添加到系统的环境变量中
注意:配置完之后一定要重新启动mysql服务端及cmd终端
将mysql制作成系统服务
制作系统服务 cmd终端一定要是管理员身份
mysql --install
修改密码
没有密码的情况下
mysqladmin -uroot -p password 123
有密码的情况下
mysqladmin -uroot -p123 password 321
当命令输入错误的时候 可以用c取消前面的命令 cancel
破解密码
先将已经启动的服务端停掉
1.跳过用户名的密码的验证功能 启动服务端
mysql --skip-grant-tables 启动服务端 跳过授权表
2.修改管理员用户对应的密码
update mysql.user set password=password(123) where user='root' and host='localhost';
3.关闭当前服务端 重新以校验用户名密码的方式启动
4.正常以用户名密码的方式 连接mysql服务端
配置文件
s查看 mysql服务端简单配置
通常情况下配置文件的后缀都是ini结尾
mysql自带的配置文件不要修改
但可以新建一个配置文件 my.ini
mysql服务端在启动的时候就会自动加载你的my.ini配置文件内的配置
修改完配置文件之后需要先将服务端重新启动 才能生效
修改了配置文件一定要重启服务端
数据库的基本操作
库 类似于文件夹
增
create database db1;
查
show databases; 查所有
show create database db1; 查单个
改
alter database db1 charset='gbk'; 修改编码
删
drop database db1; 删库
表
在创建表的时候 需要先指定库
指定库:use 库名
查看当前所在库: select database()
增
create table userinfo(id int,name char);
查
show tables; 查看某个库下面的所有的表
show create table userinfo;
desc userinfo; <==> descirbe userinfo;
改
alter table userinfo modify name char(32);
删
drop table userinfo;
记录
先创建一个或指定一个已经存在的库
切换到该库下 创建表
然后再操作记录
create database db1;
create table userinfo(id int,name char(32),password int);
增
insert into userinfo values(1,'yzy',123); 插入单条数据
insert into userinfo values(1,'zmm',123),(2,'czh',123);插入多条数据
查
select * from userinfo; 查询所有的字段信息
select name from userinfo; 查询指定的字段信息
select id,name from userinfo where id=1 or name='yzy';带有筛选条件的字段信息
改
update userinfo set name='haha' where id=1; 修改数据的一个字段信息
update userinfo set name='zmm',password=999 where id=1;修改数据的多个字段
删
delete from userinfo where id=1;指定删符合条件的数据
delete from userinfo; 将表中的数据全部删除