Sybase数据库常用sql语言

1,表备份:

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

2,删除列:

ALTER TABLE table_name DELETE column_name;

3,增加列:

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 sysobjects
where 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条件。

21,查看过程

sp_helptext 存储过程名

22,删除存储过程

--P_add_user存储过程名
if exists (select 1 from sysobjects
where id = object_id('P_add_user')
and type = 'P')
drop procedure P_add_user
go

22,存储过程调用

--存储过程带一个参数@applyid
declare @c_applyid varchar(50)
select @c_applyid=''
execute DBA.p_process @applyid=@c_applyid

23,commit work 与 commit work and wait区别

COMMIT WORK是异步的
COMMIT WORK AND WAIT是同步的
由于系统中COMMIT WORK的数量是有限的,比如说我们系统是4000个,同时只能提交4000个更新进程,对于COMMIT WORK来说,执行完就释放了,可以为后面的COMMIT WLRK继续使用;而对于COMMIT WORK AND WAIT是要执行完才释放的,所以对于没有必要同步更新的,也尽快使用异步,使得资源得到释放。

24,PATINDEX用法

--语法
PATINDEX ( '%pattern%' , expression )
--返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。 --参数
pattern
一个文字字符串。可以使用通配符,但 pattern 之前和之后必须有 % 字符(搜索第一个或最后一个字符时除外)。pattern 是字符串数据类型类别的表达式。 expression
一个表达式,通常为要在其中搜索指定模式的列,expression 为字符串数据类型类别。 --返回类型
如果 expression 的数据类型为 varchar(max) 或 nvarchar(max),则为 bigint,否则为 int。

25,join用法

--1,Inner join:产生A和B的交集。
SELECT * FROM test_a INNER JOIN test_b ON test_a.name =test_b.name --2,Full outer join:产生A和B的并集。对于没有匹配的记录,则以null做为值。
SELECT * FROM test_a FULL OUTER JOIN test_b ON test_a.name = test_b.name --3,Left outer join:产生表A的完全集,而B表中匹配的则有值,没匹配的以null值取代。
SELECT * FROM test_a LEFT OUTER JOIN test_b ON test_a.name = test_b.name --4,Left outer join on where:产生在A表中有而在B表中没有的集合。
SELECT * FROM test_a LEFT OUTER JOIN test_b ON test_a.name = test_b.name WHERE test_b.name IS NULL --5,RIGHT OUTER JOIN:产生表B的完全集,而A表中匹配的则有值,没匹配的以null值取代。
SELECT * FROM test_a RIGHT OUTER JOIN test_b ON test_a.name = test_b.name --6, right outer join on where:产生在B表中有而在A表中没有的集合。
SELECT * FROM test_a RIGHT OUTER JOIN test_b ON test_a.name = test_b.name WHERE test_a.name IS NULL --7,FULL OUTER JOIN WHERE:产生(A表中有但B表没有)和(B表中有但A表中没有)的数据集。
SELECT * FROM test_a FULL OUTER JOIN test_b ON test_a.name = test_b.name WHERE est_a.name IS NULL OR test_b.name IS NULL

26,存储过程采用临时表存储查询结果

--无需定义临时表,直接使用;自动释放临时表;
select ... into #tmp from yourtable ...
select name from #temp_tab;

26,插入数据

--插入一条记录
insert into A select '','','','' --批量插入记录
insert into A
select '','','',''
union all
select '','','',''
union all
select '','','','

27,根据字段值变更多个字段值

update A  set
a.bbv=(case a.bby when '' then '' when '' then '' when '' then '' end),
a.bbc=(case a.bby when '' then 'a' when '' then 'b' when '' then 'c' end),
a.bbf=(case a.bby when '' then 'e' when '' then 'd' when '' then 'f' end)
from A a

28,convert(datatype,变量[,显示格式]) 用法

--数值型字段查询条件用convert()
select * from shrjj where id= convert(integer,23136) ;

29,获取长度

char_length返回的是字符数
datalength返回的是字节数
--获取字段最大值的最后一位值,null则取'0'
select case when substring(max(t.pk_org),char_length(max(t.pk_org)) ,char_length(max(t.pk_org))) is null then '' else substring(max(t.pk_org),char_length(max(t.pk_org)) ,char_length(max(t.pk_org))) end from dba.org t where t.pk_org like '#ZSSYB100%';

30,获取第一条数据,并拆分、截取字符串

--获取第一条记录,并且截取字符串的X后的数字
--因为max()函数对字符的获取,异常
select top 1 t.pk_org,
--获取X字符的位置
charindex('X',t.pk_org),
--获取X字符后的数字
char_length(t.pk_org),substring(t.pk_org, charindex('X',t.pk_org)+1 ,char_length(t.pk_org)) as x_zf,
--case ... when
case when substring(t.pk_org, charindex('X',t.pk_org)+1 ,char_length(t.pk_org)) is null then '' else substring(t.pk_org, charindex('X',t.pk_org)+1 ,char_length(t.pk_org)) end as x_sz,
--字符转数字
convert(int,case when substring(t.pk_org, charindex('X',t.pk_org)+1 ,char_length(t.pk_org)) is null then '' else substring(t.pk_org, charindex('X',t.pk_org)+1 ,char_length(t.pk_org)) end)+1 as x_result
from dba.t_test t where t.pk_corp='' order by char_length(t.pk_org) desc,t.pk_org desc

结果:

31,查询表对应的主键:

select  o.name as 表名, i.column_name as 主键列名 from sysobjects o,syscolumn i
where o.id=i.table_id and i.pkey = 'Y' and i.table_id = 'tablename';

Sybase数据库常用sql语言的更多相关文章

  1. MySQL入门——MySQL数据库和SQL语言

    MySQL入门——MySQL数据库和SQL语言 摘要:本文主要了解了MySQL关系型数据库和SQL语言的基本知识. MySQL数据库 简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB ...

  2. GP数据库 常用SQL语句

    GP数据库 常用SQL语句 --1,查看列名以及类型 select upper(column_name) ,data_type from information_schema.columns wher ...

  3. Sybase数据库常用函数

    Sybase数据库常用函数 一.字符串函数 1,ISNULL(EXP1,EXP2,EXP3,...) :返回第一个非空值,用法与COALESCE(exp1,exp2[,exp3...])相同: 2,T ...

  4. 架构-数据库访问-SQL语言进行连接数据库服务器-OLE:OLE

    ylbtech-架构-数据库访问-SQL语言进行连接数据库服务器-OLE:OLE Object Linking and Embedding,对象连接与嵌入,简称OLE技术.OLE 不仅是桌面应用程序集 ...

  5. 架构-数据库访问-SQL语言进行连接数据库服务器-DAO:DAO

    ylbtech-架构-数据库访问-SQL语言进行连接数据库服务器-DAO:DAO DAO(Data Access Object) 数据访问对象是一个面向对象的数据库接口,它显露了 Microsoft ...

  6. 架构-数据库访问-SQL语言进行连接数据库服务器:SQL语言进行连接数据库服务器

    ylbtech-架构-数据库访问-SQL语言进行连接数据库服务器:SQL语言进行连接数据库服务器 数据库和应用服务器的连接. 在基于三层构架的信息系统开发中,应用服务器要利用SQL语言进行连接数据库服 ...

  7. SQL数据库—<1>SQL语言

    关系数据库.SQL语言简单.学习软件介绍 SQL:Structured Query Language 结构化查询语言 数据库分为:层次型,网状型,关系型. 关系型数据库:是一个二维表的集合,可以用来存 ...

  8. 数据库与SQL语言

    数据库(DB) :长期储存在计算机中.有组织.可共享的数据的集合. 特点:(1)数据按一定的数据模型组织.描述和储存:(2)较小的冗余度:(3)数据独立性较高:(4)易扩展:(5)可共享(不同用户可按 ...

  9. Oracle数据库常用Sql语句大全

    一,数据控制语句 (DML) 部分 1.INSERT  (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……); INSE ...

随机推荐

  1. ATL字符宏使用以及代码测试

    // ATL_Convert.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #incl ...

  2. [原创]用Oreans UnVirtualizer还原VM代码

    标题:[原创]用Oreans UnVirtualizer还原VM代码实验 作者:sungy 时间:2014-09-18 对VM一直很头痛,在逆向实践一般尽量想办法避开它,当黑盒来处理.有时候不面对她又 ...

  3. Apktool源码解析——第二篇

    上一篇讲到ApkDecoder这个类,大部分调用到还是Androlib类,而且上次发现brutall的代码竟然不是最新的,遂去找iBotP.的代码了. 今天来看Androlib的代码: private ...

  4. 【Thinkphp5 】部署nginx时nginx.conf配置文件修改

    背景:thinkphp5项目 服务器环境: lnmp 1 打开路径  /usr/local/nginx/conf/vhost/ 此路径下会有你添加的域名文件夹..找到对应的域名打开. 2  代码如下, ...

  5. python的内存管理与垃圾回收机制学习

    一.python内存申请: 1.python的内存管理分为六层:最底的两层有OS控制.第三层是调用C的malloc和free等进行内存控制.第四层第五层是python的内存池.最上层使我们接触的直接对 ...

  6. chrome单步调试代码

    单步调试代码 所有步骤选项均通过边栏中的可点击图标 表示,但也可以通过快捷键触发(鼠标悬停在操作图标上就可以看到快捷键).下面是简要介绍: 图标/按钮 操作 描述 Resume 继续执行直到下一个断点 ...

  7. 【BZOJ1801】[Ahoi2009]chess 中国象棋 DP

    [BZOJ1801][Ahoi2009]chess 中国象棋 Description 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放置方法,中国像棋中炮 ...

  8. python随机验证码函数

    #验证码函数def yzm(i): code = [] for i in range(i): ,): code.append(str(random.randint(,))) else: tmp = r ...

  9. 170609、Nginx配置文件详细说明

    在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络. #运行用户 user www-data; #启动进程,通常设置成和cpu的数量相等 worker_processe ...

  10. WebSocket学习记录

    参考资料: Java后端WebSocket的Tomcat实现 基于Java的WebSocket推送 java WebSocket的实现以及Spring WebSocket 利用spring-webso ...