MSSQL扫盲系列(2)-INSERT,UPDATE,DELETE

数据操作

(还是上节的表,增加一个GENDER字段(n),表示性别,无默认值,SQL如下)

View Code
ALTER TABLE USERS ADD GENDER NCHAR(1)

为了方便操作这里创建了一个临时表,并插入了一些数据,SQL在代码下面的代码中,有兴趣的话,可以看看

View Code
--为能演示,先写个临时表,这里的性别字段不同
CREATE TABLE #(ID INT IDENTITY(1,1),USERNAME NVARCHAR(20),[PASSWORD] CHAR(32),GENDER BIT)

DECLARE @INDEX INT ,@NAMELENGTH INT,@PSDLENDTH INT,@T INT
--定义了几个本地变量,@INDEX用来做数据插入的计数器,
--
@NAMELENGTH,@PSDLENDTH分别指用户名和密码的长度,
--
这里用来做生成临时用户名或密码
--
@T是一个临时变量
DECLARE @NAME NVARCHAR(20),@PSD VARCHAR(32)
--中间变量,即用户名,密码
SET @INDEX =0
WHILE @INDEX<100--开始循环
BEGIN
SET @PSD=''--清空上一回的密码
SET @PSDLENDTH=0--清空上一次的密码长度
WHILE @PSDLENDTH<32--密码是要MD5加密生成32位密钥的,这里模拟了一下下
BEGIN
SET @PSD=@PSD+CHAR(65+RAND()*25)--将小于0-255的数字转换成字符
SET @PSDLENDTH=@PSDLENDTH+1--长度加1
END

SET @NAME=''
SET @NAMELENGTH=0
SET @T=CONVERT(INT,4+RAND()*10)--强制转换
WHILE @NAMELENGTH<@T
BEGIN
SET @NAME=@NAME+CHAR(65+RAND()*25)
SET @NAMELENGTH=@NAMELENGTH+1
END
--插入一条数据
INSERT INTO # SELECT @NAME,@PSD,CONVERT(INT,RAND()*2)
SET @INDEX=@INDEX+1
END

插入

View Code
INSERT INTO USERS (USERNAME,[PASSWORD],BIRTHDAY) VALUES('CodeMonk','1BBB6AC6695F93E0FD3C8B5FC8FF7F55','1988-11-12')
--单行,选择列插入
INSERT INTO USERS VALUES('CodeMonk','1BBB6AC6695F93E0FD3C8B5FC8FF7F55','1988-11-12',GETDATE(),2,'I am a monk,But I can write code!',1)
--单行,全部数据列插入
INSERT INTO USERS SELECT 'CodeMonk0','1BBB6AC6695F93E0FD3C8B5FC8FF7F55','1988-11-12',GETDATE(),2,'I am a monk,But I can write code!',0
--单行,全部数据列插入

SELECT 'CodeMonk1' USERNAME,'1BBB6AC6695F93E0FD3C8B5FC8FF7F55' [PASSWORD],
'1988-11-12'BIRTHDAY,GETDATE() REGTIME,2 [ADDRESS],
'I am a monk,But I can write code!' MARKINFO,0 GENDER INTO USERS
--单行,创建表并插入数据

INSERT INTO USERS (USERNAME,[PASSWORD],GENDER) SELECT USERNAME,[PASSWORD],CASE
WHEN GENDER=0 THEN ''
WHEN GENDER=1 THEN ''
ELSE '' END
FROM #
--多行插入

DROP TABLE USERS
--为了建表,所以先删掉
SELECT USERNAME, [PASSWORD],
'1988-11-12'BIRTHDAY,GETDATE() REGTIME,2 [ADDRESS],
'I am a monk,But I can write code!' MARKINFO,CASE
WHEN GENDER=0 THEN ''
WHEN GENDER=1 THEN ''
ELSE '' END GENDER INTO USERS FROM #
--多行插入,并建表

 修改

SELECT * FROM USERS WHERE ID=2
--查看原有数据
UPDATE USERS SET [BIRTHDAY]=CONVERT(DATETIME,'1988-11-12') WHERE ID=2
--修改单条记录的某列数据
UPDATE USERS SET [BIRTHDAY]=CONVERT(DATETIME,'1988-11-10'),GENDER='',[ADDRESS]=2 WHERE ID=2
--修改单条记录的多列数据
SELECT * FROM USERS WHERE ID=2
--查看新数据

SELECT * FROM USERS
--查看原有数据
UPDATE USERS SET BIRTHDAY=CONVERT(DATETIME,'1900-01-02')
SELECT * FROM USERS
--查看新数据

删除

SELECT * FROM USERS WHERE USERNAME='IFGO'
--查看原有数据
DELETE FROM USERS WHERE USERNAME='IFGO'
--删除操作
SELECT * FROM USERS WHERE USERNAME='IFGO'
--查看新数据

清空

SELECT * INTO # FROM USERS
--创建零时表
SELECT * FROM #
--查询数据
TRUNCATE TABLE #
--清空
SELECT * FROM #
--查询数据
DROP TABLE #

附加一点东西(想尝试的话,需要xxdn的数据库,此处不提供哈)

View Code
BULK INSERT XXDN FROM 'D:\XXDN.TXT'
WITH(CODEPAGE='ANSI',DATAFILETYPE='CHAR',FIELDTERMINATOR='#')
--大容量加载

 

posted @ 2012-03-10 09:57  方外老和尚  阅读(560)  评论(0编辑  收藏