zoukankan      html  css  js  c++  java
  • SQL SERVER数据库基本语法汇总,仅代表个人整理,仅供参考

    以下SQL基本语法皆由本人整理,以下做一个汇总,关于游标,可作为了解,不要求掌握,其他查询、修改、删除操作等基本语法必须会使用。
    select * from [dbo].[TBICJE]
    select myktsqye+myktczze+mykttfze-myktxfze-myktye-mhkje+myjje,*from [dbo].[TBYKTPDB]
    select*from [dbo].[TBYKTPDBmx]
    -----所有医疗卡余额查询
    门诊查询日结 :SELECT * from YXHIS2016..TBYLKZHCZ201610 where CRJBH='1610000819' and czffs='现金'
    住院查询日结 : SELECT mje 金额, * from YXHIS2016..TBYJJL201611 WHERE DSJ>'2016-11-11 08:37:45' AND DSJ<'2016-11-14 17:07:53' and CSHRMC='1611000286' and czffs='银联卡'
    更新两张表里的某个字段:update TBZDMZYS set czcmc=(select czcmc from YXHIS..TBZDMZYS_bak where TBZDMZYS.ibm=TBZDMZYS_BAK.ibm)


    ---------------转换拼音码------------------------------
    UPDATE YXHQGL..tbwzzdwplb SET CPYM=YXHIS.DBO.GETPY(CMC)
    【1】、查询:
    select * from tbsystables where cmc='tbzdcycj'
    select * From YXHIS2017..tbylkzhcz201701 WHERE CCZY LIKE'%自助机%' ----自助机查询

    -----查询重复字段的语句--------
    Select * from TBXMFMBMX with(NoLock) where CMBBH='03031' AND CSFXMBM='JYK148'
    SELECT * FROM TBXMFMBMX with(NoLock) WHERE CMBBH='03031' AND CSFXMBM IN
    (SELECT CSFXMBM FROM TBXMFMBMX with(NoLock) WHERE CMBBH='03031' GROUP BY CSFXMBM HAVING COUNT(CSFXMBM)>1 )

    SELECT * FROM A--查询单表
    SELECT * FROM A UNION SELECT * FROM B UNION SELECT * FROM C--查询多表,UNION函数要求各表字段属性相同
    SELECT A.CSZ'药品编码',A.CMC'药品名称',B.MLSJ'零售价',B.NSL'数量' FROM YXHIS..TBYPXX A,YXHIS..TBYPKC01 B WHERE A.CSZ=B.CYPBM --联合查询

    【2】、根据条件修改
    UPDATE A SET CMC='1' WHERE CMC='2'

    【3】、批量替换:将A表CMC里面所有包含a替换成b而不影响其他内容
    UPDATE A SET CMC=REPLACE(CMC,'a','b')

    【4】、删除A表数据:
    DELETE FROM A--FROM 可不写,此为全部删除
    DELETE A WHERE CMC='1'--按条件删除
    TRUNCATE TABLE A--快速删除A表数据,快速格式化

    【5】、建立表
    CREATE TABLE A(CBM VARCHAR(6),CMC VARCHAR(10))--自定义建立
    SELECT * INTO A FROM B WHERE 1=2--快速根据B表建立,可作为对B表数据快速备份

    【6】、删除表
    DROP TABLE A

    【7】加字段:
    ALTER TABLE A ADD IBM INT--I开头的字段基本都是INT类型
    ALTER TABLE A ADD CMC VARCHAR(40)--C开头的字段基本都是VARCHAR类型

    ALTER TABLE [dbo].[TBSCBMXJL2016] ADD [NSSY] [numeric](18, 0) NULL
    ALTER TABLE [dbo].[TBSCBMXJL2016] ADD [NSSY2] [numeric](18, 0) NULL
    ALTER TABLE [dbo].[TBSCBMXJL2016] ADD [NSZY] [numeric](18, 0) NULL
    ALTER TABLE [dbo].[TBSCBMXJL2016] ADD [NSZY2] [numeric](18, 0) NULL
    ALTER TABLE [dbo].[TBSCBMXJL2016] ADD [NSPO2] [numeric](18, 0) NULL
    ALTER TABLE [dbo].[TBSCBMXJL2016] ADD [NCVP] [numeric](18, 0) NULL
    SELECT * FROM YSGZZ..TBSCBMXJLBQ111 WHERE 1=2
    SELECT * FROM YSGZZ..TBSCBMXJLBQ112 WHERE 1=2

    【8】修改字段长度:
    SQL SERVER : ALTER TABLE A ALTER COLUMN CMC VARCHAR(100)
    ORACLE: alter table test modify(name varchar(255));
    MYSQL: alter table test modify column name varchar(255);

    【9】删除字段:
    ALTER TABLE A DROP COLUMN CBZ

    【10】数据插入:
    INSERT INTO A(CBM,CMC) VALUES('1','测试')--单条数据插入
    INSERT INTO A(CBM,CMC)SELECT '1','测试'--单条数据插入
    INSERT INTO A(CBM,CMC)SELECT CBM,CMC FROM B--批量插入B中所有数据

    【11】数据截取:
    SELECT SUBSTRING(CSCCJ,2,10) ,* FROM TBYPKC03--从第二个字符开始往后截取数据
    SELECT LTRIM(CSCCJ) ,* FROM TBYPKC03--函数从字符串左侧删除空格或其他预定义字符。
    SELECT RTRIM(CSCCJ) ,* FROM TBYPKC03--函数从字符串右侧删除空格或其他预定义字符。

    【12】分组查询
    SELECT CBM FROM A GROUP BY CBM
    查找A中所有编码重复的数据
    SELECT * FROM A WHERE CBM IN(SELECT CBM FROM A GROUP BY CBM HAVING COUNT(CBM)>1)

    【13】计算:
    合计:
    SELECT SUM(MLSJ*NSL) MKCJE FROM TBYPKC03--查询库存总金额
    SELECT CYPBM,SUM(MLSJ*NSL) MKCJE FROM TBYPKC03 GROUP BY CYPBM --按药品编码分别统计各药品库存金额
    加减乘除:
    SELECT MGRJ+MLSJ,MLSJ-MGRJ,MGRJ*MLSJ,MLSJ/MGRJ FROM A

    【14】排序
    SELECT * FROM A ORDER BY CBM ASC--从小到大排序
    SELECT * FROM A ORDER BY CBM DESC--从大到小排序

    【15】将A表里面的MDJ四舍五入
    UPDATE A SET MDJ=ROUND(MDJ,2)

    【16】将表TBCWKFSY的CCH不足三位的数据加0,便于程序排序正常
    UPDATE TBCWKFSY SET CCH='00'+CCH WHERE LEN(CCH)<2
    UPDATE TBCWKFSY SET CCH='0'+CCH WHERE LEN(CCH)<3 AND LEN(CCH)>1

    【17】属性查看语句:
    SP_HELP TBYPXX--查看TBYPXX表属性,包括字段属性
    SP_HELPTEXT VTBZYBR--查看视图的文本取数属性。

    【18】数据转换:
    float转varchar格式数据:
    select CONVERT(VARCHAR(30),CONVERT(DECIMAL(30,0),cbm))cbm1,* from sheet8--从表格导入数据时会用
    时间转字符:
    select CONVERT(VARCHAR(7),dyxq,121),* from TBYPKC03--取年月
    select CONVERT(VARCHAR(10),dyxq,121),* from TBYPKC03--取年月日

    【19】导数据时自定义从某个数字排列:
    自定义从某个数字排列:如将库存编码从3730开始往后排序
    select identity(int,3730,1) IKCBM1,* into sheet2 from TBYPKC03

    【20】CASE语法:
    将TBYPXX里面CYPZLFL只区分西药和其他:以下两种语法皆可使用
    select CASE CYPZLFL WHEN'西药'THEN'西药'WHEN'中成药'THEN'西药'ELSE '其他'END from tbypxx
    select CASE WHEN CYPZLFL='西药'THEN'西药'WHEN CYPZLFL='中成药'THEN'西药'ELSE '其他'END from tbypxx

    【21】后台将测试库的报表数据导入正式库,不同服务器间数据操作:

    --创建链接服务器
    exec sp_addlinkedserver 'ITSV' , '' , 'SQLOLEDB' , '10.10.2.200'
    exec sp_addlinkedsrvlogin 'ITSV' , 'false' , null , 'sa' , '123qwe,.' --账号密码

    --查询示例
    select * from ITSV.yxhis.dbo.tbreportxx where cbbmc='自助机住院费用明细表'
    select * from yxhis.dbo.tbreportxx where cbbmc='自助机住院费用明细表'

    --从测试库里面修改正式库报表内容示例:
    UPDATE b SET MDATA=a.MDATA FROM YXHIS..TBREPORTXX A,ITSV.YXHIS.dbo.TBREPORTXX B WHERE A.CID=B.CID AND B.CBBMC='门诊长期医嘱单'
    --数据导入示例
    insert into ITSV.YXBADB_ICD10.dbo.TBSJKZH_GJ select * from YXBADB_ICD10.dbo.TBSJKZH_GJ
    select * into 表 from ITSV.数据库名.dbo.表名


    【22】游标简单使用:
    简单了解:
    use yxhis
    go
    DECLARE CurTable CURSOR /*定义一个游标*/
    FOR
    SELECT name FROM sysobjects where name like 'TBZD%' AND TYPE='U' /*设置游标取数来源*/
    OPEN CurTable /*打开游标*/
    DECLARE @TBNAME VARCHAR(20),@CSQL VARCHAR(5000) /*定义两个局部变量@TBNAME和@CSQL*/
    FETCH NEXT FROM CurTable INTO @TBNAME /*将数据放入局部变量@TBNAME中*/
    WHILE (@@FETCH_STATUS <> -1) /*@@为全局变量0表示上一个FETCH执行成功,-1所要读取的行不在结果集中,-2被提取的行已不存在(已被删除)*/
    BEGIN
    begin
    SET @CSQL='IF EXISTS(SELECT * FROM '+@TBNAME+') PRINT(''SELECT * FROM '+@TBNAME+''')'
    EXEC (@CSQL)
    end
    FETCH NEXT FROM CurTable INTO @TBNAME
    END
    CLOSE CurTable /*关闭游标*/
    DEALLOCATE CurTable /*删除游标*/

    游标使用:
    用游标改字段长度:
    DECLARE CurTable CURSOR
    FOR

    select a.name from sysobjects a,syscolumns b
    where a.id=b.id and b.name='CSFZL' and a.type='U' and a.name like 'tbzy%'---所有表名为TBZY开头的表里面的包含CSFZL字段都会修改

    OPEN CurTable
    DECLARE @TBNAME VARCHAR(20)
    FETCH NEXT FROM CurTable INTO @TBNAME
    WHILE (@@FETCH_STATUS <> -1)
    BEGIN
    if exists (select * from sysobjects where name=@TBNAME)
    EXEC('alter table '+@TBNAME+' ALTER COLUMN CSFZL varchar(20)')
    FETCH NEXT FROM CurTable INTO @TBNAME
    END
    CLOSE CurTable
    DEALLOCATE CurTable
    GO


    ---------------------------------------------------------------------------------
    现在要删除表1中含有表2中id的数据,可用以下语句

    delete from 表1YXHQGL..seet5 where cbm in(select cbm from 表2YXHQGL..tbwzzdwplb)

    现在要删除表1中id和name同时等于表2中id和name的数据,可用以下语句:
    1
    delete from 表1 where exists (select 1 from 表2 where 表1.id=表2.id and 表1.name=表2.name);


    -------------------------------------------------------------------------------------------------------------
    select * from yxhqgl..tbwzzdkw
    select * from yxhqgl..tbwzwpkc_01 order by ikcbm desc

    insert yxhqgl..tbwzwpkc_01
    drop table a

  • 相关阅读:
    LAMP应用 wdlinux 配置文件
    Linux mysql忘记root密码
    vim 编辑器 常用的设置
    Virtual PC(VPC)虚拟机安装CentOS 6.0网络配置
    缓存系统memcache的安装,配置和使用
    CentOS 去掉Last login提示/系统欢迎信息
    configure: error: GD build test failed. Please check the config.log for details.
    Centos 6.0 yum 更新源
    MySQL is running but PID file is not found
    Visual Studio快速开发以及Visual Studio 2010新功能介绍
  • 原文地址:https://www.cnblogs.com/since-1995/p/10797147.html
Copyright © 2011-2022 走看看