常用sql语句

/*表操作*/

drop table order;

create table products(
product_no integer primary key default 1,
name text,
price numeric default 9.99
);

create table orders (
order_id integer primary key default 1,
product_no int,
quantity integer
);

create table order_items(
product_no int references products(product_no) on update set default 9,
order_id int references orders(order_id) on update set default 9,
quantity int,
primary key(product_no,order_id)
);

insert into products values(2,'aaa',10.00),(3,'bbb',18.00);
insert into orders values(2,2,50),(3,3,80);
insert into order_items values(2,3,70),(3,2,80);

update products set product_no=4 where product_no =2;
delete from orders where order_id =2;

alter table products drop description cascade;
alter table orders alter column order_id set default 004;

create table circles(
c circle,
exclude using gist(c with &&)
);
 
alter table products add check(name <>'');
alter table products add constraint some_name unique(name);
alter table orders add constraint test foreign key (quantity) references products(product_no);
alter table products drop constraint some_name;
alter table products alter column name set not null;
alter table products alter column name drop not null;
alter table products alter column product_no set default 100;
alter table products alter column product_no drop default;
alter table products alter column price type numeric(10,3);
alter table products rename column product_no to p_no;
alter table order_items rename to items;
alter table items owner to joe;
grant update on items to wang;
revoke delete on items from wang;
grant select,update,delete,insert on items to admin;
grant select(col1),update(col2) on items to joe;

alter table items enable row level security;
create policy items_manager on items to wang using(quantity<100);

drop table circles;
drop table people;
drop table items;
drop table products cascade;
drop table orders;

/*模式*/
create schema schema1;
create table schema1.test1(name text);
drop schema schema1;
drop schema schema1 cascade;
/*显示当前搜索路径*/
show search_path;
set search_path to schema1,public;
/*schema1是搜索路径中第一个元素,新对象会默认创建在schema1模式下*/
create table test1(id smallint);
create role wang5;
revoke create on schema schema1 from wang5;

/*继承*/
create table cities(
name text,
pop float,
altitude int
);
create table capitals(
state char(2)
)inherits(cities);
insert into cities values('Las Vegas',10000,56),('Mari',2100,45),('Madanana',4587.56,12);
insert into capitals values('Las Vegas',10000,56,'hh'),('Mari',2100,45,'dd'),('Las hdhdh',10780,56,'lo');
select name,pop from cities where altitude > 10;
select name,pop from only cities where altitude > 10;


/*分区表*/
create table mea(
cityid int not null,
logdate date not null,
peaktmp int,
unitsales int
)partition by range(logdate);
create table mea_y2022m01 partition of mea for values from('2022-01-01') to ('2022-01-31');
create table mea_y2022m02 partition of mea for values from('2022-02-01') to ('2022-02-28');
create table mea_y2022m03 partition of mea for values from('2022-03-01') to ('2022-03-31');
create table mea_y2022m04 partition of mea for values from('2022-04-01') to ('2022-04-30') partition by range(peaktmp);
create index on mea(logdate);
alter table mea detach partition mea_y2022m04;
insert into mea values(111,'2022-01-20',120,9),(222,'2022-01-22',130,8),(333,'2022-02-15',150,74),(444,'2022-03-01',145,14),(555,'2022-03-05',162,85);
CREATE TABLE mea_y2022m05
(LIKE mea INCLUDING DEFAULTS INCLUDING CONSTRAINTS)
TABLESPACE fasttablespace;
alter table mea attach partition mea_y2022m05 for values from('2022-05-01') to ('2022-05-31');
create index index_m01 on mea_y2022m01(unitsales);
alter index index_m01 attach partition mea_y2022m01;
drop index index_m01;
/*使用继承实现分区*/
create table mea1(
cityid int not null,
logdate date not null,
peaktmp int,
unitsales int
);
create table mea_y2022m05() inherits(mea1);
create table mea_y2022m06() inherits(mea1);
create table mea_y2022m07(check(logdate>=date'2022-07-01' and logdate<=date'2022-07-31'))inherits(mea1);
create index in_m05 on mea_y2022m05(logdate);
create index in_m06 on mea_y2022m06(logdate);
create index in_m07 on mea_y2022m07(logdate);
alter table mea_y2022m06 no inherit mea1;
drop table mea_y2022m07;

update cities set pop=10000.25 where pop=10000;
update cities set altitude=altitude +1;
update cities set pop=10000,altitude =55 where pop=10000.25;

insert into cities values('hdhdh',56985,76) returning name;
delete from cities where name='Las hdhdh' returning pop;
delete from cities where name='hdhdh' returning *;
select 10+5;

/*查询*/
create table test1(
    num int,
    name varchar(10)
);
create table test2(
    num int,
    value varchar(10)
);
insert into test1 values(1,'a'),(2,'b'),(3,'c');
insert into test2 values(1,'xxx'),(3,'yyy'),(5,'zzz');
select * from test1 cross join test2;
select * from test1 inner join test2 on test1.num=test2.num;/*num不会聚合成一列*/
select * from test1 inner join test2 using(num);/*num聚合成一列*/
select * from test1 natural inner join test2;/*num聚合成一列,natural根据在两个表里都出现的列去聚合*/
select * from test1 left join test2 on test1.num=test2.num;/*num不会聚合成一列*/
select * from test1 right join test2 using(num);
select * from test1 full join test2 on test1.num=test2.num;
select * from test1 left join test2 on test1.num=test2.num and test2.value='xxx';/*返回3行*/
select * from test1 left join test2 on test1.num=test2.num where test2.value='xxx';/*返回1行*/

select * from dblink('dbname=mydb','select proname,prosrc from ux_proc') as t1(proname name,prosrc text) where proname like'bytea%';
/*如果get_product_names()返回一个制造商制造的产品的名字,但是某些制造商在我们的表中目前没有制造产品,我们可以找出哪些制造商是这样:*/
select m.name from manufactures m left join lateral get_product_names(m.id) pname on true where pname is null;
select * from test1 where num in (1,2,3);
select * from test1 where num in (select num from test2);
select * from test1 where num between 1 and 3;
select * from test1 where exists(select num from test1 where num>3);/*exists条件为真,则执行前面的查询,否则不执行;查询结果为空*/
select * from test1 where exists(select num from test1 where num>2);/*查询结果为test1表*/

create table test3(x char,y int);
insert into test3 values('a',3),('c',2),('b',5),('a',1);
select x from test3 group by x;
select x,sum(y) from test3 group by x;
select x,sum(y) from test3 group by x having sum(y)>3;
select brand,size,sum(sales) from items_sold group by grouping sets((brand),(size),());
rollup(e1,e2,e3)等效于grouping sets((e1,e2,e3),(e1,e2),(e1),())
cube(e1,e2,e3)等效于grouping sets((e1,e2,e3),(e1,e2),(e1,e3),(e1),(e2,e3),(e2),(e3),())
/*CUBE或ROLLUP子句中的元素可以是表达式或者 圆括号中的元素子列表。在后一种情况中,对于生成分组集的目的来说,子列表被当做单一单元来对待*/
cube((a,b),(c,d))等效于grouping sets((a,b,c,d),(a,b),(c,d),())
rollup(a,(b,c),d)等效于grouping sets((a,b,c,d),(a,b,c),(a),())
query1 union query2;
query1 intersect query2;
query1 except query2;
with regional_sales as(select region,sum(amount) as total_sales from orders group by region),
top_region as(select region from regional_sales where total_sales>(select sum(total_sales)/10 from regional_sales)
select region,product,sum(quantity) as product_units,sum(amount) as product_sales from orders where region in (select region from top_region) group by region,product;
/*通过使用recursive,一个with 查询可以引用它自己的输出*/
with recursive t(n) as (values(1) union all select n+1 from t where n<100)  select sum(n) from t;
with moved_rows as(delete from products where "date">='2010-10-01' and "date"<'2010-11-01' returning *) insert into products_log select * from moved_rows;


/*兼容性语法*/
/*ux*/create synonym table synt1 on test1; /*创建同义词失败*/
/*uxdb*/create synonym table synt1 on test1; 
/*ora*/create synonym table synt1 on test1;/*创建同义词成功*/
/*oracle*/create synonym table synt1 on test1;
set ora_grammar=on;/*打开兼容语法开关*/
show ora_grammar;

/*同义词(synonym)是表、索引、视图等模式对象的一个别名*/
create synonym synt2 for test2;
select * from ux_synonym;
select * from synt2;
show running_mode;
create view vw1 as select name from test1 where num<=3;
create synonym synv1 for vw1;
create function add(int,int,int) returns int as 'select $1+$2+$3;' language sql;
create synonym s1 for add(int,int,int);
select * from s1(1,2,3);
drop synonym synt2;
drop synoym vw1;

/*+语法*/
select * from test1 left join test2 on test1.num=test2.num;
select * from test1,test2 where test1.num=test2.num(+);
select * from test1 right join test2 on test1.num=test2.num;
select * from test1,test2 where test1.num(+)=test2.num;

/*子查询支持无别名*/
select * from(select name from test1 where num<=3) as a;
select * from(select name from test1 where num<=3);
select name,age from(select * from(select * from parent where id>1)) where age>40;
select name,age from(select * from(select * from parent where id>1) a1)where gae>40;
select name,age from(select * from(select * from parent where id>1) a1) a2 where gae>40;
select name,age from(select * from(select * from parent where id>1)) a2 where gae>40;

/*分页查询,limit x,y等价于limit y offset x 或者offset x limit y*/
select id,name,score from students order by score desc limit 3 offset 2;
select id,name,score from students order by score desc limit 2,3;
select id,name,score from students order by score desc offset 2 limit 3;
select id,name,score from students order by score desc limit 2+1 offset 2;
select id,name,score from students order by score desc offset 2;

/*约束名省略*/
alter table test1 add constraint check(num>0);
alter table test1 add constraint primary key(num);
alter table circles add constraint exclude using gist(c with &&);

/*非聚簇索引:以not cluster primary key约束条件,实现建立非聚簇索引的表*/
create table cluster_table1(id int not cluster primary key,name varchar(20));
/*默认不加not cluster语法所建立的同样是非聚簇索引的表*/
create table cluster_table1(id int primary key,name varchar(20));

/*序列,就是用create sequence创建的特殊的单行表*/
create sequence test_seq;
create table t4(id int);
insert into t4 values(test_seq.nextval);
select test_seq.nextval;
select nextval(test_seq);

/*在兼容模式下支持distinct与order by子查询逆序排序*/
select distinct * from(select id from test4 order by id desc);

/*case when语法*/
select case id when 1 then 'abc' when 2 then '123' else 'a1b2c3' end from t4;
select case when id=1 then 'abc' when id=2 then '123' else 'a1b2c3' end from t4;

/*delete不加from*/
delete test1 where num=3;
delete test1;

/*group by支持出现语义不明确的列*/
set sql_mode='';
set sql_mode='only_full_group_by';/*需要定义语义明确的列*/
select a,b from tab order by c;
select a,b from tab group by c;
select a,b from tab having d<5;
select a,b from tab group by a,e having e>5 order by b;
select distinct a,b from tab having c>4;
select distinct a,b from tab group by a having d>5 order by c;
select 1 as one from tab having 2<3;
select avg(1) from tab having 2<1;

/*insert all/first*/
create table sample(id varchar,data real,no int);
create table sampl1(id varchar,data real,no int);
create table sampl2(id varchar,data real,no int);
create table sampl3(id varchar,data real,no int);
insert into sample(id,data,no) values('111111', 11.11, 1);
insert into sample(id,data,no) values('222222', 22.22, 2);
insert all into sample1(id,data,no) values(id,data,no) select id,data,no from sample;/*无when条件*/
insert all when no<5 then into sampl1 values(id,data,no) when data<70 then into sample2 values(id,data,no) else into sample3 values(id,data,no) select * from sample;/*有when条件*/
/*insert first是考虑先后关系的,如果有数据满足第一个when条件又满足第二个when条件,则执行第一个then插入语句,第二个then就不插入第一个then已经插入过的数据了*/
insert frist when no<5 then into sample1 values(id,data,no) when data<70 then into sample2 values(id,data,no) else into sample3 values(id,data,no) select * from sample;

/*merge into:从一个或多个源中选择行以进行更新或插入到表或视图中,同时对多个需要更新的表进行更新、插入操作*/
merge into ta using(select aid,name,year from tb)tc on ta.id=tc.aid 
when matched then update set ta.year=tc.year
when not matched then insert(id,name,year) values(tc.aid,tc.name,tc.year);
merge into ta using(select tb.aid,tb.name,tb.year from tb)tc on ta.id=tc.aid 
when matched then update set ta.year=tc.year where aid=2;

/*q`转义字符:可以在输入特殊符合时不需要增加转义符号,q/Q+两个单引号+两个界定符*/
select q'!name like '%dbms_%'!';
select Q'*!名称类似'%dbms%%'!*';
insert into tab1 values(1,q'[!name like ''%dbms_%%!]');

/*rownum<3等价于limit2*/
select rownum,* from t4;
select rownum,* from t4 where rownum>1;
select rm from (select rownum as rm,id form t4 order by id desc)t;

/*storage,指定创建表的表空间*/
create tablesapce tblspc owner uxdb location'/home/uxdb/uxdbinstall/dbsql/bin/mysapce';
create table t_stroage(id int) storage(on tblspc,clusterbtr);
drop table t_storage;
drop tablespace tblspc;

/*top子句:top n 表示选择结果集的前n条记录,top n,m 表示选择第n条记录之后的m条记录*/
select top 1,3 * from test1;
select top 2,5 id from test1;
select top 3 id,name form test1;

/*update语句支持使用别名*/
update test1 as t1 set test1.col1=3,t1.col2='wangwu' where col1=3;
update test1 as t1 set test1.col1=3,t1.col2='wangwu' where t1.col1=3;
update test1 as t1 set test1.col1=3,t1.col2='wangwu' where test1.col1=3;/*failed,在提供了一个别名时,它会完全隐藏表的真实名称*/

/*约束管理:enable、disable、disable validate、disable novalidate、enable validate、enable novalidate*/
alter table test1 enable constraint constraint_name;
alter table test1 enable validate constraint cinstraint_name;

/*minus关键字使两个同类型结果集之间做差运算,返回位于第一个结果集但不在第二个结果集中的行*/
select * from test1 minus select * from test;
select * from test1 except select * from test;

/*systimestamp:返回timestamptz类型,该时间包含时区信息,精确到微秒*/
select systimestamp;
select  systimestamp-systimestamp;

/*层次查询 with query:START WITH condition、CONNECT BY condition、ORDER SIBLINGS BY expression ...*/
create table player(keyid int,parent_keyid int,name varchar(16),salary int,sex varchar(4));
insert into player values(1,0,'zhangsan','1000000','f');
insert into player values(2,1,'lisi','50500','m');
insert into player values(3,1,'wangwu','60000','m');
insert into player values(4,1,'houzi','65000','m');
insert into player values(5,2,'maliu','30000','f');
insert into player values(6,2,'liuqi','25000','m');
insert into player values(7,4,'gouba','23000','m');
insert into player values(8,4,'dujiu','21000','f');
/*自上而下遍历*/
select keyid,parent_keyid,name,prior name,salary from player start with keyid=1 connect by prior keyid=parent_keyid;
/*自下而上遍历*/
select keyid,parent_keyid,name,salary from player start with keyid=6 connect by prior parent_keyid=keyid;
 

/*将数据库sql测试结果输出到文件里*/

vim test,将测试步骤粘贴进去并保存

./uxsql -p 5647 -W -f test > jj 2>&1

cat jj

/*dblink,数据库A去连接B*/

A端进入集群目录,vim uxsinodb.conf,修改shared_preload_libraries='orafce,database_link';重启集群,创建插件

create extension if not exists uxdb_fdw;

create extension if not exists database_link;

create schema if not exists uxdbc_oracle_syntax_placeholder_0058_sch01;

set search_path to uxdbc_oracle_syntax_placeholder_0058_sch01;

drop database link if exists uxdbc_oracle_syntax_placeholder_0058_link01;

B数据库所在虚拟机192.71.0.181、集群端口6503、密码1qaz!QAZ,B数据库集群存在UXDB用户,密码是1qaz!QAZ,并创建表xdual(id  int,name varchar(10)),插入1条数据。

CREATE DATABASE link uxdbc_oracle_syntax_placeholder_0058_link01 CONNECT TO 'UXDB' IDENTIFIED BY '1qaz!QAZ' USING (connstr='192.71.0.181:6503/UXDB',dbtype='uxdb');

select name from xdual@uxdbc_oracle_syntax_placeholder_0058_link01 where id=1;

/*postgresql导出sql执行结果到文件的方法*/

在psql中首先执行\o filename,然后执行要导出结果的sql语句即可,可以看到刚刚执行的sql执行结果已经在filename中了

\o /tmp/test.txt

select hex(t1) from table01 where id=5 order by id;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/112876.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

目标检测:Proposal-Contrastive Pretraining for Object Detection from Fewer Data

论文作者&#xff1a;Quentin Bouniot,Romaric Audigier,Anglique Loesch,Amaury Habrard 作者单位&#xff1a;Universit Paris-Saclay; Universit Jean Monnet Saint-Etienne; Universitaire de France (IUF) 论文链接&#xff1a;http://arxiv.org/abs/2310.16835v1 内容…

ztree调整节点间距及一般使用

1.基本介绍 树形结构菜单的功能属于非常常见的一种菜单交互&#xff0c;本人先后也使用过多种树形结构的插件&#xff0c;有 ztree、xloadtree、treeview、datagrid-tree 等等等等。近期有个功能恰好又要使用tree菜单了&#xff0c;由于可自行选择使用的组件&#xff0c;所以略…

微信小程序 人工智能志愿者服务活动报名系统uniAPP+vue

基于java语言设计并实现了人工智能志愿者服务APP。该APP基于B/S即所谓浏览器/服务器模式&#xff0c;应用SpringBoot框架与HBuilder X技术&#xff0c;选择MySQL作为后台数据库。系统主要包括用户、志愿活动、活动报名、活动签到、服务职责、服务排行等功能模块。 本文首先介绍…

【2021集创赛】Risc-v杯一等奖:自适应噪声环境的超低功耗语音关键词识别系统

本作品参与极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动。 团队介绍 参赛单位&#xff1a;东南大学 队伍名称&#xff1a;Hey Siri 指导老师&#xff1a;刘波 参赛队员&#xff1a;钱俊逸、张人元、王梓羽 总决赛奖项&#xff1a;全国一等奖 摘要…

数字孪生技术:金融业合规与自动化的未来

在当今数字化时代&#xff0c;金融行业正积极探索数字孪生技术&#xff0c;以实现更高效的运营和更好的客户体验。数字孪生是一种将实体世界的对象、过程和系统数字化为虚拟模型的技术&#xff0c;金融机构正在充分利用它带来的众多优势。 1. 风险管理与模拟 数字孪生模型可用…

docker部署minio并使用springboot连接

需求&#xff1a;工作中&#xff0c;在微信小程序播放时&#xff0c;返回文件流并不能有效的使用&#xff0c;前端需要一个可以访问的地址&#xff0c;springboot默认是有资源拦截器的&#xff0c;但是不适合生产环境的使用 可以提供使用的有例如fastdfs或者minio&#xff0c;这…

Flutter 05 组件状态、生命周期、数据传递(共享)、Key

一、Android界面渲染流程UI树与FlutterUI树的设计思路对比 二、Widget组件生命周期详解 1、Widget组件生命周期 和其他的视图框架比如android的Activity一样&#xff0c;flutter中的视图Widget也存在生命周期&#xff0c;生命周期的回调函数体现在了State上面。组件State的生命…

QT实现在线流媒体播放平台

文章目录 QT实现在线流媒体播放平台简介开发视频ffmpeg下载SimpleVideoPlayer.hSimpleVideoPlayer.cpp 开发音频添加功能打开文件夹播放暂停播放上下一首选择倍速 效果展示项目下载 QT实现在线流媒体播放平台 简介 Qt是一种流行的C开发框架&#xff0c;它提供了用于构建图形用…

FPGA_Signal TapII 逻辑分析仪 在线信号波形抓取

FPGA_Signal TapII 逻辑分析仪 在线信号波形抓取 由于一些工程的仿真文件不易产生&#xff0c;所以我们可以利用 quartus 软件自带的 SignalTap 工具对波形进行抓取 对各个信号进行分析处理&#xff0c;让电子器件与FPGA进行正常通讯工作&#xff0c;也验证所绘制的波形图是否一…

Scala库用HTTP爬虫IP代码示例

根据提供的引用内容&#xff0c;sttp.client3和sttp.model库是用于HTTP请求和响应处理的Scala库&#xff0c;可以与各种Scala堆栈集成&#xff0c;提供同步和异步&#xff0c;过程和功能接口。这些库可以用于爬虫程序中&#xff0c;用于发送HTTP请求和处理响应。需要注意的是&a…

JavaScript从入门到精通系列第二十七篇:详解JavaScript中的包装类

大神引荐&#xff1a;作者有幸结识技术大神孙哥为好友获益匪浅&#xff0c;现在把孙哥视频分享给大家 孙哥链接&#xff1a;孙哥个人主页 作者简介&#xff1a;一个颜值99分&#xff0c;只比孙哥差一点的程序员 本专栏简介&#xff1a;话不多说&#xff0c;让我们一起干翻JavaS…

vue自定义组件:中线分割拖动盘

在GitHub上可以找到类似的组件&#xff0c;比如4年前发布的vue2版本的 Vue Split Pane&#xff0c; 但是我还是自己写了一个类似的&#xff1a; 组件效果&#xff1a; 特点&#xff1a; 不是照抄别人的。同时支持vue2、vue3&#xff08;组件内部使用选项式API风格&#xff09…

不一样的网络协议-------KCP协议

1、kcp 的协议特点 1.1、RTO 不翻倍 RTO(Retransmission TimeOut)&#xff0c;重传超时时间。tcp x 2&#xff0c;kcp x 1.5&#xff0c;提高传输速度 1.2、选择重传 TCP丢包时会全部重传从该包开始以后的数据&#xff0c;而KCP选择性重传&#xff0c;只重传真正丢失的数据包…

同为科技(TOWE)自动断电倒计时定时桌面PDU插排

在每个家庭中&#xff0c;插排插座都是必不可少的电源设备。随着各种电器的普及应用和生活节奏的加快&#xff0c;人们对插排也有着多样化的需求&#xff0c;比如在插排中加入定时开关、自动断电、断电记忆、倒计时等等功能&#xff0c;让原本不支持智能家居的用电器秒变智能。…

DL4J无法下载MNIST数据集解决 Server returned HTTP response code: 403 for URL解决方法

报错情况 报错如下&#xff1a; 16:45:41.463 [main] INFO org.nd4j.nativeblas.Nd4jBlas - Number of threads used for OpenMP BLAS: 6 16:45:41.497 [main] INFO org.nd4j.linalg.api.ops.executioner.DefaultOpExecutioner - Backend used: [CPU]; OS: [Windows 10] 16:4…

Android 驱动学习调试

1 Android 驱动代码编译 参考https://www.sharetechnote.com/html/Linux_DeviceDriver_Programing.html#Device_Driver_HelloWorld编译ko文件调试驱动代码&#xff0c;将ko文件push到手机上验证 相关C文件testdriver.c #include <linux/init.h> #include <linux/mod…

云安全—kubelet攻击面

0x00 前言 虽然说总结的是kubelet的攻击面&#xff0c;但是在总结攻击面之前还是需要去了解kubelet的基本原理&#xff0c;虽然说我们浅尝即止&#xff0c;但是还是要以能给别人讲出来为基本原则。 其他文章: 云安全—K8s APi Server 6443 攻击面云安全—K8S API Server 未授…

08-Docker-网络管理

Docker 在网络管理这块提供了多种的网络选择方式&#xff0c;他们分别是桥接网络、主机网络、覆盖网络、MACLAN 网络、无桥接网络、自定义网络。 1-无桥接网络&#xff08;None Network&#xff09; 当使用无桥接网络时&#xff0c;容器不会分配 IP 地址&#xff0c;也不会连…

SpringCloud 微服务全栈体系(十)

第十章 RabbitMQ 一、初识 MQ 1. 同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得…

Sci Immunol丨Tim-3 适配器蛋白 Bat3 是耐受性树突状细胞

今天和大家分享一篇发表于2022年3月的文章&#xff0c;题目为“Tim-3 adapter protein Bat3 acts as an endogenous regulator of tolerogenic dendritic cell function”&#xff0c;发表在《Sci Immunol》杂志上。文章主要研究了Tim-3和其适配蛋白Bat3在调节免疫应答中的作用…