目录
一、表格与键概念
二、创建资料库
三、创建表格
四、储存资料
五、限制约束
六、修改、删除资料
七、取得资料
八、创建公司资料库
九、取得公司资料
十、聚合函数
十一、万用子元
十二、联集
十三、连接
十四、子查询
十五、On delete
十六、Python连接MySQL
首页 后端开发 Python教程 MySQL怎么使用Python进行连接

MySQL怎么使用Python进行连接

May 12, 2023 am 11:55 AM
mysql python

一、表格与键概念

MySQL怎么使用Python进行连接

MySQL怎么使用Python进行连接

MySQL怎么使用Python进行连接

主键:可唯一表示该资料(可以设置多个列表为主键)

MySQL怎么使用Python进行连接

设置外键进行表与表的相连,且外键必须是其他表的主键(外键也可以设置自己表格的主键)

二、创建资料库

CREATE DATABASE `sql_tutorial`;    --创建资料库
SHOW databases;    --展示资料库
drop database `sql_tutorial`;    --删除资料库
登录后复制

–为注释
;为结束命令的格式

MySQL怎么使用Python进行连接

三、创建表格

MySQL的资料形态:

  • INT --整形

  • DECIMAL(m,n) --有小数点的数 (3,2)则是2.33,总共有m位数,小数点站n位

  • VARCHAR(n) --字串

  • BLOB --图片 影片 档案…(二进制的资料)

  • DATE --日期(yyyy-mm-dd)

  • TIMESTAMP --记录时间(yyyy-mm-dd hh:mm:ss)

CREATE DATABASE `sql_tutorial`;  -- 创建资料库
SHOW databases;        -- 展示资料库
use `sql_tutorial`; -- 选择使用的资料库

create table student(
        `student_id` int primary key, -- 第一列
    `name` varchar(20), -- 第二列
    `major` varchar(20) -- 第三列,20指的是最大字符长度
); -- 创建表格并设计属性

describe `student`; -- 展示表格
drop table `student`; -- 删除表格

alter table `student` add gpa decimal(3,2); -- 增加资料属性
alter table `student` drop column gpa ; -- 删除资料属性
登录后复制

MySQL怎么使用Python进行连接

四、储存资料

create table student(
        `student_id` int primary key, -- 第一列
    `name` varchar(20), -- 第二列
    `major` varchar(20) -- 第三列,20指的是最大字符长度
); -- 创建表格并设计属性
select * from `student`; -- 搜索表格的全部资料

insert into `student` values(1,'小白','历史'); -- 写入表格数据
insert into `student` values(2,'小黑','生物'); -- 写入表格数据
insert into `student` values(3,'小绿',null); -- 写入表格数据,null为空

insert into `student`(`name`,`major`,`student_id`) values('小蓝','英语','4'); -- 按照设置写入表格数据
insert into `student`(`major`,`student_id`) values('英语','5'); -- 按照设置写入表格数据,没有的数据则为空白null
登录后复制

MySQL怎么使用Python进行连接

五、限制约束

create table student(
        `student_id` int primary key, -- 第一列
    `name` varchar(20) not null, -- 第二列,not null指这个属性不可以为空
    `major` varchar(20) unique -- 第三列,20指的是最大字符长度,unique指每个值不可以重复
); -- 创建表格并设计属性

create table student(
        `student_id` int primary key auto_increment, -- 第一列,auto_increment自动会加一
    `name` varchar(20), -- 第二列,not null指这个属性不可以为空
    `major` varchar(20) default '历史' -- 第三列,20指的是最大字符长度,default指预设值,如果没有写该属性,则为预设值
); -- 创建表格并设计属性
drop table `student`;
select * from `student`; -- 搜索表格的全部资料

insert into `student`(`name`,`major`) values('小蓝','英语'); -- 按照设置写入表格数据
insert into `student`(`name`) values('小黑'); -- 按照设置写入表格数据
登录后复制

MySQL怎么使用Python进行连接

六、修改、删除资料

条件:>,<,>=,<=,=,<>

set sql_safe_updates = 0; -- 把预设更新模式关闭,这样更新操作才可以成功
create table student(
        `student_id` int primary key auto_increment, -- 第一列
    `name` varchar(20), -- 第二列
    `major` varchar(20), -- 第三列,20指的是最大字符长度
    `score` int
); -- 创建表格并设计属性
drop table `student`;
select * from `student`; -- 搜索表格的全部资料

insert into `student`(`name`,`major`) values(&#39;小蓝&#39;,&#39;英语&#39;); -- 按照设置写入表格数据
insert into `student`(`name`,`major`) values(&#39;小白&#39;,&#39;化学&#39;); -- 按照设置写入表格数据
insert into `student`(`name`,`major`) values(&#39;小黑&#39;,&#39;生物&#39;); -- 按照设置写入表格数据
update `student` -- 更新哪个表格
set `major` = &#39;英语文学&#39; -- 将什么更新成什么
where `major` = &#39;英语&#39;; -- 将其中谁的什么进行更新
-- 还可以进行多个更新
update `student` -- 更新哪个表格
set `major` = &#39;生化&#39; -- 将什么更新成什么
where `major` = &#39;生物&#39; or `major` = &#39;化学&#39; ; -- 将其中谁的什么进行更新
update `student` -- 更新哪个表格
set `name` = &#39;小辉&#39;,`major` = &#39;生化&#39; -- 将什么更新成什么
where `student_id`=1 ; -- 将其中谁的什么进行更新
-- 不加条件则都改
update `student` -- 更新哪个表格
set `major` = &#39;物理&#39;; -- 将其中谁的什么进行更新,都改成了生化

delete from `student`
where `student_id` = 3; -- 删除表格中的数据
-- 条件也可以设置多个
delete from `student`
where `name` = &#39;小白&#39; and `major`=&#39;物理&#39;; -- 删除表格中的数据

delete from `student`; -- 删除所有的资料
登录后复制

七、取得资料

-- 取得资料
select * from `student`; -- 取得表格的全部资料
select `name` from `student`; -- 只取得表格的对应数据
select `name`, `major` from `student`; -- 取得表格的对应多个数据
select * from `student` ORDER BY `score`; -- 取得表格的全部资料,并排序(默认正序)
select * from `student` ORDER BY `score` DESC; -- 取得表格的全部资料,并排序(由高到低,asc是由低到高)
select * from `student` ORDER BY `score` ,`student_id`; -- 取得表格的全部资料,并排序(先有score做排序,score中相同的再由student_id做排序)
select * from `student` LIMIT 3 ; -- 限制资料范围
select * from `student` ORDER BY `score` LIMIT 3 ; -- 排序并限制资料范围
select * from `student` where `major`= &#39;英语&#39;; -- 查找对应资料
select * from `student` where `major`= &#39;英语&#39; and `student_id` = 1; -- 查找对应资料(多条件)
select * from `student` where `major` in(&#39;历史&#39;,&#39;英语&#39;,&#39;生物&#39;); -- 查找对应资料(多条件)1
登录后复制

八、创建公司资料库

CREATE DATABASE `sql_tutorial`;  -- 创建资料库
SHOW databases;        -- 展示资料库
use `sql_tutorial`; -- 选择使用的资料库

create table `employee`(
        `emp_id` int primary key, -- 第一列
    `name` varchar(20), -- 第二列,20指的是最大字符长度
    `bath_date` date, -- 第三列
    `sex` varchar(1),
    `salary` int,
    `branch_id` int,
    `sup_id` int
); -- 创建表格并设计属性
create table `branch`(
        `branch_id` int primary key , -- 第一列
    `branch_name` varchar(20), -- 第二列
    `manager_id` int, -- 第三列,20指的是最大字符长度
    foreign key (`manager_id`) references `employee`(`emp_id`) on delete set null -- 设置好外键(选择什么是并对应什么表格的什么属性)
); -- 创建表格并设计属性
-- 补充外键(外表格对应)
alter table `employee` -- 在什么表格上进行更新
add foreign key(`branch_id`) -- 在他的什么属性上
references `branch`(`branch_id`) -- 从哪的什么属性对应
on delete set null;
-- 补充外键(内表格对应)
alter table `employee` -- 在什么表格上进行更新
add foreign key(`sup_id`) -- 在他的什么属性上
references `employee`(`emp_id`) -- 从哪的什么属性对应
on delete set null;
create table `client`(
        `client_id` int primary key , -- 第一列
    `client_name` varchar(20), -- 第二列
    `phone` varchar(20) -- 第三列,20指的是最大字符长度
); -- 创建表格并设计属性
create table `works_with`(
        `emp_id` int, -- 第一列
    `client_id` int, -- 第二列
    `total_sales` int, -- 第三列,20指的是最大字符长度
    primary key(`emp_id`,`client_id`),
    foreign key (`emp_id`) references `employee`(`emp_id`) on delete cascade, -- 设置好外键(选择什么是并对应什么表格的什么属性)
        foreign key (`client_id`) references `client`(`client_id`) on delete cascade -- 设置好外键(选择什么是并对应什么表格的什么属性)
); -- 创建表格并设计属性
-- 当增加资料冲突的时候可以先将其设置为null然后再更新
insert into `branch` values(1,&#39;研发&#39;,null);
insert into `employee` values(206,&#39;xiaohuang&#39;,&#39;1998-10-08&#39;,&#39;F&#39;,50000,1,null);
update `branch`
set `manager_id` = 206
where `branch_id` = 1;
登录后复制

九、取得公司资料

-- 取得对应表格所有资料
select * from `employee`;
-- 取得对应表格所有资料并排序(默认低到高)
select * from `employee` order by `salary`; -- 低为加desc
-- 增加限制取出条件
select * from `employee` order by `salary` desc limit 3 ; -- 取出前三高
-- 取出对应属性
select  `name` from `employee` ;
-- 取出对应属性的内容(且不重复)
select distinct `name` from `employee` ;
登录后复制

十、聚合函数

-- 取得人数
select count(*) from `employee`; -- 统计几笔资料
select count(`sup_id`) from `employee`; -- 统计对应属性资料个数(null不计入)
-- 增加条件取数
select count(*)
from `employee`
where `bath_date` > &#39;1970-01-01&#39; and `sex` = &#39;F&#39;; -- 统计几笔资料
-- 计算对应的属性的平均
select avg(`salary`) from `employee`;
-- 计算对应的属性的总和
select sum(`salary`) from `employee`;
-- 取得最高的
select max(`salary`) from `employee`;
-- 取得最低的
select min(`salary`) from `employee`;
登录后复制

十一、万用子元

-- %表示多个子元,_表示一个子元
-- 取得尾数335的数据
select * from `client` where `phone` like &#39;%335&#39;;
-- 取得姓艾的
select * from `client` where `client_name` like &#39;艾%&#39;;
-- 取得生日是10月的
select * from `employee` where `bath_date` like &#39;_____10%&#39;;
登录后复制

十二、联集

-- 员工与客户合并为一列(类型必须相同)
select `name` from `employee`
union
select `client_name` from `client`;
-- 多个数据合并为多列(类型必须相同)
select `emp_id`, `name` from `employee`
union
select `client_id`, `client_name` from `client`;
-- 多个数据合并为多列(类型必须相同)顺便改个名
select `emp_id` as `total_id`, `name` as `total_name` from `employee`
union
select `client_id`, `client_name` from `client`;
登录后复制

十三、连接

-- 连接
-- 取得所有部门经理名字,这就需要先确定部门再确定经理(二表相连)
select * from `employee` join `branch` on `emp_id` = `manager_id`;
-- 还可以写成
select * from `employee` join `branch` on `employee`.`emp_id` = `branch`.`manager_id`;
-- 附加条件
select * from `employee` left join `branch` on `employee`.`emp_id` = `branch`.`manager_id`; -- 左边的表格(join的左边)返回全部数据,右边的必须满足才可
登录后复制

十四、子查询

-- 查询套查询
select `name` from `employee`
where `emp_id` = (
        select `manager_id`
    from `branch`
    where `branch_name` = &#39;研发&#39;
); -- 查找研发部门的经理名字
select `emp_id` from `employee`
where `emp_id` in (
        select `emp_id` 
        from `works_with`
        where `total_sales` > 50000
); -- 销售资金超50000的人有哪些
登录后复制

十五、On delete

  • On delete set null 的作用是若该数据删除了(或者说对应不到了)则会设置为null

  • On delete decade 若对应数据删除了(或者说对应不到了)则该表格的这条数据跟着删掉

注:当为主键时则不能设置为on delete set nullcreate table `branch`(

        `branch_id` int primary key , -- 第一列
    `branch_name` varchar(20), -- 第二列
    `manager_id` int, -- 第三列,20指的是最大字符长度
    foreign key (`manager_id`) references `employee`(`emp_id`) on delete set null -- 设置好外键(选择什么是并对应什么表格的什么属性)
); -- 创建表格并设计属性
create table `works_with`(
        `emp_id` int, -- 第一列
    `client_id` int, -- 第二列
    `total_sales` int, -- 第三列,20指的是最大字符长度
    primary key(`emp_id`,`client_id`),
    foreign key (`emp_id`) references `employee`(`emp_id`) on delete cascade, -- 设置好外键(选择什么是并对应什么表格的什么属性)
        foreign key (`client_id`) references `client`(`client_id`) on delete cascade -- 设置好外键(选择什么是并对应什么表格的什么属性)
); -- 创建表格并设计属性
登录后复制

十六、Python连接MySQL

# 导入功能包(mysql-connector-python)
import mysql.connector

# 创入连线
connection = mysql.connector.connect(host=&#39;localhost&#39;,  # mysql的位置
                                     port=&#39;3306&#39;,  # 连接通道
                                     user=&#39;root&#39;,   # 使用者名称
                                     password=&#39;123456&#39;)  # 使用者密码
&#39;&#39;&#39;connection = mysql.connector.connect(host=&#39;localhost&#39;,  # mysql的位置
                                     port=&#39;3306&#39;,  # 连接通道
                                     user=&#39;root&#39;,   # 使用者名称
                                     password=&#39;123456&#39;,   # 使用者密码
                                     database=&#39;sql_tutorial&#39;)  # 直接打开目标资料库&#39;&#39;&#39;

# 告知开始使用操作
cursor = connection.cursor()
# 在对mysql操作时即用该格式:cursor.execute("你要执行的mysql语句命令")

# 创建资料库
# cursor.execute("CREATE DATABASE `qq`;")

# 取得所有资料库名称
cursor.execute("show databases;")
records = cursor.fetchall()  # 取出回传资料库
for r in records:
    print(r)  # 因为回传列表,为便于观察,进行循环打印

# 选择资料库
cursor.execute("use `sql_tutorial`;")

# 创建表格

# 告知关闭操作
cursor.close()
# 若要懂资料进行修改需要结尾加一个指令,这样才能提交指令生效
connection.commit()
# 关闭连线
connection.close()
登录后复制

以上是MySQL怎么使用Python进行连接的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1662
14
CakePHP 教程
1418
52
Laravel 教程
1311
25
PHP教程
1261
29
C# 教程
1234
24
MySQL和PhpMyAdmin:核心功能和功能 MySQL和PhpMyAdmin:核心功能和功能 Apr 22, 2025 am 12:12 AM

MySQL和phpMyAdmin是强大的数据库管理工具。1)MySQL用于创建数据库和表、执行DML和SQL查询。2)phpMyAdmin提供直观界面进行数据库管理、表结构管理、数据操作和用户权限管理。

MySQL与其他编程语言:一种比较 MySQL与其他编程语言:一种比较 Apr 19, 2025 am 12:22 AM

MySQL与其他编程语言相比,主要用于存储和管理数据,而其他语言如Python、Java、C 则用于逻辑处理和应用开发。 MySQL以其高性能、可扩展性和跨平台支持着称,适合数据管理需求,而其他语言在各自领域如数据分析、企业应用和系统编程中各有优势。

Python项目是否需要进行分层? Python项目是否需要进行分层? Apr 19, 2025 pm 10:06 PM

Python项目中的分层结构探讨在学习Python的过程中,很多初学者会接触到一些开源项目,特别是使用Django框架的项...

在MySQL中解释外键的目的。 在MySQL中解释外键的目的。 Apr 25, 2025 am 12:17 AM

在MySQL中,外键的作用是建立表与表之间的关系,确保数据的一致性和完整性。外键通过引用完整性检查和级联操作维护数据的有效性,使用时需注意性能优化和避免常见错误。

后端开发中的分层架构如何正确划分业务逻辑和非业务逻辑? 后端开发中的分层架构如何正确划分业务逻辑和非业务逻辑? Apr 19, 2025 pm 07:15 PM

探讨后端开发中的分层架构问题在后端开发中,常见的分层架构包括controller、service和dao...

如何安全地将包含函数和正则表达式的JavaScript对象存储到数据库并恢复? 如何安全地将包含函数和正则表达式的JavaScript对象存储到数据库并恢复? Apr 19, 2025 pm 11:09 PM

安全地处理JSON中的函数和正则表达式在前端开发中,经常需要将JavaScript...

Python vs. C:了解关键差异 Python vs. C:了解关键差异 Apr 21, 2025 am 12:18 AM

Python和C 各有优势,选择应基于项目需求。1)Python适合快速开发和数据处理,因其简洁语法和动态类型。2)C 适用于高性能和系统编程,因其静态类型和手动内存管理。

Python vs.C:您的项目选择哪种语言? Python vs.C:您的项目选择哪种语言? Apr 21, 2025 am 12:17 AM

选择Python还是C 取决于项目需求:1)如果需要快速开发、数据处理和原型设计,选择Python;2)如果需要高性能、低延迟和接近硬件的控制,选择C 。

See all articles