菜鸟学习日记(SQL sever)——运算符

-------运算符---------------
/*T-SQL中使用的运算符分为7种
算数运算符:加(+)、减(-)、乘(*)、除(/)、模(%)
逻辑运算符:AND、OR、LIKE、BETWEEN、IN、EXISTS、NOT、ALL、ANY
赋值运算符:=
字符串运算符:+
比较运算符:=、>、<、>=、<=、<>
位运算符:|、&、^
复合运算符:+=、-=、/=、%=、*=
*/

--1.已知长方形的长和宽,求长方形的周长和面积
declare @long FLOAT set @long = 20
declare @width FLOAT = 10
declare @zc FLOAT set @zc =(@long+@width)*2
declare @mj FLOAT set @mj =@long*@width
--CONVERT(VARCHAR(10),@zc):将@zc转换为长度为10的字符串类型的数据
--cast(@mj as VARCHAR(10)):将@mj转换为长度为10的字符串类型的数据
print '圆周长:'+CONVERT(VARCHAR(10),@zc)
print '圆面积:'+cast(@mj as VARCHAR(10))
--2.查询银行卡状态为冻结,且余额超过1000000的银行卡信息
select * FROM BankCard where CardState=3 and CardMoney>=1000000
--3.查询出银行卡状态为冻结或者余额等于0的银行卡信息
select * FROM BankCard WHERE CardState=3 or CardMoney=0
--4.查询出姓名中含有'刘'的账户信息以及银行卡信息
SELECT * FROM AccountInfo a INNER JOIN BankCard b on a.AccountId=b.AccountId where RealName LIKE '%刘%'
--5.查询出银行卡的余额在2000到5000之间的银行卡信息
SELECT * FROM BankCard where CardMoney>=2000 and CardMoney<=5000
SELECT * FROM BankCard where CardMoney BETWEEN 2000 and 5000
--6.查询出银行卡状态为冻结或者注销的银行卡信息
SELECT * FROM BankCard where CardState=3 or CardState=4
SELECT * FROM BankCard where CardState in (3,4)
--7.关羽身份证:420107199507104133,关羽到银行来开户
--查询身份证在账户表是否存在,不存在则进行开户开卡,存在则不开户直接开卡
DECLARE @AccountId int 
IF EXISTS(SELECT * FROM AccountInfo where AccountCode= '420107199507104133')      --存在此人
    BEGIN
        SELECT @AccountId =( SELECT AccountId FROM AccountInfo where AccountCode ='420107199507104133')
        INSERT INTO BankCard(CardNo,AccountId,CardPwd,CardMoney,Cardstate)
        VALUES('1005',@AccountId,'56789',0,1)
    END
ELSE          --不存在此人
    BEGIN
        INSERT INTO AccountInfo(AccountCode,AccountPhone,RealName,OpenTime)
        VALUES(420107199507104133,13634562345,'关羽',GETDATE())
        set @AccountId = @@IDENTITY
        INSERT INTO BankCard(CardNo,AccountId,CardPwd,CardMoney,Cardstate)
        VALUES('1002',@AccountId,'23456',0,1)
    END
SELECT * FROM AccountInfo
SELECT * FROM BankCard
--8.扩展:上面需求添加一个限制即一个人最多只能开3张银行卡
DECLARE @AccountId int --账户编号
DECLARE @CardCount int --卡数量
IF EXISTS(SELECT * FROM AccountInfo where AccountCode= '420107199507104133')      --存在此人
        BEGIN
            SELECT @AccountId =( SELECT AccountId FROM AccountInfo where AccountCode ='420107199507104133')
            SELECT @CardCount =(SELECT count(*) FROM BankCard where AccountId=@AccountId)
            IF @CardCount<=2 
                BEGIN
                  INSERT INTO BankCard(CardNo,AccountId,CardPwd,CardMoney,Cardstate)
                  VALUES('1006',@AccountId,'67891',0,1)
                END
            ELSE
                BEGIN 
                    PRINT '您已达到开卡次数上限'
                END
        END
ELSE          --不存在此人
    BEGIN
        INSERT INTO AccountInfo(AccountCode,AccountPhone,RealName,OpenTime)
        VALUES(420107199507104133,13634562345,'关羽',GETDATE())
        set @AccountId = @@IDENTITY
        INSERT INTO BankCard(CardNo,AccountId,CardPwd,CardMoney,Cardstate)
        VALUES('1002',@AccountId,'23456',0,1)
    END
    SELECT * FROM AccountInfo
    SELECT * FROM BankCard
--9.查询银行卡余额,是不是所有账户余额都超过了3000
--注意:
--3000< ALL(SELECT CardMoney FROM BankCard) 是可以的
--ALL(SELECT CardMoney FROM BankCard)>3000 是不可以的
--这是一种语法规则,ANY
if 3000< ALL(SELECT CardMoney FROM BankCard) 
    BEGIN
        PRINT '所有的账户余额都超过了3000'
    END
ELSE
    BEGIN
        PRINT '存在账户余额不足3000'
    END
--10.查询银行卡账户余额,是否含有账户余额超过30000000的信息
if 30000000 < ANY(SELECT CardMoney FROM BankCard) 
    BEGIN
        PRINT '存在账户余额超过了30000000'
    END
ELSE
    BEGIN
        PRINT '不存在账户余额超过30000000'
    END 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值