zoukankan      html  css  js  c++  java
  • sql 操作常用操作语句 新增、修改字段等

    常用sql

    
    
    --查询数据库连接数
    SELECT * FROM master.dbo.sysprocesses WHERE dbid IN
    (
    SELECT dbid FROM master.dbo.sysdatabases
    WHERE NAME='数据库表名'
    )
    
    --查询锁表
    select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName 
    from sys.dm_tran_locks where resource_type='OBJECT'
    ORDER BY request_session_id
    
    --杀掉进程
    declare @spid int 
    Set @spid = 182 --锁表进程
    declare @sql varchar(1000)
    set @sql='kill '+cast(@spid as varchar)
    exec(@sql)
    

      

    --远程查询
    --开户外围
    
    exec sp_configure 'show advanced options',1
    reconfigure
    exec sp_configure 'Ad Hoc Distributed Queries',1
    reconfigure
    
    -------------------------------
    select * from openrowset( 'SQLOLEDB', '服务器ip'; '数据库登录账号'; '数据库登录密码',数据库名.dbo.表名)
    -------------------------------
    
    --关闭外围
    
    exec sp_configure 'show advanced options',0
    reconfigure
    exec sp_configure 'Ad Hoc Distributed Queries',0
    reconfigure
    

      


    --压缩备份

    Declare @strDataBaseName varchar(50)

    Declare @FullFileName varchar(50) 

    Set @strDataBaseName='data'

    Set @FullFileName='d:db_backupdata20170222.bak'
    BACKUP DATABASE @strDataBaseName TO DISK = @FullFileName WITH INIT, STATS = 20





    --
    sql 事务 BEGIN TRAN 事物名 IF(@@ERROR<>0)BEGIN ROLLBACK TRAN 事物名;RETURN;END COMMIT TRAN 事物名 --数据库清缓存 DBCC DROPCLEANBUFFERS --忽略自增列 按照sql语句的id新增 SET IDENTITY_INSERT [dbo].[EduMenuFunction] ON --插入语句 SET IDENTITY_INSERT [dbo].[EduMenuFunction] OFF --修改语句联表修改 UPDATE S_GB_StudentBasicInfo SET BH =ci.BH from S_GB_StudentBasicInfo sbi WITH(NOLOCK),C_GB_ClassInfo ci WITH(NOLOCK) where sbi.BJID=CONVERT(nvarchar(20),ci.ID) UPDATE A SET A.c2 =B.c3 from A inner join B on A.c1=B.c1 --创建索引 CREATE INDEX DataReportIndex ON S_GB_StudentBasicInfo_DataReport(SFZJH (ASC), XB (ASC), CSRQ (ASC), DataYear (ASC), STATUS (ASC)) --修改字段默认值 alter table 表名 drop constraint 约束名字 ------说明:删除表的字段的原有约束 alter table 表名 add constraint 约束名字 DEFAULT 默认值 for 字段名称 -------说明:添加一个表的字段的约束并指定默认值 --修改字段名: alter table 表名 rename column A to B --修改字段类型: alter table 表名 alter column UnitPrice decimal(18, 4) not null --增加字段: alter table 表名 ADD 字段 类型 NOT NULL Default 0 --添加字段 [CardRecord][Birthday] IF NOT EXISTS( SELECT * from syscolumns where [id]=object_id('CardRecord') AND [name]='Birthday' ) BEGIN Alter Table CardRecord Add Birthday DATETIME NOT NULL DEFAULT('1900-01-01 00:00:00') ; EXEC sp_addextendedproperty 'MS_Description', '出生日期', 'user', dbo, 'table',CardRecord, 'column', Birthday; END --清除表数据,自增列从1开始 truncate table 表名; --查询所有的子节点 with cte as ( select * from Base_Company where Id = 'E7F5395E-6D11-4490-B3AD-513574268CF6' --查询节点 union all select a.* from Base_Company a join cte b on a.ParentId = b.id where a.id is not null ) select * from cte --创建数据库 USE master create database AdayMS on primary -- 默认就属于primary文件组,可省略 ( /*--数据文件的具体描述--*/ name='AdayMS_data', -- 主数据文件的逻辑名称 filename='E:数据库jadayAdayMSAdayMS_data.mdf', -- 主数据文件的物理名称 size=5mb, --主数据文件的初始大小 maxsize=100mb, -- 主数据文件增长的最大值 filegrowth=15%--主数据文件的增长率 ) log on ( /*--日志文件的具体描述,各参数含义同上--*/ name='AdayMS_log', filename='E:数据库jadayAdayMSAdayMS_log.ldf', size=2mb, filegrowth=1mb ) --根据时间筛选 datediff(dd,时间字段,当前时间)>=0 --获取新增数据的标识列 insert语句;select @@IDENTITY --获取数据库表和视图中的所有字段 SELECT 列序号 = A.COLORDER, 列名 = A.NAME, --主键 = CASE WHEN EXISTS(SELECT 1 FROM SYSOBJECTS WHERE XTYPE= 'PK ' AND PARENT_OBJ=A.ID AND NAME IN ( --SELECT NAME FROM SYSINDEXES WHERE INDID IN( --SELECT INDID FROM SYSINDEXKEYS WHERE ID = A.ID AND COLID=A.COLID))) THEN '√ ' ELSE ' ' END, 类型 = B.NAME, --允许空 = CASE WHEN A.ISNULLABLE=1 THEN '√ 'ELSE ' ' END, 列说明 = ISNULL(G.[VALUE], ' ') FROM SYSCOLUMNS A LEFT JOIN SYSTYPES B ON A.XUSERTYPE=B.XUSERTYPE INNER JOIN SYSOBJECTS D ON A.ID=D.ID AND D.XTYPE= 'U ' AND D.NAME <> 'DTPROPERTIES ' LEFT JOIN SYSCOMMENTS E ON A.CDEFAULT=E.ID LEFT JOIN sys.extended_properties G ON A.ID=G.major_id AND A.COLID=G.minor_id LEFT JOIN sys.extended_properties F ON D.ID=F.major_id AND F.minor_id=0 WHERE (D.name='@TableName' ) ORDER BY A.ID,A.COLORDER --视图 SELECT 列序号 = A.COLORDER, 列名 = A.NAME, --主键 = CASE WHEN EXISTS(SELECT 1 FROM SYSOBJECTS WHERE XTYPE= 'PK ' AND PARENT_OBJ=A.ID AND NAME IN ( --SELECT NAME FROM SYSINDEXES WHERE INDID IN( --SELECT INDID FROM SYSINDEXKEYS WHERE ID = A.ID AND COLID=A.COLID))) THEN '√ ' ELSE ' ' END, 类型 = B.NAME, --允许空 = CASE WHEN A.ISNULLABLE=1 THEN '√ 'ELSE ' ' END, 列说明 = ISNULL(G.[VALUE], ' ') FROM SYSCOLUMNS A LEFT JOIN SYSTYPES B ON A.XUSERTYPE=B.XUSERTYPE INNER JOIN SYSOBJECTS D ON A.ID=D.ID AND d.xtype='V' AND D.NAME <> 'dtproperties ' LEFT JOIN SYSCOMMENTS E ON A.CDEFAULT=E.ID LEFT JOIN sys.extended_properties G ON A.ID=G.major_id AND A.COLID=G.minor_id LEFT JOIN sys.extended_properties F ON D.ID=F.major_id AND F.minor_id=0 WHERE (D.name='@ViewName' ) GROUP BY A.COLORDER ,A.NAME ,B.NAME ,ISNULL(G.[VALUE], ' ') ,A.ID ORDER BY A.ID,A.COLORDER --触发器 ALTER TRIGGER [TRG_QBItem] ---------项触发器------------------- ON [dbo].[QBItem] FOR delete AS delete from QBOptions where ItemId in (select ItemId from deleted) --计算执行sql语句的时间 --首先 在各个sql 执行语句前加: declare @time datetime set @time=getdate() --然后在sql执行语句后加上: select [语句执行花费时间(毫秒)]=datediff(ms,@time,getdate())

     1,只是插入简单的有限行数据时用:

         insert 要插入的表名(列名1,列名2,....)

         select '列名1需要的数据','列名2需要的数据',... union

          select '列名1需要的数据','列名2需要的数据',... union

          select '列名1需要的数据','列名2需要的数据',...

         ... ...
    例如:

    insert into MyTable2
    (学号,姓名,性别,出生日期,学院编码,成绩)
    select '05001001','张三玉','女','1987-10-5','01',88 union
    select '05001002','李斯','男','1986-4-18','01',76 union
    select '04013029','王武','男','1986-5-18','03',94 union
    select '04013030','王小琳','女','1985-11-6','03',37 union
    select '04013031','赵六方','男','1987-12-28','03',55 union
    select '03115002','欧阳陈其','男','1986-1-1','02',92

    2,当要从一个表中取出数据插入到该新表(两个表的表结构不同)时用:

         insert 新表名(列名1,列名2,....)

         select 旧表的列名1 as 列名1,旧表的列名2 as 列名2 from 旧表表名

    3,只是复制表结构时用:

          select * into table2(新表) from table1(原表) where 1<>1

     4,复制表结构的同时并把数据复制时用:

          select * into table2(新表) from table1(原表)

      远程sql插入
    //先打开远程连接
    exec sp_configure 'show advanced options',1
    go
    reconfigure
    go
    exec sp_configure 'Ad Hoc Distributed Queries',1
    go
    reconfigure
    插入语句
    SELECT * INTO 新表 FROM
    opendatasource('SQLOLEDB','server=.;
    uid=sa;pwd=;database=数据库名;')
    .数据库名.旧表
     
    --建立服务器间的连接  参数说明: @server为服务器写个名称以便在下面使用;SQLOLEDB无需改动;@datasrc是远程数据库所在的IP地址
    EXEC sp_addlinkedserver @server='ServerName',@provider='SQLOLEDB',@srvproduct='',@datasrc='192.168.85.251'
    --登陆服务器  参数说明:此处的@rmtsrvname取名要与上面的@server一样;@rmtuser登陆服务器的用户名;@rmtpassword登陆服务器的密码
    EXEC dbo.sp_addlinkedsrvlogin @rmtsrvname = N'ServerName',@useself = N'False',@locallogin = NULL,@rmtuser = N'sa',@rmtpassword = N'123'
    /*-----------简写方式------------------EXEC dbo.sp_addlinkedserver 'ServerName','','SQLOLEDB','192.168.85.251'EXEC
    sp_addlinkedsrvlogin  'ServerName','false',NULL,'sa','123'------------------------------------*/
    Go/*------------数据操作区----------------*/select * from [ServerName].[库名称].[dbo].[表名称]/*--------------End---------------------*/GO
    --关闭服务器连接
    EXEC sp_droplinkedsrvlogin 'ServerName' , NULL
    EXEC sp_dropserver 'ServerName'

    --删除表字段和约束

    declare @name varchar(50)
    select @name =b.name from sysobjects b join syscolumns a on b.id = a.cdefault
    where a.id = object_id('ES_honor')
    and a.name ='StudentId'
    exec('alter table ES_honor drop constraint ' + @name)

    ALTER TABLE dbo.ES_Honor
    DROP COLUMN StudentId

    1)禁止所有表约束的SQL
    select 'alter table '+name+' nocheck constraint all' from sysobjects where type='U'

    2)删除所有表数据的SQL
    select 'TRUNCATE TABLE '+name from sysobjects where type='U'

    3)恢复所有表约束的SQL
    select 'alter table '+name+' check constraint all' from sysobjects where type='U'

    4)删除某字段的约束
    declare @name varchar(100)
    --DF为约束名称前缀
    select @name=b.name from syscolumns a,sysobjects b where a.id=object_id('表名') and b.id=a.cdefault and a.name='字段名' and b.name like 'DF%'
    --删除约束
    alter table 表名 drop constraint @name
    --为字段添加新默认值和约束
    ALTER TABLE 表名 ADD CONSTRAINT @name  DEFAULT (0) FOR [字段名]

    --删除约束
    ALTER TABLE tablename
    Drop CONSTRAINT 约束名
    --修改表中已经存在的列的属性(不包括约束,但可以为主键或递增或唯一)
    ALTER TABLE tablename 
    alter column 列名 int not null
    --添加列的约束
    ALTER TABLE tablename
    ADD CONSTRAINT DF_tablename_列名 DEFAULT(0) FOR 列名
    --添加范围约束
    alter table  tablename  add  check(性别 in ('M','F'))

  • 相关阅读:
    System.Threading
    HttpResponse类
    ASP.NET补充
    Leetcode练习(Python):双指针类:第125题:验证回文串:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。
    Leetcode练习(Python):双指针类:第28题:实现 strStr():实现&#160;strStr()&#160;函数。 给定一个&#160;haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回&#160; -1。
    Leetcode练习(Python):链表类:第25题:K 个一组翻转链表:给你一个链表,每&#160;k&#160;个节点一组进行翻转,请你返回翻转后的链表。 k&#160;是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是&#160;k&#160;的整数倍,那么请将最后剩余的节点保持原有顺序。
    Leetcode练习(Python):链表类:第109题:有序链表转换二叉搜索树:给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点&#160;的左右两个子树的高度差的绝对值不超过 1。
    Leetcode练习(Python):链表类:第23题:合并K个排序链表:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
    Leetcode练习(Python):链表类:第148题:排序链表:在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。
    Leetcode练习(Python):链表类:第147题:对链表进行插入排序:插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。
  • 原文地址:https://www.cnblogs.com/jiangqw/p/5395938.html
Copyright © 2011-2022 走看看