• sqlserver学习_01


             sqlserver的学习成长之路,每一个技术的学习过程都是值得让人回味的,现在百度上关于sqlser的资料很多,但是都太杂,希望能为大家分享一点简单易懂的干货,跟大家一起进步学习。

     一、建表

        1、创建表stu_paper(各种常用的类型的字段都有)

    IF NOT EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME = 'stu_paper' AND TYPE = 'U')
        BEGIN
        --问卷表
        CREATE TABLE stu_paper(
            P_ID int IDENTITY(1,1) primary key NOT NULL,
            TITLE VARCHAR(200) default '' NOT NULL,                  
            START_TIME datetime default getdate() NOT NULL,   
            SHOW_CONTENT int default 0 NOT NULL,             
            USER_NUM bigint default 0  NOT NULL,         
            FLAG int default 0 NOT NULL ,             
            NTAG1 numeric(10,4),
        )
        END
        GO

       2、创建表stu

    IF NOT EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME = 'stu' AND TYPE = 'U')
        BEGIN
        --问卷表
        CREATE TABLE stu(
            P_ID int IDENTITY(1,1) primary key NOT NULL,
            TITLE VARCHAR(200) default '' NOT NULL,                  
            START_TIME datetime default getdate() NOT NULL,   
            SHOW_CONTENT int default 0 NOT NULL,             
            USER_NUM bigint default 0  NOT NULL,         
            FLAG int default 0 NOT NULL ,             
            NTAG1 numeric(10,4),
        )
        END
        GO

    二、为表stu_paper增加字段

    1 alter table dbo.stu_paper add age int default 0 not null;
    2 alter table dbo.stu_paper add name VARCHAR(200) default '' not null;

    三、修改表stu_paper中的字段name 的长度为varchar(256)

    1 alter table stu_paper  alter column name varchar(256);

    四、存储过程

      1、创建存储过程,将将表stu_paper中数据同步到表stu中

    1 CREATE PROC [DBO].[PRO_STUPAPER]
    2 AS
    3 IF EXISTS(SELECT COUNT(*) FROM DBO.stu_paper)
    4 BEGIN
    5     DELETE FROM DBO.stu_paper;
    6     INSERT INTO DBO.stu(TITLE,START_TIME,SHOW_CONTENT,USER_NUM,FLAG,NTAG1)
    7             SELECT TITLE,START_TIME,SHOW_CONTENT,USER_NUM,FLAG,NTAG1 FROM DBO.stu_paper;
    8 END
    9 GO

      2、执行存储过程

    1 EXEC DBO.PRO_STUPAPER
    2 GO

      3、通过创建存储过程建表

    --创建建立3个表的存储过程
    CREATE
    PROC [DBO].[CREATETABLE](@PITYPE TINYINT,@PIYM INT) AS --1-短信历史表;2-彩信历史表;3-短信上行历史表; BEGIN DECLARE @STR NVARCHAR(4000); DECLARE @TABLENAME VARCHAR(16); IF @PITYPE=1 BEGIN SET @TABLENAME='MTTASK'+CAST(@PIYM AS VARCHAR(6)); SET @STR='CREATE TABLE '+@TABLENAME+'( ID BIGINT NOT NULL, USERID VARCHAR(11) NOT NULL, AREACODE INT NOT NULL DEFAULT ((0)) )' END; ELSE IF @PITYPE=2 BEGIN SET @TABLENAME='MOTASK'+CAST(@PIYM AS VARCHAR(6)); SET @STR='CREATE TABLE '+@TABLENAME+'( ID BIGINT NOT NULL, MDAY INT NOT NULL, AREACODE INT NOT NULL DEFAULT ((0)) )' END; ELSE BEGIN SET @TABLENAME='MRTASK'+CAST(@PIYM AS VARCHAR(6)); SET @STR='CREATE TABLE '+@TABLENAME+'( ID BIGINT NOT NULL, MDAY INT NOT NULL, AREACODE INT NOT NULL DEFAULT ((0)) )' END;
    --动态执行sql语句
    EXEC SP_EXECUTESQL @STR; END;
    --循环调用上面存储过程CREATETABLE
    DECLARE @J INT,@SPTIME DATETIME,@PIYM VARCHAR(6),@PITYPE INT;
    SET @J=0;
    SET @SPTIME=GETDATE();
    
        SET @J=0;
            WHILE(@J < 48)
                BEGIN
                    SET  @PIYM=CONVERT(VARCHAR(6), DATEADD(MONTH,@J,GETDATE()), 112);
                     SET @PITYPE=1;
                     WHILE (@PITYPE<5)
                        BEGIN
                            BEGIN TRY 
                              EXEC     [DBO].[CREATETABLE]    @PITYPE,@PIYM ;
                            END TRY
                            BEGIN CATCH
                                BREAK;
                            END CATCH
                            SET @PITYPE=@PITYPE+1;
                        END;
                    SET @J = @J+1;
                END;
    GO

    五、sqlserver函数的运用  

      1、--2018-10-24 日期转换格式,获取日期前10位
         select CONVERT(VARCHAR(10),GETDATE(),120);

      2、--2018-12-24 14:17:36.230 当前日期增加两个月
               select DATEADD(MONTH,2,GETDATE());
          3、--哈哈哈   将变量显示转换为 varchar(10)类型
              SELECT CAST('哈哈哈' AS varchar(10))
      4、/**
         两者都可以执行动态sql
          sp_executesql 可以在动态 sql 中使用变量,并且将变量输出
          exec 则只能执行动态 sql 和 存储过程,也可以使用表变量,执行时需要加括号,唯一不足就是不可以输出变量
                 */ 

    CREATE PROC stu
    as
    BEGIN
    DECLARE @STR NVARCHAR(4000);
    SET @STR='select * from OT_WEI_TWCOUNT'
    --执行sql语句
    EXEC SP_EXECUTESQL @STR;
    end;
    
    --执行该存储过程,进行查询 select * from OT_WEI_TWCOUNT
     EXEC stu;

    六、sqlserver定时任务

      1、创建定时任务(即作业)

        参考网址:https://jingyan.baidu.com/article/b907e62790e89846e7891cc4.html?qq-pf-to=pcqq.c2c

       2、查看定时任务日志

        参考网址:https://jingyan.baidu.com/article/0f5fb099efaa2c6d8334eae5.html?qq-pf-to=pcqq.c2c

      

  • 相关阅读:
    硬件_WIFI&Blue
    C++_练习—多态_纯虚函数与抽象类
    C++_练习—多态_验证vptr分布初始化
    C++_练习—多态_证明vptr指针的存在
    单摆方程
    谐振动相关知识
    UVa 129
    LeetCode-316
    Java 运算符
    一些特殊的矩阵
  • 原文地址:https://www.cnblogs.com/ouyy/p/8715560.html
Copyright © 2020-2023  润新知