入行游戏测试之基础的增删查改sql语句-凯发体育客户端

空空 2023-01-31 12:04:58 生活百科 718 ℃ 0 评论

每次笔试的时候,有两道题我总是会留空白。

一个是写sql语句,一个是用代码写一道算术题。

现在我是希望sql语句至少可以答对一半吧!

而笔试题在我印象中,无非就是增删改查,而且还是最基础的(毕竟工作中都不怎么用。。。),所以我现在说一下这几个基本的sql语句吧。

在详细说明前,必须明确一个表的概念。

游戏中的所有数据都会存在数据库中,常用的比如mysql,redis。而数据库里,比如最常用的mysql都是以一张张表构成的。

而表的构成方式可以参考excel表,有每行对应的每列,通过每行每列的存的值来保留数据。

比如,每款游戏都应该会有个roleinfo表(role,角色;info,信息,就是角色信息表的意思),这张表里存的就是玩家的角色数据,比如玩家id,玩家名称,玩家等级,vip等级,创建角色时间,上次登录时间等等比较常规的数据。

我用excel表做个说明:

假设这是王者荣耀的角色表的一部分。。。

表的名字叫roleinfo,这里节选了四个字段,

roleid 表示角色唯一的id值(这是作为主键的,主键的要求是不能为空值,且不能与本列的值重复。最好做主键一般都会选择玩家的id吧,毕竟id是唯一的。)

name 表示玩家起的角色名字

grade 表示玩家当前的等级

vip_grade 表示玩家当前的vip等级

(每一列都表示一个字段)

如果想要知道玩家的基本属性,直接查询这张表,找到想查询玩家的id。。。就ok了。

好了,知道表的定义,现在开始增删改查吧。

一、新增一条数据

新增一条数据,需要用到insert into 语句。整个连起来就是:

insert into table_name value (值1,值2...)

insert 插入的意思,插入一条数据,就意味着新增一条数据,跟在excel表的手动插入行同理。

into 就是去哪里,跟着后面的表

table_name 这个表示是表的名字,就是你想插入哪张表,就写哪个表的名字。比如现在以roleinfo表为例,那么这个table_name就代表roleinfo表的意思。

value 表示值的意思,后面写的值1,值2就是这个表里面的字段,比如这张roleinfo表就有四个值,中间需要用逗号隔开。

我现在想插入一条新的数据,id是123459(这个得保证表里面没有同样的id,有的话需要先删除,或者直接在这个id后面改写),名字是test,等级是80级,vip等级是0级。

就可以执行:

insert into roleinfo value (“123459”,“test”,“80”,“0”);(分号结尾,代表一个sql语句的结束。)

(后面的value值,跟表里面的列是一一对应的关系。)

进阶版:

insert into roleinfo

(“roleid”,“name”,“grade”,“vip_grade”)

value

(“123459”,“test”,“80”,“0”);

这么写的话,就可以自己设的值有一一对应的关系。虽然复杂点,但是以后如果改表的内容,还是可以使用这个语句。上面那个版本就比较死板,一对一,二对二。

这是插入一行的数据,如果想要插入多行的数据,就只需要在写的value值的括号后面加个逗号,再继续加个括号填写里面的值就行了。

二、删除数据

1.删除一张表的所有数据

delete from table_name

delete 删除的意思

from table_name 从哪张表的意思。 (连起来就是从某张表,删除这张表的所有数据)

温馨提醒:谨慎操作,数据不可逆啊。(删了就删了,主要是会被服务器大佬怼。。。)

2.删除一张表的特定行数据

只需要在上面语句后面加一个限制where 值(一般直接写主键值),直接删除一整行的数据。

比如想删除上面新插入的roleid=123459的数据,就可以写:

delete from roleinfo where roleid = 123459;

where 哪里的意思,主要是加的限制作用,明确删的对象。

where后面跟的roleid = 123459值主要是roleid是主键,一删就是一整行。

三、更改数据

1.更新所有列

update table_name set value (update 更新的意思,set,可以理解为设置,将旧值设为新值)

比如,我想把上面一开始的角色表的等级都更新为120级。我们就可以写:

update roleinfo set grade = “120”;

注意:字段=后面的值 需要用引号。

2.更新特定的列

上面的语句直接就把所有账号的等级都变成120级了,如果想要单独设置等级,就需要加限制where

比如,只想把id=12345 的等级改为120级,就可以:

update roleinfo set grade = “120”where roleid = 123456;

温馨提示:不要把这个语句随便发给运维哦,不然后果自负。

四、查询数据

这是一个最重要的查询语句,就写几个比较常用的。

0.查询表里的所有数据:

select * from table_name;

1.查询列的所有数据

select 字段名 from table_name;

比如想查询这张表的所有角色的等级,就可以:

select grade from roleinfo;

然后可能就会打印下面三个数字(排列顺序可能不太一样。)

2.查询表的多列

这个只需要在字段名后添加一个逗号,再新增一个字段。想加几个就加几个。

比如想查询这张表的所有角色的等级和vip等级,就可以:

select grade,vip_grade from roleinfo;

3.查询单行单列

比如想查询id为123456的等级,只需要在后面加一个where限制语句就行:

select grade from roleinfo where roleid = 123456;

4.查询单行多列

这个跟查询多列是一种情况,只不过在后面多一个where而已:

select grade,vip_grade from roleinfo where roleid = 123456;

5.查询多行多列

比如想查询123456和123457的等级和vip等级,可以在后面加个and:

select grade,vip_grade from roleinfo where roleid = 123456 and roleid = 123457;

扩展一下:

6.可以用比较符号查询

比如想查询角色表里大于60级的数据,则可以:

select grade from roleinfo where grade > 60;

7.给查询结果排序

在上面的例子中有说排列顺序可能不太一样的备注,这是因为数据显示出来可能是从存数据的时间点来的,而不会显示成列表一致,所以可以加一个按a-z的顺序排列,只需要在后面加一个 order by 字段名(order 顺序的意思,by 通过,跟后面的字段名也就是列名连起来就是,给这个字段给排序,通过正序排列。因为这个是默认正序。)

那么第一个例子就可以按顺序展示为:50,80,100语句为:select grade from roleinfo order by grade;

8.给排序再加一个限制

一个表里面有成千上万的数据,如果我想查排名前5的数据呢?那么就需要用到limit语句 (limit 限制的意思。)

比如现在只想查询等级表前2个角色,就可以:

select grade from roleinfo order by grade limit 2;

limit后面的数字代表查询的行数。

那如果我只想查询等级第2的数据呢?也可以:

select grade from roleinfo order by grade limit 1,1;

(limit后面的两个数字,第一个代表的是从第几行开始,相当于一个起始点。第二个数字代表的是行数。1,1代表第一行开始的1行数据;5,4,代表从第5行开始的4行数据。)

温馨提示:程序的排序规则可是从0开始的哦。

哦,对了,学这个增删改查的sql语句有什么作用呢?

0.删数据没有操作过,也不敢瞎操作。我可不想删库跑路不是。。。

1.改数据是可以的,比如某个玩家充值了,但是因为bug没有到账,所以可以手动改一下vip经验值。

2.查询数据,当然一个是因为可以看玩家当前的数据,比如查询一个活动玩家的当前排行榜情况,核对发奖数据是否正确。另一个是可以用来导外网数据直接到内网的。

3.增加数据。上面说到可以导玩家数据到内网,其实可以先通过查询语句把玩家的数据都以sql的形式导出来,再通过插入语句,将玩家的数据插入对应的表,就可以实现数据的导入了。

最后总结一下:

1.增 (在表里新增一条数据)

insert into table_name values 《后面加的是新增的行及字段值,比如grade = “80”》

2.删 (在表里删除一条数据)

delete from table_name where 具体的主键id

3.改

update table_name set 《字段名=新值,比如grade = “80”》 where 具体的主键id

4.查

select 字段名 (所有字段可以用*表示)from table_name where 字段名 order by 字段名(这个是默认按正序) limit 数字 逗号 数字 (限制起始值和行数)

最后的最后,想问个问题:

假设一个玩家充值到的“屠龙宝刀”没有发货,那我们应该用插入语句还是用更新语句呢?

感谢阅读,因技术有限,也操作比较少,有错误的地方烦请不吝赐教。

鞠躬!

同类热门推荐 游戏测试小剧场之登录测试用例 28876人看过 白羊座的性格大全 1883人看过 白羊座男女性格? 30121人看过 党支部班子党史学习教育专题组织生活会对照检查材料范文 60709人看过 马丁•雅克:西方大大低估了中国共产党的理论创新能力及其意义 70399人看过 本站只为传播信息,不对所发布的内容本身负责。如有凯发k8国际手机app下载的版权及其它问题,请联系站长处理。

本文tag:[基础] [游戏] [入行]

  • 上一篇:
  • 下一篇:
网站地图