初识数据库

111 阅读6分钟

数据存取演变史

1.文本文件
    缺点:
        文件路径不一致:C:\a.txt D:\aaa\b.txt E:\ccc.txt
        数据格式不一致:jason|123 tony$123 kevin@123	
2.软件开发目录规范
    优点:规定了数据文件的大致存储位置:DB文件夹
    缺点:针对数据格式还是没有完全统一,比如都是json文件但是内部的键值对构成不同。
3.数据库服务
    统一了存取位置,也统一了数据格式

数据库软件应用史

1.单机游戏
    不同计算机上的相同程序 数据无法共享
    数据库服务全部在本地完成
        
2.网络游戏
    不同计算机上的相同程序 数据可以共享
    数据库服务单独在网络架设(远程数据库服务)
"""
远程数据库服务
数据库集群
    1.数据安全性问题
    2.服务器负载问题
让多台服务器运行相同的数据库服务
"""

数据库的本质

数据库三个字在不同角度下描述的意思不一样
1.站在底层的角度
    数据库指的是专门用于操作数据的进程。比如运行在内存中的代码
2.站在现实应用的角度
    数据库指的是拥有操作界面的应用程序。比如用于操作的界面
我们不做特殊说明的下提数据库其实都是在指数据库软件			

数据库的分类

1.关系型数据库
    1.数据的组织方式有明确的表结构:id name pwd
        ps:关系型数据表可以看成是一个excel表格
    2.表与表之间可以建立数据库层面的关系(关联):学生表,成绩表
        ps:只要获取到学生表的姓名,就可以根据姓名去成绩表中查询对应学生的成绩
    3.常见关系型数据库及其介绍
        MySQL、PostgreSQL、MariaDB、Oracle、sqlite、db2、sql server        
        MySQL:开源,使用最广泛,数据库学习必学
        PostgreSQL:开源,支持二次开发
        MariaDB:开源,与MySQL是同一个作者,用法也极其相似
        Oracle:安全性极高,但是收费
        sqllite:小型数据库,主要用于本地测试

2.非关系型数据库    
    1.数据得组织方式没有明确的表结构,是以K:V键值对的形式组织的
        {'name':'jason','pwd':'123'}        
    2.数据间无法直接建立数据库层面的关系     
    3.常见非关系型数据库
        redis、mongoDB、memcache
        redis:目前最火,使用频率最高的缓存型数据库
        mongoDB:稳定型数据库,最像关系型数据库的非关系数据库
        memcache:目前已被redis淘汰

MySQL简介

1.MySQL版本问题
    5.6X:前几年使用频率最高的版本
    5.7X:最近尝试迁移的版本(频率+)
    8.0X:最新版 功能很强大 但是线上环境几乎不用(本地自己用非常好用)
2.下载与安装
    1.访问官网
    2.点击DOWNLOADS
    3.点击GPL
    4.点击community server
    5.点击archives
    6.点击download
3.解压安装
    上述方式下载的压缩包里含有服务端和客户端,支持本地操作
4.主要文件介绍
    bin文件夹
    mysqld.exe服务端	mysql.exe客户端
    data文件夹
        存取数据
    my-default.ini
        默认配置文件

基本使用

1.先启动服务端
    可能会报错:拷贝关键信息去百度
2.查找mysqld文件位置
    mysqld
    cmd窗口就是服务端 不要关闭
3.再次开启新的cmd窗口
    mysql
    直接回车会以游客模式进入 功能很少
4.用户名密码登录
    mysql -u用户名 -p密码
        mysql默认管理员账号 用户名是root 密码是空
5.退出
    exit
    quit   
	

系统服务制作

1.如何解决每次都需要切换路径查找文件的缺陷
    添加环境变量
2.将mysql服务端做成系统服务(随着计算机的开启而开启,关闭而结束)
    1.以管理员身份打开cmd窗口
    2.执行系统服务命令   mysqld  --install
    3.启动服务端
        1.右键直接点击启动
        2.命令启动   net start mysql
3.其他命令补充说明
    1.查看系统服务的命令   services.msc
    2.关闭mysql服务端   net stop mysql
    3.移除系统服务   
    先确保服务已经关闭  执行 mysqld --remove

密码相关操作

1.修改密码:mysqladmin命令
    通用方法:  # 直接在cmd中写  不需要登录
    mysqladmin -uroot -p原密码 password 新密码
    由于默认初始密码为空,所以第一次修改密码时原密码可以不用写
    其他方法:  # 需要先登录
        set password=PASSWORD(新密码);   
2.忘记密码 	
    先关闭服务端 然后以不需要校验用户身份的方式启动 再修改 最后再安装正常方式启动
    1.net stop mysql
    2.mysqld --skip-grant-tables
    3.mysql -uroot -p
    4.update mysql.user set password=password(123) where Host='localhost' and User='root';
    5.net stop mysql
    6.net start mysql

SQL与NoSQL

数据库的服务端支持各种语言编写的代码充当客户端,例如java,python等。但这些语言本身并不能互通,为了兼容所有类型的客户端,统一制定了一种特殊的语法,专门用来操作数据库。

SQL语句:操作关系型数据库的语法
NoSQL语句:操作非关系型数据库的语法
ps:SQL与NoSQL不仅用来表示语法,还可以用来表示各自对应的数据库。比如:SQL用来表示关系型数据库 NoSQL也可以用来表示非关系型数据库

数据库概念

'以下概念仅仅是为了小白能够更快的理解,并不是完全准确'
库:文件夹
表:文件夹里边的文件
记录:文件里一行行的数据

基本SQL语句

'''
注意:
1.所有SQL语句的结束符都是分号 ;
2.取消SQL执行,只需再后面加 \C
3.操作某个数据库前要先执行  use 库名;
'''
1.针对库的SQL:
	create database 库名;  #  创建数据库
	show databases;  #  查看所有数据库
        +--------------------+
        | Database           |
        +--------------------+
        | information_schema |
        | mysql              |
        | performance_schema |
        | test               |
        +--------------------+
	show create database 库名;  # 查看某个数据库
	alter database 库名 charset='gbk';  #  修改数据库的编码为gbk
	drop database 库名;  # 删除某个数据库
2.针对表的SQL:
	#  创建表
	create table 表名(字段名1 字段类型, 字段名2 字段类型);
        #  查看表
        show tables;  #  查看当前数据库中所有的表
        show create table 表名;  # 查看某张表
        describe 表名;  #  查看表的详细信息  
        desc 表名;  #  效果同上
        #  修改表
        alter table 旧表名  rename  新表名;  # 修改表名
        # 删除表
        drop table 表名;
3.针对记录的SQL
	# 添加记录
	insert into 表名 values(数据1, 数据2);  可以一次添加多条记录
	insert into 表名 values(数据1, 数据2),(数据1, 数据2) ;
	# 查找记录
	select * from 表名;  # 查找该表中所有的字段  * 表示所有
	select 字段1,字段2 from 表名;  # 查找某张表中的某个或某几条记录
        # 修改记录
        update 表名 set 字段名=新数据 where 筛选条件; # 根据筛选条件更新记录
        # 删除记录
        delete from 表名;  # 删除表中所有的数据,但不会删除该表。
  	delete from 表名 where 筛选条件  # 按照条件删除数据