zoukankan      html  css  js  c++  java
  • Python全栈开发【MySQL】

    什么是数据库?

    数据库(Database)是按照数据结构来组织、存储和管理数据的仓库.

    每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。

    我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

    所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

    RDBMS即关系数据库管理系统(Relational Database Management System)的特点:

    1.数据以表格的形式出现

    2.每行为各种记录名称

    3.每列为记录名称所对应的数据域

    4.许多的行和列组成一张表单

    5.若干的表单组成database

    什么是 MySQL、Oracle、SQLite、Access、MS SQL Server等 ?

    都均为一个软件,都有俩个主要的功能。a.将数据保存到文件或内存 b.接收待定的命令,然后对文件进行操作

    PS:如果有了以上软件,无须自己再去创建文件和文件夹,而是直接传递 命令 给上述软件,让其来进行文件操作,他们统称为数据库管理系统(DBMS,Database Management System)

    什么是SQL ?
     答:上述提到MySQL等软件可以接受命令,并做出相应的操作,由于命令中可以包含删除文件、获取文件内容等众多操作,对于编写的命令就是是SQL语句。SQL是结构化语言(Structured Query Language)的缩写,SQL是一种专门用来与数据库通信的语言。

    RDBMS 术语

    开始学习MySQL 数据库前,先了解下RDBMS的一些术语:

    数据库: 数据库是一些关联表的集合。.

    数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。

    列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。

    行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。

    冗余:存储两倍数据,冗余可以使系统速度更快。

    主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。

    外键:外键用于关联两个表。

    复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。

    索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。

    参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

    Mysql数据库

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

    • Mysql是开源的,所以不需要支付额外的费用。
    • Mysql支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
    • MySQL使用标准的SQL数据语言形式。
    • Mysql可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
    • MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
    • Mysql是可以定制的,采用了GPL协议,可以修改源码来开发自己的Mysql系统。

    Mysql安装

    想要使用MySQL来存储并操作数据,则需要做几件事情:
      a. 安装MySQL服务端
      b. 安装MySQL客户端
      c. 【客户端】连接【服务端】
      d. 【客户端】发送命令给【服务端MySQL】服务的接受命令并执行相应操作(增删改查等)

    下载
            http://dev.mysql.com/downloads/mysql/
    安装
            windows:
                点点点
            Linux:
                yum install mysql-server
            Mac:
                点点点

    windows

    1、下载

    MySQL Community Server 5.7.17
      
    http://dev.mysql.com/downloads/mysql/

    2、解压

    如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:D:Mysqlmysql-5.7.17-winx64

    3、初始化

    在D:Mysqlmysql-5.7.17-winx64目录下新建data目录

    MySQL解压后的 bin 目录下有一大堆的可执行文件,执行如下命令初始化数据:

    cd c:mysql-5.7.16-winx64in
      
    mysqld --initialize-insecure

    4、启动Mysql服务

    因为重复的进入可执行文件目录比较繁琐,如想日后操作简便,可以做如下操作。

    a.添加环境变量

    将MySQL可执行文件添加到环境变量中,从而执行执行命令

    【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】
      
    如:
    C:Program Files (x86)ParallelsParallels ToolsApplications;%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;%SYSTEMROOT%System32WindowsPowerShellv1.0;C:Python27;C:Python35;D:Mysqlmysql-5.7.17-winx64in

    这样,再启动服务的时候,仅仅需要

    # 启动MySQL服务,在终端输入
    mysqld
      
    # 连接MySQL服务,在终端输入:
    mysql -u root -p

    b. 将Mysql服务制作成windows服务

    上一步虽然解决了一些问题,但不够彻底,因为在执行【mysqld】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题:

    # 制作MySQL的Windows服务,在终端执行此命令:
    "D:Mysqlmysql-5.7.17-winx64inmysqld" --install
      
    # 移除MySQL的Windows服务,在终端执行此命令:
    "D:Mysqlmysql-5.7.17-winx64inmysqld" --remove

    注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:

    # 启动MySQL服务
    net start mysql
      
    # 关闭MySQL服务
    net stop mysql

    5、启动MySQL客户端并连接MySQL服务

    由于初始化时使用的【mysqld --initialize-insecure】命令,其默认未给root账户设置密码

    # 终端命令提示符
    # 连接MySQL服务器
    mysql -u root -p
      
    # 提示请输入密码,直接回车

    然后出现下图

    此刻,MySQL服务端已经安装成功并且客户端已经可以连接上.

    mysql忘记密码怎么办?

    方法1:启动mysql时,跳过授权表

    [root@controller ~]# service mysqld stop
    [root@controller ~]# mysqld_safe --skip-grant-table &
    [root@controller ~]# mysql
    mysql> select user,host,password from mysql.user;
    +----------+-----------------------+-------------------------------------------+
    | user     | host                  | password                                  |
    +----------+-----------------------+-------------------------------------------+
    | root     | localhost             | *A4B6157319038724E3560894F7F932C8886EBFCF |
    | root     | localhost.localdomain |                                           |
    | root     | 127.0.0.1             |                                           |
    | root     | ::1                   |                                           |
    |          | localhost             |                                           |
    |          | localhost.localdomain |                                           |
    | root     | %                     | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
    +----------+-----------------------+-------------------------------------------+
    mysql> update mysql.user set password=password("123") where user="root" and host="localhost";
    mysql> flush privileges;
    mysql> exit
    [root@controller ~]# service mysqld restart
    [root@controller ~]# mysql -uroot -p123

    方法2(删库):

    删除与权限相关的库mysql,所有的授权信息都丢失,主要用于测试数据库或者刚刚建库不久没有授权数据的情况(从删库到跑路)
    [root@controller ~]# rm -rf /var/lib/mysql/mysql
    [root@controller ~]# service mysqld restart
    [root@controller ~]# mysql

    MySQL数据类型

    MySQL中定义数据字段的类型对你数据库的优化是非常重要的。

    MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

    数值类型

    下面的表显示了需要的每个整数类型的存储和范围。

    日期和时间类型

    表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

    每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

    字符串类型

    字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

    CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

    BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。

    BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。

    有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求。

  • 相关阅读:
    爬虫面试资料
    python高级知识
    Python2和Python3的字符串编码和类型
    cookie和session-csrf防护-中间件
    [干货]弄清楚迭代器, 生成器概念/作用
    MySQL中四种常用存储引擎的介绍
    python常见面试集合
    [MongoDB教程] 2.MongoDB的安装与使用
    深入理解:线程,进程,协程和并行,并发-协程
    [MongoDB教程] 1.简介
  • 原文地址:https://www.cnblogs.com/mocean/p/6425568.html
Copyright © 2011-2022 走看看