SYBASE 数据库操作笔记(转自MaYong)

数据库表名、列名(执行严格的大小写)

数据库表名、列名识别大小写区分(即表名是大写 查询时小写就错误)

大小写敏感的问题是因为字符集影响的,改为UTF8字符集后问题解决。

SYBASE数据库的缺陷(版本SYBASE ASE 15.5)(目前在使用过程中发现的数据库本身的缺陷)

1.创建表是设置列的默认值是不会检测的(例如一列字段的数据类型为VARCHAR,默认值可以设置为数字2,可以正常创建表成功;但是当插入数据时(不给此列插入值)就报错啦,不能正常插入数据。)可能数据库创建表时没有去验证默认值吧。

解决方案只能是自己检查好创建语句,严格遵守默认值的数据类型。

2.兼容性:不会自动转换数据类型,与上面问题类似,INT型不能插入字符型的('1'),反之一样。这是数据库的严谨性可以理解,呵呵。

3.创建表与对表操作的语句不能直接放到循环或者判断语句中,

SYSBASE是先执行创建表的语句(看来创建表的待遇基本不是一般的高啊),

然后才执行条件的判断,这点压根不符合程序的逻辑性。(不知SYBASE数据库的工程师们是怎么想的)

解决方案,是再创建一个存储过程,将要创建的表明传给他,在判断或循环是调用此存储过程。

4.还有一些小问题暂时就不说啦。

--查询数据库中用户表的名称

SELECT name FROM sysobjects WHERE type='U' order by name

--查询数据库中存储过程的名称

SELECT name FROM sysobjects WHERE type = 'P'

--查询数据库中函数的名称

SELECT name FROM sysobjects WHERE type='SF'

--执行存储过程:exec 存储过程名称 第一个参数,第二个参数

exec dbo.Pro_CreateIndex js_seqsql, ssql_type

--查询表的全部索引OBJECT_ID('表名') indid>0为索引类型

SELECT name FROM sysindexes WHERE id = OBJECT_ID('js_seqsql') and indid>0

--删除索引 表名.索引名称

DROP INDEX js_seqsql.js_seqsql_idx_ssql_type

--创建索引 CREATE NONCLUSTERED INDEX 索引名称 ON 表名(列名)

CREATE NONCLUSTERED INDEX js_seqsql_idx_ssql_type ON js_seqsql(ssql_type)

--字符串替换

str_Replace(原字符串,'要替换的字符','新字符')

--判断表是否存在

SELECT OBJECT_ID('js_jobs')

SELECT 1 FROM sysobjects o, sysusers u WHERE o.uid=u.uid AND o.name = 'WARNINFO201103' AND u.name = 'dbo' AND o.type = 'U'

--Sybase数据库错误代码:其中DESCRIPTION列即为错误描述,@ERROR为错误代码编号,可以自行修改查询。

SELECT * FROM MASTER.DBO.SYSMESSAGES WHEREERROR=@ERROR

-- =============================================

-- Author:  MaYong

-- Create date: 2011-01-05

-- Description: 批量创建索引

-- 执行示例:exec dbo.Pro_CreateIndex  表名,列名

-- =============================================

IF EXISTS (SELECT name FROM sysobjects

WHERE name = 'Pro_CreateIndex' AND type = 'P')

DROP PROCEDURE Pro_CreateIndex

GO

Create proc Pro_CreateIndex

(

@TableType  varchar(40),   --表名

@IndexName  varchar(150)   --索引名称

)

--With ENCRYPTION

AS

declare

@TableName varchar(80),

@NewIndex  varchar(150)

declare tableName_Cursor CURSOR FOR

select name from dbo.sysobjects where name like @TableType+'%' and type='U' order by name

set @NewIndex = 'idx_'+str_Replace(@IndexName,',','_')

Open tableName_Cursor

Fetch next from tableName_Cursor into @TableName

if @@FETCH_STATUS <> 0

begin

DEALLOCATE tableName_Cursor

RollBack TRANSACTION

Return 0

end

while @@FETCH_STATUS = 0

BEGIN

--判断索引是否存在 存在则删除

declare @OldIndex varchar(150)

set @OldIndex=@TableName+'_'+@NewIndex

IF EXISTS (SELECT 1 FROM sysindexes WHERE id = OBJECT_ID(@TableName) AND name = @OldIndex  and indid>0)

--IF EXISTS (SELECT 1 FROM sysindexes i, sysobjects o, sysusers u WHERE  o.id = i.id AND o.uid = u.uid AND i.name = @OldIndex AND u.name = 'dbo' AND o.name = @TableName AND i.indid > 0)

BEGIN

setuser 'dbo'

declare @drop_sql varchar(1000)

select @drop_sql='DROP INDEX '+ @TableName + '.' +  @OldIndex

exec (@drop_sql)

print @drop_sql

END

--异常处理

IF (@@error != 0)

BEGIN

PRINT 'Error Drop Index :', @OldIndex

SELECT syb_quit()

END

--创建索引

declare @index_sql varchar(1000)

select  @index_sql='CREATE NONCLUSTERED INDEX'+@TableName+'_'+@NewIndex

+' ON'+@TableName+'('+@IndexName+')'

BEGIN

exec   (@index_sql)

print   @index_sql

END

--异常处理

IF (@@error != 0)

BEGIN

PRINT 'Error CREATING Index出差语句:', @index_sql

PRINT @@error

Fetch next from tableName_Cursor into @TableName

CONTINUE

END

Fetch next from tableName_Cursor into @TableName

END

Close tableName_Cursor

DEALLOCATE tableName_Cursor

--异常处理

IF (@@error != 0)

BEGIN

PRINT 'Error CREATING Index出差语句:', @index_sql

PRINT @@error

END

GO

----------------------------发现问题---------------------------------

INDEX是SYBASE数据库的关键字,创建与查询此字段时必须加[]才行,建议修改

--业务类型对应承载方式、性能指标表

PRINT '<<<<< CREATING Table - "SERVICE2NORM" >>>>>'

IF OBJECT_ID('SERVICE2NORM') IS NOT NULL

drop table SERVICE2NORM

GO

CREATE TABLE  SERVICE2NORM(

ID INT  IDENTITY, --标识,自动+1

SERVICETYPE VARCHAR(3), --主业务类型

SUBSERVICETYPE VARCHAR(2), --子业务类型

EXPSERVICETYPE VARCHAR(3), --拓展业务类型

LOCALNET TINYINT, --主叫承载方式

NORMID INT, --性能指标

TYPE TINYINT, --关注指标,0:关注(暂不使用)

[INDEX] INT, --序号.0:主性能;

PRIMARY KEY CLUSTERED ( ID )  ON 'default'

)

-----------------------------------------------------------------------

您正在看的sybase教程是:如何更改服务器的字符集为cp936。

(这里SYBASE的安装路径为c:\sybase) 1.c:\>cd \sybase\charsets\cp936 2.c:\sybase\charsets\cp936> charset -Usa -Psa_pass -Sserver_name binary.srt cp936 3.在SQL环境中 1>select name,id from syscharsets 2>go 找到name为cp936对应的id(假设为117) .1>sp_configure "default character set id,117 2>go 5.重启server两次

(注:第一次启动后,server会自动宕掉,需要第二次重启后才能使用)

如何修改Syabse服务器端的默认字符集

以Windows操作系统Sybase12.5为例:

首先说明察看服务端字符集和客户端字符集的方法:

查看服务器端字符集:

在isql环境中执行:

1>sp_helpsort

2> go

查看客户端字符集:

在isql环境中执行:

1> select @@client_csname

2> go

修改服务端字符集方法:

假设sybase安装目录为$sybase$

◆1.转到$sybase$\ASE-12_5\bin目录

执行命令:charset -Usa -P binary.srt iso_1

◆2.打开isql,执行下面的SQL查询出iso_1对应的id

select id , name from syscharsets where name = 'iso_1'

go

假设查询结果为1

执行下面语句设定默认字符集

sp_configure 'default char',1 --可能有误,以上面的查询结果为准

go

关闭ASE

shutdown

go

◆3.重新启动sybase服务两次(第一次启动会失败),启动服务。

sybase 设置默认值_[转]SYBASE 数据库操作笔记相关推荐

  1. 表单设置默认值_你还不知道表单怎么设计吗?看这里!

    表单是电子商务.社交互动和大多数基于生产力应用类型的网站的关键.尽可能简单,微小的变化都有可能极大的提高用户体验. 一.设计原则 尽量减少痛苦 填写过程尽量简洁.容易. 说明填写完成路径 清晰的告诉人 ...

  2. sybase 设置默认值_SYBASE性能优化

    带你轻松接触Sybase ASE15.0.2性能优化 调整共享内存: /sbin/sysctl -w kernel.shmmax=3416386150 shmmax是最大共享内存段,假如服务器上没有别 ...

  3. sqlyog怎么设置默认值_详细讲解如何用SQLyog来分析MySQL数据库

    匿名用户 1级 2013-10-11 回答 SOLyog的下载.安装以及使用很简单.我去了相关网站下载,它只有384K字节大小.它把两个文件(一个可执行文件.exe和一个动态链接库文件.dll)安装到 ...

  4. html下拉框设置默认值_如何设置HTML select下拉框的默认值?

    HTML中的select标签用于创建可选择选项的下拉列表:option标签包含选定时将使用的值.那么如何来设置select下拉框里的默认值?下面本篇文章就来给大家介绍一下,希望对大家有所帮助. 我们可 ...

  5. springboot设置默认值_线上Bug无法复现?老司机教你一招,SpringBoot远程调试不用愁!...

    前言 在部署线上项目时,相信大家都会遇到一个问题,线上的 Bug 但是在本地不会复现,多么无奈. 此时最常用的就是取到前端传递的数据用接口测试工具测试,比如 POSTMAN,复杂不,难受不? 今天陈某 ...

  6. mysql 设置默认值_为什么 Flink 无法实时写入 MySQL?

    作者:孙金城 摘要:本文为 Flink 生产环境应用中的疑问剖析,Flink 无法实时写入 MySQL 是初学者常见问题之一,由社区同学罗鹏程提出,Apache Flink PMC 孙金城(金竹)老师 ...

  7. excel设置默认值_职场办公必备的7个Excel应用技巧解读,易学易懂,收藏备用!...

    在职场办公中,有一些Excel技巧是必备的,基本每天都要用到,对于这部分Excel技巧,作为职场的我们,必须掌握! 一.快速选定数据区域. 技巧:Ctrl+Shift+方向键或A. 目的:快速选定指定 ...

  8. sqlyog怎么设置默认值_如何使用SQLyog

    如何使用SQLyog MySQL 2009-07-09 14:23 SQLyog也是MySql不错的工具 一.安装 sqlyog的安装是很简单的,一路 下一步 就可以安装完毕了.第一次运行会提示输入注 ...

  9. dropdownlist控件设置默认值_关于DropDownList默认值的设定

    DropDownList是否绑定数据库和默认值的设定用的语句有影响,但是我没有弄明白是为什么. 绑定数据库的DropDownList: eg:DropDownList1.SelectedValue=s ...

最新文章

  1. Asp.net 服务器端控件
  2. Android 面试题集整理
  3. 道理都懂,为什么还是做不好需求分析?
  4. 在Excel中实现查询功能
  5. python 三维绘图库_Python第三方库matplotlib(2D绘图库)入门与进阶
  6. mysql从库延时好高_部署MySQL延迟从库的几个好处
  7. java解析tcp报文_JAVA语言TCP通信和JDBC示例(AIS信息解析)
  8. 闲话WPF之十三(WPF中的资源)
  9. Iterables和迭代器
  10. 7款很棒的 HTML5 视频播放器
  11. 手把手教如何制作数字证书并进行程序的数字签名
  12. 阿里云域名续费优惠口令 (实时更新)
  13. C语言课程设计——停车场管理系统
  14. cad用计算机怎么计算坐标,CAD坐标里能输入公式吗?
  15. 【现代简约风格装修案例】诠释不一样的简单 !
  16. 安装autoconf
  17. 你真的了解AsyncTask吗?AsyncTask源码分析
  18. Linux TC 流量控制与排队规则 qdisc 树型结构详解(以HTB和RED为例)
  19. WebStorm使用npm命令提示: ‘npm‘ 不是内部或外部命令,也不是可运行的程序的解决方法
  20. 谷歌地图的简单轨迹移动播放

热门文章

  1. 分享一个完整的Mybatis分页解决方案
  2. 解决Docker安装MySQL不区分大小写问题
  3. 解决Amlogic S905或S9xxx在安装Armbian_20.02.0卡logo或无反应的方法
  4. 如何将类添加到给定的元素?
  5. 有PHP4的分支吗?
  6. 如何打开电脑上的安全策略
  7. 简易新闻客户端android
  8. 海信CAS计算机辅助手术系统,计算机辅助手术系统(CAS)
  9. linux c++ 函数效率,Linux C++程序进行性能分析工具gprof使用入门
  10. 实验2-2-7 整数四则运算 (10 分)