sql初级语法 笔记总结
num_field number(12,2);
表示num_field是一个整数部分最多10位、小数部分最多2位的变量。
case.....when 用法(与decode()作用很像)
select case zsxm_dm
when '02' then
'营业税'
when '09' then
'印花税'
else
'无税种'
end
from t_dm_gy_zsxm;
decode()函数使用技巧
decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
该函数的含义如下:
IF 条件=值1 THEN
RETURN(翻译值1)
ELSIF 条件=值2 THEN
RETURN(翻译值2)
......
ELSIF 条件=值n THEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
END IF
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
比较大小
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
trunc(pz.xs_rq) 是指只要年月日,不要时分秒
对日期按格式截尾,如:SQL> select trunc(sysdate,'mm') from dual;
TRUNC(SYSDATE,'MM')
-------------------
2003-1-1
trunc实际上是truncate函数,字面意思是截断,截尾。函数的功能是将数字进行截断。例如 tranc(1234.5678,2)的结果为1234.5600。tranc()并不四舍五入。再举例: tranc(1234.5678,0)的结果为1234.0000;tranc(1234.5678,-2)的结果为1200.0000。
EXISTS 关键字和 IN 关键字的区别?
exists 是符合后面带的sql语句(select)判断有没有记录,in 表示判断所指定的某一字段名是不是在所给出的值的范围内
exists(select 1 from Table_B where Table_B.XH
相关文档:
---一个月的第一天
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
--- 本周的星期一
SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
---一年的第一天
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
----季度的第一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
----上个月的最后一天
......
有些常见的问题在论坛中不断出现,不妨整理一下。
以下语句是在SQLServer2005上实现的,一些语句无法在SS2000上执行。
有用指数是我根据这个问题的常见程度打的分,仅供参考。实际上,当你遇到了这个问题,这个问题哪怕再少见,解决方案也是非常有用的。
1. 生成若干行记录
有用指数:★★★★★
常见的问题类型:根 ......
进入sql*plus需要输入用户名、口令和主机标志符
system/manager
sys/change_on_intall
scott/tiger
internal/oracle
以上为初始密码
主机字符串空或者是@+你的服务名,在本地登陆不需要本地服务名。
下面就介绍一下一些常用的sql*plus命令:
首先查看当前使用的数据库实例:
select name from V$database;
切换两个 ......
临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。
临时表有两种类型:
本地临时表
以一个井号 (#) 开头的那些表名。只有在创建本地临时表的连接上才能看到这些表,链接断开时临时表即被删除 ......
有关分页 SQL 的资料很多,有的使用存储过程,有的使用游标。本人不喜欢使用游标,我觉得它耗资、效率低;使用存储过程是个不错的选择,因为存储过程是经过预编译的,执行效率高,也更灵活。先看看单条 SQL 语句的分页 SQL 吧。
方法1:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 *
from tab ......