SELECT id,
公司主营业务:网站建设、网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出果洛州免费做网站回馈大家。
CASE WHEN id=1 THEN firstname ELSE user END 'username'
FROM tb1
如果是查询条件要用这个就套一个
SELECT *
FROM tb1 a
WHERE username=(SELECT CASE WHEN id=1 THEN firstname ELSE user END
FROM tb1
WHERE id=a.id);
下面我们看一张表:想一想在数据库SQLServer中我们如何能更简便的向这张表格中添加数据呢?
仔细观察此表我们不难发现,ID字段的这列数据的添充是有规律可循的,它是一个等比自增的数列,向数据表中添加这样的数据有没有简单的方法呢?
这就谈到了SQLServer标识列的问题。我查询一些资料做了总结,在此和大家一起分享受与交流。
(1)标识列的定义
标识列,(通常也称为“标识字段”或者称为“自动增长字段”)是一行记录区别其它记录的标识,为的也是能唯一地检索出该行记录。
注意:一个表中只能有一个标识列(标识字段),一般是把“主键”设为标识列。
(2)如何把一个字段设为标识列?
下面我以SQLServer2008为例来看一下它的设置步骤:
如:右键单击——表Person3,左键单击——“设计”属性,然后选中要设为标识列的字段,在“标识规范”中,将字段的“是标识”设为“是”,最后关闭此窗口,保存即可。
从上图中“标识规范”中看到,标识列中还有个“标识种子”和“标识增量”,主要是为了避免重复值的出现,便于查询。
1.
标识种子
是开始的数是多少,默认为1。
2.
标识增量(也称为增长种子)是每增加一条数据增加的值是多少,默认为1。
3.
标识列不容许插入值,是自动给值的,强制给会报错。
identity(1,1)
那么该列标识种子是1,增长种子也是1。第一个参数是标实种子,第二个参数是增长种子。
注意:在设置标识列之前,要在—‘工具’菜单中找到—‘选项’—在选项中—把‘阻止保存要求重新建表的更改’的“√”去掉,否则SQLServer要修改表的标识列没法修改。
(3)设置标识列的好处
标识列是自动增长的,从种子开始,依次递增,递增量位自己设置的。比如:种子是1,增长量为1,那么标识列的值是:1、2、3、4、5……依次类推。所以你写Insert语句的时候,不用写标识列的值。
也就是说:标识列实现了字段自增,解决的是并发的问题,不用开发人员控制自增,SQLServer会自动分配标识列的值,如果两个人同时往数据库里面插数据时,将会产生唯一的自动增加为标识.
microsoft sql server management studio中展开对应表下面的列信息不就可以看到列的详细信息了么?当然这是可以的,但这里我们主要讲的时如何利用sql语句来查询指定表的列信息。
利用sql语句来查询列信息,就是要用到系统视图sys.columns,这个视图记录了数据库中所有表,视图,表值函数等的所有列信息。我们可以利用语句select * from sys.columns来查看这个视图返回的信息。
sys.columns返回的列比较多,大部分情况下很多列的信息我们可能用不到,下面我们只解释一下比较常用的列的信息。
1,object_id--这个列是比较重要的,它是返回当前列所属表的ID。利用它,我们就可以查询指定表的所有列信息,比如下面的sql语句是查询表table1的所有列信息。
select * from sys.columns where object_id=object_id('table1')
2,name--该列的列名。
3,column_id--该列在数据库中的ID,注意,数据库中任何对象的ID都是唯一的。
4,system_type_id--该列的类型的ID,和下面max_length,precision,scale三列一起可以来举个示例。
5,max_length--该列的最大长度
6,precisionp--如果这列是数值列,那么这是该列的精度,否则就是0
7,scale--如果这列是数值列,那么这就是列的小数位数,否则就是0
system_type_id,max_length,precision,scale四列结合系统视图sys.types一起我们来举个示例。
如果我们要查询表table1的所有列,及列的类型,列的精度,列的小数位数,sql语句如下:
select a.name,b.name,a.max_length,a.precision,a.scale
from sys.columns a left join sys.types b on a.user_type_id=b.user_type_id
where a.object_id=object_id('table1')
8,is_nullable--该列是否可以为null
9,is_identity--该列是否是标识列
10,is_computed--该列是否是计算列。利用该列,我们也就可以查询某个表的所有计算列了,比如我们要查询表table1中的所有计算列,sql语句如下:
select * from sys.columns where object_id=object_id('table1') and is_computed=1
sys.columns视图中常用的列就是这10列了,其它列的信息大家可以到SQLServer 2005联机丛书中查询。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款