MySQL——select查询和排序

四、简单查询

查询一个字段: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;

猜你喜欢

转载自blog.csdn.net/m0_73968621/article/details/132467633