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. jsonp 返回以前必须要再转一次json

      public static void main(String[] args) {        String ajaxJsonStr = null;        AjaxJson ajaxJson ...

    2. 大O表示法

      概念 大O表示法是和数据项的个数相关联的粗略度量算法时间复杂度的快捷方法. 常数一个无序可重复数组插入一个数据项的时间T是常数K,常数K表示一次插入所花费的时间,包含cpu.编译器等工作时间.可表示为 ...

    3. python-threading.Event实现事件功能--汽车过红绿灯(转载)

      python-threading.Event实现事件功能 enent可以通过设置.等待.清除一个标识(flag),来进行线程间的控制线程可以通过获取这个标志位(flag)的状态(设置或未设置)来控制线 ...

    4. Swiper-轮播图。

      Swiper(Swiper master)是目前应用较广泛的移动端网页触摸内容滑动js插件,可以用来做轮播和滑动. 初始化 <!DOCTYPE html> <html> < ...

    5. Linux 运维工程师一定要知道的六类好习惯和23个教训

      一.线上操作规范 1.测试使用当初学习Linux的使用,从基础到服务到集群,都是在虚拟机做的,虽然老师告诉我们跟真机没有什么差别,可是对真实环境的渴望日渐上升,不过虚拟机的各种快照却让我们养成了各种手 ...

    6. mac 打开整个系统的隐藏文件

      打开:defaults write com.apple.finder AppleShowAllFiles -bool true 关闭:defaults write com.apple.finder A ...

    7. .NET Reflector注册机激活方法

      .NET Reflector注册机是一款专门针对.NET Reflector(.NET反编译工具软件)而推出的一款破解辅助工具软件.因为官方破解版软件需要118美元才能用,不然只有14天的试用期,为此 ...

    8. css3实现border渐变色

      案例1 .box{ width: 100px; height: 100px; border:10px solid #ddd; border-image: -webkit-linear-gradient ...

    9. C++ 读书笔记1

      c++ 笔记1 body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding ...

    10. vs环境变量学习

      1. 查看vs环境变量: 在项目设置中的任何路径.目录编辑项目下,右下角有个“宏”,点开即可见所有vs环境变量的当前设置...听说还有其它地方,没看到. 2.上边的“宏”,即是英文的vs环境变量 3. ...