目录
8、查询1980年之后入职的除了职位是 SALESMAN以外的其他员工的信息:
9、查询1980年之后入职的除了职位是 SALESMAN和CLERK以外的其他员工的信息:
一、select 、from
【标准语法】
select 字段名 -- 决定这一段查询最后显示的字段 from 表名;-- 指定这段查询语句涉及的数据来源
这是一段查询语句中必不可少的两个核心语句,select和from分别是两个核心语句中的关键字,select和from关键字后要添加空格再输入其他内容。
- 当从单表中查询多列,在select后指定要查询的字段名称时多个字段之间用英文逗号,隔开,最后一个字段后不需要加逗号。查询结果的字段顺序按照select后的字段名顺序显示。
- SQL语句不区分大小写,select和SELECT完全相同。(有的数据库中会将关键字做标色高亮处理,但是语法没错)
- 一段标准的查询语句的最后应该添加英文分号;向数据库声明这一段查询的语句已经结束。(但是现在有的数据库管理工具比较智能,不写仍然能正常运行)为了养成好习惯,最好还是写上。
【例题】
1、查找单列:
select ename from emp;
2、查找多列:
select empno,ename,sal from emp;
3、查找全部列:
select * from emp;
select和星号*通配符联用返回查询表中所有列,返回的所有列的显示顺序按照定义表时的顺序显示。
4、查找列并将查找的字段重命名:
select empno as 员工编号,ename as 员工姓名,sal as 员工工资 from emp;
- select核心语句中,在字段后加as别名,可以给字段名在最后显示前赋予别名。
- 注意要在as前后加空格。
- 这个别名不会修改这个字段在数据库表中的原名,仅影响最后的显示。
- as可以省略,学成字段名 别名,注意字段名和别名之间有空格,别名和下一个字段名之间为逗号。
5、在select后加入distinct对重复数据去重:
例:现有一个学生表t_student:
取姓名列并进行去重工作。
select distinct sname from t_student;
- 在select核心语句中加distinct关键字,可以对最后显示的数据去重。
- 在select distinct后加多个字段时,是对重复的行数据进行去重。
- 将distinct放在第二个字段时会出现语法错误,因为显示多个字段时distinct无法对单一字段去重,只对这几个字段组成的行数据去重,distinct本质是加在select后而不是字段前。
6、select中计算字段的运用:
在select核心语句中,可以对数据库中有的字段进行计算形成新的字段,字段计算得到的每行数据仅涉及当前行,不会行与行之间交叉计算。加减乘除运算都可以,字段必须是数值才可以。
例:有员工工资表emp_sal,表中包含员工的工资和奖金,先求实发工资(工资+奖金) :
select *,salary+comm from emp_sal;
二、where:
【标准语法】
select 字段名 -- 决定这一段查询最后显示的字段 from 表名 -- 指定这段查询语句涉及的数据来源 where 表达句;-- where 表达句限定查询行必须满足的条件
where核心子句是可选项,使用该子句是为了通过表达式筛选出符合查询条件的行数据。
where表达式中最常用的是运算符,where表达式中运算符标准语法:
select 字段名 from 表名 where 字段名 运算符 值;
- 在寻找字段值等于某个值时,使用等于号=,这里的值不是一个数字,而是字符串,要用英文单引号''括起来,数字不需要。
- 可以使用and或者or逻辑运算符对多个条件进行组合筛选得到想要的数据,and的优先级高于or。如需要先运行or再运行and,可以使用括号()来标记优先运行的部分。正常情况也可以用括号括起,来便于阅读,也能避免条件逻辑错误。
where子句的表达式中除了使用运算符来进行条件判断,还可以使用like操作符组合通配符进行模糊查询,模糊查询标准语法:
select 字段名 from 表名 where 字段名 like'通配符+字符';
- 通配符用来匹配值的一部分,跟着like后面进行数据过滤,常用的通配符有%(表示任意字符出现任意次)和_(表示任意字符出现一次),%用来匹配多个字符,可以是0个、1个、多个字符;_仅能用来匹配单个字符。
- 指定几个字符时就使用几个通配符_来代替要求的字符数,没有指定字符数时使用通配符%;like后的字符和通配符的组合表达式需要用英文单引号''括起来。
【例题】
1、查询工资大于2000的员工信息:
select *
from emp
where sal>2000;
2、查询职位是SALESMAN的员工信息:
select *
fr