简单查询(DQL)

简单查询(DQL)

1. 查询一个字段?

​ select 字段名 form 表名;

​ 其中要注意:

​ select 和 form 都是关键字

​ 字段名和表名都是标识符

强调:

所有SQL语句都是“;”结尾

2.查询两个字段,或者多个字段怎么办?

​ 使用“,”号隔开

​ select 字段名,字段名 form 表名;

3.查询所有字段怎么办?

方法一:(开发用)

​ 把每个字段都写上

方法二:

​ 用*

​ select * form 表名;

这种方法的缺点:

  1. 效率低

  2. 可读性差

    在实际开发中不建议,可以自己玩没问题

    你可以在DOS命令窗口想要快速的看一看全表数据可以采用这一种方式

4. 给查询的列起别名?

使用as关键字

例如: mysql>select deptno,dname as deptname from dept;

注意:只是将显示的查询结果列名显示为deptname,原来表的列名还是:dname

记住:select语句只是查询,而不会进行修改操作

as可以省略

例如: mysql>select deptno,dname deptname from dept;

假设起别名的时候,别名里面有空格,怎么办

例如: mysql>select deptno,dname dept name from dept;

​ DBMS看到这样的语句,进行SQL语句的编译,不合语法,编译报错。

解决方法

别名里面有空格的时候加上’’

例如:例如: mysql>select dname ‘dept name’ from dept;

注意:在所有的数据库当中,字符串统一使用单引号括起来,

单引号是标准的,双引号在oracle数据库中用不了。但是在mysql中可以使用

5. 计算年新

例如:mysql>select ename,sal*12 from emp;//结论:字段可以使用数学表达式!

起别名:mysql>select ename,sal*12 as yearsal from emp;

起别名中文:mysql>select ename,sal*12 as ‘年新’ from emp;

条件查询

1.什么是条件查询?

不是将表中所有数据都查出来,是查询出来符合条件的。

语法格式:

​ select

​ 字段1,字段2,字段3…

​ from

​ 表名

​ where

​ 条件:

2.都有哪些条件?

=等于

查询工资等于800的员工姓名和编号?

​ select empno,ename form emp where sal =800;

<>或!=不等于

查询工资不等于800的员工姓名和编号?

​ select empno,ename form emp where sal !=800;

​ select empno,ename form emp where sal <>800;

<小于

查询工资小于2000的员工姓名和编号?

​ select empno.ename from emp where sal < 2000;

<=小于等于

查询工资小于等于2000的员工姓名和编号?

​ select empno.ename from emp where sal <= 2000;

>大于

​ 查询工资大于2000的员工姓名和编号?

​ select empno.ename from emp where sal > 2000;

>=大于等于

​ 查询工资大于等于2000的员工姓名和编号?

​ select empno.ename from emp where sal >= 2000;

between…and…两个值之间,等同于>=and<=

​ 查询工资在2450和3000之间的员工信息?包括2450和3000

​ 第一种方式:>=and<=(and是并且的意思)

​ select emono,ename,sal from emp were sal>= 2450 and sal<=3000;

​ 第二种方式:between…and…

​ select

​ emp

​ where

​ sal between 2450 and 3000;

注意:使用between and的时候,必须遵守左小右大。

between and 是闭区间,包括两端的值。

is null为null(is not null 不为空)

​ 查询哪些员工的津贴/补助为null?

​ select empno,ename,sql,comm from emp where comm is null;

注意:在数据库当中null不能使用等号进行衡量。需要使用is null 因为

数据库中的null代表什么也没有,它不是一个值,所以不能使用等号衡量。

​ 查询哪些员工的津贴/补助不为null?

​ select empno,ename,sql,comm from emp where comm is not null;

and 并且

or或者

​ 查询工作岗位是MANAGER和SALESMAN的员工

​ select empno,ename,job from emp where job=‘MANAGER’;

​ select empno,ename,job from emp where job=‘SALESMAN’;

​ select

​ empno,ename,job

​ from

​ emp

​ where

​ job=‘SALESMAN’ or job=‘MANAGER’;

and和or同时出现的话,有优先级问题吗?

​ 查询工资大于2500,并且部门编号为10或20部门的员工?

​ select

​ *

​ from

​ emp

​ where

​ sal>2500 and deptno =10 or deptno=20;

​ 分析以上语句的问题?

and优先级比or高。

​ 以上语句会先执行and,然后执行or.

​ 以上这个语句表示什么含义?

​ 找出部门工资大于2500并且部门编号为10的员工,或者20部门所有的员工找出来。

​ select

​ *

​ from

​ emp

​ where

​ sal>2500 and (deptno =10 or deptno=20);

and和or同时出现,and优先级较高。如果想要or先执行需要加()

以后在开发中,如果不确定优先级,就加()就行了

in包含,相当于多个or(not in 不在这个范围中)

​ 查询工作岗位是MANAGER和SALESMAN的员工?

​ select empno,ename,job from emp where job=‘MANAGER’ or job =‘SALESMAN’;

​ select empno,ename,job from emp where job in(‘MANAGER’ , ‘SALESMAN’);

注意:in不是一个区间。in后面跟的是具体的值。

​ 查询工资800和5000的员工信息?

​ select ename,sal from emp where sal=800 or sal=5000;

​ select ename,sal from emp where sal in (800,5000);

//not in 表示不在这几个值当中的数据

​ select ename,sal from emp where sal not in (800,5000);

not 可以取非,主要用在is 或 in 中

​ is null

​ is not null

​ in

​ not in

like

称为模糊查询,支持%或下划线匹配

%匹配任意多个字符

下划线:任意一个字符。

(%是一个特殊的符合,_也是一个特殊符合)

找出名字中含有o的?

​ select ename from emp where ename like ‘%o%’;

找出名字以T结尾的?

​ select ename from emp where ename like ‘%T’;

找出名字以K开始的?

​ select ename form emp where enam like ‘K%’;

找出第二个字每是A的?

​ select ename from emp where ename like ‘_A%’;

找出第三个字母是R的?

​ select ename from emp where ename like ‘__R%’;

​ t_student学生表

​ name字段

​ =================

​ zhangsan

​ lisi

​ wangwu

​ zhaoliu

​ jack_son

找出名字中有"_"的?

​ select name from t_student where name like ‘%_%’;//这样不行。

​ select name from t_student where name like ‘%_%’;//\转义字符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值