网络安全快速入门(九)MySQL进阶操作

news2024/12/23 7:27:36

        上一章我们了解了对表及库的基本增删查改操作,本章我们针对增删查改内容进行与一些拓展,

9.1字段修饰及数据类型

        我们之前在创建表时用到的格式为:

create table 表名 (
字段名1 字段数据类型(数据类型长度),
字段名2 字段数据类型(数据类型长度),
字段名3 字段数据类型(数据类型长度),
字段名4 字段数据类型(数据类型长度),
)

        其实这个格式较为简单,仅仅定义了数据类型,但是大部分情况下无法只能通过数据类型来定义字段。因此我们可以拓展一下,在数据类型之后加上字段修饰,字段修饰有以下几个主要内容:

  • unsigned:表示的数字是无符号数字(只能是正数)
  • null:这个字段可以为空
  • not null:这个字段不可以为空
  • primary key:主键,用来唯一标识表中的一条记录(主键的内容不能重复)
  • auto_increment:设置主键自增
  • default:设置字段的默认值

我们来一个个讲解上述的字段修饰:

unsigned:

        表示该字段为无符号数字,顾名思义,也就是非负数。该字段只能紧跟在数据类型之后,否则会报错。

null:

该字段修饰可以让字段值为空,默认为null

not null:

        该字段不能让字段值为空,如果非空字段无值的情况下,会显示下图结果

primary key:

        主键,用来唯一标识表中的一条记录,该字段不能重复,通常用来作为序号,id等字段名称,

auto_increment:

        该修饰主要是用来做主键自增时使用,相关主键的数据类型尽量为数值型。

注意:在设置自增后主键轻易不要修改,因为主键自增后一般按照最大数值之后开始自增。贸然修改主键数值可能会导致之后的主键会从修改数值字段的最大值开始自增!!!

default:

设置字段默认值,在未改动该字段的情况下会默认为该字段修饰之后的字符

格式

字段名 数据类型 default “字符”

拓展创建表

 在了解字段修饰之后,我们就可以拓展一下之前我们所学习的创建表

 拓展格式如下

create table 表名 (
字段名1 字段数据类型(数据类型长度) 字段修饰,
字段名2 字段数据类型(数据类型长度)字段修饰,
字段名3 字段数据类型(数据类型长度)字段修饰,
字段名4 字段数据类型(数据类型长度)字段修饰,
)

话不多说,我们直接来举例

例:

在数据库db1下创建表格tb001表,要求:

name 为可变长度字符,50长度,

age为整型,三字符长度,且不能为空,

id为int长度,不能为空,且拥有主键并自加主键,

genger为可变长的字符,30长度,默认值为hebei,

nmum为枚举类型,枚举值为m和n

use db1;
create table tb001(
name varchar(50),
age int(3) not null,
id int not null primary key auto_increment,
genger varchar(30) default"hebei")

我们来查看一下上列命令的表结构

通过查看表结构我们可以发现我们上面所使用的字段名称,数据类型以及字段修饰,在上一篇文章我们已经讲解了各个字段的名称及含义,这里我们不再赘述。

补充:数据类型长度

不同数据类型长度所代表的含义不同,如果我们在char,或者varchar后加数据类型长度之后,该类型则可以最多输出数据类型长度的字符,如果是数值长度的话,输入少于字符长度的数据前面会自动用0去补全,如果超出长度则会原样显示出来,这里直接放截图

age int(3)时输入3显示的数据

age int(3)时输入333333显示的数据

而char或varchar输入超过该数据长度则会报错,char默认长度是1,这里请大家注意。

9.2对表中的数据进行操作

我们之前已经学习了对表的操作,接下来我们开始对表中的数据进行操作

在表中插入数据

        在表中插入数据有两种方法

  • 方法一
insert into 表名 values(值1,值2,值3)

        注意:该方法是依次给字段赋值,因此需要将字段逐个赋值

  • 方法二
insert into 表名(字段,字段,字段) values(值1,值2,值3)

        该方法可以指定字段进行赋值,因此方法二较为常用

这里我们举个例子

案例:

        在tb001中插入数据,name为ch225,age为66,genger为f

insert into tb001(name,age,genger)values("ch225",66,"f")

我们来看一下结果

注意:

  • 在赋值时候去注意字符类型,字母及文字需要用英文双引号引用,否则报错
  • 这里仅仅是向部分字段写入值
  • 没有指定字段,会写如空
  • 字段的顺序要和值的顺序保持一致

 删除表中的数据及截断表

删除表中的数据有两个格式,如下:

  • 格式一:
delete from 表名

该命令可以直接删除表中的全部数据

  • 格式二:
delete from 表名 where 条件

该命令可以删除表中的指定数据

直接举例子

现在有以下表student(如下图)

例子1.

删除student表中的sage为18的数据

delete from student where sage=18

看结果

删除三行,我们现在进表里看

例子二:

        删除表中所有数据

delete from student

老规矩,看结果

我们来看表

没数据了,说明命令执行成功下一个

但我们重新插入数据时会发现,主键不也是从0开始自增,而是在删除数据之前最高的主键开始增加

截断表

截断表,类似于我们超市开的小票,打出来一大堆东西,一撕,啪!全都没了,然后重新打印下一张小票继续从o开始。简单点来说,就是删除表中全部的数据,而且会截断表(id会重新开始自增)

格式
truncate 表名

老规矩,我们举例子来验证

上图为表sc的数据,主键为sid,我们来截断该表

TRuncate sc

ok,命令执行成功,接下来我们添加数据来看看

insert into sc (cid,score)values(1,20)

看结果

主键sid开始从零自增,完成!!

修改表中数据

也是有两种格式,

格式1:

update 表名 set 字段=值

该格式为批量修改,只要是该字段内的数据都会被修改

格式2:

update 表名 set 字段=值 where 记录=值

该字段用where进行条件筛选

话不多说直接举例:

现有表teacher,表内容如下图

例1:将阿斯顿修改为图灵

update teacher set tname="图灵" where tid=1

我们来查看表

阿斯顿已成功更改·下一个例子

例子二:

表中的tname修改为乔布斯

update teacher set tname="乔布斯"

查看表

修改表中数据就这些,完成!

9.3 对表中的字段进行操作

增加字段

在已经创建的字段之前或之后添加新的字段

格式一:在字段名之后添加新字段

alter table 表名 add column 新字段名 字段属性 after 字段名

格式二:在字段名之前添加新字段

alter table 表名 add column 新字段名 字段属性 first 字段名

直接举例:

teacher表如上图,在tname后添加新字段age,数据类型为int,默认为30

alter table teacher add column age int default"30" after tname 

我们查看表结构

ok,完成,我们开始下一个环节

删除字段:

顾名思义,删除字段,不做解释

格式:

alter table 表名 drop column 字段名

我们还是以上述表举例

例子

删除tname字段

alter table teacher drop column tname 

我们看下表

ok,删除表成功

注意:贸然删除字段可能会导致一些未知错误,因此:

建议不要删除!

建议不要删除!!

建议不要删除!!!

建议不要删除!!!!

建议不要删除!!!!!

建议不要删除!!!!!!

修改字段名

        修改字段名,见名知义,

格式:

alter table 表名 change column 字段名 新字段子 属性约束

 还是举例来看一下吧

还是那个teacher

例:

将字段名age修改为gae

alter table teacher change column age gae int(30)

我们来看结果

ok了,

该命令不仅可以修改字段名,也可以去修改数据类型和字段修饰。这里就不一一演示了。还请各位读者见谅。

修改字段顺序

这玩意跟之前添加字段还有些类似,还别不信,直接看格式
格式一:

alter table 表名 modify column 字段名 属性 after 位置

格式二:

alter table 表名 modify column 字段名 属性 first 位置

 这里我们还是举例表示:

还是teacher表,将表中的age字段移动至tid之前

alter table teacher modify column tid int(30) after gae

我们来看一下表

改过去了,说明ok,没问题对表中的字段进行操作就了解这么多,接下来进入下一个板块

9.4查询表中的内容

9.4.1 简单查询

就是可以查看表中的内容,这里我们先看格式,再去了解

格式

select 查询的内容 from 表名 where 条件

表示查询内容的方法有很多我们来看几个较为常用的

表示查询内容的方法:
  • *:表示所有的内容
  • 一个或者多个字段的名字:表示仅仅查询一个或者多个字段(查询多个字段的时候,多个字段之间,用逗号分割)

注意:查询内容只能通过字段查询相关记录,不能通过记录去查询,如果想要控制显示记录,则需要通过where之后加条件去执行。

where后条件写法

  • > 大于
  • >= 大于等于
  • < 小于
  • <= 小于等
  • <> 不等于
  • != 不等于
  • between ... and ... 判断范围
  • is null 是空
  • is not null 不是空
  • like 模糊查询

        (like后可能要跟通配符“%”,%  表示任意个任意字符,具体使用方法如下面例子)

  • in 判断某个字段是否在给定的集合中

好了,一条简单些的select语句大概就由这么些内容组成,之后的内容我们通过例题进行补充

例:

假设有一表name,如下

查询name中age大于20的字段

select *from name where age > 20

查询name中age大于等于20的字段

select *from name where age >= 20

查询name中age小于20的字段

select *from name where age < 20

查询name中age为空的字段

select *from name where age is null

查询name中age不为空的字段

select *from name where age is not null

查询name中age为3,5,7的字段

select *from name where age in(3,5,7)

 

查询name中 age大于等于8 且小于等于50
select *from name where age>3 and age < 50

注意:接下来就要用到简单查询了!!!!

简单查询如下

查询name中name包含a的记录

select name from name where name like "%a%"

查询name中namey以a为结尾的记录

select name from name where name like "%a"

(因为框中只有一个a,所以a即使开头也是结尾)

我们就先简单举上述这些例子,接下来我们对简单进行略微的扩展

   9.4.2查询排序

        就是对上述的结果进行了简单的排序,话不多说,我们先来看格式

格式:

select 查询内容 from 表名 where 条件 order by 字段名

排序分为两种字段名,

  • 升序(默认为升序)

        asc

  • 降序

        desc

看上去好像怪简单的,我们直接进行实操

还是以上面name为例

查询name中age不为空的字段并且对age由高到低进行排序

select *from name where age is not null order by age desc

查询name中age不为空的字段并且对name由低到高进行排序

select *from name where age is not null order by name asc

这里我们可以看到,当排序对象为数字时,是从0开始进行排序;当排序对象是字母时,则是依照字母顺序表从a到z进行排序。因此在排序时请注意这几点。

9.4.3 指定输出行

指定输出行,顾名思义就是指定输出前几行,其余记录不进行显示,老规矩,还是先看格式

格式:

select 查询内容 from 表名 where 条件 order by 字段名 limit 数字

当不使用limit字段时,默认输出所有符合条件的记录,而当使用该字段时,输入数字是几则显示几条记录。我们还是举例说明

例:

查询name中age不为空的字段并且对name由低到高进行排序显示前三条记录

select *from name where age is not null order by name asc limit 3

看结果

ok,下一个

9.4.4 聚合函数:

 可以简单理解为四则运算,但一般常用的聚合函数很少用到乘除法则,因此这里只讲常用的聚合函数,讲解不到位还请读者谅解0..0

常用的聚合函数:

  • sum() 求和
  • avg() 求平均值
  • max() 求最大值
  • min() 求最小值
  • count() 统计记录条数

格式:

select 聚合函数(字段名) from 表名

还是以上述name表为例,

简单举个例子:

计算所有学生年龄的和

select sum(agde) from name

计算所有学生年龄的平均值

select avg(age) from name

统计一共有多少条记录

select count(age) from name

统计最小的年龄

select min(age) from name

ok了,下一个

9.4.5 查询记录去重

顾名思义,就是去除重复字段,我们直接看格式

格式

select distinct 字段名 from 表名

例:

查询name中age不为空的字段并且对name由低到高进行排序并去除重复字段

select distinct age from name where age is not null

下一个

9.4.6 分组及分组后加条件

分组

对记录进行区分,通常用于统计过个字段人数使用

group by

格式:

select 字段 from 格式 group by 分组字段

直接举例,还是上个name表

对age进行分组,并显示名称

select name from name GROUP BY age

分组后加条件
having,使用格式如下
select 字段 from 表名 group by 字段 having 条件

因为该命令不常用,因此这里只做了解,还请各位读者谅解,还是通过例题来简单了解一下分组后加条件,例题如下

有一表students,内容如下

例题:通过gender进行分组分别查询查询students表中stuid大于二十的男生人数

select count(stuid),gender from students where stuid>20 group by gender  having gender="m"

我们来看结果

注:(分组后加条件是在分组后显示的结果进行进一步的条件筛选,若分组时结果没有条件,则会显示查询不到对应的字段或其他报错,因此在分组后查询过程中,建议先运行不分组后不加条件的代码,针对分组后不加条件的代码进行进一步的条件筛选!!!)

以上就是本期内容了,很多东西笔者因为篇幅原因还没讲到,还请各位见谅。如有错误,还请谅解.感谢各位观看!

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

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

相关文章

刷代码随想录有感(65):回溯算法——组合问题

题干&#xff1a; 代码&#xff1a; class Solution { public:vector<vector<int>> res;vector<int> tmp;void backtracking(int n, int k, int start){if(tmp.size() k){res.push_back(tmp);return;}for(int i start; i < n; i){tmp.push_back(i);bac…

[Algorithm][回溯][组合][目标和][组合总和]详细讲解

目录 1.组合1.题目链接2.算法原理详解3.代码实现 2.目标和1.题目链接2.算法原理详解3.代码实现 3.组合总和1.题目链接2.算法原理详解3.代码实现 1.组合 1.题目链接 组合 2.算法原理详解 思路&#xff1a;每次都只选一个数&#xff0c;此后只能选它后面的数函数设计&#xff…

全面提升数据采集效率:亮数据产品的应用与评估详解

全面提升数据采集效率&#xff1a;亮数据产品的应用与评估详解 文章目录 全面提升数据采集效率&#xff1a;亮数据产品的应用与评估详解背景应用场景&#xff1a;平台首页信息抓取准备评测素材详细的产品使用和评测流程产品介绍亮数据的IP代理服务亮数据的爬虫工具及采集技术 注…

elasticsearch使用Ngram实现任意位数手机号搜索

文章目录 Ngram自定义分词案例实战问题拆解 Ngram分词器定义Ngram分词定义Ngram分词示例Ngram分词应用场景 Ngram分词实战 Ngram自定义分词案例 当对keyword类型的字段进行高亮查询时&#xff0c;若值为123asd456&#xff0c;查询sd4&#xff0c;则高亮结果是&#xff1c;em&a…

项目管理-案例重点知识(整合管理)

项目管理&#xff1a;每天进步一点点~ 活到老&#xff0c;学到老 ヾ(◍∇◍)&#xff89;&#xff9e; 何时学习都不晚&#xff0c;加油 一、整合管理 案例重点 重点内容&#xff1a; &#xff08;1&#xff09;项目章程内容和作用 &#xff08;2&#xff09;项目管理计划…

乡村振兴的农业科技创新:加大农业科技投入,推广农业科技成果,提升农业科技创新水平,推动美丽乡村农业现代化

一、引言 随着全球化和信息化时代的到来&#xff0c;农业作为国民经济的基础&#xff0c;其现代化进程日益受到关注。在乡村振兴战略的大背景下&#xff0c;农业科技创新成为推动乡村经济转型升级、实现农业现代化的关键力量。本文旨在探讨如何通过加大农业科技投入、推广农业…

【PB案例学习笔记】-02 目录浏览器

写在前面 这是PB案例学习笔记系列文章的第二篇&#xff0c;该系列文章适合具有一定PB基础的读者&#xff0c; 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上…

蓝桥杯单片机之模块代码《串口发数据》

过往历程 历程1&#xff1a;秒表 历程2&#xff1a;按键显示时钟 历程3&#xff1a;列矩阵按键显示时钟 历程4&#xff1a;行矩阵按键显示时钟 历程5&#xff1a;新DS1302 历程6&#xff1a;小数点精确后两位ds18b20 历程7&#xff1a;35定时器测量频率 历程8&#xff…

初识鸿蒙之ArkTS基础

前言 学习一种应用程序开发&#xff0c;需要从这种程序的开发语言开始&#xff0c;比如说Android开发从入门到放弃&#xff0c;肯定是从Java基础或者是Kotlin语言基础开始学习的&#xff0c;IOS程序开发也肯定是从object-c开始学习的。鸿蒙软件开发也不例外&#xff0c;如果做…

平衡三进制小数详解与进制转换

标准三进制是“逢三进一&#xff0c;退一还三”的机制&#xff0c;平衡三进制与之类似&#xff0c;但就是偏移了一下变得对称了&#xff0c;平衡三进制与标准三进制可以相互转换&#xff0c;但这样显得有点多余了&#xff0c;所以这里只讲平衡三进制与十进制的转换。 数字系统的…

meshlab: pymeshlab合并多个物体模型并保存(flatten visible layers)

一、关于环境 请参考&#xff1a;pymeshlab遍历文件夹中模型、缩放并导出指定格式-CSDN博客 二、关于代码 本文所给出代码仅为参考&#xff0c;禁止转载和引用&#xff0c;仅供个人学习。 本文所给出的例子是https://download.csdn.net/download/weixin_42605076/89233917中的…

【微记录】dmidecode是干什么的?常用来做什么?如何查看系统支持的PCIe版本号(本质:标准,Desktop Management Interface)

是什么 dmidecode 是一个在 Linux 系统提取硬件信息的命令行工具。DMI 代表桌面管理接口&#xff08;Desktop Management Interface&#xff09;&#xff0c;是一种标准&#xff0c;收集桌面计算机的硬件信息&#xff0c;包括系统制造商、序列号、BIOS 信息、系统资产标签等。…

风电功率预测 | 基于PSO-BP神经网络实现风电功率预测(附matlab完整源码)

风电功率预测 风电功率预测完整代码风电功率预测 基于粒子群优化算法(Particle Swarm Optimization, PSO)的BP神经网络是一种常见的方法,用于实现风电功率预测。下面是一个基于PSO-BP神经网络实现风电功率预测的一般步骤: 数据准备:收集与风电场发电功率相关的数据,包括…

C语言----斐波那契数列(附源代码)

各位看官们好&#xff0c;当我写了上一篇博客杨辉三角后&#xff0c;有一些看官叫我讲一下斐波那契数列。对于这个大家应该是有了解的。最简单的规律就是f(n)f(n-2)f(n-1)。就是当前是前两项之和&#xff0c;然后下标1和0都是1.从第三项开始计算的。那么我们知道规律&#xff0…

旧衣服回收小程序:探索旧衣回收市场的创新发展

每年我国就有将近800万吨旧衣服&#xff0c;在生活水平的日益提高下&#xff0c;这个数字也在逐渐增加。目前&#xff0c;我国旧衣回收的产业链也在完善中&#xff0c;旧衣服出口贸易逐年增加&#xff0c;市场发展空间不断扩大。此外&#xff0c;旧衣回收市场投入低、风险小、利…

SystemC学习使用记录

一、概述 对于复杂的片上系统&#xff0c;在进行RTL编码前&#xff0c;需进行深入的系统级仿真&#xff0c;以确认设计的体系结构是否恰当、总线是否能满足吞吐量和实现性要求以及存储器是否浪费&#xff0c;所进行的这些仿真要求在芯片的仿真模型上运行大量的软件&#xff0c…

PLL-分频器

概念 分频器的性能一般用四个参数来规定:(1)分频比&#xff0c;(2)最大允许输入频率fmax&#xff0c;(3)功耗&#xff0c;(4)最小允许输入电压摆幅(也叫“灵敏度”)。虽然分频器的相位噪声也很重要&#xff0c;但在大多数情况下它可以忽略不计。 把一般分频器的输入灵敏度画成…

微信支付商户的“商家转账到零钱”产品快速开通指南

微信支付商户的“商家转账到零钱”功能为商家提供了便捷的转账途径&#xff0c;尤其适用于费用报销、员工福利发放、合作伙伴货款或分销返佣等多种场景。那么&#xff0c;如何快速开通这一功能呢&#xff0c;需要快速开通的商户可以联系小编。 首先&#xff0c;确保你的企业已经…

C++基础与深度解析 | 表达式 | 操作符

文章目录 一、表达式基础1.表达式的值类别2.表达式的类型转换 二、表达式详述1.算术操作符2.逻辑与关系操作符3.位操作符4.赋值操作符5.自增与自减运算符6.其他操作符三、C17对表达式的求值顺序的限定 一、表达式基础 表达式由一到多个操作数组成&#xff0c;可以求值并 ( 通常…

Node.js 学习笔记 express框架

express express 使用express下载express 初体验 express 路由什么是路由1路由的使用验证的方法 2获取请求报文参数3获取路由参数4响应设置响应报文 express 中间件5中间件全局中间件路由中间件 6静态资源中间件注意事项案例 7请求体数据8防盗链实现防盗链 9路由模块化router E…