- 【知识回顾】
-
1、{修改数据}
含义:修改表中列的数据
单词:
【update】:--指定表,后面接表名
【set】: --指定列并赋予一个新的数据,可以有多个列,列之间用逗号
【where】:--接条件,定位行,可以有多个条件,用and 、or 来连接
分类:
《1》全改(了解)
含义:将整列的数据改为一样的
格式:update 表名 set 列名1=’新数据’,列名2=’新数据’;
效果:将整列的数据改为一样
又称:不带条件修改
《2》部分改(重点)
又称:带条件修改
单词:where 条件
含义:修改的是满足条件所在行的列的数据,部分:行和列的交集
表现1:
一行一列 --》一个单元格
二行二列 --》四个单元格
一行二列 --》二个单元格
说明:需要指定行和列
指定行:借助where来指定
指定列:set来指定
原理: 先对条件进行判断(是否满足),如果条件满足,满足条件所在行的列的数据被修改,反之,条件不满足,则不会被修改
格式:update 表名 set 列名1=’新数据’,列名2=’新数据’ where 条件;
效果:修改的是行和列的交集的数据
说明1:被修改的列可以有多个,逗号隔开
比如1:修改单列
set 列1=’新数据’
比如2:修改多列
set 列1=’新数据’,列2=’新数据’,列3=’新数据’
说明2:条件也可以有多个,需要连接词连接
and 多个条件必须要同时满足
or 多个条件任意一个满足
比如1:条件为{30号部门且工资大于1000}
where 部门=30 and sal>1000
比如2:条件为{姓名为’james’和’wade’}
where 姓名=’james’ or 姓名=’wade’
比如3:条件为{工资为1000或者2000}
where 工资=1000 or 2000 这是错误的写法
说明:连接词的选择,不能单独从表面上去判断,还需根据实际情况是否符合常理来判断
尤其是:和,并不一定是and
- {如何表达条件}
-
概念:所写的条件写的是一个条件表达式
方式1:借助关系运算符来表达条件
符号:> >= < <= = != <>(不等于)
举例:工资为9800
Where 工资=9800
【如果有多个条件,需要选择一个合适的连接词来连接多个条件】
方式2:借助特定关键字来表达式条件
①Between and :介于2个数值范围之间的任意一个数字
闭区间(包含边界值)
举例:工资在5000到10000之间
Where 工资 between 5000 and 10000
②In :在指定的值之间任意选一个
举例1:工资在2000或者3000或者5000之间
Where 工资 in(2000,3000,5000)
举例2:姓名为tom或者jim或者kim
Where 姓名 in(‘tom’,’jim’,’kim’)
③Null:空,没有数据
概念1:在数据库中某个列没有数据,显示为null
概念2:null与任意数字进行任意运算,其结果都是null
select 1+null;
概念3:如何使用null来表达空与非空
null不支持关系运算符,需借助is和not来表达
where 工资 is null
为空:is null
非空:is not null
举例1:没有工资(工资列为空,或者等于0)
where 工资 is null or 工资=0
举例2:有工资(工资列不为空,并且大于0)
where 工资 is not null and 工资>0
④not:取反
应用1:不在某个区间范围内
not between and
应用2:不在指定的值中
not in(值1,值2,值3)
应用3:非空
is not null
应用4:对列取反
比如:工资大于等于1000
where 工资>=1000
where not 工资<1000
3、{练习}
- 【每日单词】
-
单词
中文含义
中文发音
database
数据库
德塔贝斯
create
创建
科雷特
charset
字符集
恰赛特
utf8
万国码 全称:utf-8 语言:utf-8
Utf8
show
查看
瘦
use
打开、开启
游丝
drop
删除
叫破
table
表
忒波
int
整数
因特
float
小数
佛洛特
date
日期
德特
char
固定长度字符
恰
varchar
可变长度字符
瓦恰
desc
查看表的结构
desc
insert
插入
银射特
into
往
银土
values
数据
歪留斯
update
修改表中列的数据
阿婆德特
set
设置
色特
where
带条件
歪耳
and
连接词,并且
恩德
or
连接词,或者
噢
Between and
介于2个数值范围之间
闭吞恩德
in
在指定值之间
印
is null
为空
浪
is Not null
非空
偌特 浪
select
含义:查询、检索、计算
在表中查询数据:
作用:查询表中列的数据
后面接列名,可以是一个列,也可以是多个列
表现1:接单个列
select 列1 from 表名;
表现2:接多个列,列之间用逗号
select 列1,列2 from 表名;
表现3:所有列, *
select * from 表名;
色赖科特
from
从,数据是来源于表
后面一定接表名,可以是一个表,也可以多个表
表现1:单个表
select 列名 from 表名1;
含义:所查询的数据来自一张表
表现2:多个表
select 列名 from 表1,表2;
select 列名 from 表1 join 表2;
含义:所查询的数据来自多张表(最最最难)
付朗姆
limit
like
像,作为模糊查询的关键字
特点:条件并不是明确,而只是知道其中一部分的信息
表现1:以什么开头
表现2:以什么结束
表现3:包含什么
表现4:第二个字符是什么
表现5:倒数第三个字符是什么
通配符:该符号会自动匹配(转化)为其他的含义(规则)
- %:代表0个或者n个字符
代表任意内容(可以为空,也可以为多个内容)
- _:代表有且只有一个字符,占位
比如: a abab aabba baba
以a开头:---》’a%’
以a结尾:---》’%a’
包含a: ---》’%a%’
第二个字符为a:---》’_a%’
倒数第三个字符为b: ---》’%b__’
格式:where 列名 like ‘带有通配符的表达式’
含义:某列中的数据像这个表达式(模糊条件)
举例:查询emp表中姓名ename以j开头的员工的信息
select * from emp where ename like ‘j%’;
查看: show
desc
select
删除
drop
delete
- 【新知识点】
- {查询表中的数据} 重中之重
-
应用场合:数据库在软件测试工作中最核心的作用就是通过查询数据来验证最终的测试结果
注册是否成功?--查询数据库中是否存储了用户信息
修改个人信息是否成功?--查询数据库中存储的信息是否是新修改的信息
分类:
《1》全查(效率低,在工作中不建议使用)
含义:查询表中所有的数据(所有行以及所有列)
固定格式:select * from 表名;
说明:
所有列: *
所有行: 没有条件,就是所有行
《2》部分查(重点) 行与列交集
含义:查询表中部分的数据(部分行或者部分列)
说明:
部分列:人为指定列,查询那个列,就写那个列,列之间逗号隔开
部分行:带条件,where 条件,条件也有多个,用连接词连接
【select】:后面接列名,可以多个
【from】:后面一定接表名,可以多个
【where】:后面接条件,可以多个
- {部分查}
-
格式:select 列名 from 表名 where 条件;
思路:三找
找表,使用from 来接
找列,写上列名(而不是写表达式),列之间用逗号隔开,写在select的后面
找条件,用where来引入条件,条件表达式
准备工作:
表名--》emp
列名--》编号(empno),姓名(ename),工资(sal),奖金(comm),部门号(deptno)
select 列名 from 表名 where 条件;
示例1:查询单列所有行的数据
查询emp表中所有员工的姓名(ename)
代码: select ename from emp;
示例2:查询多列所有行的数据
查询emp表中所有员工的姓名(ename)和工资(sal)
代码:select ename,sal from emp;
示例3:查询部分行所有列的数据
查询姓名(ename)为’james’所在行的所有信息
代码:select * from emp where ename=’james’;
示例4:查询部分列及部分行的数据
查询emp表中工资(sal)为5000的员工的姓名(ename)和奖金(comm)
代码:select ename,comm from emp where sal=5000;
{小练习} 简单查询
- 在emp表中查询30号部门deptno中员工的所有信息。
-
select * from emp where deptno=30;
- 在emp表中查询从事"clerk"工作job的员工的姓名ename和工资sal。
-
select ename,sal from emp where job=’clerk’;
- 在emp表中查询30号部门deptno中从事"clerk"工作job的员工的姓名和工资
-
select ename,sal from emp where deptno=30 and job=’clerk’;
- 在emp表中查询奖金comm大于工资sal的30%的员工信息。
-
select * from emp where comm>sal*0.3;
- 在emp表中查询20号部门deptno中工资sal大于1500的员工的信息
-
select * from emp where deptno=20 and sal>1500;
- 在emp表中查询入职日期hiredate在’1981-11-07’之后的员工的信息
-
select * from emp where hiredate>’1981-11-07’
- 查询emp表中入职日期hiredate在’1981-5-07’到’1981-12-07’之间的员工的信息
-
select * from emp
where hiredate between ’1981-5-07’ and ’1981-12-07’
- 在emp表中查询没有奖金comm的员工的信息
-
select * from emp where comm is null or comm=0;
- 在emp表中查询工资sal在1500到3000之间的员工的信息
-
select * from emp
where sal between 1500 and 3000;
- 在emp表中查询’james’、’ward’以及’smith’的工资sal
-
select sal from emp
where ename in(’james’ , ’ward’ , ’smith’);
【逻辑思维题】
- 假设一元钱可以买一瓶汽水,喝完后2个瓶盖又可以兑换一瓶汽水,那么请问:
-
给你20元钱,最多可以喝多少瓶汽水?
2、一个人花8块钱买了一只鸡,9块钱卖掉了,然后他觉得不划算,花10块钱又买回来了,11块卖给另外一个人,请问他总共赚了多少?
赚2元
- 屋里四盏灯,屋外四个开关,一个开关仅控制一盏灯,屋外是看不到屋里的情况,给你 10分钟时间,且只允许进屋一次,请问如何判断哪个开关控制哪盏灯的?
-
条件1: 10分钟
条件2: 进屋一次
假设三个开关:K1 K2 K3 k4 三盏灯:D1 D2 D3 D4
先打开k1\k2开关,让其亮了9分种后关闭k2,然后打开K3
亮有2盏:
不亮有2盏
先打开k1开关,让其亮了9分种后关闭,然后打开K2,此时进屋
灯亮就是K2控制的
有点烫的就是K1控制的
不亮也不烫的就是K3控制的
2、{模糊查询}
应用场合:当条件不是很明确时,借助like关键字以及通配符来表达模糊条件
like :像,--》列中的数据像这个模糊条件
通配符:
% --->代表(匹配)0个或者n个字符(可有可无,可多可少)
且不限数量
_ --->代表(匹配)有且只有一个字符(只占一个位置),也不限数量
格式:
select 列1,列2,... from 表名 where 列 like ‘模糊条件’;
模糊条件:
表现1:以什么开头
表现2:以什么结尾
表现3:包含什么
表现4:第几个字符是什么
表现5:至少有几个字符
示例1:
查询emp表中从事的工作job是以字母c开头的员工的姓名ename和工作job
示例2:
查询emp表中姓名ename以字母s结尾的员工的姓名ename和工资sal
示例3:
查询emp表中姓名ename包含字母k的员工的姓名ename和工资sal
示例4:
查询emp表中姓名第三个字符为字母l的员工的信息
示例5:
查询emp表中姓名倒数第二字符为字母e的员工的信息
示例6:
查询emp表中姓名只有5个字符的员工的信息
示例7:
查询emp表中姓名倒数第二字符为字母e且至少有6个字符的员工的信息
- {分页查询}
-
含义:将查询的数据分页来显示,每一次只显示部分行数据(按照行数)
作用:提高查询的速度
比如:假设每次只显示10行数据
第一次查询:第1行~第10行
点击下一页: 第11行~第20行
单词: limit (限制)
含义:是一个独立语句,不需要where,因为本身就是定位行
格式:select 列名 from 表名 limit m,n;
作用: 限制行数
分析:限制行数应该要设置2个参数
第一个参数:初始值,从第几行开始限制行数,包含本身
第二个参数:总行数,总共限制的行数
语法: limit m,n
m: 第一个参数,初始值,从第m+1行开始限制
取值:从0开始取值,且是一个大于等于0的整数
默认值:0,可以省略
0:第一行
1:第二行
2:第三行
...
n: 第二个参数,总行数
取值:大于等于1的整数
举例:
Limit 0,1 : 表中第一行
Limit 0,2 : 表中前2行(第一行和第二行)
Limit 1,1 : 表中第二行
Limit 2,1 : 表中第三行
Limit 0,4 :1 2 3 4
Limit 1,4 :2 3 4 5
Limit 2,2 :3 4行
Limit 3,3 :4 5 6行
Limit 4 :表中前4行
示例1:
查询emp表中第三行的数据
代码:select * from emp limit 2,1;
示例2:
查询emp表中前三行的数据
代码:select * from emp limit 0,3;
select * from emp limit 3;