MySQL基础----py全栈


一、引言

1、什么是数据?

描述事物的符号记录,可以使数字,也可以是文字,图形、图像等,数据有多种形式,它们都可以经过数字化存入计算机,数据的含义成为数据的语义

2、什么是数据库(DB)?

存储数据的仓库,是长期存放计算机内、有组织、可共享的大量数据的集合,数据库中的数据是按照一定数据模型组织的,描述和存储,具有较小的冗余度,较高的独立性和易扩展性,并为各种用户共享,即数据库有永久存储、有知识和可共享的三个基本特点。

3、什么是数据库管理系统(DBMS)?

数据库管理系统又称DBMS(Database Management System ),顾名思义,位于用户和操作系统之间的一层数据管理软件。数据库管理系统主要有以下功能:

  • 数据定义功能:提供数据定义语言(DDL),让用户方便地对数据库中数据对象进行定义
  • 数据组织、存储和管理:要提高存储空间利用率和存储效率
  • 数据操纵功能:提供数据操纵语言(DML),实现对数据库基本操作,如增删改查
  • 数据库的建立和维护功能:统一管理控制,以保证安全、完整、多用户并发使用。
  • 其他功能:与网络中中的其他软件系统通信功能,异构数据库之间的互访和互操作功能。

常听说的数据库管理系统有MySQL、Oracle、SQLite、Access、MS SQL Server等,他们均是软件,它们属于关系型数据库。他们都有两个主要功能:

  • 将数据保存到文件或内存
  • 接受client特定的命令,然后对文件进行相应的操作

4、什么是数据库系统?

指的是计算机系统中引入数据库后的系统,一般有数据库、数据库管理系统、应用系统、数据库管理员(DBA)构成,常简称为数据库。

5、数据库管理系统由来

  • 数据库管理系统由来

    我们思考几个问题,在网络编程中我们的远端Client的用户产生的数据,我们要存放到什么地方,比较数据保存在本地硬盘,来分析,下面是分析过程:

    数据存放位置 在本地管理数据 在远端管理数据
    功能实现 1、创建本地目录、存放文件
    2、有多个目录,用来归类存放不同类型的数据文件
    3、不同用户有不同的权限,用户可以访问,修改自己的数据
    1、用户只要有socketClient客户端,就可以访问远端拿到数据
    2、远端存放数据的位置有socket服务端接受数据,并保存数据。
    3、不同用户可以在远端服务器通过socket执行命令(来操作保存数据文件)
    4、不能 用户有不同的权限,对文件

6、什么是数据模型?

是对现实世界数据特征的抽象,是对现实世界的模拟,是数据库系统的核心和基础。数据模型应满足三方面需求:1.真是模拟现实世界;2.容易为人理解;3.便于在计算机上实现。数据模型按应用目的分为两类:

  • 第一类是概念模型:按用户观点对数据和信息建模,主要用于数据库设计,也称信息模型。
  • 第二类是逻辑模型和物理模型:逻辑模型是按计算机观点对数据建模,主要包括层次模型、网络模型、关系模型、面向对象模型、对象关系模型;物理模型是对数据最底层的抽象,它描述数据在系统内部的表示方式和存取方法。

数据模型通常由数据结构、数据操作和完整性约束三部分组成,是严格定义的一组概念的集合,精确的描述了系统的静态特写、动态特性和完整性约束条件。

7、什么是概念模型?

用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力的工具,也是设计人员与用户之间进行交流的语言。信息世界涉及的概念主要有:

  1. 实体(Entity):客观存在并可相互区别的事物成为实体。可以是人、事、物,也可以是抽象的概念和联系。
  2. 属性(Attribute):实体所具有的某一特性。一个实体可以又若干个属性来刻画。
  3. 码(Key):唯一标识实体的属性集。
  4. 域(Domain):域是一组具有相同数据类型的值的集合。属性的取值范围来自某个域。
  5. 实体型(Entity Type):具有相同属性的实体必然具有共同的特征和性质。用实体名和属性名集合来抽象和刻画同类实体,称为实体型。
  6. 实体集(Entity Set):同一类型实体的集合。
  7. 联系(Relationship):实体内部和实体之间的联系。实体之间的联系有一对一,一对多、多对多三种。

8、什么是关系型数据库?

指建立在关系模型基础上的,而关系模型本质上就是若干个存储数据的二维表。

二、MySQL数据库的安装以及服务配置

MySQL是一个关系型数据库管理系统,目前属于Oracle旗下,MySQL最流行的关系型数据库管理系统(又称RDBMS,Relational Database Management System),想要使用MySQL数据库我们需要以下步骤:

  • 安装mysql服务端
  • 安装mysql客户端
  • 客户端连接服务端
  • 客户端发送命令给服务端,服务端根据指令执行对数据的相应操作。

1、windows版本

windows下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads

  • 安装

    我们下载的是zip版本,解压之后,就可以了,即可。

MySQL目录解释:

bin -----存放mysql的可执行文件,如:mysql、mysqld等。

data -----用于防止一些日志文件以及数据库,默认没有,初始化之后生成

docs ------存放,mysql用法的说明文档

include ----用于放置一些头文件

lib -----用于放置一些mysql要用到的库文件

share ------用于放置一些字符集、语言等信息。

  • 服务配置

    • 初始化mysql数据库,生成data目录

      cd D:\Download\mysql-5.7.25-winx64\bin
      mysqld --initialize-insecure
    • 启动MySQL服务端

      #----------------------方法一-----------
      #打开命令窗口
      #进入可执行文件目录
      cd D:\Download\mysql-5.7.25-winx64\bin
      #启动mysql服务
      mysqld #-------------------方法二----------------
      #将mysql的可执行文件目录添加到系统的环境变量PATH中
      #步骤:
      #控制面板->系统和安全->系统->高级系统设置,打开【系统属性】面板
      #在【系统属性】面板中,选中高级选项卡,点击环境变量,打开【环境变量】面板
      #在【环境变量】面板中,在【系统变量】里查找选中变量为PATH的一行,点击编辑,
      #在变量值得末尾,添加值【;D:\Download\mysql-5.7.25-winx64\bin】,注意一点要加上分号。 # 在任意目录,打开命令窗口,直接输入mysqld命令,即可开启服务 #---------------------方法三------------
      #步骤:
      #在命令窗口执行以下命令,注册mysqld为windows服务
      "D:\Download\mysql-5.7.25-winx64\bin" --install
      #执行以下命令,移除mysqld服务。
      "D:\Download\mysql-5.7.25-winx64\bin" --remove
      #注册成功之后,以后再启动和关闭mysql服务时,仅需在命令行输入
      #启动服务
      net start mysqld
      #关闭服务
      net stop mysqld

      对比三种方法:

      1、方法一:在命令行开启服务,关闭命令窗口,服务停止,并且每次需要进入到bin目录下执行命令

      2、方法二:不需要进入bin目录下执行命令,但是关闭命令窗口,服务也停止

      3、方法三:不需要进入并bin目录下执行命令,并且关闭命令窗口,服务仍然在执行。

      总结:

      最佳方式是结合方法二和方法三,

      将bin目录添加到path路径下,然后注册mysqld为windows服务。

    • 启动MySQl客户端

      我们下载的软件中,包含了mysql服务端程序,也包含了客户端程序,统一放到了bin目录下,如果我们已经将bin添加到path路径下的话,我们执行下面的命令去连接数据库:

      #连接MySQL服务器,之后敲两个回车就行了,一开始默认没有设置密码
      mysql -u root -p #本地登陆(客户端和服务端在一起) #命令解释:
      #mysql -u 用户名 -h 服务器ip地址 -p 密码

2、linux系统

  • 安装

    这里我们介绍CentOS7以上系统,默认自带yum包管理工具。

    yum install mariadb-server mariadb
    # mariadb-server 主要提供mysql服务
    # mariadb 主要提供一些客户端命令行工具
  • 配置

    #初始化数据库,
    mysql_secure_installation #设置root密码。删除车市数据库,修改匿名用户等操作。
    #启动服务
    systemctl start mariadb

3、client端连接远程数据库(Mysql数据库)

  • 使用命令行工具

    #命令解释:
    mysql -u 用户名 -h 服务器ip地址 -p 密码 -P 端口号
    # 注意前提是安装mysql自带的客户端工具。windows默认安装,linux只需要安装mariadb这个包
    #默认端口号3306
    #默认本地ip地址
  • 使用一些数据库连接软件

    windows:phpMyAdmin、Navicat 、DBeaver

  • 一些库支持

    python语言版本:pymysql、MySQLsb、mysqlclient

三、MySQL数据库

1、一些概念解释

  • 什么是SQL?

    MySQL、Oracle等软件可以接受命令,并作出相应的操作,由于命令中可以包含删除文件、获取文件内容等众多操作,对于编写的命令就是SQL语句。SQL是结构化语言的缩写,用来专门与数据库进行通信的语言。

2、数据库基本命令

  1. 显示数据库

    show databases;
    #显示当前登录用户可以查看的数据库列表。

    默认root用户有四张表:

    information_schema :提供了访问数据库元数据的方式。(元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有时用于表述该信息的其他术语包括“数据词典”和“系统目录”。)

    mysql :mysql的核心数据库,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息

    performance_schema :主要用于收集数据库服务器性能参数。主要用于收集数据库服务器性能参数。

    sys:Sys库所有的数据源来自:performance_schema。目标是把performance_schema的把复杂度降低

  2. 创建数据库:

    # utf8编码
    CREATE DATABASE test1 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    #整条语句语义:创建数据库名为test1,设置缺省的编码格式(字符集)为utf8,按照utf8进行排序,比较等操作。 #gbk编码
    CREATE DATABASE test DEFAULT CHARACTER SET gbk COLLATE gbk_general_ci;
    #整条语句语义:创建数据库名为test1,设置缺省的编码格式(字符集)为gbk,按照gbk编码进行排序 #字段解释:
    #collate:设置比较操作,用什么编码方式进行比较。
    #charset utf8 :设置数据库使用utf8字符集
    #character set gbk:设置数据库使用gbk字符集 #sql语句不强制使用大小写,但是为了便于观看,我们将系统字段写成大写,用户输入写成小写
  3. 数据表简单操作

    #进入数据库
    USE test1;
    #显示test2数据库中所有的表
    SHOW TABLES;

3、数据库用户管理

  1. 创建用户

    #格式:
    create user '用户名'@'ip地址' identified by '密码';
    #例子
    create user 'dman'@'localhost' identified by 'password';
    #创建用户名为dman,密码为password。该用户只能通过在本地登陆。
  2. 删除用户

    #格式
    drop user '用户名'@'IP地址';
    #例子
    drop user 'dman'@'localhost';
  3. 修改用户

    #格式
    rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
    #例子
    rename user 'dman'@'localhost' to 'test'@'localhost';
  4. 修改密码

    #格式
    set password for '用户名'@'IP地址' = password('新密码')
    #例子
    set password for 'test'@'localhost' = password('redhat');

    注意事项:

    1、用户权限相关数据保存在mysql数据库的user表中,在root用户下可以对其直接进行操作,但是不建议这样做。

    2、当用户创建之后,用户只能登陆到mysql,但是不能干任何事情,需要我们去授权之后才可以。

4、数据库用户授权

  1. 查看用户权限

    show grants for '用户'@'IP地址';
    
    
  2. 授予某用户什么权限

    grant  权限 on 数据库.表 to   '用户'@'IP地址'
    
    
  3. 取消某用户权限

    revoke 权限 on 数据库.表 from '用户'@'IP地址' 
    
    
  4. 立刻刷新数据到内存,使权限更改立刻生效

    flush privileges  #将数据读取到内存中,从而立即生效。
    
    

    ​ all privileges 除grant外的所有权限

    ​ select 仅查权限

    ​ select,insert 查和插入权限

    ​ ...

    ​ usage 无访问权限

    ​ alter 使用alter table

    ​ alter routine 使用alter procedure和drop procedure

    ​ create 使用create table

    ​ create routine 使用create procedure

    ​ create temporary tables 使用create temporary tables

    ​ create user 使用create user、drop user、rename user和revoke all privileges

    ​ create view 使用create view

    ​ delete 使用delete

    ​ drop 使用drop table

    ​ execute 使用call和存储过程

    ​ file 使用select into outfile 和 load data infile

    ​ grant option 使用grant 和 revoke

    ​ index 使用index

    ​ insert 使用insert

    ​ lock tables 使用lock table

    ​ process 使用show full processlist

    ​ select 使用select

    ​ show databases 使用show databases

    ​ show view 使用show view

    ​ update 使用update

    ​ reload 使用flush

    ​ shutdown 使用mysqladmin shutdown(关闭MySQL)

    ​ super

    MySQL基础----py全栈的更多相关文章

    1. MySQL进阶(视图)---py全栈

      目录 mysql进阶(视图)---py全栈 一.什么是视图? 二.视图的特性 三.视图的优点 四.使用场合 五.视图基本操作 六.案例 mysql进阶(视图)---py全栈 一.什么是视图? 视图是从 ...

    2. 一个关于vue+mysql+express的全栈项目(一)

      最近学了mysql数据库,寻思着能不能构思一个小的全栈项目,思来想去,于是就有了下面的项目: 先上几张效果图吧       目前暂时前端只有这几个页面,后端开发方面,有登录,注册,完善用户信息,获取用 ...

    3. MySQL基础(非常全)

      MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...

    4. (转载)MySQL基础(非常全)

      MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...

    5. 一个关于vue+mysql+express的全栈项目(三)------ 登录注册功能的实现(已经密码安全的设计)

      本系列文章,主要是一个前端的视角来实现一些后端的功能,所以不会讲太多的前端东西,主要是分享做这个项目学到的一些东西,,,,, 好了闲话不多说,我们开始搭建后端服务,这里我们采用node的express ...

    6. 一个关于vue+mysql+express的全栈项目(六)------ 聊天模型的设计

      一.数据模型的设计 这里我们先不讨论群聊的模型,指讨论两个人之间的聊天,我们可以把两个人实时聊天抽象为(点对点)的实时通讯,如下图 我们上面的所说的模型其实也就是数据包的模型应该怎么设计,换句话说就是 ...

    7. 一个关于vue+mysql+express的全栈项目(五)------ 实时聊天部分socket.io

      一.基于web端的实时通讯,我们都知道有websocket,为了快速开发,本项目我们采用socket.io(客户端使用socket.io-client) Socket.io是一个WebSocket库, ...

    8. 一个关于vue+mysql+express的全栈项目(四)------ sequelize中部分解释

      一.模型的引入 引入db.js const sequelize = require('./db') sequelize本身就是一个对象,他提供了众多的方法, const account = seque ...

    9. 一个关于vue+mysql+express的全栈项目(二)------ 前端构建

      一.使用vue-cli脚手架构建 <!-- 全局安装vue-cli --> npm install -g vue-cli <!-- 设置vue webpack模板 --> vu ...

    随机推荐

    1. 行动学习方法----PARR

    2. 非J2EE部署解决方案

       根据交银施罗德真实环境已测试通过,此过程可以作为非J2EE部署的典型案例,主要是针对某些对安全性要求较高的解决方案: 基本的实现原理和部分代码如下: 1.客户端访问交银.net系统,由该系统发送 ...

    3. redis 适用场景、缓存选择、java实现

      redis适用场景 查询多,修改少:如国家地区信息.商品分类.数据字典 缓存选择 hibernate二级缓存.mybatis二级缓存.redishibernate二级缓存.mybatis二级缓存默认不 ...

    4. for循环内嵌套finally使用的意外获得

      在for循环中有continue和break,无论执行continue还是break   finally的逻辑都会执行,原本以为是不执行的 格式 for (int i = 0; i < 3; i ...

    5. Linux pyenv环境安装

      python工作环境管理 pyenv安装: git clone https://github.com/pyenv/pyenv ~/.pyenv echo 'export PYENV_ROOT=&quo ...

    6. 课后作业week 5 —— 两款修图软件优势及创新分析

      由于我平时没事也会修修照片什么的,也用过一些不同种类的修图软件,这次作业就选择了其中两款比较热门的软件进行分析. 说到手机修图app,很多人很容易想到“美图秀秀”,的确这款app在修图软件领域的确算的 ...

    7. windows下建立netcore控制台程序,然后传送到centos7下的docker容器里运行

      1.首先,在window下用vs2017开发netcore控制台项目. 2.把建立好的项目传送到centos7下面的容器里. docker cp sharefoldersforwindows/ 359 ...

    8. The Go scheduler

      转载自:http://morsmachine.dk/go-scheduler Introduction One of the big features for Go 1.1 is the new sc ...

    9. Oracle EBS 查询客户报错 查询已超出 200 行。可能存在更多的行,请限制查询。

    10. 用NSOperation写下载队列

      用NSOperation写下载队列 说明 1. 支持缓存机制 2. 图片都是在主线程中加载 3. 文件名用了md5加密 *这东西被人写烂了,但大伙如果对NSOperation不熟悉的话,可以看看本人的 ...