Python MySQL数据库1:数据存储介绍、阿里云安装myspl(使用)以及客户端Navicat使用(上)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Python MySQL数据库1:数据存储介绍、阿里云安装myspl(使用)以及客户端Navicat使用

一、总体内容



  • 1.1、数据存储
  • 1.2、数据库
  • 1.3、RDBMS
  • 1.4、RDBMS 和 数据库的关系
  • 1.5、SQL
  • 1.6、MySQL
  • 1.7、通过navicat操作数据库
  • 1.8、数据完整性(数据类型与约束)
  • 1.9、命令行脚本操作数据库 (重点)
  • 1.10、表中数据的增删改查(curd)
  • 1.11、数据库的备份与恢复

目标:熟练编写数据的增删改查相关的 SQL 语句


二、数据存储



  • 2.1、以前是这样记录的:结绳记事


image.png


2.2、也有这样记录的:甲骨文


image.png


2.3、后来开始这样记录:图书

image.png


  • 2.4、传统记录数据的缺点 : 不易保存、备份困难、查找不便,举个例子:在有纸质的时候,你想要另存一份东西,你就需要再抄写一份,耗时耗精力。


  • 2.5、现代化手段----文件
  • 使用简单,例如python中的open可以打开文件,用read/write对文件进行读写,close关闭文件
  • 对于数据容量较大的数据,不能够很好的满足,而且性能较差
  • 不易扩展


  • 2.5、更好的 现代化手段----数据库
  • 持久化存储
  • 读写速度极高
  • 保证数据的有效性
  • 对程序支持性非常好,容易扩展
  • 真实的仓库是这样的:


image.png

我们看到的是这个样子的(开发者看到的样子)


image.png

顾客看到的是这个样子的:


image.png

三、数据库



  • 3.1、数据库就是一种特殊的文件,通过特殊的处理,读写的方式和普通的文本文件是不一样的,其中存储着需要的数据



image.png


image.png



3.2、关系型数据库核心元素


  • 数据行(记录)
  • 数据列(字段)
  • 数据表(数据行的集合)
  • 数据库(数据表的集合)
  • 一个数据库可以有很多的表,每个表都有一个主键,每个表都可以作为其他表的字段


image.png


四、RDBMS:(Relational Database Management System)通过表来表示关系型



查看数据库排名


  • 4.1、RDBMS 是一套软件,将来用来管理数据库的文件,关系型数据库
  • 4.2、当前主要使用两种类型的数据库:关系型数据库、非关系型数据库,本部分主要讨论关系型数据库,对于非关系型数据库会在后面学习
  • 4.3、所谓的关系型数据库RDBMS,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据
  • 4.4、关系型数据库的主要产品:
  • oracle:在以前的大型项目中使用,银行,电信等项目,做大型网站
  • mysql:web时代使用最广泛的关系型数据库,一般用作网站,存储持久化的数据,一般用作小型网站和中型网站足够了
  • ms sql server:在微软的项目中使用
  • sqlite:轻量级数据库,主要应用在移动平台
  • redis 一般用来当做缓存
  • mongodb 用来存储非关系型的数据结构,一般用作爬虫,存储没有关系的数据


五、RDBMS和数据库的关系



image.png


六、SQL



 (Structured Query Language): 是一门特殊的语言,专门用来操作关系数据库,不区分大小写


SQL是结构化查询语言,是一种用来操作RDBMS的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过 SQL 操作 oracle,sql server,mysql,sqlite 等等所有的关系型的数据库


  • 6.1、SQL语句主要分为:


  • DQL:数据查询语言,用于对数据进行查询,如select
  • DML:数据操作语言,对数据进行增加、修改、删除,如insert、udpate、delete
  • TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback
  • DCL:数据控制语言,进行授权与权限回收,如grant、revoke
  • DDL:数据定义语言,进行数据库、表的管理等,如create、drop
  • CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
  • 6.2、对于web程序员来讲,重点是数据的crud(增删改查),必须熟练编写DQL、DML,能够编写DDL完成数据库、表的操作,其它语言如TPL、DCL、CCL了解即可
  • 6.2、学习要求
  • 熟练掌握数据增删改查相关的 SQL 语句编写
  • 在 Python代码中操作数据就是通过 SQL 语句来操作数据


# 创建Connection连接
conn = connect(host='localhost', port=3306, user='root', password='mysql', database='python1', charset='utf8')
# 得Cursor对象
cs = conn.cursor()
# 更新
# sql = 'update students set name="刘邦" where id=6'
# 删除
# sql = 'delete from students where id=6'
# 执行select语句,并返回受影响的行数:查询一条学生数据
sql = 'select id,name from students where id = 7'
# sql = 'SELECT id,name FROM students WHERE id = 7'
count=cs.execute(sql)
# 打印受影响的行数
print(count)


七、MySQL



  • 7.1、MySQL 简介
  • 点击查看MySQL官方网站
  • MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,后来被Sun公司收购,Sun公司后来又被Oracle公司收购,目前属于Oracle旗下产品


  • 特点


  • 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性
  • 支持多种操作系统,如Linux、Windows、AIX、FreeBSD、HP-UX、MacOS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris等
  • 为多种编程语言提供了API,如C、C++、Python、Java、Perl、PHP、Eiffel、Ruby等
  • 支持多线程,充分利用CPU资源
  • 优化的SQL查询算法,有效地提高查询速度
  • 提供多语言支持,常见的编码如GB2312、BIG5、UTF8
  • 提供TCP/IP、ODBC和JDBC等多种数据库连接途径
  • 提供用于管理、检查、优化数据库操作的管理工具
  • 大型的数据库。可以处理拥有上千万条记录的大型数据库
  • 支持多种存储引擎
  • MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库
  • MySQL使用标准的SQL数据语言形式
  • Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统
  • 在线DDL更改功能
  • 复制全局事务标识
  • 复制无崩溃从机
  • 复制多线程从机


开源 免费 不要钱 使用范围广,跨平台支持性好,提供了多种语言调用的 API,是学习数据库开发的首选


  • 7.2、MySQL服务器下载以及安装,服务器端一般以服务方式管理,名称为mysql


image.png


查看是否安装上mysql,打开偏好设置,在安装的过程中会让输入一个密码,记好


image.png

也可以在终端输入 mysql -v 查看是否安装上,会报错,想输入mysql,不报这个错咋办? 起别名


# 从命令行访问常用程序(如 mysql 和 mysqladmin)
alias mysql=/usr/local/mysql/bin/mysql
alias mysqladmin=/usr/local/mysql/bin/mysqladmin


image.png

  • 输入mysql --help 即可看到mysql都具有哪些命令
  • 添加系统环境变量


cd ~
vim .bash_profile
# 添加以下代码
export PATH=${PATH}:/usr/local/mysql/bin
# 退出后
source .bash_profile
# 如果不进行以下操作的话,每打开一个终端,都要再输一遍 source .bash_profile
vim .zshrc
# 添加以下代码
export PATH=${PATH}:/usr/local/mysql/bin
# 退出后
source .zshrc
  • 修改密码


mysqladmin -u root -p password 12345678
# 12345678是我的新密码,自行修改成自己想要设置的密码
# 按回车后, 提示输入密码,此时让输入的密码不是你电脑的密码,而是数据库的密码。


  • mysql -u root -p 回车之后输入密码,进入MySQL的运行框,可看下图


image.png

show databases;查看都有哪些库;; 不可少


image.png


  • 输入exitquit\q,按下回车退出,  或者control+D退出
  • 另外 启动/停止/重启 MySQL服务


启动MySQL服务
sudo /usr/local/mysql/support-files/mysql.server start
停止MySQL服务
sudo /usr/local/mysql/support-files/mysql.server stop
重启MySQL服务
sudo /usr/local/mysql/support-files/mysql.server restart



提示:上面的步骤都是我在本地搞的,这个博客里面是我在服务器安装mysql的参考 在阿里云的服务器linux下安装mysql和卸载mysql,在7.3里面添加其他用户也是我在阿里云服务器搞的


  • 7.3、MySQL添加其他用户


  • (1)、找到my.cnf配置文件: 你的MySQL有没有配置,如果没有配置的话,配置下:my.cnf 配置文件
    如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf)中。命令如下:cp /usr/share/mysql/my-medium.cnf /etc/my.cnf


提示:我是报错:mysql创建用户报错ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value,原因是mysql默认配置严格模式,该模式禁止通过insert的方式直接修改mysql库中的user表进行添加新用户。

  • (2)、vim /etc/my.cnf


sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  • 修改成:


sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  • 然后重启mysql服务


service mysql restart
  • (3)、创建用户,创建之前先输入一下:use mysql;


mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("456123"));


  • 这样就创建了一个名为:test 密码为:1234 的用户。
    注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。
  • (4)、登录MYSQL(有ROOT权限),这里以ROOT身份登录


> mysql -u root -p
  • (5)、为用户创建一个数据库(test),如果数据库存在就不需要再建了,直接进行第六步


mysql>create database test;
  • (6)、授权test1用户拥有test数据库的所有权限(某个数据库的所有权限)


mysql>grant all privileges on test.* to test1@localhost identified by '456123';
mysql>flush privileges;//刷新系统权限表
  • (7)、如果想指定部分权限给一用户,可以这样来写


mysql>grant select,update on test.* to test1@localhost identified by '456123';
  • (8)、授权test1用户拥有所有数据库的某些权限


mysql>grant select,delete,update,create,drop on *.* to test1@"%" identified by "456123";


提示:

  • 查看有所有的库: show databases;
  • 建立数据库 : create database testTable;


image.png

  • 查看版本:select version();
  • 显示当前时间:select now();


  • 7.4、MySQL客户端安装以及使用,客户端为开发人员与dba使用,通过socket方式与服务端通信,常用的有navicat、命令行 mysql
  • 图形化界面客户端 navicat,  可以到Navicat官网下载



image.png


  • 问题一:中文乱码
    解决办法:打开start_navicat文件


将export LANG="en_US.UTF-8"改为export LANG="zh_CN.UTF-8"
  • 问题二:试用期
    解决办法:删除用户目录下的.navicat64目录


cd ~
rm -r .navicat64
  • 最基本的连接命令如下,输入后回车


mysql -u root -p


  • 连接 阿里云 mysql  数据库

image.png


解决阿里云MySQL远程连接不上的问题:


  • step1:
    1、修改user表:MySQL>update user set host = '%' where user = 'root';
    2、授权主机访问:MySQL>GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
    3、刷新权限:MySQL>FLUSH PRIVILEGES;
    4、退出:MySQL>EXIT;


  • step2:查看端口监听状态,netstat -an|grep 3306,如果显示不是如下图所示,则需要修改配置文件。找到my.cnf,一般在/etc/mysql/下面,具体情况根据实际而定。注释掉其中的bind-address属性。如下


image.png


step3:开启阿里云安全组端口策略

进入控制台,网络和安全->安全组->配置规则,将MySQL监听端口开放即可,如下:


image.png


  • step4:再次测试就是上面图中连接成功的状态
  • 连接后的效果(这里我用了一个root用户和四个测试用户)


image.png


image.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
8天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
23 4
|
14天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
49 3
|
15天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
30 2
|
17天前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
3天前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
27 0
|
16天前
|
JSON 关系型数据库 MySQL
MySQL JSON数据存储结构与操作
通过本文的介绍,我们了解了MySQL中JSON数据类型的基本操作、常用JSON函数、以及如何通过索引和优化来提高查询性能。JSON数据类型为存储和操作结构化数据提供了灵活性和便利性,在现代数据库应用中具有广泛的应用前景。希望本文对您在MySQL中使用JSON数据类型有所帮助。
31 0
|
JSON 移动开发 API
新浪微博Python客户端接口OAuth2
Keyword: Python Oauth2 微博 sina weibo   #!/usr/bin/env python # -*- coding: utf-8 -*- __version__ = '1.
1282 0
|
JSON 移动开发 开发工具
新浪微博Python3客户端接口OAuth2
Keyword: Python3 Oauth2 新浪微博 本接口基于廖雪峰的weibo python SDK修改完成,其sdk为新浪官方所推荐,原作者是用python2写的 经过一些修改,这里提供基于python3的 weibo SDK     #!/usr/bin/env python # -*- coding: utf-8 -*- __version__ = '1.
1362 0
|
3天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
3天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!