zoukankan      html  css  js  c++  java
  • 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'

    建议使用参数化命令

  • 相关阅读:
    基数排序
    计数排序和桶排序
    部署Java Web项目到云服务器的步骤全解析
    IP地址0.0.0.0/0是什么意思
    Tomcat在阿里云Centos7上正常启动,但浏览器无法访问的解决方法
    eclipse光标怎么返回上一次浏览的位置
    IDEA设置方法自动显示参数提示
    socket通信模型、socket中的accept()阻塞与read()阻塞
    Ubuntu18.04 下修改 root密码
    Ubuntu18.04 安装 VMwareTools
  • 原文地址:https://www.cnblogs.com/yank/p/1170897.html
Copyright © 2011-2022 走看看