zoukankan      html  css  js  c++  java
  • SQL Server 常用sql操作语句

    /*创建表*/
    CREATE TABLE [UserInfo](
        [UserID] [uniqueidentifier] not null,
        [UserName] [varchar](100not null,
        [LoginNumber] [varchar](50not null,
        [Password] [varchar](50not null,
        [a] [decimal](18,2null,
        [b] [decimal](18,2null,
        [c] as ([a]*[b]),

        [d] as ([a]*[b]) PERSISTED   /*不设置PERSISTED代表该列是一个虚拟列,也就是这个列实际上是不存在的,只是每次要取这列的值时,sql会按照计算列的公式计算一次,再把结果返回给我们。这样会存在一些问题,比如计算会消耗一定的时间,而且不能在该列上创建索引。设置PERSISTED后代表该列是实际存在的列*/
        );
     
    /*删除表*/
    drop table [UserInfo];

    /*添加主键约束*/
    ALTER TABLE [UserInfo] ADD  CONSTRAINT [PK_UserInfo]  primary key([UserID]);

    /*添加默认值约束*/
    ALTER TABLE [UserInfo] ADD  CONSTRAINT [DF_UserInfo_UserID]  default (newid()) for [UserID];

    /*添加字段*/
    alter table [UserInfo] add [Sex] [varchar](10null;

    /*修改字段*/
    alter table [UserInfo] alter column [Sex] [varchar](20null;

    /*删除字段*/
    alter table [UserInfo] drop column [Sex];

    /*批量插入*/
    insert into [UserInfo]([Username],[LoginNumber],[Password],[Sex] select [UserName],[LoginNumber],[Password],[Sex] from [UserInfo];

    /*批量更新*/
    update [UserInfo1] set [UserInfo1].[Password]=b.[Password],[UserInfo1].[Sex]=b.[Sex] from [UserInfo] b where [UserInfo1].[LoginNumber]=b.[LoginNumber];

    /*创建临时表*/
    create table #TempTable(
        [LoginNumber] [varchar](50),
        [Password] [varchar](50)
        );

    /*自增列*/
    create table [TestTable](
      [ID] [int] identity(1,1not null
      );

    /* 获取所有用户名

     * islogin='1'表示帐户
     * islogin='0'表示角色
     * status='2'表示用户帐户
     * status='0'表示系统帐户
     */

    select [name] from sysusers where status='2' and islogin='1'


    /*获取所有数据库名*/
    select [name] from master..sysdatabases order by [name]


    /* 获取所有表名
     * xtype='U'表示所有用户表
     * xtype='S'表示所有系统表
     */

    select [name] from 数据库名..sysobjects where [xtype]='U' order by [name]


    /*获取所有字段名*/
    select [name] from syscolumns where id=object_id('表名')


    /*获取数据库所有类型*/

    select [name] from systypes 

    /*获取指定表中代表主键的字段名*/
    select name from syscolumns a where exists(select 1 from sysindexkeys where id=a.id and colid=a.colid) and id=object_id('表名');
     

    /*获取表主键*/

    select o.name as 表名,c.name as 字段名,k.colid as 字段序号,k.keyno as 索引顺序,t.name as 类型 
    from sysindexes i 
    join sysindexkeys k on i.id = k.id and i.indid = k.indid 
    join sysobjects o on i.id = o.id 
    join syscolumns c on i.id=c.id and k.colid = c.colid 
    join systypes t on c.xusertype=t.xusertype 
    where o.xtype = 'U' and o.name='要查询的表名' 
    and exists(select 1 from sysobjects where xtype = 'PK' and parent_obj=i.id and name = i.name) 

    order by o.name,k.colid

    /*获取表中字段名和类型*/

    select c.name as 字段名,t.name as 类型 
    from sysindexes i 
    join sysobjects o on i.id = o.id 
    join syscolumns c on i.id=c.id 
    join systypes t on c.xusertype=t.xusertype 
    where o.xtype = 'U' and o.name='要查询的表名' 
    and exists(select 1 from sysobjects where xtype = 'PK' and parent_obj=i.id and name = i.name) 
    order by o.name

    /*获取表中字段名、类型、默认值*/

    select c.name as 字段名,t.name as 类型,e.text as 默认值
    from sysindexes i 
    join sysobjects o on i.id = o.id 
    join syscolumns c on i.id=c.id 
    join systypes t on c.xusertype=t.xusertype 
    left join syscomments e on e.id=c.cdefault
    where o.xtype = 'U' and o.name='DBConfig' 
    and exists(select 1 from sysobjects where xtype = 'PK' and parent_obj=i.id and name = i.name) 
    order by o.name
    select * from syscomments
     

    /*获取表所有列*/
    SELECT 
        表名=case when a.colorder=1 then d.name else '' end
        字段名=a.name, 
        标识=case when COLUMNPROPERTY(a.id,a.name,'IsIdentity')=1 then '' else '' end
        主键=case when exists(SELECT 1 FROM sysobjects where xtype= 'PK' 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, 
        占用字节数=a.length, 
        长度=COLUMNPROPERTY(a.id,a.name, 'PRECISION'), 
        小数位数=isnull(COLUMNPROPERTY(a.id,a.name, 'Scale'),0), 
        允许空=case when a.isnullable=1 then ''else '' end
        默认值=isnull(e.text''), 
        字段说明=isnull(g.[value]''
    FROM syscolumns a 
        left join systypes b on a.xtype=b.xusertype 
        inner join sysobjects d on a.id=d.id and d.xtype= 'U' and d.name <> 'dtproperties' and d.name = '要查询的表名'
        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 and g.name='MS_Description' 
    order by a.id,a.colorder 


    /*获取表自增列名称*/
    select COLUMN_NAME as 标识 
    FROM INFORMATION_SCHEMA.columns 
    where TABLE_NAME='要查询的表' and COLUMNPROPERTY(OBJECT_ID('要查询的表'),COLUMN_NAME,'IsIdentity')=1


    /*获取表的字段默认值*/
    select b.text as 字段默认值 
    from syscolumns a left join syscomments b on a.cdefault = b.id 
    where a.id = object_id('要查询的表'and a.name = '字段' 

    /*按姓氏笔画排序*/
    Select * from TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as 

    /*获取当前数据库中的所有用户表*/
    select * from sysobjects where xtype='U' and category=0

    /*查询用户创建的所有数据库*/
    select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')或者 
    select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01

    /*按全文匹配方式查询*/
    字段名 LIKE N'%[^a-zA-Z0-9]China[^a-zA-Z0-9]%' 
    OR 字段名 LIKE N'%[^a-zA-Z0-9]China' 
    OR 字段名 LIKE N'China[^a-zA-Z0-9]%' 
    OR 字段名 LIKE N'China'

    /*计算执行SQL语句查询时间*/
    declare @d datetime 
    set @d=getdate() 
    select * from SYS_ColumnProperties select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())

    /*几个高级查询运算词*/
    A:UNION 运算符 
    UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 
    B:EXCEPT 运算符 
    EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 
    C:INTERSECT 运算符 
    INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
     

    /*记录不存在就直接插入新记录,记录存在就更新*/ 

    if exists (select 1 from [tb] where [name]='aa')
        begin
            update [tb] set [name]='bb' where [name]='aa'
        end
    else
        begin
            insert into [tb]([name]select 'aa'
       end 

    /*判断指定表中是否存在指定的列名*/

    if(not exists(select * from syscolumns where name = 'IsUpdate' and id in 
    
    (select id from sysobjects where id = object_id(N'[TestTable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1))) 
    
        alter table [TestTable] add [IsUpdate] [int];
  • 相关阅读:
    html component(htc)入门(转)
    eclipse maven plugin 插件 安装 和 配置
    Error configuring application listener of class org.springframework.web.util.IntrospectorCleanupListener
    局域网下tomcat部署的服务让别人也能访问
    基于geowebcache切片服务的发布
    vee-validate-----专门用来做表单验证的vue插件
    移动端触摸事件
    使用svg显示加载中提示界面
    swiper---h5 跨域解决办法
    html5
  • 原文地址:https://www.cnblogs.com/sydeveloper/p/2811778.html
Copyright © 2011-2022 走看看