Sybase数据库

发布时间:2025-12-09 17:51:29 浏览次数:3

Sybase数据库

一、常用sql语言

  • 获取Sybase中所有数据库:select dbid,name from master..sysdatabases

  • 获得指定数据库中的表列表:select name from 数据库..sysobjects where type='U' order by name

  • 获得指定数据库中的视图列表:select name from 数据库..sysobjects where type='P' order by name

  • 获得指定表&视图中字段或参数:SELECT a.name, b.name FROM syscolumns a LEFT JOIN systypes b ON a.usertype = b.usertype INNER JOIN sysobjects d ON a.id = d.id AND d.name <> 'dtproperties' LEFT JOIN syscomments e ON a.cdefault = e.id WHERE d.name = '表名&视图名&存储过程

1,表备份

--table_name1:需要备份的表; table_name2:备份后的表select * into table_name2 from table_name1;

2,删除列

#table_name:表名,column_name:列名alter table table_name delete column_name

3,增加列

#data_type 数据类型ALTER TABLE table_name ADD (column_name DATA_TYPE [NOT] NULL);

4,修改列的空与非空:

ALTER TABLE table_name MODIFY column_name [NOT] NULL;

5,修改列名:

ALTER TABLE table_name RENAME old_column_name TO new_column_name;

6,快速建立临时表:

SELECT * INTO table_name_new FROM table_name_old;

7,修改表名:

ALTER TABLE old_table_name RENAME new_table_name

8,增加主键约束:

ALTER TABLE tb_name ADD CONSTRAINT pk_name PRIMARY KEY(col_name,..)

9,删除主键约束:

ALTER TABLE tb_name DROP CONSTRAINT pk_name;

10,建立自增长字段,与Oracle的SEQUENCE类似:

CREATE TABLE TMP_001 (RES_ID INTEGER IDENTITY NOT NULL);

11,添加表注释:

COMMENT ON TABLE table_name IS '....';

12,创建索引:

CREATE INDEX index_name ON table_name(column_name);

13,查询表结构:

select * from systable a left join syscolumn b on a.table_id = b.table_id where UPPER(a.table_name)=UPPER('table_name') order by column_name;

14,查看所有表

select name from sysobjects where type='U'

15,创建表

#字段前面不允许有空格,不然列的名称前面会用空格create table t_wlpc_shrjj(id INTEGER IDENTITY NOT NULL,rpname varchar(500) null,rpdate varchar(50) null,jjzt varchar(255) null,fbsjj varchar(255) null,etf varchar(255) null,lof varchar(255) null,fjlof varchar(255) null,create_date Datetime null,update_date Datetime null)

16,删除表

if exists (select 1 from sysobjectswhere id = object_id('users') and type = 'U')drop table users

17,查询指定数据库的表

select * from sybaseiq195..T_x27_user;

18、日期函数

--1,获取当前日期时间 getdate() select getdate() --2,取指定时间的某一部分 datepart(日期部分,日期)--取时间的某一个部分 select datepart(yy,getdate()) --year select datepart(mm,getdate()) --month select datepart(dd,getdate()) --day select datepart(hh,getdate()) --hour select datepart(mi,getdate()) --min select datepart(ss,getdate()) --sec --取星期几 set datefirst 1 select datepart(weekday,getdate()) --weekday --3,日期2-日期1,单位为日期部分指定 datediff(日期部分,日期1,日期2) SELECT datediff(yy,'2012/12/01',getdate()) SELECT datediff(mm,'2012/12/01',getdate()) SELECT datediff(dd,'2012/12/01',getdate()) SELECT datediff(hh,'2012/12/01',getdate()) SELECT datediff(mi,'2012/12/01',getdate()) SELECT datediff(ss,'2012/12/01',getdate()) --4,计算指定时间,再加上表达式指定的时间长度 dateadd(日期部分,数值,日期) SELECT dateadd(yy,1,getdate()) SELECT dateadd(mm,1,getdate()) SELECT dateadd(dd,1,getdate()) SELECT dateadd(hh,1,getdate()) SELECT dateadd(mi,1,getdate()) SELECT dateadd(ss,1,getdate()) --5,字符串时间 select getdate() -- '2012/12/4 10:48:07.540' select convert(char,getdate(),101) -- '12/04/2012' select convert(char,getdate(),102) -- '2012.12.04' select convert(char,getdate(),103) -- '04/12/2012' select convert(char,getdate(),104) -- '04.12.2012' select convert(char,getdate(),105) -- '04-12-2012 select convert(char,getdate(),106) -- '04 Dec 2012' select convert(char,getdate(),107) --'Dec 04, 2012' select convert(char,getdate(),108) --'11:16:06' select convert(char,getdate(),109) --'Dec 4 2012 10:50:28:146AM' select convert(char,getdate(),110) --'12-04-2012' select convert(char,getdate(),111) --'2012/12/04' select convert(char,getdate(),112) --'20121204' --6,以时间为维度的趋势查询 --查询一个月内的每一天 select convert(varchar(10), dateadd(dd, number + 1, convert(char(10), dateadd(mm, -1, getdate()), 111)), 111) dt from master .. spt_values where type = 'p' and number < 31 --查询一年内的每一月 select convert(varchar(7),dateadd(mm,number + 1, convert(char(10), dateadd(yy, -1, getdate()), 111)), 111) dt from master .. spt_values where type = 'p' and number < 12 --7 空处理函数 isnull(val1,val2) val1为空,值为val2

19,获取当前时间

select substr(convert(varchar,getdate(*),25),0,19)-- 结果:

20,删除表数据

TRUNCATE TABLE:删除内容、释放空间但不删除定义。DELETE TABLE:删除内容不删除定义,不释放空间。DROP TABLE:删除内容和定义,释放空间。区别:truncate:删除的更彻底,所有的日志记录都会没有,并且是一把全清,不会有where条件。还有个比较大的区别就是truncate后自增长的ID列也会归零,以后插入记录ID从1开始。但是delete后你再插入记录,ID会从上次最大的数字开始。delete:可以配合where条件。

二、测试

驱动:jconnect : com.sybase.jdbc4.jdbc.SybDriver

pom文件:

<dependency><groupId>org.teiid</groupId><artifactId>spring-data-sybase</artifactId><version>1.7.2</version></dependency>

代码:

public static void main(String[] args) {try {Class.forName("com.sybase.jdbc4.jdbc.SybDriver").newInstance();String url = "jdbc:sybase:Tds:192.168.200.176:5000/master";// 数据库名Properties sysProps = System.getProperties();sysProps.put("user", "sa"); // 设置数据库访问用户名sysProps.put("password", "sybase"); // 密码Connection conn = DriverManager.getConnection(url, sysProps);Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);String sql = "select id,name,crdate from dbo.sysobjects where type='U'"; // 表ResultSet rs = stmt.executeQuery(sql);while (rs.next()) {System.out.println("oject_id:"+rs.getString(1)+",oject_name:"+rs.getString(2)); // 取得第二列的值}} catch (Exception e) {System.out.println(e.getMessage());}}

特点:

  • 它是基于客户/服务器\体系结构的数据库

    客户/服务器模型的好处是:

    1)它支持共享资源且在多台设备间平衡负载

    2)允许容纳多个主机的环境,充分利用了企业已有的各种系统

  • 解释:什么是客户/服务器体系结构

    • 从硬件角度看,客户/服务器体系结构是指将某项任务在两台或多台机器之间进行分配,其中客户机(Client)用来运行提供用户接口和前端处理的应用程序,服务器机(Server)提供客户机使用的各种资源和服务。

    • 从软件角度看,客户/服务器体系结构是把某项应用或软件系统按逻辑功能划分为客户软件部分和服务器软件部分。客户软件部分一般负责数据的表示和应用,处理用户界面,用以接收用户的数据处理请求并将之转换为对服务器的请求,要求服务器为其提供数据的存储和检索服务;服务器端软件负责接收客户端软件发来的请求并提供相应服务客户/服务器融合了大型机的强大功能和中央控制以及PC机的低成本和较好的处理平衡。客户/服务器为任务的集中/局部分布提供了一种新的方法,这种体系能够使用户对数据完整性、管理和安全性进行集中控制。在缓解网络交通和主机负荷以及满足用户需要方面,客户/服务器体系提供了良好的解决方案。

  • 它是真正开放的数据库

    由于采用了客户/服务器结构,应用被分在了多台机器上运行。更进一步,运行在客户端的应用不必是Sybase公司的产品。对于一般的关系数据库,为了让其它语言编写的应用能够访问数据库,提供了预编译。Sybase数据库,不只是简单地提供了预编译,而且公开了应用程序接口DB-LIB,鼓励第三方编写DB-LIB接口。由于开放的客户DB-LIB允许在不同的平台使用完全相同的调用,因而使得访问DB-LIB的应用程序很容易从一个平台向另一个平台移植。

  • 它是一种高性能的数据库

  • 可编程数据库

    通过提供存储过程,创建了一个可编程数据库。存储过程允许用户编写自己的数据库子例程。这些子例程是经过预编译的,因此不必为每次调用都进行编译、优化、生成查询规划,因而查询速度要快得多。

  • 事件驱动的触发器

    触发器是一种特殊的存储过程。通过触发器可以启动另一个存储过程,从而确保数据库的完整性。

  • 多线索化

    Sybase数据库的体系结构的另一个创新之处就是多线索化。一般的数据库都依靠操作系统来管理与数据库的连接。当有多个用户连接时,系统的性能会大幅度下降。Sybase数据库不让操作系统来管理进程,把与数据库的连接当作自己的一部分来管理。此外,Sybase的数据库引擎还代替操作系统来管理一部分硬件资源,如端口、内存、硬盘,绕过了操作系统这一环节,提高了性能。

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477