• 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='#')
    --大容量加载
  • 相关阅读:
    AcWing 1135. 新年好 图论 枚举
    uva 10196 将军 模拟
    LeetCode 120. 三角形最小路径和 dp
    LeetCode 350. 两个数组的交集 II 哈希
    LeetCode 174. 地下城游戏 dp
    LeetCode 面试题 16.11.. 跳水板 模拟
    LeetCode 112. 路径总和 递归 树的遍历
    AcWing 1129. 热浪 spfa
    Thymeleaf Javascript 取值
    Thymeleaf Javascript 取值
  • 原文地址:https://www.cnblogs.com/wushilonng/p/2383901.html
Copyright © 2020-2023  润新知