python-MySQL数据库基础(二)操作数据库、数据表进行增删改查、分组、排序、连接

news2024/11/15 11:14:11

操作数据库(DDL)

Cmder是一个软件包,它被创建出来用于Windows上替代模拟器的,cmder官网:https://cmder.net/,安装完成后把安装目录下的bin文件夹添加到环境变量里才能正常使用(跟安装python类似)。

  1. 连接数据库
mysql -u用户名 -p
enter password:密码

此时把密码单独以密文的形式输入,进入mysql的操作环境。
在这里插入图片描述

  1. 显示数据库,show databases;,从1可以看出mysql语句的结尾用分号(;)或者(\g),显示出来的数据库跟SQLyong里的一样。
    在这里插入图片描述
    语句的书写不区分大小写,show DataBases;,得到的结果也一样,用键盘上的上箭头调出上一条语句,如果语句结尾没有分号或者\g,程序会一直等待用户继续输入,直到遇见分号或者\g。
  2. 显示数据库的版本号 select version();
  3. 查看当前的时间,select now();
  4. 退出数据库,exit;quit;
    在这里插入图片描述
  5. 创建数据库
    在SQLyong的图形界面,我们是点右键进行数据库和表的创建。
    在mysql中用语句进行创建,注意’-'在mysql语句中是个特殊的字符,一般不使用,如果要用的话,在英文状态下,用tab和1之间的上波浪线把数据库名字括起来。charset=utf8为指定编码集,防止中文出现乱码。
create database + 数据库名;
create database + 数据库名 charset=utf8;
  1. 显示创建的数据库
show create database + 数据库名(`mytest-01`);
  1. 查看当前使用的是哪个数据库select database();
    在这里插入图片描述
    当前没有使用任何数据库,所以得到的结果为NULL。
    这些命令都是针对数据库的操作,没有数据库就无法对数据表操作,没有数据表就无法对数据进行操作。
  2. 使用数据库 use 数据库名;
  3. 删除数据库 drop database 数据库名;
    在这里插入图片描述
    数据库在删除后,再用 show databases();,删除的数据库就不再显示了。
    注意:SQL语句不区分大小写;每行必须以英文状态下的分号作为结束;当数据库名有特殊字符的时候,使用``进行包括。
    练习
    创建数据库:my_test;查看已创建的数据库;查看当前使用的数据库是否是my_test;若不是,则切换至my_test数据库;删除my_test数据库。
    在这里插入图片描述

操作数据表

  1. 查看当前数据库中的所有表 show tables;
  2. 创建表 create table 数据表名(字段,类型,约束);
    需求:创建表名为mytable1,字段id为int并且字段name为varchar(30);创建表名为mytable2,指定id为主键并且字段name为varchar(30)
    在这里插入图片描述
  3. 查看表的创建语句 show create table 数据表名;
  4. 查看表描述信息 desc 数据表名;
    在这里插入图片描述
    练习
    创建students表(id、name、age、high、gender、cls_id);创建classes表(id、name)
    在这里插入图片描述
    创建student表时,设置id为int型、主键、非空、自增;age默认为18;性别默认为保密。
    在这里插入图片描述
  5. 添加表字段 alter table add 字段 类型;
  6. 修改表字段
alter table 数据表名 modify 字段 类型;            -- 不重命名
alter table 数据表名 change 原字段名 新字段名 类型及约束; -- 将字段重命名
  1. 删除表字段 alter table 数据表名 drop 字段;
    在cmder中运行和SQLyong中运行的结果一样的,SQLyong中运行的代码可以进行保存。
    在这里插入图片描述
    注意:代码需要选中,再运行,也可以点击F9运行,运行结果需要在表数据中刷新一下才能显示。

操作数据

增删改数据

  1. 整行插入 insert into 数据表名 values(值1,值2,值3...);
  2. 指定列中插入数据 insert into tabname(字段1,字段2...) values(值1,值2...);
  3. 指定列中插入多条数据 insert into 数据表名(字段1,字段2,...) values(值1,值2...),(值1,值2...);
    在这里插入图片描述
  4. 修改数据 update 数据表名 set 字段1=新值,字段2=新值 [where 条件]; 如果后面不加条件,会全部更新
  5. 删除数据 delete from 数据表名 [where 条件],如果不加条件,会删除全部数据。
    在这里插入图片描述

查询数据

查询数据直接在结果中显示,就不用再切换到表数据中去刷新查看了。

  1. 查询整个表数据 select * from 数据表名;
  2. 查询指定字段数据 select 字段1,字段2 from 数据表名;查询2个以上的字段时,不能加括号,会报错
  3. 查询指定字段数据,并给字段起别名 select 字段1 as 别名,字段2 as 别名 from 数据表名;
  4. 查询指定字段并去重 select distinct 字段1 from 数据表名;
    在这里插入图片描述

逻辑运算符

运算符描述
a and b当同时满足a,b时,则为True
a or b当满足a或b其中一个时,则为True
not a否定

在这里插入图片描述

模糊查询

用 like 关键字来进行模糊查询,并结合’%‘以及’_'使用

  • % 表示任意多个任意字符
  • _ 表示一个任意字符
    在这里插入图片描述

范围查询

关键字描述
in表示在一个非连续的范围内
between…and…表示在一个连续的范围内

空判断

关键字描述
is null判断空
is not null判断非空

在这里插入图片描述

常用的聚合函数

  1. count 总数
  2. max() 最大值
  3. min() 最小值
  4. sum 求和
  5. avg 平均值
    在这里插入图片描述

分组

在数据库中,通过group by 将查询结果按照1个或多个字段进行分组,字段值相同的为一组。

select 查询内容 from 表名 group by 分组字段;
group_concat();  查看每组的详细信息
with rollup;  计算分组后的总数

在这里插入图片描述

分组后的筛选

原始数据集 where 条件 group by 分组 having 子句,group by 分组后再进行筛选的时候用having
在这里插入图片描述

排序

order by 字段;  默认升序,从小到大排列
order by asc 字段; 指定字段升序
order by desc 字段; 指定字段降序

在这里插入图片描述

限制

limit可以限制网页的数据都是分页、分条显示。
limit start,count; ,start 为偏移量,从哪一条开始,默认起始为0;count为条数,一页显示的条数。
limit 不能写数学公式,只能写在末尾。
在这里插入图片描述

表连接

当查询结果的列来源于多张表时,需要将多张表连接程一个大的数据集,再选择合适的列返回mysql,这时就要使用表连接。

内连接

仅选出两张表中互相匹配的记录。如果不指定匹配列,将对两个表进行拼接。
select * from 表1 inner join 表2 on 表1.列 = 表2.列;
在这里插入图片描述

外连接

  • 左连接,以左表为主
    查询的结果为两个表匹配的数据,左表持有的数据,对于右表中不存在的数据,使用null填充。
    select * from 表1 left join 表2 on 表1.列 = 表2.列;
  • 右连接,以右表为主,使用和左连接相同
    查询结果为两个表匹配到的数据,右表持有的数据,对于左表中不存在的数据使,用null填充。
    select * from 表1 right join 表2 on 表1.列 = 表2.列;
    在这里插入图片描述

子查询

某些情况下,当进行查询的时候,需要的条件是另外一个select语句的结果,这时就要用到子查询。
在这里插入图片描述

更改引擎

不同的引擎支持不同的功能,查看引擎 show engines,默认使用的引擎为MyISAM,这个引擎是不支持外键的,要更改为INNODB,找到MySQL的安装路径,找到my.ini文件,更改default-storage-engine=INNODB,然后到data文件夹里删除ib_logfile0 和 ib_logfile1 这两个文件,重启MySQL就可以更换引擎了。

自关联

可以简单的理解为自己与自己进行连接查询。如一张areas表里有省市区,我们需要通过这一张表查询某省对应的所有市。select * from areas as p inner join areas as c on p.id = c.pid having p.name='省份';
比如省市区三级联动选择表中,选择省份,在城市里就会显示相应省份的城市,在地区里也会显示相应城市的地区。
在这里插入图片描述
在数据库的provinces表中湖南省的provinceid 为430000,在cities表中长沙市到湘西土家 的城市provinceid 也为430000,做查询的时候首先找到provinces表中湖南省的provinceid,然后根据provinceid 到cities表中去查询。
在这里插入图片描述

外键(foreign key)

多表关联,保持数据的完整和一致性。
MySQL的外键约束是表的一个特殊字段,对于两个具有关联关系的表而言,相关联字段中的主键所在表就是主表(父表),外键所在的表就是从表(子表)。
注意:主键不能包含空值,但允许在外键中出现空值,也就是说只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。
student表cls_id和classes表中id看似内容一致,如果没有做任何设置,更改classes表中id的值,student表中的cls_id不会发生变化,需要利用外键建立两个表之间的联系,classes表中的主键id,为student表的外键(cls_id)。一旦两张表建立了联系,可以直接删除子表,但是不能直接删除主表。
创建外键方式 constraint 约束名 foreign key 子表的字段 references 主表名 主键
修改 alter,删除为drop
在这里插入图片描述

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

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

相关文章

85.机器翻译与数据集

语言模型是自然语言处理的关键, 而机器翻译是语言模型最成功的基准测试。 因为机器翻译正是将输入序列转换成输出序列的 序列转换模型(sequence transduction)的核心问题。 序列转换模型在各类现代人工智能应用中发挥着至关重要的作用&#x…

Linux常用命令——traceroute命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) traceroute 显示数据包到主机间的路径 补充说明 traceroute命令用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是40字节。 通过traceroute我们可以知道信息从你的计算机到互联网…

若依项目启动前后端分离版本

若依项目的启动 1、下载源码 git clone https://gitee.com/y_project/RuoYi-Vue.git拉取代码、解压解压后 项目结构: 2、项目依赖 1、前端的依赖 2、后端的依赖 模块化: 依赖: 3、项目配置 1、前端配置 查看package.json 文件、能看到…

【Kubernetes】 从基础认识 k8s核心pod相关概念

基础 提示:此篇帮助朋友们,养成从0到1不断延伸知识的一种方法 最简单的创建pod入手 访问官方文档,直接使用案例,进行修改即可! 官网地址:https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/assign-pods-nodes/删除不需要的部分,根据规则添加需要的参数…

[oeasy]python0053_ 续行符_line_continuation_python行尾续行

续行符与三引号 回忆上次内容 上次还是转义序列 类型英文符号\abell响铃\bbackspace退格\ttab水平制表符\vvertical tab垂直制表符换行不回车\\backslash反斜杠\"double quote双引号\’single quote单引号\xhh具体字符输出(hh)16 进制对应的ascii 字符\ooo具体字符输出…

TDengine 时序数据特色查询语法详解,助力时序场景下的应用开发

小 T 导读:TDengine 是专为时序数据而研发的大数据平台,存储和计算都针对时序数据的特点量身定制,在支持标准 SQL 的基础之上,还提供了一系列贴合时序业务场景的特色查询语法,极大地方便了时序场景的应用开发。TDengin…

Java 里面 @InitBinder注解的使用原理

目录 1 @InitBinder注解作用1.1绑定同属性多对象1.2 类型转换2 总结1 @InitBinder注解作用 1.1绑定同属性多对象 第一个作用: 绑定同属性多对象 什么意思,就是有一个接口,参数是两个实体类,这两个实体类里面的属性名称还是一样,那么前端给这个接口传值的时候,哪个参数…

JavaEE day3 初识web与HTML 2

HTML HTML: 1.由标签(tag)组成的一棵树形结构,由于标签处于一棵树上,有时候也用元素(element)或者结点(node)表示 2.基本结构:html包括head与body两部分&a…

HummerRisk V0.9.0:增加RBAC 拓扑图,云检测、漏洞、主机等模块增加规则

HummerRisk V0.9.0发布:增加RBAC 资源拓扑图,首页新增检查的统计数据,云检测、漏洞、主机等模块增加规则,对象存储增加京东云,操作审计增加金山云,镜像仓库新增设置别名。 感谢社区中小伙伴们的反馈&#…

40 个定时任务,带你理解 RocketMQ 设计精髓!

大家好,我是君哥。今天来分享 RocketMQ 的定时任务。通过这些定时任务,能让我们更加理解 RocketMQ 的消息处理机制和设计理念。从 RocketMQ 4.9.4 的源代码上看,RocketMQ 的定时任务有很多,今天主要讲解一些核心的定时任务。1 架构…

智云通CRM:如何做好销售复盘,提升业绩?

我们在销售拜访中经常听见客户这样说:“不好意思啊,洛经理,我最近没有时间,等过一段时间不忙了,我们再约。”“洛经理,谢谢你大老远跑一趟,给我介绍这个产品。我很满意,不过我需要和…

RPC框架泛调用原理及转转的实践

RPC框架泛化调用功能在网关、接口测试等场景下有着广泛的需求,本文给各位读者介绍一下主流的泛化调用实现方式及原理,比较各种实现方案的优缺点,并分享泛化调用在转转的实践。一方面有助于RPC框架使用方理解泛化调用,更好地使用泛…

论文投稿指南——中文核心期刊推荐(原子能技术)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

spring mvc配置类简介及放静态资源释放

配置文件ApplicationContext.xml 基于spring的项目资源都是通过DispatcherServlet作为拦截器,DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自己定义,把拦截下来的请求&#xff0…

JS中Math.random()方法的使用总结

🔥 前言 Math.random() 这个方法相信大家都知道,是用来生成随机数的。不过一般的参考手册时却没有说明如何用这个方法来生成指定范围内的随机数。下面就来详细的介绍一下Math.random(),以及如何用它来生成制定范围内的随机数。 &#x1f525…

位运算__

异或运算相同为0,不同为1,相当于无进位相加0 ^ N NN ^ N 0异或运算满足交换律和结合律一、打印一个数的二进制题目打印一个数的二进制代码package bitoperation;public class PrintBinary {public static void printBinary(int num) {for (int i 32; …

代码重构之路 --我的2022年总结

2022年是我正式参加工作的第10个年头,也是我在CSDN上写博客的第11个年头。在这10余年的时间里,虽然在工作上遇到了各种情况,但我一直坚持输出、坚持分享,一共在CSDN上发表了530多篇原创博文。在这些文章中,大部分都是与…

论文投稿指南——中文核心期刊推荐(能源与动力工程)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

一篇五分生信临床模型预测文章代码复现——Figure 4-6 临床模型构建(八)

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

gateway整合sentinel限流不生效排查

问题 线上的sentinel 在测试压测时候可以正常被限流 但是在正常的流量中 发现被限流的接口很少 (我发誓肯定都配置了限流规则) 约定 文中的 服务名称以及地址 都被改写了 排查步骤 1.检查相关配置 以及 pom依赖配置 发现SentinelGatewayFilter 重复…