数据库应用发展、本质、分类、SQL与nosql、系统服务、使用基本SQL语句

今日学习内容总结

数据演变史

      1.单独的文本文件

      没有固定的存放位置:C:\a.txt D:\aaa\c.txt等。没有固定的数据格式,如:jason|123 tony$123 kevin~123等这样。这个时候程序彼此无法兼容。没有统一的标准。

      2.软件开发目录规范

      按照文件功能的不同规定了相应的位置,这个时候虽然文件查找变统一了,但是没有解决格式问题(核心问题)。

      3.数据库应用

      解决了存放位置和数据格式问题,将数据处理部分统一了起来。

数据库应用发展史

      1.单机游戏阶段

      数据各自保存在各自的计算机上,无法实现远程共享。 同时也不需要连接互联网。

      2.多机游戏阶段

      数据统一基于网络保存到某个固定的服务器上,实现数据共享。这个时候就需要互联网了。

      集群

      如果所有的数据全部存储到一台远程服务器上,那么数据的安全性降低,服务器的压力上升。所以增加远程服务器的数量,数据同步保存,任务均匀分担,具有相同功能的多个服务器组合到一起,就可以称之为是集群。

数据库本质

      数据库在微观层面上来说

      就是运行在计算机上专门处理数据的进程。

      数据库在宏观层面上来说

      提供给操作者一个简单快捷的操作进程的软件。我们平时在说数据库的时候大部分指的是操作数据库的应用软件。数据库软件的本质其实也是一款CS架构的软件。

数据库分类

      数据库共有2种类型:关系型数据库、非关系型数据库 。

关系数据库

      关系型数据库介绍

      关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联表的表格分类、合并、连接或选取等运算来实现数据的管理。

      什么是关系型数据库

    1. 二维的表格;
    
    2. 市场占有量较大的位MySQL和Oracle数据库;

    3. 通过SQL结构化查询语言来存取、管理数据;

    4. 保持数据一致性方面很强。ACID理论。

      常见数据库名称

    MySQL、Oracle、PostgreSQL、MariaDB、sqlite、sql server

    MySQL:关系型数据库的代表 开源免费 使用频率极高
    Oracle:安全性极高 但是使用和维护收费 使用成本高
    PostgreSQL:支持二次开发(自己嫁接、扩展功能)
    MariaDB:与MySQL是同一个作者 开发的初衷是作为MySQL的替代品
    sqlite:小型数据库 携带方便但功能较少 主要用于本地测试使用
    sql server:老牌数据库软件 目前主流不用

非关系型数据库

      非关系型数据库介绍

      非关系型数据库也被称为NoSQL数据库,NoSQL的本意是“Not Only SQL”,指的是非关系型数据库,而不是“No SQL”的意思(没有SQL语句?),因此,NoSQL的产生并不是要彻底否定关系型数据库,而是作为传统关系型数据库的一个有效补充。NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。

      什么是非关系数据库

    
    1. 没有固定的表结构 数据存取采用K:V键值对的形式(最主要的特征)

    2. 并且表与表之间无法建立代码层面的关系

      常见数据库名称:

    Redis、MongoDB、Memcache
    
    Redis:目前最火的非关系型数据库 数据类型丰富 功能强大
    MongoDB:最像关系型数据库的非关系型数据库 主要用于爬虫和大数据
    Memcache:被redis取代了

      诸多数据库软件,如何学习

      两大类数据库的操作方式几乎一致,学完一个其他都很容易上手。

SQL与NoSQL

      数据库服务端支持很多客户端来链接使用,数据库自带的客户端 python代码编写的 java代码编写的。如何让服务端兼容诸多客户端,实现正常交互:

	方式1:让服务端识别并自动切换对应语言
	方式2:统一沟通标准

      相较之下方式2更加合理,所以使用SQL语句与NoSQL语句。

    SQL语句
    	与关系型数据库交互的语言
    NoSQL语句
    	与非关系型数据库交互的语言

      SQL有时候用来标识关系型数据库,有时候表示SQL语句。

      NoSQL有时候用来标识非关系型数据库,有时候表示NoSQL语句。

MySQL简介

      MySQL数据库是一个中小型关系型数据库管理系统,软件开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购,后Sun公司又被oracle公司收购。目前MySQL被广泛地应用在Internet上的大中小型网站中。由于体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多大中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库,甚至国内知名的淘宝网页选择弃用ORACLE而更换为更开放的MySQL。

      MySQL数据库主要应用范围:互联网领域、大中小型网站,游戏公司,电商平台等等。

      版本问题

  5.6X:使用最为广泛的稳定版本
  5.7X:目前正在逐步过渡使用的版本
  8.0X:最新版本 暂时不投入正常生产环境使用(其实很好用!!!)

      mysql的下载使用

    # 官网  https://www.mysql.com/
    1.点击步骤:
    downloads
    	(GPL) Downloads
      	MySQL Community Server
        	Archives
          	选择版本和系统(以5.6.44为例)
            	点击下载对应的zip压缩包即可

    2. 解压处理
  	建议压缩到D或者E、F盘的根目录方便查找
  	mysql-5.6.44-winx64.zip  >>>  mysql-5.6.44-winx64

      目录结构

    bin文件夹
    mysqld.exe		服务端
    mysql.exe			客户端
    # 学习阶段服务端在本地启动即可
    data文件夹
  	存放数据
    my-default.ini文件
  	默认配置文件
 	README文件
  	说明书

基本使用

      必须要先启动服务端,再启动客户端链接。以D:\mysql-5.6.44-winx64为例。

    1.以管理员身份运行cmd
    	切换到bin路径下
      	D:
        cd mysql-5.6.44-winx64\bin
    2.启动服务端 
    	mysqld
    		# 维持cmd窗口不要关闭 重新打开一个新的cmd窗口
    3.启动客户端链接服务端
    	先切换到bin路径下 
      	D:
        cd mysql-5.6.44-winx64\bin
      然后直接输入mysql即可登录服务端
      # 不带用户名和密码 是游客模式(只能体验基本功能)

    # 启动服务端的时候,可能会报错。解决策略就是拷贝报错信息,百度搜索。

系统服务

      两个想法:

    1.我们不想切换路径 直接输入命令
    2.我们不想自己启动服务端 设置成开机自启动(消耗的资源很少 不要担心)

      针对第一个点的解决措施就是添加环境变量,如:将D:\mysql-5.6.44-winx64\bin添加到系统环境变量。

      针对第二个点的解决措施就是编写固定的指令即可:

    1.先确保之前测试的服务端关闭(直接点击关闭即可)
    2.重新以管理员的身份打开cmd窗口
        mysqld --install
        # 结果大致显示: ... successfully
    3. 初次启动需要人为干预
        net start mysql
    4.关闭所有的cmd 随意打开一个cmd窗口 
        输入mysql即可链接到服务端

      如果想要移除系统服务

    1.先停止服务端
	net stop mysql  管理员身份运行cmd
    2.移除系统服务
	mysqld --remove

修改密码

      1.直接输入mysql登录,默认是游客模式,没有太多操作的权限。

      2.使用用户名和密码的方式登录。 mysql -u用户名 -p密码。可以不写密码,-p后直接回车,然后提示输入密码。这种方式不会把密码显示出来。

      3.修改管理员密码

	方式1:在cmd窗口下直接修改(不要登录进去)
    	mysqladmin -u用户名 -p原密码 password 新密码
          '''第一次无密码修改 -p后面不写即可'''
    	mysqladmin -uroot -padmin123 password jason123
        方式2:登录状态下修改当前用户密码(先登录)
    	set password=PASSWORD('新密码');  # 最新版不支持

      区分是否是游客模式的方法:

    可以执行show database;  # 查看所有的库名称,类似于查看data文件夹内文件夹的名称
    结果如果是两条 表示是游客
    结果如果是四条及以上 表示是用户

重要概念

    库    相当于 文件夹
    表    相当于 文件
    记录  相当于 文件中一行行数据
    SQL语句使用分号作为结束符

操作库的基本SQL语句

    # 查
	show databases;  # 查看所有的库名称
	show create database 库名;  # 指定查看某个库的信息
  
    # 增
    	create database 库名;
      
    # 改
    	alter database 库名 charset='gbk';  # 修改字符编码

    # 删
    	drop database 库名;

操作表的基本SQL语句

      表是存放于库下面的,所以操作表之前,应该先确定库。查看当前在哪个库下的方式:select database();结果如果是NULL表示当前没有切换到任何库下,如何切换到指定库下:use 库名。强调我们在操作库、表、记录的时候 MySQL默认自带的都不要动。

      create database 库名;
      use 库名;
      # 查
      	show tables;  # 查看当前库下所有的表名称
        show crate table 表名;  # 指定查看某个表的信息
        describe 表名;  # 指定查看表的字段信息  简写 desc 表名;
        
      # 增
      	create table 表名(
          字段名称1 字段类型1,
          字段名称2 字段类型2
        );
        
      # 改
      	alter table 表名 rename 新表名;  # 修改表名

      # 删
      	drop table 表名;

操作记录的基本SQL语句

      要想操作记录,肯定得先有库和表。

      

  select * from 表名;  # 查看表里面所有的数据
  select * from 库名.表名;  # 查看指定库下面的指定表里面的所有数据
  select Host,User from mysql.user  # 查看指定字段

      有些表里面的字段太多,展示的时候会错乱,可以考虑逐行展示:
select * from 库名.表名\G。

      

  insert into 表名 values(值1,值2);  # 单条数据
  insert into 表名 values(值1,值2),(值3,值4);  # 多条数据

      

    update 表名 set 字段=新值 where 筛选条件;
    update t1 set name='jasonNB' where id=1;

    # 将id是1的数据中name字段对应的值改成jasonNB

      

  delete from 表名 where 筛选条件;
  delete from t1 where id=3;

  # 将id是3的数据删除,如果不加筛选条件就是删除所有的数据。
posted @ 2022-05-03 20:27  くうはくの白  阅读(120)  评论(0)    收藏  举报