python之mysql数据库的操作

对数据库的操作 :

1 数据库的登录和登出:

登录 终端执行:mysql -uroot -p;  再输入密码;

登出 quit 或exit 

2 显示当前的时间:

select now()

3 查看所有的数据库:

show databases;

4 创建数据库

create database 数据库名称 charset='utf-8';

5 使用数据库

use 数据库名称;

6 查看当前数据库

select database();

7 删除数据库

drop database 数据库名称;

8 查看所有的表, 查看表数据结构

show tables;       desc 表名;

9 创建表

create table 表名(id int unsigned primary key auto_increment not null, name varchar(20) not null, age tinyint unsigned default 0, height decimal(5,2), gender enum('男',‘女’,‘保密’))

10 添加字段

alter table 表名 add 列名 类型 约束;

11 修改表字段的类型

alter table 表名 modify 字段 类型 约束;

12 修改字段名以及类型和约束

alter table 表名 change 列原名 列新名 类型及约束;

13 删除表字段

alter table 表名 drop 字段;

14 查看创表语句 

show create table 表名;

15 查看创建数据库 

show create database 数据库名;

16 删除表

drop table 表名;

数据库语句的操作:

1 查询所有的列:

select * from 表名;

2 添加数据:

insert into 表名 values()

insert into 表名 (列名1,列名2) values(值1,值2)

insert into 表名 (列名1,列名2) values(值1,值2),(值1,值2)

3 修改数据

update 表名 set 列名=值 where 条件;

4 删除数据

delete form 表名 where 条件

5 通过as取别名 将username取名为name 

select username as name from 表名;  

6 给表取别名 通过as

select s.id,s.username,s.age from students as s;

students是表名 s是别名  s.id  s.username s.age 是查询的条件

7 distinct关键字 去除重复的数据行:

查询的结果 比如有30多个人 性别只有男和女 那么查询的数据行就是两行男和女 如果性别还有未知那就是三行 再加未知。 不会是有多少人就多少行的。

8 where 条件语法查询的格式:

比较运算符 >  <  =   !=   and of  not 

select age from students where not (age>20);  小于20的查询出来

9 模糊查询 % 多个任意字匹配

select * from 表名 where 列名 like '黄%';

select * from 表名 where 列名 like '黄_';

select * from 表名 where 列名 like '黄__';

select * from 表名 where 列名 like '%黄';

10 连续查询 between

select * from students where id between 1 and 3;  查询id为1到3的数据

11 指定查询 in 

select * from students where id in (1,3,5);  查询id为1,3,5的数据

12 空判断查询 is null

select * from students where height is null; 表示身高数据为空的

13 排序查询的语句 order by   asc|desc 

select * from students where order by age desc;

select * from students where age>20 order by id desc;

14 分页查询 limit 

select * from students limit 第几条,查询几条;

select * from students limit (n-1)*m , m;  m代表每页查询的条数 n代表页数

15 聚合函数的介绍

count(col) 查询列的条数,  sum(col)查询列的数据相加的和, max(col)该列的最大值

min(col)该列的最小值  avg(col)该列的平均值

select sum(age) from students;

16 聚合函数求平均值 包含值是null的

select sum(height) / count(*) from students where gender = '男';

select avg(ifnull(height,0)) from students where gender = 1; 如果遇到身高是null的默认值设置为0

17 分组字段  根据相同的字段分为一组 列入性别为男的是一组 性别为女的是一组

select gender from students group by gender;

 select gender,username from students group by gender,username;

18 group by + group_concat(字段名) 统计每个分组指定字段的信息集合 每个信息之间使用逗号分隔,

select gender,group_concat(username) from students group by gender;

最后的结果相当于是 男;['zs','ls']  女:['zs','xx']

19 根据gender字段进行分组 统计分组条数大于2的;

 select gender,count(*) from students group by gender having count(*)>2;

20 根据gender字段进行分组 ,汇总所有人的年龄

select gender,sum(age) from studens group by gender;

21 group by + with rollup 在最后记录新增一行 显示select 查询时聚合函数的统计和计算的结果

select gender,group_concat(age) from students group by gender with rollup;

22 内连接查询

select 字段 from 表1 inner join 表2 on 表1.字段1 = 表2.字段2;

23 左连接: 以左边为全部 去查对应的右边 如果右表的数据没有就为null

select * from 表1 left join 表2 on 表1.字段 = 表2.字段

24 右连接 以右表的数据去查左边的 如果左边的数据没有就为null

select * from 表1 right join 表2 on 表1.字段 = 表2.字段

25 子查询

select * from students where age > (select avg(age) from students);

26 对已经存在的字段添加外键约束:也就是某一表数据的字段是依赖于另一个表的字段的值,如果不存在就会报错。

alter table 表名 add foreign key(本表名的字段) references 依赖的表名(依赖表名的字段)

alter table students add foreign key(cls_id) references classes(id)

27 创建数据表时设置外键的约束:

create table tearch(

        id int not null primary key auto_increment,

        name varchar(30),

        s_id int not null,

        foreign key(s_id) references 外键表名(外键表名的字段)

) 

28 删除外键约束:

alter table 自己的表名 drop foreign key 外键名;

29 根据商品的类型 查询所有的商品:

select name,price, from goods where cate_name = "超极本"

30 显示商品的分类:

select distinct cate_name from goods;

select cate_name from goods group by cate_name;

31 求所有产品的平均价 并保留两位小数

select round(avg(price),2) from goods;

32 显示每种商品的平均价格:

select cate_name,round(avg(price),2) from goods group by cate_name;

33 查询每种商品中 最贵 最便宜 平均价 数量

select cate_name, max(price), min(price), avg(price), count(*) from goods group by cate_name;

34 查询所有价格大于平均价格的商品 并且价格按降序排序

select * from goods where price > (select avg(price) from goods) order by price desc;

35 创建商品分类表:

create table good_cates(
        id  int not null primary key auto_increment,
        name varchar(200) not null
)

36 将从一个表中查询的字段对应的所有的值 插入到另一个表中对应的字段

slect cate_name from goods group by cate_name;  相当于从goods表中获取到了cate_name的值

 insert into good_cates(name) slect cate_name from goods group by cate_name; 

上述代码的意思是 将goods表中cate_name字段的所有值添加到 good_cates表中的name字段中。

37 链接查询 将两个表的数据合并到一起

select g.cate_name, gs.id from goods as g inner join good_cates as gs on g.cate_name=gs.name

38 将链表中某个数据的值改变为另一个表的值

update goods g inner join good_cates gs on g.cate_name=gs.name set g.cate_name=gs.id;

39 创建品牌表,其中品牌表的某个字段的值来源于另外一个表的字段的值;

create table goods_brands(

        id xxx,

        name varchar(100) select cate_name from goods group by cate_name;

40 修改goods表结构

alter table goods change cate_name cate_id int not null, change brand_name brand_id int not null;

41 python 使用 mysql

第一步导入

import pymysql

第二步链接数据库

conn = pymysql(host="localhost",port="3306",user="root",password="123456",database="test",charset="utf8")

第三步 获取游标 目的执行sql语句

cursor = conn.cursor()

第四步 创建sql语句

sql = "select * from test"

第五步 执行sql语句

cursor.execute(sql)

第六步 查询结果

# row = cursor.fetchone()  查询的是单条数据 类型是元组

row = cursor.fetchall() 查询的是所有的数据 类型是元组嵌套元组的数据

第七步 关闭游标 关闭 链接

cursor.close()

conn.close()

42 改造后的操作 防止报错:

import pymysqlconn = pymysql.connect(host="localhost",port=3306,user="root",password="123456",database="test",charset="utf8")cursor = conn.cursor()sql = "insert into user (id,name) values (3,'hs')"try:cursor.execute(sql)conn.commit() # 提交到数据库except Exception as e:conn.rollback() #发生错误 表示数据回滚
else:result = cursor.fetchall()print(result)
finally:cursor.close()conn.close()

43 方式sql语句注入 添加字段的时候 需要使用占位符 %s

sql = "insert into user (id,name) values (%s,%s)"try:cursor.execute(sql,(4,'wq'))conn.commit() # 提交到数据except Exception as e:conn.rollback() #发生错误 表示数据回滚
else:result = cursor.fetchall()print(result)
finally:cursor.close()conn.close()

44 索引加快mysql查询的速度:

查看表中已有的索引: show index from 表名; 

创建索引: alter table 表名 add index 索引名(字段);  alter table 表名 add index(字段) 默认的索引就为字段的名;

删除索引:alter table 表名 drop index 索引名;

创建联合索引: alter table 表名 add index (字段1,字段2)确点:如果查询的字段没有包含字段1相当于没有使用索引查询。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/32838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Let‘s Encrypt 申请通配符证书

为什么不使用阿里云/腾讯云等公有云厂商提供的免费证书? 上篇介绍了从阿里云上面申请免费证书,有效期一年 为网站配置https证书 公有云提供的证书不支持通配符&#xff0c;只支持某个确定的解析。 不管是二级域名还是三级域名&#xff0c;只要是具体的确定的地址&#xff0c;都…

spring 、springboot 运行的原理、理解、分析

Spring 和 Spring Boot 是非常流行的 Java 框架&#xff0c;它们的运行原理和设计哲学帮助开发者构建现代化的企业级应用。在这里&#xff0c;我们将深入探讨它们的运行原理、设计理念及其背后的机制。 Spring 框架 1. 核心概念和组件 IoC&#xff08;Inversion of Control&…

代码随想录训练营Day31

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、分发饼干二、摆动序列三、最大子树组合 前言 今天是跟着代码随想录刷题的第31天&#xff0c;主要学习了分发饼干&#xff0c;摆动序列和最大子树组合这三个…

号外!号外!全网第一手Android P刘海屏适配大揭秘,唯一Kotlin算法

如下图所示&#xff1a; 4.2.适配刘海屏 在刘海屏调试打开之后&#xff0c;浏览应用的所有页面&#xff0c;测试所有遮挡问题&#xff0c;或者是下移导致的问题&#xff0c;对有问题的页面进行布局适配。适配方案如下&#xff1a; Google 提供的适配方案&#xff0c;可以设置…

使用VisualBox+Vagrant搭建Centos虚拟机环境

1.下载并安装VisualBox&#xff1b; 2.下载并安装Vagrant; 3.打开cmd窗口&#xff0c;执行命令vagrant init centos/7&#xff0c;初始化centos环境&#xff0c;该步骤受网络带宽影响&#xff0c;可能挂级30分钟到1个小时&#xff1b; 4.启动虚拟机&#xff1a;vagrant up&…

数据库理论大题与编译原理大题(笔记)

目录 数据库&#xff08;求最小函数依赖&#xff09; 数据库&#xff08;求属性集的闭包和候选码&#xff09; 编译原理&#xff08;NFA ——> DFA&#xff09; 编译原理&#xff08;识别文法的活前缀 DFA 和 LR(0) 分析表&#xff09; 哈哈&#xff01;这是本人作者才…

WordPress强大多功能主题模板The7 v9.16.0

模板介绍 The7可以与WPBakery Page Builder&#xff08;原Visual Composer&#xff09;和Ultimate Addons的完全无缝集成。它也与大多数流行的插件完全兼容&#xff0c;例如WooCommerce&#xff0c;WPML&#xff0c;Yoast SEO&#xff0c;All in One WP Migration&#xff0c;…

工具方法 - 教育儿童的一些基本原则

全面而有效的教育需要综合多方面的因素和方法。以下是一些关键的教育原则&#xff1a; 1. 爱与关怀&#xff1a;让孩子感受到无条件的爱和关怀&#xff0c;建立安全感和信任感。这是教育的基础。 2. 榜样作用&#xff1a;父母和教师要以身作则&#xff0c;通过自己的行为和态度…

Windows系统下安装RabbitMQ详细步骤

声明&#xff1a;原文参考链接出自&#xff1a; 如何在Windows系统下安装RabbitMQ_rabbitmq windows安装-CSDN博客 https://zhuanlan.zhihu.com/p/693160757 一、RabbitMQ安装软件资源准备 因为RabbitMQ是Erlang语言开发的&#xff0c;因此安装Erlang环境在进行安装RbbitMQ的…

无需破解,打开就是旗舰版!

在当今快节奏的工作环境里&#xff0c;有效的视觉沟通变得至关重要。流程图、思维导图、组织结构图等图表能够帮助我们以清晰、直观的方式传达复杂信息。而Wondershare Edraw Max正是这样一款强大的绘图工具&#xff0c;它能够帮助用户轻松创建各种专业图表。 软件链接&#x…

基于springboot websocket和okhttp实现消息中转

1、业务介绍 消息源服务的消息不能直接推给用户侧&#xff0c;用户与中间服务建立websocket连接&#xff0c;中间服务再与源服务建立websocket连接&#xff0c;源服务的消息推给中间服务&#xff0c;中间服务再将消息推送给用户。流程如下图&#xff1a; 此例中我们定义中间服…

Java中如何优化数据库查询性能?

Java中如何优化数据库查询性能&#xff1f; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨在Java中如何优化数据库查询性能&#xff0c;这是…

ArcgisEngine 释放内存案例

一、案例事由 写了一个循环代码&#xff0c;里面有一句获取相交后的图形 IGeometry tempFeature topoOPer.Intersect(psoureGeo, esriGeometryDimension.esriGeometry2Dimension); 当程序运行到2700左右的时候&#xff0c;就不断报错&#xff0c;显示是内存错误&#xff0c;…

解析PDF文件中的图片为文本

解析PDF文件中的图片为文本 1 介绍 解析PDF文件中的图片&#xff0c;由两种思路&#xff0c;一种是自己读取PDF文件中的图片&#xff0c;然后用OCR解析&#xff0c;例如&#xff1a;使用PyMuPDF读取pdf文件&#xff0c;再用PaddleOCR或者Tesseract-OCR识别文字。另一种使用第…

信息学奥赛初赛天天练-32-CSP-J2022基础题-中缀表达式、后缀表达式、哈夫曼编码、连通图、邻居矩阵、完全二叉树、数组存储

PDF文档公众号回复关键字:20240623 2022 CSP-J 选择题 单项选择题&#xff08;共15题&#xff0c;每题2分&#xff0c;共计30分&#xff1a;每题有且仅有一个正确选项&#xff09; 6.对表达式a(b-c)*d的前缀表达式为( ),其中 、- 、 * 是运算符。 A. * a - bcd B. a * - …

【从0实现React18】 (四) 如何触发更新 带你了解react触发更新的流程以及更新后如何触发render

常见的触发更新的方式 创建 React 应用的根对象 ReactDOM.creatRoot().render()&#xff1b;类组件 this.setState()&#xff1b;函数组件 useState useEffect&#xff1b; 我们希望实现一套统一的更新机制&#xff0c;他的特点是&#xff1a; 兼容上述触发更新的方式方便后续…

linux 压缩解压操作

前言 ​ 汇总简介linux系统中常见各种文件压缩格式&#xff0c;包括tarball, zip, bz2, 7z, xz, rar等等的压缩和解压缩。本文中只介绍所涉及到的工具或命令常见使用方法&#xff0c;更详细更高端的使用方法可以用"cmd --help"的方式进行查看。 1.tarball压缩与解压…

c++学习-----内存管理

1. C/C内存分布 我们先来看下面的一段代码和相关问题 答案揭晓&#xff1a; 这里很多人会误认为*char2在常量区&#xff0c;这其实是错误的 因为&#xff1a; 首先在内存字符常量区分配一块内存空间放下”abcd\0”&#xff0c;然后在栈中分配一块连续的内存空间&#xff0c;…

SQL-Python

师从黑马程序员 数据库介绍 数据库就是存储数据的库 数据组织&#xff1a;库->表->数据 数据库和SQL的关系 MySQL的基础命令 SQL基础 SQL语言的分类 SQL的语法特征 DDL-库管理 show DATABASES;use sys;SELECT database();CREATE DATABASE test CHARSET utf-8;SHOW D…

学习C++第二天

1.缺省参数 缺省参数的概念&#xff1a; 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时&#xff0c;如果没有指定实参则采用该形参的缺省值&#xff0c;否则使用指定的实参。 void show(int a 10) {cout << a << endl; }int main() {sho…