美文网首页软件测试软件测试知识
八、SQL语法差异及解决方案④(删除索引及取数据库信息)

八、SQL语法差异及解决方案④(删除索引及取数据库信息)

作者: 小小一颗卤蛋 | 来源:发表于2020-06-04 16:07 被阅读0次

    删除索引

    索引的定义在各个数据库系统中基本相同,但是删除索引的语法则各有不同。
    如:删除T_Person表中定义的名称为idx1的索引在不同数据库系统下的SQL语句如下:

    MYSQL:
    DROP INDEX idx1 ON T_Person
    
    MSSQLServer:
    DROP INDEX T_Person.idx1
    
    Oracle,DB2:
    DROP INDEX idx1
    

    取数据库信息

    MYSQL中可以通过函数来取得数据库的信息,包括当前数据库名、版本、当前登录用户等信息:
    DATABASE()函数返回当前数据库名
    VERSION()函数以一个字符串形式返回MySQL 服务器的版本
    USER()函数(还有SYSTEM_USER、SESSION_USER两个别名)返回当前MySQL 用户名。

    MSSQLServer中也可以通过函数来取得数据库的信息:
    APP_NAME()函数返回当前会话的应用程序名称;
    CURRENT_USER函数(注意这个函数不能带括号调用)返回当前登陆用户名;
    HOST_NAME()函数返回工作站名。

    但在MSSQLServer中如果要查询当前数据库名,则必须到系统表 sysprocesses中查询,SQL语句如下:

    select dbname = case when 
    dbid = 0 then null when dbid <> 0 then db_name(dbid) end
    from master..sysprocesses where spid=@@SPID
    

    系统表“master..sysprocesses”中存储了当前数据库系统中的进程信息,而“@@SPID”则表示当前进程号。

    Oracle中使用USER函数用来取得当前登录用户名,注意使用这个函数的时候不能使用括号形式的空参数列表,也就是USER()这种使用方式是不对的。正确使用方式如下:

    SELECT USER FROM DUAL
    

    Oracle中使用USERENV()函数用来取得当前登录用户相关的环境信息,USERENV()函数有一个参数,参数的可选值如下:ISDBALANGUAGETERMINALSESSIONIDENTRYIDLANGINSTANCE

    DB2中可以通过CURRENT_USER来取得当前登陆用户名,而CURRENT_SERVER用来取得当前服务名,比如:

    SELECT CURRENT_USER,CURRENT_SERVER FROM sysibm.sysdummy1
    

    DB2中取得当前数据库的版本的SQL语句如下:

    SELECT * FROM sysibm.sysversions
    

    相关文章

      网友评论

        本文标题:八、SQL语法差异及解决方案④(删除索引及取数据库信息)

        本文链接:https://www.haomeiwen.com/subject/qyogzhtx.html