查询一个字段:select 字段名 from 表格名
查询同一表格的俩个字段或多个字段:select 字段名1,字段名2,....... from 表格名
查询一个表当中的所有字段:
第一种方式:
select 字段名1,字段名2,.......字段名n from 表格名
第二种方式:(不推荐:代码效率低,运行消耗高)
select * from 表格名
给列(字段)起别名:select 字段名(改前) as 字段名(改后)from 表格名{这个方法虽然改名字,但实际改字段名字还是一开始的名字,所以改名字的时候还是要以一开始的名字为基础},as 可以省略
注意:当起的别名当中有空格或是中文的时候,这个别名要加单引号和双引号(mysql当中可以用双引号,其他数据库不能,所以不推荐)
字段可以使用数学表达式:
当输入命令:select ename,sal from emp;
然后想知道12月的总工资输入:select ename,sal*12 from emp;
当然也能给它*12的同时起别名:select ename,sal*12 as 'year_money' from emp;
等于:= 不等于:<> 或 !=
窗口命令:select 字段1,字段2,........ from 表名 where 条件;
当输入命令:select ename,empno from emp where sal=800;
输入:select ename,empno,sal from emp where sal<>3000;
同样可以查询字符串:
输入命令:select empno, sal from emp where ename='SMITH';
查询大于等于某一个数小于等于某一个数的范围的方法有两种:
第一种:>= and
例如:select ename,empno,sal from emp where sal>=1000 and sal
第二种:between..... and .......(注意:必须遵循左小右大)
查询某些情况下数据等于null:
注意:在数据库当中 的null代表什么也没有,连0都不是,所以不能用等号来衡量,不能用 =null, 用 is null;
当某些情况下不为null的时候:
is not null
and 和 or
and 是并且的意思,如下:
select empno,ename,job,sal from emp where job ='manager' and sal > 2000;
or 是或的意思,如下:
select empno,ename,job,sal from emp where job='manager' or job='salesman';
如果and 和 or 同时出现的时候,会出现优先级问题,所以我们在不确定优先级的情况下要以小括号来确保优先级。(and 优先级大于 or)
例如:select ename,deptno,sal from emp where sal > 2000 and (deptno = 10 or deptno = 20);
in:相当于代表多个or , 当我们需要查询比较多的情况下,or 就太繁琐,这样我们就用in来解决这个问题。
注意:in当中的要查询的数据不是范围,而是具体的数!
not in :相当于取反的意思,我们就可以在查询除去括号当中的数据的数据:
输入命令:select ename,empno,sal from emp where sal not in(800,2450,3000);
like 模糊查询
% : 代表多个匹配任意多个字符
_ : 代表匹配任意一个字符
例如
查询名字当中有R的名字:select ename from emp where ename like '%R%';
查询名字开头是A的名字:select ename from emp where ename like 'A%';
查询名字结尾的是N的名字:select ename from emp where ename like '%N';
查询第二个字符为A的名字:select ename from emp where ename like '_A%';
查询第三个字符为R的名字:select ename from emp where ename like '__R%';
如果查询名字当中含有_的,例如:'%_%',如果直接这样查询,就会查出所有名字,因为_代表任意字符,所以要想查询名字带有 ‘_’ 的,要加一个反斜杠 \ 转移字符;
写成:'%\_%'
order by 排序
select
.........
from
...........
where
...........
order by
............
执行顺序:其中先执行from 查询表,然后where筛选 ,之后select 查出来,最后order by 排序
1.指定升序:asc(升序)
例如:select ename,sal from emp order by sal asc(其中asc可以省略)
2.指定降序:desc(降序)
例如:select ename,sal from emp order by sal desc;
3.多个字段排序
例如:select ename,sal from emp order by sal asc, ename asc;
注意:第二个字段要根据第一个字段的排序结果来决定,如果第一个字段有相等的数据,才会根据第二个字段来排序,不然就不会执行第二个字段。
了解:查询方法也可以直接写成查询的列数:(在查询的字段中,排在第二个的字段进行升序排序)
select ename,sal from emp order by 2 asc;
注意:虽然可以,但不建议,因为在后期项目开发当中,当我们数据库当中的数据发生改变的时候,查第二列就不是一开始的第二列了,那么就出现比较麻烦的bug了!!!
综上:
案例:查询工资在1200到2500之间,并且薪资要求降序排序,在工资相同的情况下要求姓名按升序排序。
select ename,sal from emp where sal between 1200 and 2500 order by sal desc,ename asc;