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