⭐ 简介:大家好,我是zy阿二,是一名对知识充满渴望的自由职业者。
☘️ 最近我沉溺于Python的学习中。你所看到的是我的学习笔记。
❤️ 如果对你有帮助,请关注我,让我们共同进步。有不足之处请留言指正!
Mysql系列文章传送门,建议循序渐进的学习:
1. Mysql入门安装 & Pycharm可视化链接MySQL。入门篇【本文】
2. 用Pycharm熟悉MySQL命令,实现增删改查基本操作。基础篇
数据库的基本概念:
Q: | A: |
---|---|
什么是数据库? | DB(DataBase)数据仓库,软件,安装在操作系统之上 |
有什么用? | 存储数据,管理数据 。在服务端读写数据 |
数据库分类 | SQL关系型数据库:MySQL、Oracle、Sql Server、DB2、SQLlite |
为什么要选MySQL | 主流,可以免费使用 |
关系型数据库概念 | 通过表和表之间,行和列之间的关系进行数据的存储,通过外键关联来建立表与表之间的关系 |
那有其他类型的数据库吗? | 非关系型数据库:NoSQL。 代表:MongoDB、Redis |
什么是非关系型数据库 | 数据以键值对的形式存储,而对象之间的关系通过每个对象自身的属性来决定 |
数据库的构成 | (MySQL)软件本身(我的电脑) → (database)数据库(文件夹) → (table)表(文件),我们的数据都是写入到表里的,父子关系。 |
一、 Mysql下载安装和初始化操作
1. 下载Mysql官方地址
本教程演示版本:5.7.38。也是当下最为主流的版本。
2. 解压到自定义路径。
本教程解压的的路径为:D:\mysql-5.7.38-winx64
3. 在 D:\mysql-5.7.38-winx64 下新建一个txt文件,并写入:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir = D:\\mysql-5.7.38-winx64
# 设置mysql数据库的数据的存放目录
datadir = D:\\mysql-5.7.38-winx64\\data
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
5. 保存并关闭后 重命名 新建.txt 为 my.ini
重要!! 务必确保文件的类型是 .ini
右击重命名后的文件,点击查看属性,可以看到下图窗口画面。
6. 加环境变量。
- 按win键
- 直接打字“环境变量”
- 回车
- 进入如下画面后按图所示步骤
- 最终在 path中加入 D:\mysql-5.7.38-winx64\bin 然后确定即可。
注: 此操作的目的是后面使用cmd是可以直接输入mysql,而不需要写完整的路径。
7. 打开命令行(cmd),输入如下命令
enter键 = 执行命令。
1.
>mysqld –install mysql57
>//创建mysql服务,我写mysql57是因为我的版本是5.7.x。名字没有要求,可以随便写。
>//后面 开启服务、删除服务、停止服务 时,都需要用这个名字。
2.
>mysqld --initialize -insecure
>//在刚刚设置环境变量的D:\mysql-5.7.38-winx64目录下创建一个data的文件夹,用于后续存放数据库文件
>//必须要创建,如果没有创建的话,后面是无法开启服务
3.
>net start mysql57
>//开启mysql服务命令。 至此,基本已经完成了MySQL的安装。
// 用管理员方式启动 CMD
>关闭服务输入:net stop mysql57
>删除服务命令:sc delete mysql57
出现上述情况:
一、可能没有创建my.ini,或者命名错误,文件类型不是ini
二、缺少data文件夹,执行mysqld --initialize-insecure
三、可能有多个MySQL服务,全部删除重新安装,再操作
8. 链接数据库
1. cmd命令行链接MySQL
>mysql -u root -p**
//链接数据库。 首次链接会看到下图内容
// 提示Enter password,输入密码。 不用管,直接按回车即可。
2. 首次连接MySQL后设置一个密码。以便数据安全以及后面第三方链接数据库时都需要一个密码。
> set password = password("000000");
> //注: 此处密码按自己习惯设置。 设置好后,下次链接数据库的时候就需要用到它。如果忘记将无法链接。【忘记密码重置方法后续在此附上传送门】
> //附言: 现在正式进入mysql命令的输入,基本所有的语句结束都需要加 ; (英文的分号) 再回车。如果忘记加了可以回车后再加 ; 再回车。我刚开始接触到时候总是忘记写。
4. 首次连接MySQL后设置一个密码。以便数据安全以及后面第三方链接数据库时都需要一个密码。
> create test;
> //注: 创建一个databese (数据库文件夹)在以后的Python的连接数据库的时候都需要选择链接的databese名字。所以在这里事先创建好一个。方便后面调用。
5. 查看当前已有数据
> show databases;
> //查看一下当前MySQL中所有的database
二、Pycharm 可视化连接 MySQL 图形界面
1. 按图示Pycharm 连接 MySQL
首次连接需要安装mysql的驱动,第11步“测试连接”按钮的上方会提示“下载”,点击下载,等待完成即可。(我已经安装过,所以没有提示了。)
2. 链接表 & 创建表。
2.1 链接已有的结构database
2.2 新建结构database和表table
3. 查看表数据
4. 进入Mysql控制台
三、列的数据类型
注:解释均建立在严格模式下。
4.1 整数
int
- 表示 取值范围 -21474836848 ~21474836848,可以写入这个区间的任意一个整数
- 最常用的整数类型
int unsigned
- 表示 取值范围 0 ~ 4294967295,不支持负数。可以写入这个区间的任意一个整数
int(5) zerofill
- 长度位5的整数,当写入的数据不满足5位时,会在左边用0填充。> 例如:2 会显示为 00002。
- 如果满足条件则正常显示。> 例如:12345 会显示 12345
4.2. 小数
decimal(m,n)
- m 表示数字的总位数,最大65位。写入的位数超过了设置的位数时,会报错。
- n表示小数点后的位数。最大30位。当写入的位数超过了设置的位数时,会自动四舍五入保留n位
- 最常用的小数类型
float[(m,n)]
- 单精度浮点数,非准确小数值,m是数字总位数,n是小数点后的位数。32位二进制存储
- 和Python的float类似,不常用。
double[(m,n)]
- 双精度浮点数,非准确小数值,m是数字总位数,n是小数点后的位数。64位二进制存储
- 比float存储的数据多一点,不常用。
4.3. 字符串
char(m)
- 定长字符串,m代表字符串的长度,最多可容纳255个字符。
- 表现:即使写入的内容长度小于m,底层也会占用m个字符。
- 例如:char(5) , 写入一个“NO” 实际只有2个字符,但是底层数据库中NO占了5个字符。如果写入“Happy birthday” 超过了5个字符就会报错。
varchar(m)
变长字符串,m 代表字符串的长度,最多可容纳 65535个字符。
表现: 即使写入的内容小于m,也会按照数据的真实长度存储,如果超出m长度限制,则会报错。
例如: varchar(5) , 写入一个“NO” 没有任何问题。底层数据库中占2个字符。但是如果写入“Happy birthday” 超过了5个字符就会报错。
最常用的字符串数据类型
text
- 用于保存变长的长字符串,最多可容纳65535(2**16 -1)个字符
- 一般情况下,长文本会用text类型。 例如:文章、新闻、等。。
mediumtext
- 用于保存变长的长字符串,最多可容纳16,777,215(2**24 -1)个字符
- 相比text,能容纳的字符更多。 (几乎用不到)
longtext
- 用于保存变长的长字符串,最多可容纳4,294,967,295 或4GB(2**32 -1)个字符
- 相比mediumtext,能容纳的字符更多。(更几乎用不到)
4.4. 时间
datetime
- 格式:YYYY-MM-DD HH:MM:SS
- 容纳区间:1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
- 最常用的时间类型
timestamp
- 格式:YYYY-MM-DD HH:MM:SS
- 容纳区间:1970-01-01 00:00:00 ~ 2037-12-31 23:59:59
- 相比datetime它容纳的区间更小。并且他会将写入的时间从当前时区转换到UTC(世界标准时间)进行存储,查询的时候又转化为客户当地时间进行返回。
- 而datetime不做任何改变。写入时间是什么,返回的就是什么。
- 也就是软件在需要跨地域使用的时候,需要用到这个参数。
date
- 格式:YYYY-MM-DD
- 容纳区间:1000-01-01~ 9999-12-31
- 只有年月日,没有分时秒
time
- 格式:YYYY-MM-DD HH:MM:SS
- 容纳区间:-838:59:59 ~ 838:59:59
- 只有时分秒,没有年月日。
Mysql还有很多其他类型的数据,例如tinyint、smallint、mediumint、set、enum、Blob … 详见官方文档
五、列的附加属性
命令 | 作用 |
---|---|
UnSigned |
无符号的,代表不能为负数 |
ZEROFILL |
位数不足时用0填充,如:往int(5)类型的列里写入1 ,数据库会储存为00001用0凑足5位 |
Auto_InCrement |
自增,代表该列数据会自动递增无需手动写入,默认每次递增1。 通常用来设计唯一的主键,必须是整数类型 |
AUTO_INCREMENT=5 |
设置步长,即每次递增5。只影响当前表 |
SET @@auto_increment_increment=5 |
设置全局步长,影响所有使用递增的表 |
not null |
设置该列必须填上数据 (NOT NULL),默认可以为空(NULL) |
default |
设置默认值,如:设定性别列的默认值=“男” 。写入时该列未指定数值 , 那么就是默认值为"男"。 |
五、基本命令
show databases; --查看当前已有数据库名
create database 数据库名; --创建数据库
show create database 数据库名;-- 查看create database创建数据库用的语句
drop database 数据库名; --删除数据库
use 数据库名; --打开、进入数据库
show tables; --查看当前数据库所有的表
create table 表名(); --创建一个表
show create table 表名;-- 查看create table用的语句
describe表名; --显示表的信息。方法1
desc 表名; --显示表的信息。方法2
exit --退出连接
-- --单行注释
# --单行注释
/*...*/ --多行注释
六、 创建一个表
尝试创建一个表,了解表的基本构成。并尝试写入一行数据,看看结果。
首先一个表需要拥有列名,以及对应的数据类型,适当的备注,以及一个主键,主键在表中具有唯一性,可理解为行名。类似在execl中,列名+行名就能定位一个精准的单元格。这是一个表必要的内容。文章来源:https://www.toymoban.com/news/detail-817056.html
create table if not exists tb2 #如 果 tb 不存在则创建一个名为 tb 的表
(
# not null=不能为null,auto_increment=自增类型数据,comment后面跟的是备注
id int(4) not null auto_increment comment '学号',
name varchar(30) not null default '未知' comment '姓名', # default '匿名' 代表这列有默认值是匿名
password varchar(20) not null default '000000' comment '密码',
gender varchar(2) not null default '男' comment '性别',
birthday DATETIME default null comment '出生日期', # default null 代表默认为空
primary key (id) # 最后申明主键,也可以写直接写在id的属性中
) engine = InnoDB # 设置存储的引擎为innodb。能提高并发性能。
default CHARSET = utf8 # 设置表的编码。不过我们在my.ini中已经设置了,所以也不需要写。
comment '创建一个表';
# 写入一行示例数据,仅输入了name和birthday2个数据
insert into tb2(name, birthday) values ('张狗剩', '2000-01-01 12:12:12')
# 查询表内数据命令
select * from tb2
如下图所示,我们得到的数据中包含了5列。id列自增为1,password未写入,所以为默认值0,gender同理也是默认值‘男’文章来源地址https://www.toymoban.com/news/detail-817056.html
到了这里,关于MySQL篇一,初始化安装,Pycharm可视化链接MySQL数据库,Pycharm执行MySQL命令,MySQL的基础命令和数据类型的认识,最后尝试创建一张表和写入一行数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!