SQL Server 实验五 T-SQL编程

SQL Server 实验五 T-SQL编程

这是一个系列,需几个文档一起看

Use YGGL

--2、变量使用
--(1)
Declare @female bit
Set @female=0
Select EmployeeID,Name from Employees Where Sex=@female
--(2)
Declare @employeeid char(12)
Set @employeeid='102201'
Select PhoneNumber from Employees Where EmployeeID=@employeeid

Declare @phone char(12)
Set @phone=(Select PhoneNumber from Employees Where EmployeeID='102201')
Select @phone
--描述并查询salary表中000001号员工的实际收入
Declare @realincome float
Set @realincome=(Select income-outcome from Salary Where EmployeeID='000001')
Select @realincome
--4、
--(1)判断Employees表中是否存在111006的员工,存在则小时信息,否则显示查无此人
If EXISTS(Select Name from Employees Where EmployeeID='111006')
	Select * from Employees Where EmployeeID='111006'
Else
	Select '查无此人'
--判断王林的实际收入是否大于3000,是则显示收入,否则显示收入不高于3000
Select name, Income-Outcome as realincome into a from Employees join Salary on Employees.EmployeeID=Salary.EmployeeID
If (Select realincome from a Where Name='王林')> 3000
	Select * from a
Else
	Select '收入不高于3000'
--(2)假设变量x的初始值为0,每次加1,直至x变为5
Declare @x int
Set @x=0
While @x<5
Begin
	Set @x=@x+1
	print 'X='+convert(char(1),@x)
end
--用循环输出一个用*组成的三角形
declare @i int
declare @n int
set @n=10
set @i=1
while @i<@n
begin
print(Space((@n-@i)/2)+Replicate('*',@i))
set @i=@i+2
end 

declare @rows int --定义行数变量!
declare @i int ,@str varchar(30),@strin char(3) --定义辅助变量!
set @rows=1
set @strin='*'
while(@rows<=5)
begin
	set @i=1;
	set @str='';
	while(@i<=@rows)
		begin
			set @str=@str+@strin
			set @i=@i+1;
		end
	print @str;
	set @rows=@rows+1;
end
--(3)使用Case对Employees按部门进行分类
Select EmployeeID,Name,Address,DepartmentID=
Case DepartmentID
	When 1 Then '财务部'
	When 2 Then '人力资源部'
	When 3 Then '经理办公室'
	When 4 Then '研发部'
	When 5 Then '市场部'
end
from Employees
--使用IF语句完成上述功能
Create function change_name(@id char(10))
returns char(20)
As
begin
Declare @name char(20)
if @id=1
	Set @name='财务部'
if @id=2
	Set @name='人力资源部'
if @id=3
	Set @name='经理办公室'
if @id=4
	Set @name='研发部'
if @id=5
	Set @name='市场部'
	return @name
	end
Select EmployeeID,Name,Address,dbo.change_name(DepartmentID) DepartmentName from Employees
--5、自定义函数
--(1)给定一个DepartmentID,查询该值在Departments中是否存在,存在返回0,否则返回-1
Create function check_id(@departmentid char(3))
returns integer
As
Begin
	Declare @num int
	if Exists(Select departmentID from departments Where @departmentid=DepartmentID)
		Select @num=0
	Else
		Select @num=-1
	return @num
end
--(2)当向Employees插入一行记录时,首先调用函数check_id检索该记录的DepartmentID值,否则将该记录插入Employees中
Declare @num int
Select @num=dbo.check_id('2')
IF @num=0
	Insert zemployees values('')
--定义一个函数计算一个数的阶乘
Create function jc(@A int)
returns bigint as
  begin
    declare @R bigint,@I int
    set @R=1
    set @I=1
    while @I<=@A
       begin
            set @R=@R*@I
            set @I=@I+1
       end
    return @R
  end
  
Declare @a int
Set @a=10
Select dbo.JC(@a)
--6、内置函数使用
--(1)
Select ABS(-123)
Select RAND() --随机值
Select SQUARE(11) --平方
Select SQRT(10) --平方根
--(2)
Select COUNT(employeeID)from Employees
Where DepartmentID=
(Select DepartmentID from Departments Where DepartmentName='财务部')
--求财务部收入最高的员工姓名
Select max(Name),MAX(InCome) from Employees,Salary,Departments
Where Employees.DepartmentID=Departments.DepartmentID
and Employees.EmployeeID=Salary.EmployeeID
and Departments.DepartmentName='财务部'


Select max(Name) from Employees Where EmployeeID in
(Select EmployeeID from Salary Where EmployeeID in
(Select EmployeeID from Employees Where DepartmentID in
(Select DepartmentID from Departments Where DepartmentName='财务部')))


Select * from Salary
Select * from Departments
--查询员工收入的平均数
Select AVG(Income) from Salary
--聚合函数如何与Group by函数一起使用
--(3)使用ASCII函数返回字符表达式最左端字符的ASCII值
Select ASCII('abc')
--(4)获得当前的日期和时间
Select GETDATE()
--查询编号000001的员工的出生年份
Select YEAR(birthday) from Employees Where EmployeeID='000001'
--使用day()函数返回指定日期时间的天数
Select DAY('2018-7-1')
--列出其他时间日期函数
month()
--使用其他类型的系统内置函数
--类型转换函数cast
Select * from Salary Where CAST(InCome as char(20))like '2____'
--类型转换函数convert
Select * from Salary Where CONVERT(char(20),InCome)like '1____'

  • 9
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SQL Server OLE DB Provider是一个用于连接和访问SQL Server数据库的数据提供程序。它是由Microsoft开发的,为了方便开发人员在多种编程环境中与SQL Server数据库进行交互而设计。 SQL Server OLE DB Provider可以与各种编程语言和开发工具一起使用,包括Visual Basic、C#、ASP.NET等。它提供了一系列的接口和方法,使得开发人员可以方便地执行数据库操作,如查询、插入、更新和删除数据。 通过SQL Server OLE DB Provider,开发人员可以使用SQL语言来编写和执行数据库查询。它还支持事务处理和存储过程等高级功能,使得开发人员可以更加灵活和高效地操作数据库。 SQL Server OLE DB Provider还提供了一些性能优化的功能,例如连接池和命令缓存。连接池允许开发人员重复使用数据库连接,以减少连接的开销。命令缓存可以缓存已执行的命令,以加快后续执行同样命令的速度。 总之,SQL Server OLE DB Provider是一个强大而灵活的数据提供程序,可以帮助开发人员快速、高效地与SQL Server数据库进行交互。无论是小型的个人项目还是大型的企业应用,它都是一个非常有用的工具。 ### 回答2: SQL Server OLE DB Provider是一种用于连接和访问SQL Server数据库的数据访问技术。它是SQL Server提供的一种OLE DB驱动程序,用于支持通过OLE DB接口进行数据库操作。 SQL Server OLE DB Provider的使用可以通过编程语言(如C#、VB.Net等)来实现。首先,需要通过连接字符串指定要连接的SQL Server数据库的相关信息,如服务器名称、数据库名称、身份验证方式等。然后,使用Connection对象建立与数据库的连接。接下来,可以使用Command对象执行SQL语句,如查询、插入、更新、删除等操作。执行SQL语句后,可以通过DataReader对象来读取和处理查询结果。最后,使用Connection对象关闭与数据库的连接。 SQL Server OLE DB Provider可以提供高性能的数据访问能力,并且支持灵活的数据操作。它还提供了一些高级特性,如事务处理、命令缓存、数据缓存等,可以提升数据库操作的效率和性能。此外,SQL Server OLE DB Provider还支持参数化查询,可以防止SQL注入攻击,并且提供了一些其他的安全特性,如加密通信等。 总而言之,SQL Server OLE DB Provider是一种可靠和高效的数据库访问技术,适用于连接和操作SQL Server数据库。通过合理的使用,可以实现对数据库的快速和可靠的访问,并提供了丰富的功能和特性来支持开发人员的需求。 ### 回答3: SQL Server OLE DB Provider是一种用于连接和访问SQL Server数据库的OLE DB提供程序。OLE DB是一种面向组件的数据访问技术,允许应用程序通过一组统一的API连接到不同的数据源,包括SQL ServerSQL Server OLE DB Provider提供了一个强大的接口,使开发人员能够使用SQL Server数据库进行高效的数据访问。它支持基本的数据操作(如插入、更新、删除和查询),还提供了事务处理的功能,可以保证数据的一致性和完整性。 使用SQL Server OLE DB Provider,开发人员可以编写基于SQL语言的查询来查询和操作数据库中的数据。他们可以使用标准的ADO(ActiveX Data Objects)对象模型来进行数据访问和操作,这使得编写和维护数据访问代码变得更加简单和方便。 除了支持标准的数据操作功能,SQL Server OLE DB Provider还提供了一些高级功能,如连接池、命令参数化、异步查询和分布式查询。这些功能可以提高数据访问的性能和灵活性,并帮助开发人员更好地管理和优化数据库操作。 总之,SQL Server OLE DB Provider是一种在应用程序中连接和访问SQL Server数据库的重要工具。它提供了强大的功能和灵活性,使开发人员能够高效地处理和管理数据库中的数据。如果您需要与SQL Server数据库进行交互,使用SQL Server OLE DB Provider将是一个很好的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值