Sybase数据库常用sql语言

1,表备份:

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

2,删除列:

  1. ALTER TABLE table_name DELETE column_name;

3,增加列:

  1. ALTER TABLE table_name ADD (column_name DATA_TYPE [NOT] NULL);

4,修改列的空与非空:

  1. ALTER TABLE table_name MODIFY column_name [NOT] NULL;

5,修改列名:

  1. ALTER TABLE table_name RENAME old_column_name TO new_column_name;

6,快速建立临时表:

  1. SELECT * INTO table_name_new FROM table_name_old;

7,修改表名:

  1. ALTER TABLE old_table_name RENAME new_table_name

8,增加主键约束:

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

9,删除主键约束:

  1. ALTER TABLE tb_name DROP CONSTRAINT pk_name;

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

  1. CREATE TABLE TMP_001 (RES_ID INTEGER IDENTITY NOT NULL);

11,添加表注释:

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

12,创建索引:

  1. CREATE INDEX index_name ON table_name(column_name);

13,查询表结构:

  1. 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,查看所有表

  1. select name from sysobjects where type='U'

15,创建表

  1. #字段前面不允许有空格,不然列的名称前面会用空格
  2. create table t_wlpc_shrjj(
  3. id INTEGER IDENTITY NOT NULL,
  4. rpname varchar(500) null,
  5. rpdate varchar(50) null,
  6. jjzt varchar(255) null,
  7. fbsjj varchar(255) null,
  8. etf varchar(255) null,
  9. lof varchar(255) null,
  10. fjlof varchar(255) null,
  11. create_date Datetime null,
  12. update_date Datetime null
  13. )

16,删除表

  1. if exists (select 1 from sysobjects
  2. where id = object_id('users') and type = 'U')
  3. drop table users

17,查询指定数据库的表

  1. select * from sybaseiq195..T_x27_user;

18、日期函数

  1. --1,获取当前日期时间 getdate()
  2. select getdate()
  3.  
  4. --2,取指定时间的某一部分 datepart(日期部分,日期)
  5. --取时间的某一个部分
  6. select datepart(yy,getdate()) --year
  7. select datepart(mm,getdate()) --month
  8. select datepart(dd,getdate()) --day
  9. select datepart(hh,getdate()) --hour
  10. select datepart(mi,getdate()) --min
  11. select datepart(ss,getdate()) --sec
  12. --取星期几
  13. set datefirst 1
  14. select datepart(weekday,getdate()) --weekday
  15.  
  16. --3,日期2-日期1,单位为日期部分指定 datediff(日期部分,日期1,日期2
  17. SELECT datediff(yy,'2012/12/01',getdate())
  18. SELECT datediff(mm,'2012/12/01',getdate())
  19. SELECT datediff(dd,'2012/12/01',getdate())
  20. SELECT datediff(hh,'2012/12/01',getdate())
  21. SELECT datediff(mi,'2012/12/01',getdate())
  22. SELECT datediff(ss,'2012/12/01',getdate())
  23.  
  24. --4,计算指定时间,再加上表达式指定的时间长度 dateadd(日期部分,数值,日期)
  25. SELECT dateadd(yy,1,getdate())
  26. SELECT dateadd(mm,1,getdate())
  27. SELECT dateadd(dd,1,getdate())
  28. SELECT dateadd(hh,1,getdate())
  29. SELECT dateadd(mi,1,getdate())
  30. SELECT dateadd(ss,1,getdate())
  31.  
  32. --5,字符串时间
  33. select getdate() -- '2012/12/4 10:48:07.540'
  34. select convert(char,getdate(),101) -- '12/04/2012'
  35. select convert(char,getdate(),102) -- '2012.12.04'
  36. select convert(char,getdate(),103) -- '04/12/2012'
  37. select convert(char,getdate(),104) -- '04.12.2012'
  38. select convert(char,getdate(),105) -- '04-12-2012
  39. select convert(char,getdate(),106) -- '04 Dec 2012'
  40. select convert(char,getdate(),107) --'Dec 04, 2012'
  41. select convert(char,getdate(),108) --'11:16:06'
  42. select convert(char,getdate(),109) --'Dec 4 2012 10:50:28:146AM'
  43. select convert(char,getdate(),110) --'12-04-2012'
  44. select convert(char,getdate(),111) --'2012/12/04'
  45. select convert(char,getdate(),112) --'20121204'
  46.  
  47. --6,以时间为维度的趋势查询
  48. --查询一个月内的每一天
  49. 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
  50. --查询一年内的每一月
  51. 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
  52.  
  53. --7 空处理函数
  54. isnull(val1,val2) val1为空,值为val2

19,获取当前时间

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

20,删除表数据

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

21,查看过程

  1. sp_helptext 存储过程名

22,删除存储过程

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

22,存储过程调用

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

23,commit work 与 commit work and wait区别

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

24,PATINDEX用法

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

25,join用法

  1. --1Inner join:产生AB的交集。
  2. SELECT * FROM test_a INNER JOIN test_b ON test_a.name =test_b.name
  3.  
  4. --2Full outer join:产生AB的并集。对于没有匹配的记录,则以null做为值。
  5. SELECT * FROM test_a FULL OUTER JOIN test_b ON test_a.name = test_b.name
  6.  
  7. --3Left outer join:产生表A的完全集,而B表中匹配的则有值,没匹配的以null值取代。
  8. SELECT * FROM test_a LEFT OUTER JOIN test_b ON test_a.name = test_b.name
  9.  
  10. --4Left outer join on where:产生在A表中有而在B表中没有的集合。
  11. SELECT * FROM test_a LEFT OUTER JOIN test_b ON test_a.name = test_b.name WHERE test_b.name IS NULL
  12.  
  13. --5RIGHT OUTER JOIN:产生表B的完全集,而A表中匹配的则有值,没匹配的以null值取代。
  14. SELECT * FROM test_a RIGHT OUTER JOIN test_b ON test_a.name = test_b.name
  15.  
  16. --6 right outer join on where:产生在B表中有而在A表中没有的集合。
  17. SELECT * FROM test_a RIGHT OUTER JOIN test_b ON test_a.name = test_b.name WHERE test_a.name IS NULL
  18.  
  19. --7FULL OUTER JOIN WHERE:产生(A表中有但B表没有)和(B表中有但A表中没有)的数据集。
  20. 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,存储过程采用临时表存储查询结果

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

26,插入数据

  1. --插入一条记录
  2. insert into A select '','','',''
  3.  
  4. --批量插入记录
  5. insert into A
  6. select '','','',''
  7. union all
  8. select '','','',''
  9. union all
  10. select '','','','

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

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

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

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

29,获取长度

  1. char_length返回的是字符数
  2. datalength返回的是字节数
  3. --获取字段最大值的最后一位值,null则取'0'
  4. 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,获取第一条数据,并拆分、截取字符串

  1. --获取第一条记录,并且截取字符串的X后的数字
  2. --因为max()函数对字符的获取,异常
  3. select top 1 t.pk_org,
  4. --获取X字符的位置
  5. charindex('X',t.pk_org),
  6. --获取X字符后的数字
  7. char_length(t.pk_org),substring(t.pk_org, charindex('X',t.pk_org)+1 ,char_length(t.pk_org)) as x_zf,
  8. --case ... when
  9. 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,
  10. --字符转数字
  11. 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
  12. from dba.t_test t where t.pk_corp='' order by char_length(t.pk_org) desc,t.pk_org desc

结果:

31,查询表对应的主键:

  1. select o.name as 表名, i.column_name as 主键列名 from sysobjects o,syscolumn i
  2. 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. 64位ubuntu下用code::blocks IDE配置opengl开发环境

    http://jingyan.baidu.com/article/c74d60007d104f0f6b595d6d.html 样例程序: #include <GL/glut.h> #inc ...

  2. Parquet存储格式 - 论文翻译【转】

    Apache Parquet是Hadoop生态圈中一种新型列式存储格式,它可以兼容Hadoop生态圈中大多数计算框架(Mapreduce.Spark等),被多种查询引擎支持(Hive.Impala.D ...

  3. c++中new/operator new/placement new

    1. new/delete c++中的new(和对应的delete)是对堆内存进行申请和释放,且两个都不能被重载. 2. operator new/operator delete c++中如果想要实现 ...

  4. activemq 实战 一

    This chapter covers  Introduction to the use case for each of the book examples  Use of Maven for ...

  5. 【CSS系列】对表单和数据表格应用样式

    表格特有的元素: 1.summary和caption caption用作与表格的标题.summary应用于表格标签,用来描述表格的内容,于image标签的alt文本相似. 2.thead tbody ...

  6. LeetCode——Convert Sorted Array to Binary Search Tree

    Description: Given an array where elements are sorted in ascending order, convert it to a height bal ...

  7. Windows安装使用git

    下载安装Windows安装文档Git-2.16.2-64-bit双击安装(安装过程不详述) 打开git客户端 新建代码命令 mkdir /c/code 进入该目录(对应windows的c盘下面的目录) ...

  8. OpenPGP协议的一个JavaScript实现:OpenPGP.js

    OpenPGP.js 是OpenPGP协议的一个Javascript实现. 基于 JavaScript的OpenPGP实现方便用户可以直接在浏览器中加密和解密Web邮件,不需要专门的邮件客户端.

  9. python及numpy,pandas易混淆的点

    https://blog.csdn.net/happyhorizion/article/details/77894035 初接触python觉得及其友好(类似matlab),尤其是一些令人拍案叫绝不可 ...

  10. 浅谈vuex

    很多技术,刚接触的时候:这是啥?用的时候:哟嚯,是挺好用的!加以研究:卧槽,就是这么个逼玩意儿! 最近接手了一个别人写了1/5的vue项目(页面画了1/3,接口啥都没对); 对于表格中的数据项操作以及 ...