T-SQL语法(6)

2019-06-30 10:48

from mchk a cross join spkfk b c.自联结。 自联结:不是一种特殊的联结,它实际上是在同一表中进行的内联结和外联结。 例如:选择具有相同含税售价列表。 select distinct a.hshsj,a.spmch from spkfk a

join spkfk b on a.hshsj=b.hshsj and a.spid<>b.spid

(1)spid不等表示记录自巳不与自己联结。 (2)distinct存在重复的资料。 (7)合并:

UNION是将两个或多个查询合并到一个结果集中的方法,合并后的结果包含合 并组中的的所有查询。

例如:在SPKFK中选择针剂和片剂。

select * from spkfk where spbh like '[z]%' union

select * from spkfk where spbh like '[z]%'

注意事项:

1、在所有查询中列的数目必须相同,如果不相同。

2、所有的数据类型必须兼容。是指经过隐含的转换能够兼容。 2、delete 语句:

例1、从ysmxk表中删除行。 delete ywmxk

where djbh='xsa00000001'

根据值为' xsa00000001'的djbh将相应资料行删除。 例2、通过ID删除某个出版商的sales 利用联结查找到符合条件记录

begin tran

delete cwk from cwk c

join mchk m on c.dwbh=m.dwbh where m.danwbh like '1389' rollback tran

利用子查询查找到符合条件记录 begin tran delete cwk from cwk where dwbh in

(select dwbh from mchk where danwbh like '1389' ) rollback tran 优点:可读性好。

缺点:效率较低。

在何处必须使用子查询进行删除。 例如:

delete ywmxk

where shl<(select avg(shl) from ywmxk) and djbh like ‘xsa%’

因为在WHERE子句中有聚合函数,无法使用联结进行处理。 特例:truncate table 语句 truncate table sales

区别:delete语句删除记录时对一行修改都记录日志,

truncate table不记录日志,只记录整个资料面的释放操作。 3、update 子句

update语句可以像select和delete语句一样,可以使用联结和子查询对需要 更新的资料加以限制。并且也能使用子查询作为更新值的表达式。 基本格式:

update tablename

set fieldname=fieldvalue

例如:把总销量大于300的商品的含税售价加10%。 begin tran update spkfk

set hshsj=hshsj*1.1 where spid in

(select spid from ywmxk group by spid

having sum(shl)>=300 )

rollbace tran 4、insert语句: 基本语法:

insert into

table_or_view [(colun_list)] {data_values|select_statement} 例1:添加资料到一行中的所有列 insert into spkfk

values('sph00000001',’ztj001’,…,…)

不用给出列名,但在values中赋值顺序要与表中列的顺序相同,数据类型匹 配,不能对identity列赋值.不能违反完整性约束。 例2:添加资料以一行中的部分列 insert into

spkfk(spid,spbh,spmch)

values(' sph00000002',’ztj001’,’青霉素’)

要确认没有提供资料列应为identity,允许为null或具有默认值 例3:使用insert...select 语句揷入多行

insert into destdb..jxdjhz

select * from sourdb..jxdjhz b where b.rq=’2002-05-22’ 5:扩展:

CASE表达式在select和update中的应用。 例1、select d.spbh,

case when a.djbh like 'jha%' then sum(a.shl) else 0 end as jhshl, case when a.djbh like 'jha%' then sum(a.hsje) else 0 end as jhje, case when a.djbh like 'jhc%' then sum(a.shl) else 0 end as tcshl, case when a.djbh like 'jhc%' then sum(a.hsje) else 0 end as tcje, case when a.djbh like 'jhb%' then sum(a.hsje) else 0 end as tbje from ywmxk a join cwk b on a.djbh=b.djbh join mchk c on c.dwbh=b.dwbh

join spkfk d on a.spid=d.spid

where b.rq between @startrq and @endrq and c.danwbh= @danwbh group by d.spbh,a.djbh 十、函数数据整理

ABS:ABS函数返回数值表达的绝对值

语法:ABS(numeric_expression)可以是整型、短整型、微短整型、小数、浮点数、货

币、实型或小货币型数。

ACOS:ACOS函数是一个数学函数,它返回以弧度表示的角度,即:ARCCOS。

语法:ACOS(float_expression)变量是浮点数数据类型,表示角度的余弦。 ASIN:反正弦函数。

SIN:它返回表达式中的正弦值。

语法:SIN( float_expression)float_expression是浮点型的资料 COS:它返回表达式中的余弦值。

语法:COS( float_expression)float_expression是浮点型的资料。 TAN:它返加表达式的正切值。 COT:它返回表达式中的余切值。 ATAN:反正切函数。

SIGN:如果表达式为正,SIGN函数返回1,如果表达为负,SIGN返回-1,如果表达式为0,

则函数返回0。

CEILING:返回不小于给定的数值表达式的最小整数。

语法:CEILING(numeric_expression)小数、浮点、整数、实数、货币等类型。 例如:SELECT CEILING(1.45)返回值为2 SELECT CEILING (-1.45)返回值为-1 FLOOR:返回不大于给定的数值表达式的最大整数。

语法:FLOOR(numeric_expression)小数、浮点、整数、实数、货币等类型。 例如:SELECT FLOOR(1.45)返回值为1 SELECT FLOOR (-1.45)返回值为-2

ASCII:ASCII函数返回整数,表示字符表达式最左边的字符的ASCII代码值。

语法:ASCII(character_expression) 例:ASCII(‘AB’)返回65。

CHAR:字符串函数,用于将ASCII码整数转换为字符。

语法:CHAR(integer_expression)变量是0~255间的正整数。 例如:CHAR(65)返回‘A’

CHARINDEX:字符串函数,返回想要的查找字符串,在目标字符中的起始位置。

语法:CHARINDEX(‘PATTERN’,EXPRESSION[,START_LOCATION]); 例如:CHARINDE(‘A’,‘BCDEA’,2)返回值为5,其2为从第几个字符进行搜索

不写默认为从第一个位置。

AVG:AVG是个集合函数,它计算数值列的平均值,忽略空值,如果使用了DISTINCT则

对重复的值只取一次进行平均。

语法;AVG([ALL|DISTINCT] expression) ALL是缺省值。

例如:SELECT DISTINCT(AGE)FROM TABLE1 如果任意行有NULL值,则此行被

忽略。

COUNT:是一个集合函数,它返回的整数代表表达式中值的个数通为一个列,DISTINCT

和COUNT一起使用时,返回单一值的个数。

语法:COUNT({[ALL|DISTINCT] EXPRESSION |*}) 例如:SELECT COUNT(COLUMN1)FROM TABLE1,

返回COLUMN1中没有空值的行数,如果是使用*将返回表中所有行的数目。 使用DISTINCT则返回唯一值的个数。

SUM:SUM是一个集合函数,返回表格中选定的数值型列中的值的总和。 语法:SUM([ALL|DISTINCT]expression) MAX:MAX返回表达式中的最大值, 语法:MAX(expression)

MIN:MIN返回表达式中的最小值, 语法:MIN(expression)

GETDATE:GETDATE是一个函数,它返回系统日期和时间。 语法:GETDATE()

DATEADD:DATEADD返回根据日期时间添加的日期, 语法:DATEADD(datepart,number,date)

变量:DATEPART是用于计算的日期单位。有一定的格式。 NUMBER是指添加至日期变量中的日期单位数。

DATE:格式化为日期的字符串,或日期时间型的列名、变量或参数。 例如:SELECT DATEADD(DAY,7,GETDATE()) DATEDIFF:返回两个指定日期的日期单位差别。 语法:DATEDIFF(datepart,date,date)

例如:DATEDIFF(day,datevar,getdate())

返回值为DATEVAR和当前日期相差的天数。 DATEPART:返回的整数表示日期中的日期单位。 语法:DATEPART(datepart,date)

例如:DATEPART(month,getdate()) 返回值为当前日期的月份数。 YEAR:显示所提供日期的年, 语法:YEAR(DATE) MONTH:显示所提供日期的月, 语法:MONTH(DATE)

DAY:显示所提供日期的天, 语法:DAY(DATE)

CAST:CAST语句用来进行数据类型的转换。

语法:CAST(expression AS datatype) 例如:CAST(MYDATE AS VARCHAR) 把MYDATE 转换成可变字符类型。 CONVERT:用来进行资料类的转换。

语法:CONVERT(data_type,expression)

例如:SELECT ‘my birthday is today’+convert(varchar(12),getdate( )) 把日期转换成字符串类型,用加号与前边相连。 EXP:返回以E为底的N次幂。

语法:EXP(float_expression) 例如:EXP(0)返回值为1。

LOG:LOG函数返回浮点表达式的自然对数。 语法:LOG(float_expression)

LOG10:LOG函数返回浮点表达式的以10为底的对数值。 语法:LOG10(float_expression)

ROUND:ROUND返回给出的数学表达式的,并四舍五入至指定的精度。 语法:ROUND(numeric_expression,length[,funcion]) 变量:numeric_expression为数值型表达式

length是四舍五入的精度,小数点后边的数,当为负值时,数字表达式在小数点左边进行四舍五入。

Function值为0时表达式四舍五入,如果不为0,将数字表达式舍位。

SQUARE:求平方

语法:SQUARE(float_expression) SQRT:求平方根

语法:SQRT(float_expression)

STR:SQRT可以将数值型转换为字符型资料,允许控制小数的格式。 语法:STR(float_expression[,length[,decimal]]) 变量:length:想要的字符串的总长度。缺省为10。

decimal:是小数点右边的位数。四舍五入。如果不写长度则为取整,小数后四 舍五入。

ISNULL:ISNULL可有非空资料代替NULL。

语法:ISNULL(expression,value) 例如:SELECT ISNULL(NULL,'ABC')

LEFT:LEFT函数返回字符表达式从左边开始的给定的字节数。如果该整数是一个负数,

就返回NULL。

语法:LEFT(character_expression,integer_expression)

变量:character_expression可以是变量、常量、或表中的列。 Integer_expression为要返回的字符数。

RIGHT:RIGHT函数返回字符表达式从右边开始的给定的字节数。如果该整数是一个负 数,就返回NULL。

语法:LEFT(character_expression,integer_expression)

变量:character_expression可以是变量、常量、或表中的列。


T-SQL语法(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:名校诊断学试卷

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: