zoukankan      html  css  js  c++  java
  • 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='#')
    --大容量加载
  • 相关阅读:
    rest_framework的频率限制和简单操作
    python自定义分页代码
    一些对于python帮助很大的实用博客网址
    Python下的Django极验滑动验证码的使用
    Django logging配置
    Java并发的四种风味:Thread、Executor、ForkJoin和Actor
    10个经典的Java面试题集合
    十大编程算法助程序员走上高手之路
    简单程序
    C++学习笔记
  • 原文地址:https://www.cnblogs.com/wushilonng/p/2383901.html
Copyright © 2011-2022 走看看