常用SQL_数据库查询总结1


SQLSERVER环境

一、增删改查

简单根据语句的作用,分类整理一下。

1、增(创建表、复制表、创建视图、创建存储过程)

--创建表
	CREATE TABLE TEST(
	    ID varchar (50) NOT NULL,
	    NAME varchar (50) NULL) ;

--复制表  与Oracle一致
  --复制表结构和数据
  CREATE TABLE USER4COPY AS SELECT * FROM USER;
  --复制表结构
  CREATE TABLE USER4COPY AS SELECT * FROM USER WHERE  1 = 2;

--创建视图
--判断是否存在
	IF EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME = 'VW_TEST')
	 DROP VIEW VW_TEST  --存在的话删除
	GO
	CREATE VIEW VW_TEST AS SELECT * FROM TEST1    
              
--创建存储过程
	IF (EXISTS (SELECT * FROM SYS.OBJECTS WHERE NAME = 'GETUSER')) 
	  DROP PROC GETUSER
	GO
	CREATE PROC GETUSER
	@ID INT --参数
	AS
	SET NOCOUNT ON;  --不返回计数,提高应用程序性能
	SELECT * FROM USER WHERE ID = @ID  --执行SQL语句
--调用存储过程
	EXEC GETUSER 201909260001;

2、删(删除表,删除行数据,清空表数据)

drop table 表名称
delete from 表名称 where 列名称 =truncate table 表名称;--清空

3、改(改行数据,改表结构,增加行数据)

update 表名称 set 字段='值' where 条件;
alter table FSSCOASQD add gdzt varchar(2);--增加字段
alter table FSSCOASQD add hetqdzje decimal(18,6) --增加字段
insert into test1(ID,NAME,SEX,AGE) values('1','1','1','1');

4、查

select * from 表名称 where 条件;
select distinct 字段名 from 表名称 where 条件;--去除重复值
select count(*) from user_tab_cols where table_name='表名';--查询表的列数
select table_name from user_tables;--查询所有表名称
select * from all_tables where owner='用户名';--查询用户名下所有表名称
select owner from dba_tables where table_name='表名称';--查询表的所有者
select count(*), LSBMZD_BMBH FROM LSBMZD GROUP BY  LSBMZD_BMBH HAVING  count(*)>1;-- 查询重复项及其次数
        
SQL server
select name from sysobjects where xtype='u' and name like '%wqsx%'
        
if exists (SELECT 1 FROM  sysobjects  WHERE  id = object_id('VM_ROYWSQCX') and type = 'V')         drop view VM_ROYWSQCX;--如果存在视图,则删除视图
        
select count(1) as col_Count FROM syscolumns WHERE id = OBJECT_ID('表名');--查表列数
                                                    
sp_help TBTZZB ;--展示表结构
sp_columns TBTZZB ;--展示表列
        
Oracle
select t.*, t.rowid from t;--通过rowid查看行数—rowid是每一行的唯一标识符

二、其他常用sql语句

1、insert和 select 结合实现“插入某字段在数据库中的最大值+1”

insert into ZZY_NBZZD(ID,ZYJE) values ('1111',(select max(ZYJE+1) from ZZY_NBZZD));

2、使用正则过滤查询结果(Oracle)

select BANKACCOUNTID from BANKACCOUNTS;
select BANKACCOUNTID from BANKACCOUNTS where regexp_replace(BANKACCOUNTID,'\d','') is not null;--过滤掉纯数字
select BANKACCOUNTID from BANKACCOUNTS where regexp_replace(BANKACCOUNTID,'^[-\+]?\d+(\.\d+)?$','') is not null;--过滤掉纯字母
--去掉not就变成筛选出纯数字和纯字母了

3、读取XML格式文件,openxml方法

declare @idoc int
declare @GoodsXml nvarchar(max);
set @GoodsXml='<OrderItemGoods>
<Goods><GoodsAttributeId>21</GoodsAttributeId><GoodsCount>2</GoodsCount><GoodsPrice>1.1</GoodsPrice><GoodsId>1</GoodsId></Goods>
<Goods><GoodsId>2</GoodsId><GoodsAttributeId>22</GoodsAttributeId><GoodsCount>2</GoodsCount><GoodsPrice>1.1</GoodsPrice></Goods>
<Goods><GoodsId>3</GoodsId><GoodsAttributeId>23</GoodsAttributeId><GoodsCount>2</GoodsCount><GoodsPrice>1.1</GoodsPrice></Goods>
</OrderItemGoods>'
exec sp_xml_preparedocument @idoc output, @GoodsXml ;
select
    T.GoodsId,
    T.GoodsAttributeId,
    T.GoodsCount,
    T.GoodsPrice
from
openxml(@idoc, '/OrderItemGoods/Goods',2)
with
(
  GoodsId bigint 'GoodsId',
  GoodsAttributeId bigint,
  GoodsCount int,
  GoodsPrice float
)as T
--where T.GoodsId=1
--系统sp_xml_removedocument删除SQLServer服务器内存中的XML数据
exec sp_xml_removedocument @idoc ;

5、日期类型

--1、日期作差(SQL server)
(select DateDiff (day,'2019-9-11 11:07:00.260',getdate()))--返回date2 与date1两个日期之间的差值 date2-date1
Year Yy yyyy 年 
Quarter Qq q 季 
Month Mm m 月
Day of year Dy y 一年的日数
Day Dd d 日
Weekday Dw w 一周的日数
Week Wk ww 周,
Hour Hh h 时
Minute Mi n 分钟
Second Ss s 秒
Millisecond Ms

--2、日期转换
CONVERT(VARCHAR(22), ROBXZT_ZTSJ, 120);--2019-07-02 16:35:03
select FORMAT(getdate(),'yyyy-MM-dd');--2019-10-11

6、字符串(替换)

SQL> select REPLACE('fgsgswsgs', 'fk' ,'j') from dual;--fgsgswsgs
SQL> select REPLACE('fgsgswsgs', 'sg' ,'eeerrrttt') from dual;--fgeeerrrtttsweeerrrttts

wahson 20191014

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值