1. 怎么用sql语句在已有表上设置复合主键
例如:x0dx0a已有一个表test_key,其中a1列为主键。x0dx0acreate table TEST_KEYx0dx0a(x0dx0a a1 VARCHAR2(3) not null,x0dx0a a2 VARCHAR2(3),x0dx0a b1 VARCHAR2(3),x0dx0a b2 VARCHAR2(3)x0dx0a);x0dx0a x0dx0aalter table TEST_KEYx0dx0a add constraint PK_TEST_KEY primary key (A1)x0dx0a using index;x0dx0a x0dx0a现在要将a2,b1也增加到主键中与原有的a1一起组成复合主键。语句如下:x0dx0aalter table TEST_KEYx0dx0a drop constraint PK_TEST_KEY cascade;x0dx0aalter table TEST_KEYx0dx0a add constraint PK_TEST_KEY primary key (A1, A2, B1)x0dx0a using index;x0dx0a x0dx0a这样就可以了。
2. SQL怎样可以复合查询
1.insert into [部门表](bm_id,bm_name)values(1,'bm1')
2.insert into [部门表](bm_id,bm_name)values(2,'bm2')
3.insert into [部门表](bm_id,bm_name)values(3,'bm3')
4.insert into [部门表](bm_id,bm_name)values(4,'bm4')
5.insert into [员工表](u_name,u_bm)values('q',3)
6.insert into [员工表](u_name,u_bm)values('q',4)
7.insert into [员工表](u_name,u_bm)values('q',1)
8.insert into [员工表](u_name,u_bm)values('q',2)
9.select max(bm_name),sum(1) from [部门表]left join [员工表] on bm_id=u_bm
3. sql 复合函数
在查询项中加上b.num
4. sql server 中 begin end 是什么意思
SQL Server中使用语言是T-SQL。在T-SQL中,Begin表示语句块的开始;End表示语句块的结束。Begin和End类似于C语言中表示语句块的左花括号{ 和右花括号 }
例如
if@i>100--判断
--如果条件成立,执行这个语句块
begin
selete*fromDevieInfowhereDeviceId=@i
print'筛选完毕!'
end
else
--如果条件不成立,执行这个语句块
begin
=@i
print'删除完毕!'
end
5. SQL复合查询 SELECT + UPDATA 急...
Select * from db where
select name='张三' where ID like'123%' and age =18
limit 30,30
更改野氏烂如为
Select * from db where name in(
select name='张三' where ID like'123%' and age =18 )
limit 30,30
不过这颂历散个只是查询
更新的话可以把select改为 updata
6. sql复合查询语句
selectt0.itemcode,t0.quantity--,t1.*,t1.docstatus,t1.canceled,t1.docdate
frompch1t0
leftjoinopcht1ont0.[DocEntry]=t1.[DocEntry]
where
t1.docdate<'2017-12-01'--条件1
andt0.itemcode='GD01002'-----条件2
union----关键部分,字段一样时,可以通过union链接成一个语句,当部分查询字段没有时,可以根据类型补空或者0
select--t0.itemcode,t0.quantity--,t1.*,t1.docstatus,t1.canceled,t1.docdate
sum(t0.quantity)
fromign1t0
leftjoinoignt1ont0.[DocEntry]=t1.[DocEntry]
WHERE
t1.docdate<'2017-12-01'--条件1
andt0.itemcode='GD01002'-----条件2
groupbyt0.itemcode
……--后面继续就行
--第二种,建临时表
if(object_id('temp..#a')>0)
droptable#a
createtable#a
(
itemcodevarchar(100),
quantityint,
docstatusint,
canceledint,
docdatedate
)
insertinto#a(quantity,docstatus,docstatus,canceled,docdate)
selectt0.itemcode,t0.quantity--,t1.*,t1.docstatus,t1.canceled,t1.docdate
frompch1t0
leftjoinopcht1ont0.[DocEntry]=t1.[DocEntry]
where
t1.docdate<'2017-12-01'--条件1
andt0.itemcode='GD01002'-----条件2
insertinto#a(quantity,docstatus,docstatus,canceled,docdate)
select--t0.itemcode,t0.quantity--,t1.*,t1.docstatus,t1.canceled,t1.docdate
sum(t0.quantity)
fromign1t0
leftjoinoignt1ont0.[DocEntry]=t1.[DocEntry]
WHERE
t1.docdate<'2017-12-01'--条件1
andt0.itemcode='GD01002'-----条件2
groupbyt0.itemcode
……--继续插入数据
--最后查询
select*from#a
--关于存储过程
Createprocsp_Test
(
@ddate,
@codevarchar(100)
)
as
begin
--这里只放一个语句,用于参数的示例,只需要将上面的语句放到存储过程中,并将参数替换就可以了
select--t0.itemcode,t0.quantity--,t1.*,t1.docstatus,t1.canceled,t1.docdate
sum(t0.quantity)
fromign1t0
leftjoinoignt1ont0.[DocEntry]=t1.[DocEntry]
WHERE
t1.docdate<@d--条件1
andt0.itemcode=@code-----条件2
groupbyt0.itemcode
end
7. sql查询 复合主键的查询语句怎么写
查询什么,哪个列组合是主键?sql语句复合主键有2种比较常用的写法
,假如表a
,是以a1,a2组合作为主键,一种是同时写出a1,a2条件,一种是a1||a2作为主键
8. 数据库中复合主键如何查询,sql 语句如何写
zwb12340 说的就是错的
首先来说一下你的这两种写法
1.这一个比较快,其实这是把两个SQL 拼接成1个SQL,但是在拼接的时候使用了UNION ,这个过程会排序去重复,这一点上会影响性能。可以把UNION 改成UNION ALL,UNION ALL不会排序去重,可能效率会更好一点
2.这一个不会太快,因为使用in的话,默认是不使用索引的,那么这一个过程会全表扫描,那么就很慢了(我这里说的索引是默认的B+树索引,是自动屏蔽的,如果是BITMAP索引的话,是会使用的),
对于你这个问题的解决,我给以下几个意见
1.首先把UNION改成UNION ALL试一试,看效率怎么样
2.检查是否在proct上有没有索引,尽量建一个索引
3.如果以上两个改进之后,还没效果的话,可以在这个表上,基于proct建立分区表,使用分区表的话,那么效果会比较明显
9. 求一个sql复合查询
select manager.id "编号",manager.name "姓名"
from emplyoee manager
where manager.id > (没看懂,你这个是什么意思亮歼物)
and manager.age<
(select employee.age from employee manager
where employee.manager=manager.id
);
经理编号大?是什敬液么意思啊,我这里改歼的理解是大于某个数