4.30
数据库
存储数据的演变过程
-
随意地存到一个文件中,数据的格式千差万别,完全取决于我们自己
-
软件开发目录规范
限制了存储数据的具体位置:db,lib,conf,core。。。每一个软件的纪录只在当前的计算机上保存,那么其中的数据只在当前计算机有效
-
使用数据库服务器,将单机变成联网
数据库的本质
数据库本质是一款基于网络通信的应用程序,数据库软件有很多:
- 关系型:MySql,oracle,db2,sqlserver
- 非关系型:redis,mongodb,memcache
关系型:数据之间彼此有关系或约束,存储数据的表现形式通常是表格,每个字段还会有存储类型的限制,比如数据类型,长度
非关系型:数据通常都是k:v键值对形式
MySql
任何基于网络通信的引用程序都是socket
MySql不单单支持MySql自己的客户端,还支持其他编程语言来充当客户端操作
任何解决语言沟通的障碍:
- 让服务端兼容所有的语言
- 采用统一的语言:SQL语句
重要概念介绍
库:文件夹
表:文件
记录:文件里一行行的数据
name pwd age
aaa 123 21
bbb 321 22
表头:表格的第一行字段
字段:name,password,age。。。
MySql安装
IT界一般不会轻易使用新版本,因为可能出现旧版本没有出现的问题
- MySql官网 ---->Downloads
- 按照这种方式下载,服务端和客户端一并下载到本地
MySql服务端与客户端
在bin文件夹下
- 服务端:mysqld.exe
- 客户端:mysql.exe
配置MySql,cmd尽量用管理员身份运行
启动
-
管理员运行cmd
-
cd切换到MySql所在的bin目录下
cd F:MYSQLMYSQL5.7.30MySQL Server 5.7in mysqld -uroot -p 6008
-
保留原来的cmd窗口,再打开一个cmd
mysql -h 127.0.0.1 -P 3306 -uroot -p密码
mysql默认端口号3306
mysql第一次以管理员身份进入没有密码,直接回车即可
sql语句基本命令
1. mysql的语句以分号作为结束的标志
2. 基本命令:
show databases; 查案所有的库名
3. 链接服务端的命令可以简写为mysql -uroot -p
4. 当输入的命令不正确,但是不想让服务端报错并返回,就在最后加上 c,这一行就不会执行
5. 退出mysql:exit,quit,不用加分号
6. 在链接服务端的时候,只输入mysql也能链接,但是链接的不是管理员身份,只是游客模式
环境变量配置及系统服务制作
小知识点补充:
如何查看当前具体进程
tasklist
tasklist|findstr mysqld
杀死具体进程
taskkill F PID 8504
环境变量配置
每次启动MySQLd还需要切到对应文件路径下才能操作,繁琐:添加环境变量,直接使用mysqld启动服务端
将mysqld服务端制作成系统服务:mysqld --install
移除mysqld系统服务:mysqld --remove
设置密码
mysqladmin -uroot -p原密码 password 新密码
忘记密码
可以将mysql获取用户名密码校验功能看成一个装饰器,装饰在客户端请求访问的功能上
如果移除装饰器,那么sql服务端就不会校验密码了
1. 关闭当前mysql服务端:在任务管理器里关闭
2. 命令行的方式启动,让mysqol跳过用户名密码验证功能
mysqld --skip-grant-tables
进入管理员账户
3. 修改当前用户的密码:mysql下的user
update mysql.user set password=password(123) where user='root' and host ='localhost';
真正存储用户表的密码字段,存储的是密文,只有用户自己直到明文是什么,其他人不知道,这样更加安全
password方法会加密123,放进where后面指定的用户里
4. 立刻将修改数据刷到硬盘
flush privileges
5. 关闭当前服务端,以正常校验授权表的形式启动
统一编码
mysql默认的配置文件
my-default.ini
ini结尾的一般都是配置文件,程序启动会先家咋配置文件中的配置之后才真正启动
在my.ini,直接拷贝代码进来,再重启
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
user="root"
password=123456
default-character-set=utf8
可选偷懒:将管理员的用户和密码加在mysql.ini中的mysql里
[mysql]
user="用户名"
password="密码"
基本sql语句
大部分的业务逻辑都是增删改查:create,alter,drop,show,select
全部要背下来
针对库的增删改查
# 增
create database db1 charset='gbk'; # 创建新库(文件夹)
# 查
show databases; # 查所有
show create database db1; # 查单个
# 改
alter database db1 charset='utf-8';
# 删
drop database db1;
针对表的增删改查
# 操作表的时候,要指定表所在的库
# 查看当前所在的库的名字
select database();
# 切换库,相当于双击db1库文件夹,进入
# 接下来的操作都在db1下进行
use db1;
# 创建表t1
create table t1(id int,name char(4));
# 表中包含两个字段,id,name
# id是整型,name是长度为4的字符串
# 查看当前库下所有的表名
show tables;
# 查看表t1,包括表下的数据
show create table t1;
# 展开详细描述
describe t1; # 支持简写:desc t1;
# 修改表
alter table t1 modify name char(16);
# 删除表
drop table t1;
# 通过绝对路径对表操作
create table db2.t1(id int);
# 当前在db1库,可以这样在别的库下操作
针对数据的操作
# 一定要现有库,表,最后才能操作数据
# 增加数据
# 增加一行
insert into t1 values(2020,'aaa');
# 增加多行,用逗号隔开
insert into t1 values(2020,'aaa'),(2021,'bbb'),(2022,'ccc')
# 查看数据
# 查t1表中所有的数据
select * from t1 # 该命令在数据量很大的时候不要用
select name from t1 # 查看t1中所有name
# 改数据
update t1 set name='deimos' where name= 'aaa';
# 删数据
delete from t1 where name='bbb';
# 将表所有的数据清空
delete from t1