随笔分类 - SQL
摘要:具体要注意的: 1.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。优化器将无法通过索引来确定将要命中的行数,因此需要搜索该表的所有行。 3.应尽量避免在...
阅读全文
摘要:
问题 按子串的某一部分对查询结果排序。例如,要从EMP表中返回员工名字和职位,并且按照职位字段的最后两个字符排序,结果集应如下所示: ENAME JOB 解决方案 DB2、MySQL、Oracle和PostgreSQL 在ORDER BY子句中使用SUBSTR函数:
阅读全文
问题 按子串的某一部分对查询结果排序。例如,要从EMP表中返回员工名字和职位,并且按照职位字段的最后两个字符排序,结果集应如下所示: ENAME JOB 解决方案 DB2、MySQL、Oracle和PostgreSQL 在ORDER BY子句中使用SUBSTR函数:
阅读全文
摘要:
问题 在EMP表中,首先按照DEPTNO的升序排序,然后按照工资的降序排序,结果集应该如下所示: EMPNO DEPTNO SAL ENAME JOB 解决方案 在ORDER BY子句中列出不同的排序列,使用逗号分隔: 讨论 在ORDER BY中,优先次序是从左到右。如果在...
阅读全文
问题 在EMP表中,首先按照DEPTNO的升序排序,然后按照工资的降序排序,结果集应该如下所示: EMPNO DEPTNO SAL ENAME JOB 解决方案 在ORDER BY子句中列出不同的排序列,使用逗号分隔: 讨论 在ORDER BY中,优先次序是从左到右。如果在...
阅读全文
摘要:
问题 显示部门10中员工的名字、职位和工资,并按照工资的升序排列。结果集如下所示: ENAME JOB SAL ---------- --------- ---------- MILLER CLERK 1300 CLARK MANAGER 2450 KING PRESIDENT 5000 解决方案
阅读全文
问题 显示部门10中员工的名字、职位和工资,并按照工资的升序排列。结果集如下所示: ENAME JOB SAL ---------- --------- ---------- MILLER CLERK 1300 CLARK MANAGER 2450 KING PRESIDENT 5000 解决方案
阅读全文
摘要:
问题
需要返回匹配特定的子串或模式的行。考虑下面的查询结果集:
阅读全文
问题
需要返回匹配特定的子串或模式的行。考虑下面的查询结果集:
阅读全文
摘要:
问题
在一些行中包含空值,需要使用非空值来代替这些空值。
解决方案
使用COALESCE函数用实际值来替换空值:
阅读全文
问题
在一些行中包含空值,需要使用非空值来代替这些空值。
解决方案
使用COALESCE函数用实际值来替换空值:
阅读全文
摘要:
问题
查找某列值为空的所有行。
解决方案
要确定值是否为空,必须使用IS NULL。
阅读全文
问题
查找某列值为空的所有行。
解决方案
要确定值是否为空,必须使用IS NULL。
阅读全文
摘要:
问题 从表中随机返回n条记录。可以修改下面的语句,要求下次执行时产生不同的结果集。 解决方案 使用DBMS支持的内置函数来生成随机数值。在ORDEY BY子句中使用该函数,对行进行随机排序,然后,使用前面的问题介绍的技巧,来限制所返回的顺序随机的行的数目。
阅读全文
问题 从表中随机返回n条记录。可以修改下面的语句,要求下次执行时产生不同的结果集。 解决方案 使用DBMS支持的内置函数来生成随机数值。在ORDEY BY子句中使用该函数,对行进行随机排序,然后,使用前面的问题介绍的技巧,来限制所返回的顺序随机的行的数目。
阅读全文
摘要:
问题 在SELECT语句中对数值进行IF-ELSE操作。例如,要产生一个结果集,如果一个员工的工资小于等于$2000,就返回消息UNDERPAID,如果大于等于$4000,就返回消息OVERPAID,如果在两者之间,就返回OK。结果集应如下所示: ENAME SAL STATUS ---------- ---------- ---------- SMITH ...
阅读全文
问题 在SELECT语句中对数值进行IF-ELSE操作。例如,要产生一个结果集,如果一个员工的工资小于等于$2000,就返回消息UNDERPAID,如果大于等于$4000,就返回消息OVERPAID,如果在两者之间,就返回OK。结果集应如下所示: ENAME SAL STATUS ---------- ---------- ---------- SMITH ...
阅读全文
摘要:
问题 将多列值作为一列返回。例如,要查询EMP表,返回如下结果 CLARK WORKS AS A MANAGER KING WORKS AS A PRESIDENT MILLER WORKS AS A CLERK 然而,要得到这个结果集的数据来自两个不同的列,EMP表中的ENAME列和JOB列。 ENAME JOB
阅读全文
问题 将多列值作为一列返回。例如,要查询EMP表,返回如下结果 CLARK WORKS AS A MANAGER KING WORKS AS A PRESIDENT MILLER WORKS AS A CLERK 然而,要得到这个结果集的数据来自两个不同的列,EMP表中的ENAME列和JOB列。 ENAME JOB
阅读全文
摘要:
问题
前面已经使用了别名为查询提供更有意义的列名,而且也使用WHERE子句将一些数据排除掉,然而,我们还想在WHERE子句中引用别名。
阅读全文
问题
前面已经使用了别名为查询提供更有意义的列名,而且也使用WHERE子句将一些数据排除掉,然而,我们还想在WHERE子句中引用别名。
阅读全文
摘要:若要删除表中的所有行,则 TRUNCATE TABLE 语句是一种快速、无日志记录的方法。TRUNCATE TABLE 与不含有 WHERE 子句的 DELETE 语句在功能上相同。但是,TRUNCATE TABLE 速度更快,并且使用更少的系统资源和事务日志资源。 格式:TRUNCATE TABLE [表名]与 DELETE 语句相比,TRUNCATE TABLE 具有以下优点:所用的事务日志空...
阅读全文
摘要:问题 修改查询返回的列名使其更具有可读性并且容易理解。例如查询每个员工的工资和提成 “sal”是什么?是”sale”的缩写?还是某个人的名字?什么是“comm”,是表示“communication”吗?结果的标签应该更明确些。解决方案 要改变查询结果的列名,可以按这种格式使用AS关键字...
阅读全文
摘要:问题 查询一个表中特定列的指而不是所有列的值。 解决方案 指定感兴趣的列。例如,只查询员工的姓名,部门号和工资: 讨论 通过在SELECT子句中指定列,可以保证不会返回一些无关的数据。在通过网络检索数据时这一点很重要,因为这样可以避免检索不需要的数据时带来的时间浪费。 版权说明:作...
阅读全文
摘要:问题 查找满足多种条件的行。 解决方案 使用WHERE子句以及OR和AND子句。例如,如果要查询部门10中的所有员工的信息,所有得到提成的员工信息,以及部门20中工资不超过$2000元的员工信息,可使用如下代码: 讨论 可以使用AND,OR和圆括号的组合来查询满足多个条件的行。在解...
阅读全文
摘要:问题 从表中查询满足特定条件的行。 解决方案 使用WHERE字句指定要保留哪些行。例如,要查看部门号码为10的所有员工的信息。 讨论 利用WHERE子句可以只检索用户感兴趣的行,如果WHERE子句中的表达式在某行为真,则返回该行。 大多数厂商都支...
阅读全文
摘要:
问题 查看一个表中的所有数据。 解决方案 对表使用SELECT语句并使用特殊字符“*”。 讨论 SQL中的“*”符号是具有特殊意义的。使用它可返回指定表中的每一列。这里由于没有WHERE字句,所以将返回表中的每一行。还有一种替代方法是分别列出每一行。
阅读全文
问题 查看一个表中的所有数据。 解决方案 对表使用SELECT语句并使用特殊字符“*”。 讨论 SQL中的“*”符号是具有特殊意义的。使用它可返回指定表中的每一列。这里由于没有WHERE字句,所以将返回表中的每一行。还有一种替代方法是分别列出每一行。
阅读全文

浙公网安备 33010602011771号