第六章 TransactSQL语言.docx
《第六章 TransactSQL语言.docx》由会员分享,可在线阅读,更多相关《第六章 TransactSQL语言.docx(38页珍藏版)》请在冰点文库上搜索。
第六章TransactSQL语言
第六章Transact-SQL语言(基本元素:
变量、常量、运算符、表达式、注释)
/*文件名称:
CH6_Demo001.sql*/
SETDATEFORMATydm;
GO
DECLARE@datevardatetime;
SET@datevar='2007/21/09';
SELECT@datevar;
GO
SETDATEFORMATmdy;
GO
DECLARE@datevardatetime;
SET@datevar='09/21/2007';
SELECT@datevar;
GO
SETDATEFORMATymd;
GO
DECLARE@datevardatetime;
SET@datevar='2007/09/21';
SELECT@datevar;
GO
/*文件名称:
CH6_Demo002.sql*/
--声明一个局部变量
DECLARE@mStringvarchar(40);
--将字符串常量赋予给局部变量
SET@mString='嗨!
谢谢大家的支持与爱护';
--显示局部变量所拥有的值
SELECT@mString;
/*文件名称:
CH6_Demo003.sql*/
--声明一个局部变量
DECLARE@mStringnvarchar(40);
--将字符串常量赋予给局部变量
SET@mString=N'嗨!
谢谢大家的支持与爱护';
--显示局部变量所拥有的值
SELECT@mString;
/*文件名称:
CH6_Demo004.sql*/
USE北风贸易;
GO
--声明一个局部变量
DECLARE@NameVariablechar(10);
--将字符串常量赋予给局部变量
SET@NameVariable='许建仁';
--将局部变量用于SELECT表达式的WHERE子句中
SELECT身份证号码,姓名,电话号码,家庭住址
FROM飞狐工作室
WHERE姓名=@NameVariable;
/*文件名称:
CH6_Demo005.sql*/
USE北风贸易;
GO
--声明三个局部变量
DECLARE@LastNamechar
(2),
@CityVariablechar(6),
@BirthdayVariabledatetime;
--将常量赋予给局部变量
SET@LastName='李';
SET@CityVariable='北京市';
SET@BirthdayVariable='5/2/1972';
--将局部变量用于SELECT表达式的WHERE子句中
SELECT姓名,电话号码,家庭住址,出生日期
FROM飞狐工作室
WHERE姓名LIKE@LastName+'%'AND
家庭住址LIKE'%'+@CityVariable+'%'AND
出生日期=@BirthdayVariable;
/*文件名称:
CH6_Demo006.sql*/
USE北风贸易;
GO
DECLARE@AvgSalarymoney;
--将计算所得的平均薪水存储到局部变量@AvgSalary中
SELECT@AvgSalary=AVG(目前薪水)FROM章立民研究室;
--将局部变量@AvgSalary所拥有的值显示出来
SELECT@AvgSalary;
/*文件名称:
CH6_Demo008.sql*/
USE北风贸易;
GO
SELECT姓名=作者姓名,电话=联系电话FROM作者;
/*文件名称:
CH6_Demo009.sql*/
USE北风贸易;
GO
DECLARE@VlHeredatetime;
SET@VlHere='09/26/1967';
GO
--此时局部变量@VlHere已经不在适用范围之内且已不存在
--下面这一道SELECT表达式之所以会发生错误,是因它
--访问已经不存在的局部变量@VlHere
SELECT*FROM飞狐工作室WHERE出生日期=@VlHere;
/*文件名称:
CH6_Demo010.sql*/
USE北风贸易;
GO
/*声明一个名为@MyTableVariable的table数据类型变量*/
DECLARE@MyTableVariableTABLE
(
部门varchar(10)PRIMARYKEY,
员工人数bigint,
部门最高薪水money,
部门最低薪水money,
部门平均薪水money
);
/*将数据添加到@MyTableVariable*/
INSERT@MyTableVariable
SELECT部门,
COUNT(*)AS部门员工人数,
MAX(目前薪水)AS部门最高薪水,
MIN(目前薪水)AS部门最低薪水,
AVG(目前薪水)AS部门平均薪水
FROM章立民研究室GROUPBY部门;
/*列出@MyTableVariable的内容*/
SELECT*FROM@MyTableVariable;
/*文件名称:
CH6_Demo011.sql*/
DECLARE@number1int;
DECLARE@number2int;
DECLARE@number3decimal(4,2);
SET@number1=13;
SET@number2=5;
SET@number3=3;
SELECT@number1+10;
SELECT@number2-10;
SELECT@number1+@number2;
SELECT@number1-@number2;
SELECT@number1*@number2;
SELECT@number1/@number2;
SELECT@number1/@number3;
SELECT(@number1*@number2)%(@number1+@number2);
/*文件名称:
CH6_Demo012.sql*/
USE北风贸易;
GO
SELECT产品,库存量+已订购量
FROM产品数据ORDERBY产品ASC;
/*文件名称:
CH6_Demo013.sql*/
USE北风贸易;
GO
SELECT姓名,(目前薪水/起薪-1)*100AS调薪幅度百分比
FROM飞狐工作室;
/*文件名称:
CH6_Demo014.sql*/
SETDATEFORMATmdy;
DECLARE@vlNowdatetime;
SET@vlNow='01/01/2007';
SELECT@vlNow+10;
/*文件名称:
CH6_Demo015.sql*/
SETDATEFORMATmdy;
DECLARE@vlNowdatetime;
SET@vlNow='01/01/199913:
00:
00';
SELECT@vlNow+10.55;
/*文件名称:
CH6_Demo016.sql*/
USE北风贸易;
GO
DECLARE@Variable1int;
DECLARE@Variable2money;
SET@Variable1=10;
SELECT@Variable2=MIN(目前薪水)FROM章立民研究室;
SELECT@Variable1;
SELECT@Variable2;
/*文件名称:
CH6_Demo017.sql*/
USE北风贸易;
GO
SELECT联系数据=姓名+''+电话号码,
年龄=DATEDIFF(yy,出生日期,GETDATE())
FROM飞狐工作室;
/*文件名称:
CH6_Demo018.sql*/
SELECT170&75;
SELECT170|75;
SELECT~170,~75;
SELECT170^75;
/*文件名称:
CH6_Demo019.sql*/
USE北风贸易;
GO
DECLARE@vlCitynvarchar(3);
SET@vlCity='北京市';
IF(@vlCity<>'')
SELECT公司名称,联系人,电话
FROM客户
WHERE城市='北京市';
/*文件名称:
CH6_Demo020.sql*/
USE北风贸易;
GO
SELECT姓名,员工性别,电话号码,出生日期
FROM飞狐工作室
WHERE员工性别=0AND
DATEDIFF(yy,出生日期,GETDATE())<30AND
部门='信息部';
/*文件名称:
CH6_Demo021.sql*/
USE北风贸易;
GO
SELECT'亲爱的:
'+姓名+''+称呼AS大名
FROM员工
WHERE行政区='大同';
/*文件名称:
CH8_Demo022.sql*/
DECLARE@vlNumberint;
SET@vlNumber=5-2+27;
SELECT@vlNumber;
/*文件名称:
CH6_Demo023.sql*/
DECLARE@vlNumberint;
SET@vlNumber=5*2+27;
SELECT@vlNumber;
/*文件名称:
CH6_Demo024.sql*/
DECLARE@vlNumberint;
SET@vlNumber=5*(2+27);
SELECT@vlNumber;
/*文件名称:
CH6_Demo025.sql*/
DECLARE@vlNumberint;
SET@vlNumber=5*(6+(8-4));
SELECT@vlNumber;
--文件名称:
CH6_Demo026.sql
--编写人:
章立民研究室
--日期:
01/11/2002
--著作权所有人:
章立民研究室
--设置活动数据库
USE北风贸易;
GO
--列出信息部的员工数据
SELECT*FROM章立民研究室WHERE部门='信息部';
--文件名称:
CH6_Demo027.sql
--设置活动数据库
USE北风贸易;
GO
--列出信息部的员工数据
SELECT姓名,电话号码,部门,
年龄=DATEDIFF(year,出生日期,GETDATE())--该表达式能计算出年龄
FROM飞狐工作室
--不列出财务部的员工数据
WHERE部门<>'财务部'
ORDERBY4DESC;--按照年龄高低来排序
/*
文件名称:
CH8_Demo028.sql
系统属性:
DatabaseWeb
编写人:
章立民研究室
日期:
/24/2006
著作权所有人:
章立民研究室
*/
/*设定活动数据库*/
USE北风贸易;
GO
/*列出信息部的员工数据*/
SELECT*FROM飞狐工作室WHERE部门='信息部';
第六章Transact-SQL语言(批处理、函数、流控制命令)
/*文件名称:
CH6_Demo001.sql*/
SETNOCOUNTON;
GO
BEGINTRANSACTION;
GO
USE北风贸易;
GO
CREATETABLE我的朋友
(
编号intIDENTITY(1,1),
姓名nvarchar(20)
);
GO
INSERT我的朋友(姓名)VALUES('章立民');
INSERT我的朋友(姓名)VALUES('洪志豪');
INSERT我的朋友(姓名)VALUES('周时恕');
INSERT我的朋友(姓名)VALUES('吴佐群');
INSERT我的朋友(姓名)VALUES('章小涵');
INSERT我的朋友(姓名)VALUES('刘时慧');
INSERT我的朋友(姓名)VALUES('陈小明');
INSERT我的朋友(姓名)VALUES('刘一群');
GO
DECLARE@NmbrFriendsint;
SELECT@NmbrFriends=COUNT(*)FROM我的朋友;
PRINT'到'+CONVERT(varchar(30),GETDATE(),121)+'为止,我的朋友表有'+
CAST(@NmbrFriendsASchar
(2))+'条数据记录';
GO
COMMITTRANSACTION;
GO
DROPTABLE我的朋友;
GO
SETNOCOUNTOFF;
GO
/*文件名称:
CH6_Demo002.sql*/
SELECTLEN('我叫ALEX');
SELECTLEN('我叫ALEX');
SELECTLEN('');
DECLARE@vlString1nvarchar(10);
DECLARE@vlString2nvarchar(16);
SET@vlString1=N'我是章立民';
SET@vlString2=N'MynameisAlex.';
SELECTLEN(@vlString1+@vlString2);
/*文件名称:
CH6_Demo003.sql*/
SELECTDATALENGTH('我叫ALEX');
SELECTDATALENGTH('我叫ALEX');
SELECTDATALENGTH('');
DECLARE@vlString1nvarchar(10);
DECLARE@vlString2nvarchar(16);
SET@vlString1=N'我是章立民';
SET@vlString2=N'MynameisAlex.';
SELECTDATALENGTH(@vlString1);
SELECTDATALENGTH(@vlString2);
/*文件名称:
CH6_Demo004.sql*/
USE北风贸易;
GO
SELECT姓名,姓名的字节数=DATALENGTH(姓名),
自传,自传的字节数=DATALENGTH(自传),
相片的字节数=DATALENGTH(相片)
FROM飞狐工作室ORDERBY4DESC,1;
/*文件名称:
CH6_Demo005.sql*/
SELECTSUBSTRING('我是章立民',3,3);
DECLARE@vlStringvarchar(10);
SET@vlString='ABC123我爱上网';
SELECTSUBSTRING(@vlString,4,5);
/*文件名称:
CH6_Demo006.sql*/
USE北风贸易;
GO
--创建一个表
CREATETABLEDemoTable
(
uidintIDENTITY(1,1),
contentntext
);
--向表中添加数据记录
INSERTDemoTable
(content)
VALUES(N'ABC我是ALEX章立民');
INSERTDemoTable
(content)
VALUES(N'123我爱Internet');
SELECTuid,SUBSTRING(content,3,5)
FROMDemoTable;
GO
DROPTABLEDemoTable;
/*文件名称:
CH6_Demo007.sql*/
USE北风贸易;
GO
--创建一个表
CREATETABLEDemoTable
(
uidintIDENTITY(1,1),
contenttext
);
--向表中添加数据记录
INSERTDemoTable
(content)
VALUES('ABC我是ALEX章立民');
INSERTDemoTable
(content)
VALUES('123我爱Internet');
SELECTuid,SUBSTRING(content,3,5)
FROMDemoTable;
GO
DROPTABLEDemoTable;
/*文件名称:
CH6_Demo008.sql*/
USE北风贸易;
GO
SELECT尊称=SUBSTRING(姓名,1,1)+''+称呼,
简历=SUBSTRING(附注,1,19)
FROM员工;
/*文件名称:
CH6_Demo009.sql*/
SELECTLEFT('多阶层式数据库',3);
SELECTLEFT('章立民ALEX',5);
USE北风贸易;
GO
SELECT姓名,都会=LEFT(家庭住址,3),话说从头=LEFT(自传,10)
FROM飞狐工作室WHERE自传ISNOTNULL;
/*文件名称:
CH6_Demo010.sql*/
SELECTRIGHT('多阶层式数据库',3)
SELECTRIGHT('章立民ALEX',5)
USE北风贸易;
GO
SELECTRIGHT(姓名,2)FROM员工;
/*文件名称:
CH6_Demo011.sql*/
DECLARE@vlString1varchar(10);
DECLARE@vlString2varchar(20);
SET@vlString1='北京世贸';
SET@vlString2='计算机软件展';
SELECT@vlString1+LTRIM(@vlString2);
/*文件名称:
CH6_Demo012.sql*/
DECLARE@vlString1varchar(20);
DECLARE@vlString2varchar(12);
SET@vlString1='北京世贸';
SET@vlString2='计算机软件展';
SELECTRTRIM(@vlString1)+@vlString2;
/*文件名称:
CH6_Demo013.sql*/
USE北风贸易;
GO
SELECT联络簿=RTRIM(姓名)+'-'+电话号码+'-'+家庭住址
FROM飞狐工作室;
/*文件名称:
CH6_Demo014.sql*/
SELECTSTUFF('计算机天地你我他',6,3,'图书');
SELECTSTUFF('计算机天地你我他',2,0,'图书');
SELECTSTUFF('计算机天地',4,0,'图书');
SELECTSTUFF('计算机天地',4,1,'图书');
SELECTSTUFF('计算机A天地',5,1,'Computer');
/*文件名称:
CH6_Demo015.sql*/
SETDATEFORMATmdy;
SELECTYEAR('09/26/2007');
SELECTDATEPART(yy,'09/26/2007');
SELECTYEAR('09/26/19993:
20:
50PM');
--返回当前日期时间的年份
SELECTYEAR(GETDATE());
/*文件名称:
CH6_Demo016.sql*/
USE北风贸易;
GO
SELECT身份证号码,姓名,出生日期,
YEAR(GETDATE())-YEAR(出生日期)AS年龄
FROM章立民研究室
WHEREYEAR(GETDATE())-YEAR(出生日期)>30;
/*文件名称:
CH6_Demo017.sql*/
SETDATEFORMATmdy;
SELECTMONTH('08/26/2007');
SELECTDATEPART(mm,'08/26/2007');
SELECTMONTH('03/29/200613:
20:
50');
--返回当前日期时间的月份
SELECTMONTH(GETDATE());
/*文件名称:
CH6_Demo018.sql*/
USE北风贸易;
GO
SELECT身份证号码,姓名,出生日期FROM章立民研究室
WHEREMONTH(出生日期)=12;
/*文件名称:
CH6_Demo019.sql*/
SETDATEFORMATmdy;
SELECTDAY('08/26/2007');
SELECTDATEPART(dd,'08/26/2007');
SELECTDAY('03/29/200613:
20:
50');
--返回当前日期时间的日数
SELECTDAY(GETDATE());
/*文件名称:
CH6_Demo020.sql*/
USE北风贸易;
GO
SELECT身份证号码,姓名,出生日期FROM章立民研究室
WHEREMONTH(出生日期)=9ANDDAY(出生日期)=26;
/*文件名称:
CH6_Demo021.sql*/
DECLARE@Nowdatetime;
SET@Now=GETDATE();
SELECT'今天是公元'+CAST(DATEPART(yy,@Now)ASchar(4))+'年'+
RTRIM(CAST(DATEPART(mm,@Now)ASchar
(2)))+'月'+
RTRIM(CAST(DATEPART(dd,@Now)ASchar
(2)))+'号'+
RTRIM(CAST(DATEPART(hh,@Now)ASchar
(2)))+'点'+
RTRIM(CAST(DATEPART(mi,@Now)ASchar
(2)))+'分'+
RTRIM(CAST(DATEPART(ss,@Now)ASchar
(2)))+'秒星期'+
RTRIM(CAST((DATEPART(dw,@Now)-1)ASchar
(2)));
/*文件名称:
CH6_Demo022.sql*/
DECLARE@Nowdatetime;
SET@Now=GETDATE();
SELECT'今天是公元'+DATENAME(yy,@Now)+'年'+
DATENAME(mm,@Now)+''+
DATENAME(dd,@Now)+','+
DATENAME(hh,@Now)+'点'+
DATENAME(mi,@Now)+'分'+
DATENAME(ss,@Now)+'秒,'+
DATENA