zoukankan      html  css  js  c++  java
  • 工作中常用的SQL语句,随用随加

    可以自己查询系统表:
    SELECT o.name AS tableName, c.name AS columnName, p.[value] AS Description
    FROM sysproperties p INNER JOIN
          sysobjects o ON o.id = p.id INNER JOIN
          syscolumns c ON p.id = c.id AND p.smallid = c.colid
    WHERE (p.name = 'MS_Description')
    ORDER BY o.name
    
    --创建表及描述信息
    
    create   table   表(a1   varchar(10),a2   char(2))
    
    --为表添加描述信息
    EXECUTE   sp_addextendedproperty   N'MS_Description',   '人员信息表',   N'user',   N'dbo',   N'table',   N'表',   NULL,   NULL
    
    --为字段a1添加描述信息
    EXECUTE   sp_addextendedproperty   N'MS_Description',   '姓名',   N'user',   N'dbo',   N'table',   N'表',   N'column',   N'a1'
    
    --为字段a2添加描述信息
    EXECUTE   sp_addextendedproperty   N'MS_Description',   '性别',   N'user',   N'dbo',   N'table',   N'表',   N'column',   N'a2'
    --更新表中列a1的描述属性:
    EXEC   sp_updateextendedproperty   'MS_Description','字段1','user',dbo,'table','表','column',a1
    
    --删除表中列a1的描述属性:
    EXEC   sp_dropextendedproperty   'MS_Description','user',dbo,'table','表','column',a1
    
    --删除测试
    drop   table   表 
    
    至于查询出来,sql server有提供系统函数fn_listextendedproperty ():
    
    --获取某一个字段的描述
    SELECT   *
    FROM   ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '表名', 'column', default)--其他变数,按照你的要求你照写即可,只要表名换成你的 

    where objname = '字段名' 

    查询数据表的列名、数据类型、长度、主键、允许空、描述的SQL语句


    Create   table   #sysPkeysTemp(   

                  table_qualifier   varchar(20),   

                  table_owner   varchar(20),   

                  table_name     varchar(20),   

                  Column_name   varchar(20),   

                  Key_Seq           Integer,   

                  PK_Name           varchar(20)   

      )   

     Insert   Into   #sysPkeysTemp 

    exec sp_pkeys 'JC_BDZ'


    Create   table   #sysdescription(   

                  objtype  nvarchar(200),   

                  objname   nvarchar(200),   

                  name     nvarchar(200),   

                  value   sql_variant

      Insert   Into   #sysdescription   

     SELECT   * FROM   ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', 'JC_BDZ', 'column', default) where name='MS_Description'



    select

     case

     when syscolumns.name in(select Column_name from #sysPkeysTemp) then '是' 

    else '否' 

    end as '主键',

     syscolumns.name as 列名 , systypes.name  as 数据类型,

    case when SUBSTRING(systypes.name,1,1)='n' then syscolumns.length/2

    else syscolumns.length

    end as 长度,

    case when syscolumns.isnullable=0 then '否'

    else '是'

    end as 允许空


    ,#sysdescription.value as 描述

    from syscolumns ,systypes ,#sysdescription

    where id=(select max(id) from sysobjects where xtype='u' and name='JC_BDZ') 

    and syscolumns.xusertype=systypes.xusertype

    and syscolumns.name=#sysdescription.objname

    order by colid


    drop table #sysPkeysTemp

    drop table #sysdescription 

    查询结果如下图: 

     

    --读取库中的所有表名 

    select name from sysobjects where xtype='u' 

    --读取指定表的所有列名 

    select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='表名')



    SQL SERVER 中,如果直接   select * from tablename where column1 = ' XXXX '    是不区分大小写的,那该如何做到让SQL区分大小写呢?


    collate解释上说其是选择排序用(太长,没用心看),但也可用在查询区分大小写上,如:
    select * from tablename where    column1 collate Chinese_PRC_CS_AS= 'Xxxx'
    select * from s where sn collate Chinese_PRC_CS_AS like 'L%'

    CI     指定不区分大小写,CS     指定区分大小写。
    AI     指定不区分重音,AS     指定区分重音。  
    Omitted     指定不区分大小写,WS     指定区分大小写。

    ----------------------------------------------------------------------------------附加数据库 
    sp_attach_db   '数据库名','数据库全路径','数据库日志全路径' 
    GO 
    USE 数据库名 
    --添加一个登录前指定默认数据库 
    EXEC sp_addlogin '登录名','密码','数据库名' 
    GO 
    --处理空登录名(使登录用户和数据库的孤立用户对应起来,在这个用户有对象时用) 
    sp_change_users_login 'update_one','登录名','登录名' 
    GO 
    --修改数据库的逻辑文件名(数据) 
    ALTER DATABASE NEW 
    MODIFY FILE(NAME='Old_Data',NEWNAME='New_Data') 
    GO 
    --修改数据库的逻辑文件名(日志) 
    ALTER DATABASE NEW 
    MODIFY FILE(NAME='Old_Log',NEWNAME='New_Log') 
    GO 
    -------------------------------------------------------------------------------- 
    可能会用到的操作: 
    --更改当前数据库名称为dbo的登录名为abc 
    EXEC sp_changedbowner 'abc' 

    --删除一个登录 
    EXEC sp_droplogin '登录名' 
    --赋予这个登录访问数据库的权限 
    EXEC sp_adduser '登录名','用户名','db_owner' 

    ========================================================= 
    今天在备份一数据库还原给另一数据库时,发现还原不了,看了下原数据库的逻辑文件名和物理文件名不一致,现以下方法可更改文件名的一致。 
    在 SQL Server 的企业管理器中,似乎不能直接更改数据库名称,如果要更改,最方便的是在查询分析器中运行: 
    alter database 原数据库名称 

    modify name=新数据库名称  

    SQL Server 中,数据库还原时可以更改物理文件名,也可以分离数据库,直接更改 mdf 的文件名再附加,但更改逻辑文件名似乎不那么直观。 
    在查询分析器里运行: 
    alter database 数据库名称 
    modify file(name=原逻辑文件名, newname=新逻辑文件名) 

    这样就可以更改逻辑文件名了,由于 SQL Server 有数据文件和日志文件,所以数据文件和日志文件的逻辑文件名都要更改的话,就得写两个类似于上述的语句。  

    sql server各系统表作用

    Posted by dbsos on 二月 27, 2009 
    SQL Server数据库

    简单介绍下sql各个系统表的作用

      SQL系统表

    • sysaltfiles 主数据库 保存数据库的文件
    • syscharsets 主数据库 字符集与排序顺序
    • sysconfigures 主数据库 配置选项
    • syscurconfigs 主数据库 当前配置选项
    • sysdatabases 主数据库 服务器中的数据库
    • syslanguages 主数据库 语言
    • syslogins 主数据库 登陆帐号信息
    • sysoledbusers 主数据库 链接服务器登陆信息
    • sysprocesses 主数据库 进程
    • sysremotelogins 主数据库 远程登录帐号
    • syscolumns 每个数据库 列
    • sysconstrains 每个数据库 限制
    • sysfilegroups 每个数据库 文件组
    • sysfiles 每个数据库 文件
    • sysforeignkeys 每个数据库 外部关键字
    • sysindexs 每个数据库 索引
    • sysmenbers 每个数据库 角色成员
    • sysobjects 每个数据库 所有数据库对象
    • syspermissions 每个数据库 权限
    • systypes 每个数据库 用户定义数据类型
    • sysusers 每个数据库 用户

     2009-05-25 Add

    数据类型转换有两种:

    • 隐性转换对于用户是不可见的。

      SQL Server 自动将数据从一种数据类型转换成另一种数据类型。例如,如果一个 smallint 变量和一个 int 变量相比较,这个 smallint 变量在比较前即被隐性转换成 int 变量。

    • 显式转换使用 CAST 或 CONVERT 函数。

    CAST 和 CONVERT 函数将数值从一个数据类型(局部变量、列或其它表达式)转换到另一个数据类型。例如,下面的 CAST 函数将数值 $157.27 转换成字符串 '$157.27':

    CAST ( $157.27 AS VARCHAR(10) )

    CAST 函数基于 SQL-92 标准并且优先于 CONVERT。

    当从一个 SQL Server 对象的数据类型向另一个转换时,一些隐性和显式数据类型转换是不支持的。例如,nchar 数值根本就不能被转换成 image 数值。nchar 只能显式地转换成 binary,隐性地转换到 binary 是不支持的。nchar 可以显式地或者隐性地转换成 nvarchar

    当处理 sql_variant 数据类型时,SQL Server 支持将具有其它数据类型的对象隐性转换成sql_variant 类型。然而,SQL Server 并不支持从 sql_variant 数据隐性地转换到其它数据类型的对象。

    有关在 SQL Server 对象之间所支持的转换的更多信息,请参见 CAST 和 CONVERT。

    在应用程序变量和 SQL Server 结果集列、返回代码、参数或参数标记之间转换时,所支持的数据类型转换是由数据库应用程序接口定义。

  • 相关阅读:
    解决MAMP启动mysql服务 但是Navicat连接不上
    iOS 更改状态栏颜色和隐藏状态栏
    Xcode 常用代码段
    iOS开发小技巧
    怎么让self.view的Y从navigationBar下面开始计算
    iOS强制横屏或强制竖屏
    判断当前viewcontroller是push还是present的方式显示的
    Git命令速查表
    全栈程序员的新玩具Rust(一) IDE环境
    火狐的野望
  • 原文地址:https://www.cnblogs.com/zhaobl/p/1434788.html
Copyright © 2011-2022 走看看