数据库基础,基本SQL语句

数据存取演变史

1.文本文件

最基础的数据存储方式,但没有统一的规范,导致它的存放位置和数据格式有所不同,不利于以后不同的人去维护。

缺点

  1. 没有固定的存储地址
  2. 没有固定的数据存储类型

总结:程序应用无法做到兼容

2.软件目录开发规范

按照文件功能的不同规定了相应的位置,解决了部分兼容问题。

规定了数据文件的大致存储位置: db文件夹
但是针对数据格式还是没有完全统一: 比如统一json文件但是内部键值对不同

3.数据库服务

统一了存取位置 也统一了数据格式(完全统一)

数据库软件应用史

1.单机游戏阶段

当处理完数据储存方式后,只是解决了各种项目上的问题,暂时只能实现数据的区域性共享,无法向互联网上进行交互。

不足:

不同计算机上的相同程序,数据不能共享;数据库服务都在本地存储。

2.网络游戏阶段

利用服务器解决了数据交互共享,使得开发的项目可以去共更多人使用。

实现:

不同的计算机上的相同程序,数据可以共享。

数据基于网络保存在同一个服务器上。

不足:

但是如果所有的数据都保存在同一个服务器里,会降低服务器的安全性,负载量大大增加。

集群:

增加远程服务器的数量 数据同步保存 任务均匀分担,具有相同功能的多个服务器组合到一起 就可以称之为是集群

可以解决服务器的安全问题和服务器负载问题。

数据库的本质

数据库三字在不同角度下描述的意思不一样
1.站在底层原理的角度
	数据库指的是专用用于操作数据的进程
		eg:运行在内存中的代码
2.站在现实应用的角度
	数据库指的是拥有操作界面的应用程序
		eg:用于操作进程的界面

总结:

  • 我们平时在说数据库的时候大部分指的是操作数据库的应用软件
  • 我们也称数据库软件本质是一款cs架构的应用程序。言外之意就是程序员也可以自己编写出一款数据库软件。现在市面上已经有很多数据库软件了!!!

数据库的分类

关系型数据库

关系型数据库,存储的格式可以直观地反映实体间的关系。关系型数据库和常见的表格比较相似,关系型数据库中表与表之间是有很多复杂的关联关系的。

特点:

1.数据的组织方式有明确的表结构
	id	name  password
	ps:关系型数据库存取数据的方式可以看成是表格
2.表与表之间可以建立数据库层面的关系
	eg:
      用户表	房屋表
ps:只要获取到用户表的一条数据 就可以获取到与之相关的其他表数据

常见的关系型数据库:MySQL,PostgreSQL、MariaDB、Oracle、sqlite、db2、sql server

MySQL:开源 使用最为广泛 数据库学习必学
PostgreSQL:开源 支持二次开发
MariaDB:开源 与MySQL是同一个作者 用法也极其相似
Oracle:收费 安全性极高 主要用于银行及各大重要机关
sqlite:小型数据库 主要用于本地测试(django框架自带该数据库)

非关系型数据库

NoSQL数据库适合追求速度和可扩展性、业务多变的应用场景。对于非结构化数据的处理更合适;出于简化数据库结构、避免冗余、影响性能的表连接、摒弃复杂分布式的目的被设计。

特点:

1.数据的组织方式没有明确的表结构 是以k:v键值对的形式组织的
   {'name':'jason'}
	{'username':'kevin','pwd':123}
2.数据之间无法直接建立数据库层面的关系

常见的非关系型数据库:redis、mongoDB、memcache

redis:目前最火 使用频率最高的缓存型数据库
mongoDB:稳定型数据库 最像关系型的非关系型 主要用于爬虫、大数据
memcache:已经被redis淘汰

MySQL简介

1.MySQL版本

5.6X:前几年使用频率最高的版本
5.7X:最近尝试迁移的版本(频率+)
8.0X:最新版 功能很强大 但是线上环境几乎不用(本地自己用非常好用)

虽然版本不同,但是基本使用都是差不多的,主要体现在底层运作。

2.MySQL的安装与下载

  1. 1.访问官网

    下载地址:https://www.mysql.com/

  2. 下载步骤

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.主要文件目录介绍

在这里插入图片描述

bin文件夹
	mysqld.exe服务端		mysql.exe客户端
data文件夹
	存取数据
my-default.ini
	默认配置文件

基本使用

必须要先启动服务端,然后再打开一个窗口用作于客户端

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

提示:

启动服务端的时候可能会报错
解决策略:
拷贝报错信息(mysql启动报错’错误代码)网上搜索,基本都会有解决方式

系统服务制作

引入

取消繁杂的命令启动,利用计算机的系统服务处理。

问题

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

问题一

针对问题一的解决措施就是添加环境变量

将D:\MySql\mysql-5.6.44-winx64\bin添加到环境变量

问题二

针对问题二的解决措施就是编写固定的命令,使得跟随电脑开关机自动化

  1. 先确保之前的服务端关闭了,然后重新以管理员的身份打开cmd窗口

  2. 执行系统服务命令

    mysqld --install
    
  3. 启动服务端

    方法一.右键直接点击启动
    方法二.命令启动
    		net start mysql
    
  4. 关闭所有的cmd 随意打开一个cmd窗口
    输入mysql即可链接到服务端

补充知识:

  1. 查看系统服务的命令

    services.msc
    
  2. 关闭mysql服务端

    net stop mysql
    
  3. 移除系统服务

    1.先确保服务已经关闭
    2.执行移除命令
    	mysqld --remove
    

密码相关操作

登录的两种方式

  1. 直接输入mysql命令登录

    默认是游客模式,没有太多的权限

  2. 通过用户和密码登录

    学习阶段不用考虑用户管理 直接使用root用户(管理员账号,第一次登录没有密码)

    mysql -uroot -p 直接回车
    

修改密码

  1. 方式1:在cmd窗口下直接修改(不要登录进去)

    mysqladmin -u用户名 -p原密码 password 新密码
    
    • 第一次修改

      mysqladmin -uroot -p password 123
      
    • 第二次修改

      mysqladmin -uroot -p123 password 321
      
  2. 方式2:登录状态下修改当前用户密码(需要先登录)

    set password=PASSWORD(新密码);  有些版本不支持,比较偏门
    

忘记密码

直接重装\拷贝对应文件
先关闭服务端 然后以不需要校验用户身份的方式启动 再修改 最后再安装正常方式启动
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

引入

数据库服务端支持很多客户端来链接使用,这就使得数据库自带的客户端可能是 python代码编写的也可能是 java代码编写的 …
那如何让服务端兼容诸多客户端 实现正常交互呢?

为了能够兼容所有类型的客户端 有两种策略

1.服务端兼容
    	不合理 消耗数据库服务端资源!!!
2.制定统一标准
		统一沟通标准,SQL语句、NoSQL语句
  • SQL语句
    与关系型数据库交互的语言
  • NoSQL语句
    与非关系型数据库交互的语句

总结:

SQL语句的意思是操作关系型数据库的语法
NoSQL语句的意思操作非关系型数据库的语法
ps:SQL有时候也用来表示关系型数据库 NoSQL也用来表示非关系型数据库

数据库重要概念

  1. SQL语句结束符是分号
  2. 取消SQL语句的执行(\c)
  3. 重要概念
    库 >>> 文件夹
    表 >>> 文件夹里的文件
    记录 >>> 文件里一行一行的数据

查看所有的数据库:show databases;
查看所有的表:show tables;
查看user表里面所有的记录:select * from mysql.user;

针对库的基本SQL语句

  • create database 库名;
    
  • show database 库名;
    show create database 库名;
    
  • alter database 库名 charset='gbk'; # 修改库的编码
    
  • drop database 库名;
    

针对表的基本SQL语句

补充

查看当前所在的库名:

select database();

如果没有没有切换指定的库,那么就会显示NULL

如何切换库?

use 库名;

强调

我们在操作库、表、记录的时候 MySQL默认自带的都不要动

  • create table 表名(字段1 字段类型1, 字段2 字段类型2, .......)
    
  • select tables;  # 查看所有的表
    select create table 表名;
    describe 表名;
    desc 表名;
    
  • alter table 旧表名 rename 新表名;
    
  • drop table 表名;
    

针对记录的基本SQL语句

  • insert into 表名 values (数据, 数据);  # 创建单条数据
    insert into 表名 values(数据, 数据), (数据, 数据), (数据, 数据);  # 创建多条数据
    alter table 表名 add 字段名 字段类型;  # 新增字段 
    
  • select * from 表名;  # 查询表中所有数据
    select 字段名,字段名 from 表名;   # 根据字段名查找数据
    ps:如果表中字段较多出现了错乱 可以结尾写\G
    
  • update 表名 set 字段名=新数据值 where 筛选条件;
    
  • delete from 表名;  # 删除所有的数据
    delete from 表名 where 筛选条件;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值