本章内容:
- 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安装使用及指令
发布评论