(1)从表中检索所有行和列
问题
查看一个表中的所有数据。
解决方案
对表使用SELECT语句并使用特殊字符“*”。
select * from emp
讨论
SQL中的“*”符号是具有特殊意义的。使用它可返回指定表中的每一列。这里由于没有WHERE字句,所以将返回表中的每一行。还有一种替代方法是分别列出每一列。
select empno,ename,job,sal,mgr,hiredate,comm,deptno from emp
在交互执行的查询中,使用SELECT *更容易一些。然而,在编写程序代码的时候最好是分别指定每一列,它们的性能都是一样的。但是,显示的指定列就会更清楚查询中返回了哪些列。同样,其他用户,而不是代码编写者自己,也更容易理解该查询。
(2)从表中检索部分行
问题
从表中查询满足特定条件的行。
解决方案
使用WHERE字句指定要保留哪些行。例如,要查看部门号码为10的所有员工的信息。
select * from emp where deptno = 10
讨论
利用WHERE子句可以只检索用户感兴趣的行,如果WHERE子句中的表达式在某行为真,则返回该行。
大多数厂商都支持通用的运算符,例如:=, <, >, <=, >=, !, <>。另外,如果要查询满足多种条件的行,可以使用AND,OR或圆括号。
(3)查找满足多种条件的行
问题
查找满足多种条件的行。
解决方案
使用WHERE子句以及OR和AND子句。例如,如果要查询部门10中的所有员工的信息,所有得到提成的员工信息,以及部门20中工资不超过$2000元的员工信息,可使用如下代码:
select * from emp where deptno = 10 or comm is not null or sal <= 2000 and deptno=20
讨论
可以使用AND,OR和圆括号的组合来查询满足多个条件的行。在解决方案的例子中,WHERE子句查找满足下列条件的行:
- DEPTNO字段为10,或者
- COMM字段为NULL,或者
- 工资最多为$2000,并且DEPTNO字段为20
(4)从表中检索特定的列
问题
查询一个表中特定列的指而不是所有列的值。
解决方案
指定感兴趣的列。例如,只查询员工的姓名,部门号和工资:
select ename,deptno,sal from emp
讨论
通过在SELECT子句中指定列,可以保证不会返回一些无关的数据。在通过网络检索数据时这一点很重要,因为这样可以避免检索不需要的数据时带来的时间浪费。
(5)为列提供有意义的名称
问题
修改查询返回的列名使其更具有可读性并且容易理解。例如查询每个员工的工资和提成
select sal,comm from emp
“sal”是什么?是”sale”的缩写?还是某个人的名字?什么是“comm”,是表示“communication”吗?结果的标签应该更明确些。
解决方案
要改变查询结果的列名,可以按这种格式使用AS关键字:原列名 AS 新列名。一些数据库不需要使用AS,但是所有的数据库都接收这种用法。
select sal as salary, comm as commission from emp