sqlserver的學習成長之路,每個技術的學習過程都是值得讓人回味的,如今百度上關於sqlser的資料不少,可是都太雜,但願能爲你們分享一點簡單易懂的乾貨,跟你們一塊兒進步學習。html
1、建表sql
一、建立表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
二、建立表stusqlserver
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
2、爲表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;
3、修改表stu_paper中的字段name 的長度爲varchar(256)spa
1 alter table stu_paper alter column name varchar(256);
4、存儲過程日誌
一、建立存儲過程,將將表stu_paper中數據同步到表stu中code
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
二、執行存儲過程server
1 EXEC DBO.PRO_STUPAPER 2 GO
三、經過建立存儲過程建表htm
--建立創建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
5、sqlserver函數的運用
一、--2018-10-24 日期轉換格式,獲取日期前10位
select CONVERT(VARCHAR(10),GETDATE(),120);
二、--2018-12-24 14:17:36.230 當前日期增長兩個月
select DATEADD(MONTH,2,GETDATE());
三、--哈哈哈 將變量顯示轉換爲 varchar(10)類型
SELECT CAST('哈哈哈' AS varchar(10))
四、/**
二者均可以執行動態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;
6、sqlserver定時任務
一、建立定時任務(即做業)
參考網址:https://jingyan.baidu.com/article/b907e62790e89846e7891cc4.html?qq-pf-to=pcqq.c2c
二、查看定時任務日誌
參考網址:https://jingyan.baidu.com/article/0f5fb099efaa2c6d8334eae5.html?qq-pf-to=pcqq.c2c