SQL学习第8次

SQL SERVER注释快捷键:选中 Ctrl+K Ctrl+C

SQL SERVER注释快捷键:选中 Ctrl+K Ctrl+U

 

1、SQL语句补。

1、SELECT时可以添加一些自定义的词,或者连接两个字段(类型必须一样)。

SELECT XM+'的学号是:'+XH FROM dbo.STUD_VIEW;

--输出的是 某某的学号是:xxxxxx,有点像excel的'&'(and)连接符

 

2、INSERT INTO新表(指定字段) SELECT 旧表字段 FROM 旧表 语句。

INSERT INTO STUD2(XH,XM,DNO) SELECT XH,XM,DNO FROM dbo.STUD;

--新建了一张STUD2,然后取了STUDXHXMDNO三列插到了STUD2XHXMDNO列(名字可以不同,位置对应)

2、SQL的流程控制语句有点像按键精灵的脚本。下面试试其中几种

1、BEGIN…END 表示开始。。和结束。。。不解释了。。

2、IF…为真怎么样..ELSE…否则怎么样。。。也不解释了

3、当年WOW做自动输出脚本,十多个技能判断,所以这个还是比较熟悉的。。。

IF (SELECT AVG(NL) FROM dbo.STUD_VIEW)<23

    BEGIN

        UPDATE STUD SET CSNY=CSNY-1;

        EXEC sp_refreshview STUD_VIEW; --刷新视图

PRINT '学生们又老了1';

    END

ELSE

    BEGIN

        SELECT AVG(NL) FROM dbo.STUD_VIEW;

    END

--虚拟一个环境,要求判断学生平均年龄是否小于23岁,如果是就把出生年月减小1天,然后刷新视图;如果等于或者大于23的时候,就SELECT出平均年龄。

--缺点很显然。。要执行N次。。。

4、上面这个用while来执行就很合适了。Continue就是跳到BEGIN开始往下执行,而break就是跳到end开始往下执行。

WHILE (SELECT AVG(NL) FROM dbo.STUD_VIEW)<23

BEGIN

    UPDATE STUD SET CSNY=CSNY-1;

    EXEC sp_refreshview STUD_VIEW;

    PRINT '学生们又老了1...';

    IF (SELECT AVG(NL) FROM dbo.STUD_VIEW)<23

        CONTINUE;

    ELSE

        BREAK;

END

SELECT 平均年龄=AVG(NL) FROM dbo.STUD_VIEW;

--PRINT感觉没什么用了,速度太快,什么都看不到。

--后来发现是因为后面这个SELECT语句吧PRINT全部给盖掉了的原因。

5、上面这个例子中的continue用GOTO也是一样的可以实现的。

KAISHI:

WHILE (SELECT AVG(NL) FROM dbo.STUD_VIEW)<24

BEGIN

    UPDATE STUD SET CSNY=CSNY-1;

    EXEC sp_refreshview STUD_VIEW;

    PRINT '学生们又老了1...';

    IF (SELECT AVG(NL) FROM dbo.STUD_VIEW)<24

        GOTO KAISHI;

    ELSE

        GOTO JIESHU;

END

JIESHU:

SELECT 平均年龄=AVG(NL) FROM dbo.STUD_VIEW;

--GOTO实现了CONTINUEBREAK的功能。

6、RETURN的用处是从GO的语句块中退出来,且RETURN后面的语句是不会执行的,相当于在这个GO语句块里生生的被RETURN截断了。

GO

KAISHI:

WHILE (SELECT AVG(NL) FROM dbo.STUD_VIEW)<25

BEGIN

    UPDATE STUD SET CSNY=CSNY-10;

    EXEC sp_refreshview STUD_VIEW;

    PRINT '学生们又老了10...';

    IF (SELECT AVG(NL) FROM dbo.STUD_VIEW)<25

        GOTO KAISHI;

    ELSE

        RETURN;

END

SELECT 平均年龄=AVG(NL) FROM dbo.STUD_VIEW;

--因为RETURN后面的语句不会执行,所以SELECT语句是不会执行的。

今天就到这里吧。。。下班了

posted on 2013-04-22 17:01  百舸争流info  阅读(133)  评论(0编辑  收藏  举报

导航