sql serve 中if语句
时间: 2023-06-11 13:09:46 浏览: 49
在 SQL Server 中,IF 语句可用于根据给定条件执行不同的操作。其基本语法如下:
```
IF condition
BEGIN
-- statements to execute if condition is true
END
ELSE
BEGIN
-- statements to execute if condition is false
END
```
其中,`condition` 是要测试的条件,如果条件为 true,则执行 `BEGIN` 和 `END` 之间的语句;如果条件为 false,则执行 `ELSE` 和 `END` 之间的语句。可以省略 `ELSE` 部分,只使用 `IF` 和 `BEGIN`。
例如,以下示例检查一个学生的成绩是否大于等于 60 分,如果是,则输出 “及格”,否则输出 “不及格”:
```
DECLARE @score INT = 70;
IF @score >= 60
BEGIN
PRINT '及格';
END
ELSE
BEGIN
PRINT '不及格';
END
```
执行结果为:
```
及格
```
除了基本的 IF 语句外,在 SQL Server 中还有很多其他类型的条件语句,例如 SWITCH、CASE、WHILE 等,可以根据需要选择使用。
相关问题
sql serve 中if语句 可不可以在else if之类的指令
在 SQL Server 中,IF 语句可以嵌套在 ELSE IF 语句中,例如:
```
IF @score >= 90
PRINT 'Grade: A'
ELSE IF @score >= 80
PRINT 'Grade: B'
ELSE IF @score >= 70
PRINT 'Grade: C'
ELSE IF @score >= 60
PRINT 'Grade: D'
ELSE
PRINT 'Grade: F'
```
这个例子中,IF 语句和 ELSE IF 语句都用于根据不同的条件输出不同的结果。IF 语句在第一次条件满足时执行,如果不满足则执行下一个 ELSE IF 语句,直到找到一个满足条件的语句为止。如果所有的条件都不满足,则执行 ELSE 语句。
用sql serve语句为Reports表创建一触发器,并给出正反实例的SQL语句:当插入一条记录或修改成绩时,若记录不为空,则须确保此记录的成绩在0~100分之间
以下是创建触发器的 SQL 语句:
```
CREATE TRIGGER trigger_name
ON Reports
AFTER INSERT, UPDATE
AS
BEGIN
IF EXISTS(SELECT * FROM inserted WHERE score < 0 OR score > 100)
BEGIN
RAISERROR('Score should be between 0 and 100.', 16, 1)
ROLLBACK TRANSACTION
END
END
```
其中,`trigger_name` 是触发器的名称,`Reports` 是触发器所在的表名,`AFTER INSERT, UPDATE` 表示在插入或更新数据时触发,`inserted` 是一个临时表,用于存储新增或修改的记录。
以下是正反实例的 SQL 语句:
正实例:
```
INSERT INTO Reports (student_id, score)
VALUES (1, 90)
```
反实例:
```
INSERT INTO Reports (student_id, score)
VALUES (2, 120)
```
执行反实例时,触发器会抛出错误并回滚事务,不允许插入超出范围的成绩。