本章内容:

  • MySQL的安装及配置
  • MySQL启动和关闭
  • MySQL指令
  • Python的第三方模块,发送指令并获取MySQL返回的结果

1.MySQL安装及配置

MySQL本质上就是一个软件。这里安装5.7.31的版本。

1.1下载

下载地址:https://dev.mysql/downloads/

 选择对应的版本进行下载。

下载完成:

 1.2安装及配置

点击下载完成的msi文件。

安装的详细教程网上有很多,我参照的安装步骤是在这个地址,就不再重复写了:

https://blog.csdn/qq_39652397/article/details/124022739?ops_request_misc=&request_id=&biz_id=102&utm_term=mysql%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-124022739.142^v42^pc_rank_34_queryrelevant25,185^v2^control&spm=1018.2226.3001.4187

2.MySQL启动和关闭

将MySQL制作成服务,让服务来进行关闭和开启。

2.1创建服务

以管理员的身份运行cmd,并输入以下内容:

引号内的内容是我们自己的安装路径,找到bin文件下的mysqld.exe,右键复制其文件路径。

"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe" --install mysql57

2.2启动服务

net start mysql57

 

 可以通过任务管理器查看服务,通过开始菜单搜索任务管理器-->服务;可以看到MySQL57服务已经开启:

2.3关闭服务

想要关闭服务时,可以在任务管理器,直接右击选择停止服务;

或者在终端输入 :

net stop mysql57

 

 3.发送指令

我们可以通过各种各样的工具或者代码连接MySQL并发送指令,其还自带一个工具,一般下载MySQL时这个工具已经包含在内(mysql.exe)。这里就用这个工具来试用一下指令的发送。

终端登录

mysql -u root -p

输入密码后登录成功。在上面配置MySQL时会有设置密码。

退出 :

exit

 

退出到终端页面。 

3.1数据库的管理

  • 查看MySQL已有文件夹(数据库)

show databases;

  • 创建数据库(文件夹)
create database 数据库名字 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

  •  删除数据库(文件夹)
drop database myroot;

  • 进入数据库(进入文件夹) 
use 数据库名字

  • 查看文件夹下所有数据表(文件)

要想查看一个文件夹下的所有数据表,应该先进行上一步,进入这个文件夹,然后在输入指令:

show tables;

 3.2数据表的管理(excel文件)

  • 创建表
create table 表名称(
    列名称 类型,
    列名称 类型,
    列名称 类型,
    ...
)default charset=utf8;

 类如创建一个这样的表单:

 

create table tb1(
    id int,
    name varchar(16),  --允许最大字符为16
    age int
) default charset=utf8; --编码方式为utf-8

支持是否为空

create table tb1(
    id int,
    name varchar(16) not null, --不允许为空
    age int null      -- 允许为空(默认)
) default charset=utf8;

支持默认值

create table tb1(
    id int,
    name varchar(16),
    age int default 3        --插入数据时,值的默认值为3
) default charset=utf8;

支持主键

create table tb1(
    id int auto_increment primary key,   --主键不允许为空,不允许重复,递增排列
    name varchar(16),
    age int
) default charset=utf8;

一般情况下,创建表时都会这样写:【标准】

create table tb1(
    id int not null auto_increment primary key,
    name varchar(16),
    age int
) default charset=utf8;
  • 查看表格式 
desc tb1;

 

  • 删除表
drop table 表名称

  • 添加表单数据

添加单行数据:

insert into 表单名(列名1,列名2) values(列名1数据,列名2数据);

如果数据过多,可以同时添加多行:

 比如添加三行数据

insert into 表单名(列名1,列名2) values(列名1数据,列名2数据),(列名1数据,列名2数据),(列名1数据,列名2数据);
  • 查看表单内容

查看所有内容:

select * from 表单名;

 表内常用数据类型:

整型:

  • int

int                  有符号,取值范围:-2147483648 ~  2147483648

int unsigned   无符号,取值范围:0 ~ 4294967295 

  • tinyint

有符号,取值范围:-128 ~ 127 有正有负 【默认】

无符号,取值范围:0 ~ 255 只有正

create table tb1(
    id int not null auto_increment primary key,
    age tinyint  --有符号:取值范围:-128 ~ 127
) default charset=utf8;
create table tb1(
    id int not null auto_increment primary key,
    age tinyint unsigned  --无符号:取值范围:0 ~255
) default charset=utf8;
  • bigint

bigint                  有符号,取值范围:-9223372036854775808 ~  9223372036854775808

bigint unsigned   无符号,取值范围:0 ~ 18446744073709551615 

案例:

 小数

  • float
  • double
  • decimal(推荐用,精准)

decimal(m,d)  准确的小数值,m是数字总个数(负号不算),d是小数点后个数,m最大为65,d最大为30;

案例:

 字符串

  • char(查询速度快)

定长字符串 ;char(11) 固定用11个字符串存储,超出报错,不够也会按11个字符串存储。最多可容纳255个字符。

案例:

  • varchar(节省空间)

变长字符串;varchar(11),在11个字符以内,真实数据有多长,就按照多长存储,但超过11个字符也报错。

案例:

create table tb5(
    id int not null primary key auto_increment,
    mobile varchar(11)
) default charset=utf8;

  • text

text数据类型用于保存边长的大字符串,可以组多到65535(2**16 - 1)个字符。

一般情况下,长文本会用到text类型。例如:文章、新闻等。

create table tb6(
    id int not null primary key auto_increment,
    title varchar(128),
    content text
) default charset=utf8;
  • mediumtext

使用方法和上面的一样,最长可达到16777215(2**24 - 1)个字符,很少使用。

  • longtext

使用方法和上面的一样,最长可达到4294967295 或者 4GB(2**24 - 1),很少使用。

时间:

  • datetime  年-月-日 时-分-秒
  • date   年-月-日

还有很多其他数据类型,例如:set、enum、TinyBlob等等,具体可见官方文档:

https://dev.mysql/doc/refman/5.7/en/data-types.html

 3.3数据行操作

  • 新增数据

在上面已经有提到:

insert into 表单名(列名,列名) values(值,值);
insert into 表单名(列名,列名) values(值,值),(值,值),(值,值);
  • 删除数据

删除表内所有数据:

delete from 表名;

删除表内符合条件的数据:

delete from 表名 where 条件;
  • 修改数据

将列内所有值都修改为统一值:

update 表名 set 列=值;
update 表名 set 列=值,列=值;

将列内所有符合条件的值都修改为统一值:

update 表名 set 列=值 where 条件;
  • 查询数据

查询表中所有数据

select * from 表名;

查询特定数据:

select 列名称,列名称 from 表名称;

select 列名称,列名称 from 表名称 where 条件;

4.python代码实现

利用python对数据表进行添加、删除、查看、更新等操作。

4.1首先在数据库中创建数据库和数据表,利用MySQL自带的工具

 4.2 python操作MySQL(第三方模块)

用python代码连接MySQL并发送指令。

4.2.1动态创建数据

import pymysql

# 1.连接MySQL
conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="密码", charset='utf8', db="unicom")
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)  # 基于此发送指令
# 2.发送指令
cursor.execute("insert into admin(username,password,mobile) values('wjdvnf','qebfckc','123454657676')")
connmit()
# 3.关闭
cursor.close()
conn.close()

运行python文件,即可添加一行数据,在MySQL自带工具中进行查看,如图所示:

 注意,发送指令有多种写法:

# 2.发送指令(不能用字符串格式化进行SQL拼接,会有安全隐患)
sql = "insert into admin(username,password,mobile) values(%s,%s,%s)"
cursor.execute(sql,["骄傲和传播","asc123","2435685434"])
connmit()

# 2.发送指令(不能用字符串格式化进行SQL拼接,会有安全隐患)
sql = "insert into admin(username,password,mobile) values( %(n1)s, %(n2)s, %(n3)s)"
cursor.execute(sql, {"n1": "张启航", "n2": "zqh123", "n3": "24356576834"})
connmit()

 完善代码:能够让用户输入并且实时添加

import pymysql

while True:
	user = input("用户名(输入q退出):")
	if user == "q":
		break
	password = input("密码:")
	mobile = input("手机号:")
	
	# 1.连接MySQL
	conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="cjz783114", charset='utf8', db="unicom")
	cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)  # 基于此发送指令
	
	# 2.发送指令(不能用字符串格式化进行SQL拼接,会有安全隐患)
	sql = "insert into admin(username,password,mobile) values(%(n1)s,%(n2)s,%(n3)s)"
	cursor.execute(sql, {"n1": user, "n2": password, "n3": mobile})
	connmit()
	
	# 3.关闭
	cursor.close()
	conn.close()

运行代码:

 

 4.2.2查询数据

  • 查询所有数据,fetchall,无数据显示为空列表
# 2.发送指令(查询所有数据)
# cursor.execute("select * from admin")
cursor.execute("select * from admin where id > %s", [2, ])

# 获取符合条件的所有数据
data_list = cursor.fetchall()
print(data_list)

 得到的数据是由字典组成的列表:

[{'id': 3, 'username': '张启航', 'password': 'zqh123', 'mobile': '24356576834'}, {'id': 4, 'username': '张超', 'password': 'sdhvn1223', 'mobile': '345678'}, {'id': 5, 'username': '李继', 'password': 'kmdj324', 'mobile': '4567898'}]
  •  查询一条数据,fetchone,无数据显示为 none
# 2.发送指令(查询所有数据)
cursor.execute("select * from admin where username = '张启航'")

# 获取符合条件的第一条数据
data = cursor.fetchone()
print(data)

得到一个字典:

{'id': 3, 'username': '张启航', 'password': 'zqh123', 'mobile': '24356576834'}

 4.2.3删除数据 

只需要更改指令即可:

cursor.execute("delete from admin where id=%s", [2, ])
connmit()

删除了id为2的数据:

 4.2.4修改数据

# 2.发送指令(修改id=4的电话号)
cursor.execute("update admin set mobile=%s where id=%s", ["1355555", 4, ])
connmit()

 注意:进行增添、删除、修改操作时,一定要有commit!

否则数据库没有数据,查询时不需要,但需要fetchall/fetchone

更多推荐

MySQL安装使用及指令