初识数据库
关于数据的存储
回忆我们之前的数据操作时怎么做的:
最初:就是随意的存到了一个文件里,数据的格式也是千差万别的
后来:了解了软件开发目录规范,它规定了数据存放的位置。
现在:在学过了网络编程之后我们想到应该让数据存到一个公共的地方,这样所有用户涉及到的数据都需要来这里查找。
数据库之MySQL
本质它就是一款基于网络通信的应用软件,任何基于网络通信的软件底层都是socket。
服务端
——基于socket通信
——收发消息
——SQL语句(是一个公共的标准)
客户端
——基于socket通信
——收发消息
——SQL语句
ps:MySQL不单单支持MySQL的客户端来操作,也支持其他编程语言直接操作(python、java、c++、php等,即使他们的语法都不一样,但只要通过SQL语句一样可以进行操作)
DBMS:数据库管理系统
关系型数据库
数据与数据之间可以有关联和限制的,关系型数据库通常都是表结构,也就意味着你在用关系型数据库的时候,第一步就是确定表结构。(常用的关系型数据库有MySQL,oracle,sqlite,db2,sql server)
#字段有特定的类型 #存名字用字符串 #存密码用数字 #存生日用日期
非关系型数据库
通常都是以k,v键值的形式,存储数据,常用的有(redis,mongodb(文档型数据库,非常接近关系型的非关系型数据库),memcache)
MySQL
MySQL其实可以把它看成一款支持原创操作文件的软件
库>>>文件夹
表>>>文件
记录>>>文件内一行行的数据叫做一条条的记录
表头:就是表格的第一行数据
字段:字段名+字段类型
安装MySQL
#基本流程(要明确在IT行业的基本守则,不要轻易尝试最新版本的软件) #①下载 #在官网上下载,下载后是一个压缩包,包里其实将MySQL的服务端和客户端都下载了下来 #之后常规的解压和查看文件目录 #服务端是mysqld #客户端是mysql #启动mysql #1.切换到bin目录下 #2.执行mysqld #要注意:做前期MySQL配置的时候,终端建议你用管理员的身份运行 #windows+r启动的是普通用户 #mysql在初始登陆的时候 是没有密码的 直接回车即可 #mysql中的sql语句 是以分号结束的 不敲分号 默认你没有输入完客户端还会让你继续输入
制作环境变量:
将启动文件所在的路径添加到系统的环境变量中
注意:配置完之后一段要重新启动mysql服务端以及cmd终端
将mysqld制作成系统服务:
制作系统服务 你的cmd终端一定要是管理员身份
mysqld --install
配置文件:
s查看 mysql服务端简单配置
通常情况下配置文件的后缀都是ini结尾
mysql自带的配置文件不要修改
但是你可以新建一个配置文件 my.ini
mysql服务端在启动就会自动加载你的my.ini配置文件内的配置
修改完配置文件之后需要先将服务端停止 重新启动 才能生效
修改了配置文件一定要重启服务端
一些基本的语句
#客户端登陆 mysql -h 127.0.0.1 -P 3306 -uroot -p #可以简写 mysql -uroot -p #如果不输入用户名和密码 默认是访客模式登陆 所能用到的功能很少 #客户端退出登陆 exit; quit; #查看所有的数据库 show databases; #查看某个进程 tasklist |findstr 名称 #杀死进程 taskkill /F /PID 进程号
管理员密码的操作
修改密码
#没有密码的情况下 mysqladmin -uroot -p password 123 #有密码的情况下 mysqladmin -uroot -p123 password 123456 # -p后面是原来的密码,password后面是新密码 #当命令输入错误的时候 可以用c取消前面的命令 cancel
破解密码
#现将已经启动的服务端停掉 #1.跳过用户名和密码的验证功能 启动服务端 mysqld --skip-grant-tables # 启动服务端 跳过授权表 #2.修改管理员用户对应的密码 update mysql.user set password=password(123) where user='root' and host='localhost'; #3.关闭当前服务端 重新以校验用户名密码的方式启动 #4.正常以用户名密码的方式 连接mysql服务端
数据库的基本操作
库(类似于文件夹)
#增 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;<==>describe 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,'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='jason',password=666 where id=1; # 修改数据的多个字段 #删 delete from userinfo where id=1; # 指定删符合条件的数据 delete from userinfo; # 将表中的数据全部删除