月度归档:2018年11月

mssql sqlserver update更新表数据关键字的常见五种常见写法分享


摘要:
下文分享update关键字更新表数据的常见写法分享,如下所示:
实验环境:sql server 2008 R2


 /*
   例:
      下文存在两张客户表 cusInfo ,cusInfo1 
       都分别包含三个字段( 
              cusId      ---客户Id
              cusName ---客户姓名
              cusAdd    ---客户地址
           ) 
*/

/* 
   update关键字每次只可对一张表进行更新
     下文将分别讲述 “单表update”和"单表关联update" 
     "表别名update"
*/

-- 1 单表update 单个字段
update cusInfo a set a.cusName= 'maomao365.com' where a.cusId = '1';

-- 2 单表update多个字段
update cusInfo a set a.cusName = 'maomao365.com', a.cusAdd = N'广东深圳' where a.cusId = '2';


-- 3 多表关联update单个字段
update cusInfo a set a.cusName = (select b.cusName from cusInfo b where b.cusId = a.cusId)
where exists(select 1 from cusInfo1 c where c.ID =a.ID);

-- 4 多表关联update多个字段
update cusInfo a set (a.cusName,a.cusAdd) = (select b.cusNameb.cusAdd from cusInfo b where b.cusId = a.cusId)
where exists(select 1 from cusInfo1 c where c.ID =a.ID);
 
 ---5 update 表别名的写法
  ---  update [别名] set [别名].[字段] =[字段值]  from [表名] as [表别名] where [条件] 
update a set a.cusName= 'maomao365.com'  cusInfo  as a where a.cusId = '1';

mssql sqlserver 禁止查询脚本中使用 select * from tableName 的写法分享


摘要:
下文讲述禁止sql查询脚本中出现 “select * from tableName”的写法,如下所示:
实验环境:sql server 2008 R2



实现思路:
为了避免程序员在脚本中使用select * 查询相关表信息,我们可以在表设计时,设计一个错误字段,一旦此字段显示,则会产生相应的错误信息,
如下所示:

create table [maomao365.com]
(keyId int,info varchar(60),
 stopFlag as (6/0)   ---此字段可避免使用select *
 )
 go
 
 insert into [maomao365.com]
 (keyId,info)
 values
 (1,'maomao365'),(2,N'sql教程'),
 (3,N'禁止使用select *')
 go
 
 select keyId,info from [maomao365.com]
 go
 select * from [maomao365.com]
   ---全部输出字段,会提示 "遇到以零作除数错误"的信息
 go
 truncate table [maomao365.com]
 drop     table [maomao365.com]

mssql sqlserver varchar 不写长度,到底代表多长呢?


摘要:
下文通过举例讲解在sql脚本中,不对varchar进行定义所产生的长度值,如下所示:
实验环境:sql server 2008 R2


  declare @maomao varchar 
set @maomao ='maomao'

print '字符varchar长度测试:'+@maomao

go


declare @maomao varchar 
set @maomao =N'教程'

print '中文varchar长度测试:'+@maomao

go



declare @maomao nvarchar 
set @maomao ='maomao'

print '字符nvarchar长度测试:'+@maomao

go


declare @maomao nvarchar 
set @maomao =N'教程'

print '中文nvarchar长度测试::'+@maomao

go


从上文的例子,我们可以看出,varchar定义默认占用一个字节,nvarchar默认占用2个字节
及varchar和nvarchar未指定长度时,都默认占用存储length为1的字符

mssql_sqlserver_varchar_长度_7918

mssql_sqlserver_varchar_长度_7918