随笔分类 -  SQL

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