zoukankan      html  css  js  c++  java
  • python进阶十——mysql初识

    1.MySQL是什么

    1.1:MYSQL简介

    MySQL 是最流行的数据库之一,是一个免费开源的关系型数据库管理系统,但也不意味着该数据库是完全免费的。MySQL 由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 适合中小型软件,被个人用户以及中小企业青睐。

    针对不同的用户,MySQL 分为两个版本:
        MySQL Community Server(社区版):该版本是自由下载且完全免费的,但是官方不提供技术支持。
        MySQL Enterprise Server(企业版):该版本是收费的,而且不能下载,但是该版本拥有完善的技术支持(官方提供电话技术支持)。
    注意:MySQL Cluster 主要用于架设群服务器,需要在社区服务或企业版的基础上使用。

    MySQL 的命名机制由 3 个数字和 1 个后缀组成,例如 mysql-5.7.20:
        第 1 个数字“5”是主版本号,用于描述文件的格式,所有版本 5 的发行版都有相同的文件夹格式。
        第 2 个数字“7”是发行级别,主版本号和发行级别组合在一起便构成了发行序列号。
        第 3 个数字“20”是在此发行系列的版本号,随每次新发行的版本递增。通常选择已经发行的最新版本。

    1.2:MySQL的特点、优势

    MySQL 数据库管理系统具有很多的优势,下面总结了其中几种。

    1)MySQL 是开放源代码的数据库

    MySQL 是开放源代码的数据库,任何人都可以获取该数据库的源代码。这就使得任何人都可以修正 MySQL 的缺陷,并且任何人都能以任何目的来使用该数据库。MySQL 是一款可以自由使用的数据库。

    2)MySQL 的跨平台性

    MySQL 不仅可以在 Windows 系列的操作系统上运行,还可以在 UNIX、Linux 和 Mac OS 等操作系统上运行。因为很多网站都选择 UNIX、Linux 作为网站的服务器,所以 MySQL 的跨平台性保证了其在 Web 应用方面的优势。虽然微软公司的 SQL Server 数据库是一款很优秀的商业数据库,但是其只能在 Windows 系列的操作系统上运行。因此,MySQL 数据库的跨平台性是一个很大的优势。

    3)价格优势

    MySQL 数据库是一个自由软件,任何人都可以从 MySQL 的官方网站上下载该软件,这些社区版本的 MySQL 都是免费试用的,即使是需要付费的附加功能,其价格也是很便宜的。相对于 Oracle、DB2 和 SQL Server 这些价格昂贵的商业软件,MySQL 具有绝对的价格优势。

    1.3:RDBMS 术语

    学习一下RDBMS的一些术语:

        数据库: 数据库是一些关联表的集合。
        数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
        列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
        行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
        冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
        主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
        外键:外键用于关联两个表。
        复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
        索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
        参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

    MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成。

        表头(header): 每一列的名称;
        列(col): 具有相同数据类型的数据的集合;
        行(row): 每一行用来描述某条记录的具体信息;
        值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
        键(key): 键的值在当前列中具有唯一性。

    2.MySQL 安装

    2.1:Linux/UNIX 上安装 MySQL

    Linux平台上推荐使用RPM包来安装Mysql,MySQL AB提供了以下RPM包的下载地址:

        MySQL - MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。
        MySQL-client - MySQL 客户端程序,用于连接并操作Mysql服务器。
        MySQL-devel - 库和包含文件,如果你想要编译其它MySQL客户端,例如Perl模块,则需要安装该RPM包。
        MySQL-shared - 该软件包包含某些语言和应用程序需要动态装载的共享库(libmysqlclient.so*),使用MySQL。
        MySQL-bench - MySQL数据库服务器的基准和性能测试工具。

    安装前,我们可以检测系统是否自带安装 MySQL:

    rpm -qa | grep mysql

    如果你系统有安装,那可以选择进行卸载:

    rpm -e mysql  // 普通删除模式
    rpm -e --nodeps mysql  // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

    安装 MySQL:

    接下来我们在 Centos7 系统下使用 yum 命令安装 MySQL,需要注意的是 CentOS 7 版本中 MySQL数据库已从默认的程序列表中移除,所以在安装前我们需要先去官网下载 Yum 资源包,下载地址为:https://dev.mysql.com/downloads/repo/yum/

    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
    rpm -ivh mysql-community-release-el7-5.noarch.rpm
    yum update
    yum install mysql-server

    权限设置:

    chown mysql:mysql -R /var/lib/mysql

    初始化 MySQL:

    mysqld --initialize

    启动 MySQL:

    systemctl start mysqld

    查看 MySQL 运行状态:

    systemctl status mysqld

    注意:如果我们是第一次启动 mysql 服务,mysql 服务器首先会进行初始化的配置

    此外,你也可以使用 MariaDB 代替,MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
    
    MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品
    yum install mariadb-server mariadb 

    mariadb数据库的相关命令是:

    systemctl start mariadb  #启动MariaDB
    systemctl stop mariadb  #停止MariaDB
    systemctl restart mariadb  #重启MariaDB
    systemctl enable mariadb  #设置开机启动

    2.2:验证 MySQL 安装

    在成功安装 MySQL 后,一些基础表会表初始化,在服务器启动后,你可以通过简单的测试来验证 MySQL 是否工作正常。

    使用 mysqladmin 工具来获取服务器状态:

    使用 mysqladmin 命令来检查服务器的版本, 在 linux 上该二进制文件位于 /usr/bin 目录,在 Windows 上该二进制文件位于C:mysqlin

    [root@host]# mysqladmin --version

    linux上该命令将输出以下结果,该结果基于你的系统信息:

    mysqladmin  Ver 8.23 Distrib 5.0.9-0, for redhat-linux-gnu on i386

    如果以上命令执行后未输出任何信息,说明你的Mysql未安装成功

    2.3:使用 MySQL Client(Mysql客户端) 执行简单的SQL命令

    你可以在 MySQL Client(Mysql客户端) 使用 mysql 命令连接到 MySQL 服务器上,默认情况下 MySQL 服务器的登录密码为空,所以本实例不需要输入密码。

    命令如下:

    [root@host]# mysql

    以上命令执行后会输出 mysql>提示符,这说明你已经成功连接到Mysql服务器上,你可以在 mysql> 提示符执行SQL命令:

    mysql> SHOW DATABASES;
    +----------+
    | Database |
    +----------+
    | mysql    |
    | test     |
    +----------+
    2 rows in set (0.13 sec)

    2.4:Mysql安装后需要做的

    Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码:

    [root@host]# mysqladmin -u root password "new_password";

    现在你可以通过以下命令来连接到Mysql服务器:

    [root@host]# mysql -u root -p
    Enter password:123456

    注意:在输入密码时,密码是不会显示了,你正确输入即可

    2.5:MySQL 用户设置

    如果你需要添加 MySQL 用户,你只需要在 mysql 数据库中的 user 表添加新用户即可。

    以下为添加用户的的实例,用户名为guest,密码为guest123,并授权用户可进行 SELECT, INSERT 和 UPDATE操作权限:

    root@host# mysql -u root -p
    Enter password:123456
    mysql> use mysql;
    Database changed
    
    mysql> INSERT INTO user 
              (host, user, password, 
               select_priv, insert_priv, update_priv) 
               VALUES ('localhost', 'guest', 
               PASSWORD('guest123'), 'Y', 'Y', 'Y');
    Query OK, 1 row affected (0.20 sec)
    
    mysql> FLUSH PRIVILEGES;
    Query OK, 1 row affected (0.01 sec)
    
    mysql> SELECT host, user, password FROM user WHERE user = 'guest';
    +-----------+---------+------------------+
    | host      | user    | password         |
    +-----------+---------+------------------+
    | localhost | guest | 6f8c114b58f2ce9e |
    +-----------+---------+------------------+
    1 row in set (0.00 sec)

    在添加用户时,请注意使用MySQL提供的 PASSWORD() 函数来对密码进行加密。 你可以在以上实例看到用户密码加密后为: 6f8c114b58f2ce9e.

    注意:在 MySQL5.7 中 user 表的 password 已换成了authentication_string

    注意:password() 加密函数已经在 8.0.11 中移除了,可以使用 MD5() 函数代替。

    注意:在注意需要执行 FLUSH PRIVILEGES 语句。 这个命令执行后会重新载入授权表。

    如果你不使用该命令,你就无法使用新创建的用户来连接mysql服务器,除非你重启mysql服务器。

    你可以在创建用户时,为用户指定权限,在对应的权限列中,在插入语句中设置为 'Y' 即可,用户权限列表如下:

        Select_priv
        Insert_priv
        Update_priv
        Delete_priv
        Create_priv
        Drop_priv
        Reload_priv
        Shutdown_priv
        Process_priv
        File_priv
        Grant_priv
        References_priv
        Index_priv
        Alter_priv

    另外一种添加用户的方法为通过SQL的 GRANT 命令,以下命令会给指定数据库TUTORIALS添加用户 yhh ,密码为 123456

    root@host# mysql -u root -p
    Enter password:*******
    mysql> use mysql;
    Database changed
    
    mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
        -> ON TUTORIALS.*
        -> TO 'yhh'@'localhost'
        -> IDENTIFIED BY '123456';

    以上命令会在mysql数据库中的user表创建一条用户信息记录。

    注意: MySQL 的SQL语句以分号 (;) 作为结束标识。

    2.6:/etc/my.cnf 文件配置

    一般情况下,你不需要修改该配置文件,该文件默认配置如下:

    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    
    [mysql.server]
    user=mysql
    basedir=/var/lib
    
    [safe_mysqld]
    err-log=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid

    在配置文件中,你可以指定不同的错误日志文件存放的目录,一般你不需要改动这些配置

    2.7:数据库命令行操作

    1.查看所有数据库
    show databases;
    2.切换数据库
    use [数据库名];
    3.创建数据库
    create database [数据库名] ;
    4.删除数据库
    drop database [数据库名];
    5.对表的操作
    查看所有表
    show tables;
    6.创建表
    create table [表名](字段1 类型1 约束1,字段2 类型2 约束2);
    7.删除表
    drop table [表名]
    8.修改表名字
    rename table [表名] to [新名]

    2.8:对字段的操作

    9.查询字段(表结构)
    desc [表名]
    10.增加表的字段
    alter table [表明]add [字段名 类型 约束]
    11.删除字段
    alter table [表名]drop[字段名]
    12.修改字段
    alter table [表名] change [字段名] [新字段名 类型 约束]
    ① 、alter table students change id id int;
    ②、alter table students drop primary key;

    2.9:对数据的操作

    13.增加数据
    插入一个全字段
    insert into students values(0,’xxx’,31,1)
    插入多个全字段
    insert into students values(0,’liudehua’,24,0),(0,’yangmi’,31,0)
    插入一个部分字段
    insert into students(id,name) values(0,’zhaoliying’)
    插入多个部分字段
    insert into students(id,name) values(0,’liushishi’),(0,’linzhiling’)
    14.删除某一条
    delete from students where id=1;
    15.清空
    delete from students;
    16.修改数据
    update student set name=’xxx’ where name=’liudehua’
    17.查找所有数据
    select * from students
    18.数据库备份和恢复
    备份: sudo mysqldump –u数据库名 –p数据库密码 备份文件夹名> ~/Desktop/文件夹名back.sql
    恢复:进入mysql先要创建一个新的数据库,注意字符集
    然后退出mysql
    sudo mysql –u数据库名 –p数据库密码 < ~/Desktop/备份文件夹名back.sql
  • 相关阅读:
    archlinux 没有 mkfs.vfat
    fedora 14 设置 vsftpd
    USACO错误:Execution error: Your program had this runtime error: Illegal file open (/dev/tty).
    ns3介绍与安装
    1.最长平台
    打印进程号(pid)
    追踪class的成员变量
    matplotlib
    c、数组与汇编
    linux下的command
  • 原文地址:https://www.cnblogs.com/huihuangyan/p/13644945.html
Copyright © 2011-2022 走看看