例子
create table useInfo --创建用户表
(
useId int identity(1,1) priamry key not null, --用户Id,设为主键,标识列,不为空。
useName varchar(10) not null ,--用户名称,不为空
useSex char(2) not null --用户性别,不为空
)
go --批处理
insert into useInfo(useName,useSex) values('小明','男') --想表useInfo里添加信息,Id是标识列,所以不用自己手动添加,它会自动添加,所以只需添加姓名和性别。
update useInfo set useName = '大明' where useName = '小明' --把表里名字叫小明的人名字改为大明
delete from useInfo where useName = '大明' --根据姓名删除表里的信息。
truncate table useInfo --把表里的所有信息都删了,而且把标志列的数清零。如果用delete删除表里的信息 则不会把标识列清零。
select from useInfo --查询useInfo表里的所有信息 表示所有
select 1 from useInfo where useName = '大明' --按条件查询,查询表里名字叫大明的人的信息
SQL数据库语句大全:
1、选择:selectfromtable1where范围
2、插入:insertintotable1(field1,field2)values(value1,value2)
3、删除:deletefromtable1where范围
4、更新:updatetable1setfield1=value1where范围
5、排序:selectfromtable1orderbyfield1,field2[desc]
6、总数:selectcountastotalcountfromtable1
7、求和:selectsum(field1)assumvaluefromtable1
几个高级查询运算词:
A、UNION运算符
UNION运算符通过组合其他两个结果表(例如TABLE1和TABLE2)并消去表中任何重复行而派生出一个结果表。当ALL随UNION一起使用时(即UNIONALL),不消除重复行。两种情况下,派生表的每一行不是来自TABLE1就是来自TABLE2。
B、EXCEPT运算符
EXCEPT运算符通过包括所有在TABLE1中但不在TABLE2中的行并消除所有重复行而派生出一个结果表。当ALL随EXCEPT一起使用时(EXCEPTALL),不消除重复行。
C、INTERSECT运算符
INTERSECT运算符通过只包括TABLE1和TABLE2中都有的行并消除所有重复行而派生出一个结果表。当ALL随INTERSECT一起使用时(INTERSECTALL),不消除重复行。
USE teachingSystem
GO
--(2)
IF NOT EXISTS(SELECT FROM Student WHERE Sname='张思文')
PRINT '没有张思文这个人,所以你无法修改啦!'
ELSE BEGIN
SELECT Sno,Ssex FROM Student WHERE Sname='张思文'
UPDATE Student SET Sname='张思武' WHERE Sname='张思文'
SELECT Sno,Ssex FROM Student WHERE Sname='张思武'
END
GO
--(3)
DECLARE @I INT,@S INT
SET @I=1
SET @S=0
WHILE @I<=100
BEGIN
SET @S=@S+@I
SET @I=@I+1
END
PRINT @S
GO
--(4)
DECLARE @I INT,@S INT
SET @I=2
SET @S=1
WHILE @I<=10
BEGIN
SET @S=@S@I
SET @I=@I+1
END
PRINT @S
需要两个 扩展组件、(先将易的支持库全选:工具-支持库配置-全选)
数据库连接、记录集
比如有一个数据库temp
那么易中要连接:
需要这样、
数据库连接1连接SQLServer (“”,"temp" ,"sa" ,"123" )
参数分别是 服务器、数据库名、用户名、密码,如果你SQL未设置,后面两参数去掉
该函数返回一个逻辑值,根据反馈回来的值判断是否成功
如果成功
就可以:
数据库连接1执行SQL ()
或
对一张数据表详细 *** 作
可以:
记录集1置连接 (“temp”)
记录集1读文本 ("某一字段")
看了你的题,首先几个表需要说明一下Out_Goods和In_Goods在定义表时少了Sh_address列,列的属性参考Provider表中的Address
问题解答:
问题1、自定义一个函数,计算供货商编号为PD001所提供产品的平均价格,如果平均价格〉70,则输出“价格适中”;如果平均价格<=70,则输出价格较低。
CREATE FUNCTION [dbo][fn_calc_avg_price]
(
@PID char(10) = 'PD001'-----------货商编号,此处默认值为PD001
)
RETURNS varchar(50) AS
BEGIN
DECLARE @vchPriceDesc varchar(50)
DECLARE @mnyPriceAvg money
SELECT @mnyPriceAvg = AVG(PPrice)
FROM Product WHERE PID = @PID
IF (@mnyPriceAvg > 70) SET @vchPriceDesc = '价格适中'
IF (@mnyPriceAvg <= 70) SET @vchPriceDesc = '价格较低'
RETURN @vchPriceDesc
END
问题2、创建一个内联表值函数,返回一个时间段内的出货信息,要求包括出货商品名称、供货商名称、出货价格、出货数量、出货日期。
CREATE FUNCTION [dbo][fn_get_out_goods_info]
(
@dtBeginTime datetime, --------------------------时间段的起始时间
@dtEndTime datetime --------------------------时间段的终止时间
)
RETURNS @TempTable table
(
out_product_name varchar(20),
out_provider_name varchar(20),
out_product_price money,
out_product_num int,
out_date datetime
)
AS
BEGIN
INSERT INTO @TempTable
SELECT
ProductPName,
ProviderProviderName,
Out_GoodsOutPrice,
Out_GoodsOutNum,
Out_GoodsOutDate
FROM
Product, Provider, Out_Goods
WHERE
ProviderProviderId = Out_GoodsProviderId
AND ProductPId = Out_GoodsPId
AND Out_GoodsOutDate <= @dtEndTime
AND Out_GoodsOutDate >= @dtBeginTime
RETURN
END
问题3、创建一个after触发器,当Provider 供货商信息表中的ProviderId发生更改时,同时更改In_Goods进货信息表和Out_Goods出货信息表ProviderId字段的值。
CREATE TRIGGER [trig_update_proID]
ON [dbo][Provider]
AFTER UPDATE
AS
IF UPDATE(ProviderID)
BEGIN
UPDATE In_Goods SET ProviderID = (SELECT ProviderID FROM INSERTED) WHERE ProviderID = (SELECT ProviderID FROM DELETED)
UPDATE Out_Goods SET ProviderID = (SELECT ProviderID FROM INSERTED) WHERE ProviderID = (SELECT ProviderID FROM DELETED)
END
问题4、定义一个存储过程,要求使用游标,计算某段时间内售出产品的平均价格。
坦白的说,其实没必要使用游标,既然用了,那就顺便用下WHILE循环好了
CREATE PROCEDURE [dbo][sp_calc_part_sales_price]
(
@dtBeginTime datetime,
@dtEndTime datetime
)
AS
DECLARE @mnyTotalPrice money
DECLARE @mnyCurPrice money
DECLARE @nCount int SELECT @nCount = 0
DECLARE cursPrice CURSOR LOCAL
FOR SELECT OutPrice FROM Out_Goods WHERE Out_GoodsOutDate <= @dtEndTime AND Out_GoodsOutDate >= @dtBeginTime
OPEN cursPrice
FETCH NEXT FROM cursPrice INTO @mnyCurPrice
WHILE @@FETCH_STATUS=0
BEGIN
SET @nCount = @nCount + 1
SET @mnyTotalPrice = @mnyTotalPrice + @mnyCurPrice
FETCH NEXT FROM cursPrice INTO @mnyCurPrice
END
IF @nCount = 0 SELECT 0 AS '平均价格'
IF @nCount > 0 SELECT @mnyTotalPrice/@nCount AS '平均价格'
OK,就这样吧,如果有不明白或者我写错的地方,再联系,Good Luck!
以上就是关于SQL数据库 基本的 *** 作语句(增、删、改、查)全部的内容,包括:SQL数据库 基本的 *** 作语句(增、删、改、查)、SQL数据库语句大全(sqlserver数据库简单SQL语句)、关于数据库SQL语句编写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)