zoukankan      html  css  js  c++  java
  • SQL笔记

    注意:

    1.拼接sql的时候,如果nvachar字段前面不加N,特殊符号就会变成问号

    SQL语句:

    1.将数据库中一个表的某个字段中的部分字符串进行替换

    update ActivityScene set ActivityLink=REPLACE(ActivityLink, 'WeScene101', 'WeScene');

    2.循环所有表,如果记录数>0,则使用重设标识列的语句 ,使用游标等

    declare @sql nvarchar(500)  
    declare @TableName nvarchar(100)  
    declare @i INT
    declare @j nvarchar(20)
    declare @cstucount INT
    --上方设置变量
    set @i = 1--初始值
    declare mCursor cursor  --设置游标
    for  --for循环
    select name from sysobjects where xtype='U'  --获取所有的表名
    open mCursor  --游标的使用开始,打开游标
    fetch NEXT from mCursor into @TableName  --for循环中获取下一条记录
    while @@fetch_status = 0   --@@fetch_status全局变量,0表示语句获取成功,-1,-2均是失败
        begin --开始
    set @sql='select @a=count(*) from ' + QUOTENAME(@TableName) --设置sql语句到变量@sql
    exec sp_executesql @sql,N'@a int output',@cstucount OUTPUT -- 执行语句,且将得到的值使用变量赋值@cstucount即为@a拿到的值
    if @cstucount>0 --如果记录数>0表示有数据,则不进行重设置标识列
    BEGIN
    print ''+Convert(nvarchar(10),@i)+'个,大于0,值为='+CONVERT(nvarchar(10),@cstucount)
    END
    ELSE
    BEGIN
    set @sql='DBCC CHECKIDENT('+QUOTENAME(@TableName)+', RESEED, 1)' --这句查了一段时间,语句中拿的不太一样,不过这里直接给他放QUOTENAME节可以了,QUOTENAME能够将对象编程有效的字符串
    exec(@sql) --执行语句
    print ''+Convert(nvarchar(10),@i)+'个,小于等于0,值为='+CONVERT(nvarchar(10),@cstucount)
    END
    set @i=@i+1 --设置i=i+1
            fetch NEXT from mCursor into @TableName  --拿下一个数据
        end  
    close mCursor  --关闭游标
    deallocate mCursor  --删除游标
    go  
    --显示结果  
    循环重设标识列的值

    3.创建带有标识列,且自增长的表

    CREATE TABLE [dbo].[MerchantPublicNumberAuthorizer] (
    [ID] int NOT NULL IDENTITY(1,1) ,
    [AuthorizerAppid] nvarchar(100) ,
    [NickName] nvarchar(max) ,
    [HeadImg] nvarchar(max) ,
    [ServiceTypeInfo] int NOT NULL ,
    [VerifyTypeInfo] int NOT NULL ,
    [UserName] nvarchar(max) ,
    [BusinessInfo] nvarchar(max) ,
    [Alias] nvarchar(max) ,
    [QRCodeUrl] nvarchar(max),
    [CreateTime] datetime NOT NULL 
    )
    
    GO
    DBCC CHECKIDENT(N'[dbo].[MerchantPublicNumberAuthorizer]', RESEED, 1)
    GO
    
    ALTER TABLE [dbo].[MerchantPublicNumberAuthorizer] ADD PRIMARY KEY ([ID])
    GO
    创建表

     4.批量替换字符串

    update ActivityScene set ActivityLink=REPLACE(ActivityLink, 'wxactivity001.ttyouni.net', 'draw.ttyouni.com') where ActivityLink like '%wxactivity001.ttyouni.net%'
    
    或者
    
    update ActivityScene set ActivityLink=replace(ActivityLink,substring(activitylink,1,4),'替换内容') 
    

     5.修改数据库表名=》exec sp_rename '旧表名','新表名'

     6.修改表中的字段名=》SP_RENAME '表名.[字段名]','新的字段名'

     7.添加新的字段

    ALTER TABLE  表名 ADD 字段名 int ;
    update 表名 set 字段名=0;--设置个初始化,这样才能设置不为空
    ALTER TABLE 表名 ALTER COLUMN 字段名 int not NULL;
    

     8.这个上面创建表的时候有加,就是设置自增长的,这个在初始建表的时候,添加

    DBCC CHECKIDENT(N'[dbo].[表名]', RESEED, 1)

     9.这个在创建表的时候也有提到,是设置主键的

    ALTER TABLE [dbo].[表名] ADD PRIMARY KEY ([ID])

    10.sql server数据库中查询某个字段所在表

    select * from information_schema.columns where column_name='字段名'
    

     查出来的结果中,会有一大串的标题,这些就是相关信息,这里只截取了一部分

  • 相关阅读:
    如何将网格式报表打印成其它样式
    拥有与实力不相称的脾气是种灾难——北漂18年(23)
    8.8.1 Optimizing Queries with EXPLAIN
    mysql 没有rowid 怎么实现根据rowid回表呢?
    secondary index
    8.5.5 Bulk Data Loading for InnoDB Tables 批量数据加载
    mysql 中key 指的是索引
    8.5.4 Optimizing InnoDB Redo Logging 优化InnoDB Redo 日志
    8.5.3 Optimizing InnoDB Read-Only Transactions 优化InnoDB 只读事务
    8.5.1 Optimizing Storage Layout for InnoDB Tables InnoDB表的存储布局优化
  • 原文地址:https://www.cnblogs.com/danlis/p/5667457.html
Copyright © 2011-2022 走看看