语法格式:
select 字段名1,字段名2,字段名3,。。。from 表名;
提示:
1、任何一条sql语句以“;”结尾。
2、sql语句不区分大小写
查询员工的年薪?(字段可以参加数学运算)
select ename,sal 12 from emp;
mysql> select ename,sal 12 from
+————+—————+
| ename | sal 12 |
+————+—————+
| SMITH | 9600.00 |
| ALLEN | 19200.00 |
| WARD | 15000.00 |
| JONES | 35700.00 |
| MARTIN | 15000.00 |
| BLAKE | 34200.00 |
| CLARK | 29400.00 |
| SCOTT | 36000.00 |
| KING | 60000.00 |
| TURNER | 18000.00 |
| ADAMS | 13200.00 |
| JAMES | 11400.00 |
| FORD | 36000.00 |
| MILLER | 15600.00 |
+————+—————+
给查询结果的列重命名?
select ename,sal 12 as yearsal from emp;
mysql> select ename,sal * 12 as yearsal from emp;
别名中有中文?
select ename,sal 12 as 年薪 from emp; //错误
select ename,sal 12 as ‘年薪’ from emp;
mysql> select ename,sal 12 as ‘年薪’ from emp;
+————+—————+
| ename | 年薪 |
+————+—————+
| SMITH | 9600.00 |
| ALLEN | 19200.00 |
| WARD | 15000.00 |
| JONES | 35700.00 |
| MARTIN | 15000.00 |
| BLAKE | 34200.00 |
| CLARK | 29400.00 |
| SCOTT | 36000.00 |
| KING | 60000.00 |
| TURNER | 18000.00 |
| ADAMS | 13200.00 |
| JAMES | 11400.00 |
| FORD | 36000.00 |
| MILLER | 15600.00 |
+————+—————+
注意:标准sql语句中要求字符串使用单引号括起来。虽然mysql支持双引号,但是不通用,尽量别用。
as关键字可以省略?
mysql> select empno,ename,sal 12 yearsal from emp;
+———-+————+—————+
| empno | ename | yearsal |
+———-+————+—————+
| 7369 | SMITH | 9600.00 |
| 7499 | ALLEN | 19200.00 |
| 7521 | WARD | 15000.00 |
| 7566 | JONES | 35700.00 |
| 7654 | MARTIN | 15000.00 |
| 7698 | BLAKE | 34200.00 |
| 7782 | CLARK | 29400.00 |
| 7788 | SCOTT | 36000.00 |
| 7839 | KING | 60000.00 |
| 7844 | TURNER | 18000.00 |
| 7876 | ADAMS | 13200.00 |
| 7900 | JAMES | 11400.00 |
| 7902 | FORD | 36000.00 |
| 7934 | MILLER | 15600.00 |
+———-+————+—————+
查询所有字段?
select from emp; //实际开发中不建议使用,效率低。
条件查询

找出那些人津贴为NULL?
在数据库当中NULL不是一个值,代表什么也没有,为空。
空不是一个值,不能用等号衡量。
必须使用 is null 或者is not null
select ename,sal ,comm from emp where comm is null;
+————+————-+———+
| ename | sal | comm |
+————+————-+———+
| SMITH | 800.00 | NULL |
| JONES | 2975.00 | NULL |
| BLAKE | 2850.00 | NULL |
| CLARK | 2450.00 | NULL |
| SCOTT | 3000.00 | NULL |
| KING | 5000.00 | NULL |
| ADAMS | 1100.00 | NULL |
| JAMES | 950.00 | NULL |
| FORD | 3000.00 | NULL |
| MILLER | 1300.00 | NULL |
+————+————-+———+
找出工资在1100和3000之间的员工,包括1100和3000?
select ename,sal from emp where sal >=1100 and sal <=3000;
select ename,sal from emp where sal 1100 and sal 3000;//between。。。and。。。是闭区间【1100~3000】
select ename,sal from emp where sal 3000 and sal 1100; //查询不到任何结果。
注意:
between and在使用的时候必须左小右大。
between and除了可以使用在数字方面之外吗,还可以使用在字符串方面。
select ename from emp where ename between ‘A’ and ‘C’;
mysql> select ename from emp where ename between ‘A’ and ‘C’;
+———-+
| ename |
+———-+
| ALLEN |
| BLAKE |
| ADAMS |
+———-+
左闭右开不包括c。
找出工作岗位是MANAGER和SALESMAN的员工?
select ename,job from emp where job =’MANAGER’ or job =’SALESMAN’;
+————+—————+
| ename | job |
+————+—————+
| ALLEN | SALESMAN |
| WARD | SALESMAN |
| JONES | MANAGER |
| MARTIN | SALESMAN |
| BLAKE | MANAGER |
| CLARK | MANAGER |
| TURNER | SALESMAN |
+————+—————+
and和or联合起来用:找出薪资大于1000的并且部门编号是20或30部门的员工。
select ename,sal,deptno from emp where sal >1000 and deptno =20 or deptno = 30;//错误的
select ename,sal,deptno from emp where sal >1000 and (deptno =20 or deptno = 30);//正确的
注意:当运算符的优先级不确定的时候加小括号。
in
in等同于or:找出工作岗位是MANAGER和SALESMAN的员工?
select ename,job from emp where job =’SALESMAN’ or job =’MANAGER’;
select ename,job from emp where job in(‘SALESMAN’,’MANAGER’);
select ename,job from emp where sal in(1000,5000);//in后面的值不是区间,是具体的值。
not in
not in:不在这几个值当中。<br />select ename,job from emp where sal not in (800,5000);
模糊查询like?
找出名字当中含有o的?
(在模糊查询当中,必须掌握两个特殊的符号,一个是%,一个是
%代表多个字符,代表任意一个字符。)
select ename from emp where ename like ‘%o%’;
+———-+
| ename |
+———-+
| JONES |
| SCOTT |
| FORD |
+———-+
找出名字中第二个字母是A的?
select ename from emp where ename like ‘A%’;
+————+
| ename |
+————+
| WARD |
| MARTIN |
| JAMES |
+————+
找出名字中有下划线的?
select ename from emp where ename like ‘%\%’;
找出名字中最后一个字母是T的?
select ename from emp where ename like ‘%T’;
