python进阶十——mysql初识

python

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 inset (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 inset (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

以上是 python进阶十——mysql初识 的全部内容, 来源链接: utcz.com/z/530427.html

回到顶部