经典!SQL技巧

SQL技巧

<1>查询每个数据表所占空间
     sp_spaceused 【TableName】
     结果如下:
     

<2>返回插入、更新操作时,该row的IDENTITY 列的值;
     SELECT 
  @@IDENTITY
     具体用法

<3>查询sql版本信息

SELECT  SERVERPROPERTY( ' productversion '), SERVERPROPERTY ( ' productlevel '), SERVERPROPERTY ( ' edition ')

<4> 查询SQL实例下的所有数据库
      语法  sp_databases
      结果集
      列名 数据类型 描述 
      DATABASE_NAME sysname 数据库的名称。在 SQL Server 中,此列代表存储在 sysdatabases 系统表中的数据库的名称。 
      DATABASE_SIZE int 数据库的大小(以 KB 计)。 
      REMARKS varchar(254) 对于 SQL Server,该字段的返回值为 NULL。
 

<5> ALTER TABLE 只允许添加满足下述条件的列: 列可以包含空值;或者列具有指定的 DEFAULT 定义;或者要添加的列是标识列或时间戳列;或者,如果前几个条件均未满足,则表必须为空以允许添加此列。不能将列"ColumnName"添加到非空表"tableName"中,因为它 不满足上述条件。

alter table tableName Add columnName smallint NOT NULL 
alter table tableName alter COLUMN columnName smallint NOT NULL 

当执行添加列或者修改列属性是报错。

原因:表中已经有数据,如果设置为非空,则已有数据中的字段依然为空,产生矛盾。

解决方法:修改表中数据,将此字段赋默认值,然后再修改其属性为非空
<6>模糊查询,防止SQL注入

防止SQL注入的办法是使用参数化命令,可是模糊查询不可直接使用参数化命令,其会被当成字符串处理。

如:

SELECT * FROM TableName WHERE name LIKE ‘%@name%’;

可以变通来处理:

SELECT * FROM TableName WHERE name LIKE @name

参数:

new SqlParameter("@name", "%" + name + "%"); 

这就就能防止SQL注入了。

 <7>SQL字段的值为含有单引号 

如果是拼接字符串方式,需要将单引号转为两个。

比如查询Name为abc'cc的

SELECT * FROM [TABLE] WHERE [Name] = 'abc''cc'

建议使用参数化命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值