MySQL基础----py全栈

时间:2023-03-09 01:19:40
MySQL基础----py全栈

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基础----py全栈

MySQL基础----py全栈

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