关于数据库SQL语言

关于数据库SQL语言,第1张

USE [lianxi]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo][School](

[Sno] [int] NOT NULL,

[Sname] [bit] NOT NULL,

[Sage] [int] NULL,

[Sdept] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,

CONSTRAINT [PK_Schoo] PRIMARY KEY CLUSTERED

(

[Sname] ASC,

[Sno] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

用MySQL测试通过,尽量写标准SQL,如果是其他数据库,应该可以通过或稍加修改即可通过。

13

select

t2sname

from

sp

t1

left

join

s

as

t2

on

t1sno=t2sno

left

join

p

t3

on

t1pno=t3pno

where

t3color='red'

group

by

t2sname

14

select

sno,sname,status

from

s

where

city='BJ'

15

select

sum(t1qty)

from

sp

t1

left

join

p

t2

on

t1pno=t2pno

where

t2pname='p2'

16

update

p

set

weight=100

where

pname='p2'

17

update

p

set

color='yellow'

where

pname='p2'

18

select

t2sn

from

spj

t1

left

join

s

t2

on

t1sno=t2sno

left

join

p

t3

on

t1pno=t3pno

left

join

j

t4

on

t1jno=t4jno

where

t3color='red'

and

t4jn='j1'

group

by

t2sno

19

select

t2jn

from

spj

t1

left

join

j

t2

on

t1jno=t2jno

left

join

s

t3

on

t1sno=t3sno

left

join

p

t4

on

t1pno=t4pno

where

t3sn='s1'

group

by

t2jno

20

select

t2pn

from

spj

t1

left

join

p

t2

on

t1pno=t2pno

left

join

s

t3

on

t1sno=t3sno

left

join

j

t4

on

t1jno=t4jno

where

t3city=t4city

group

by

t2pno

exists 是存在判断,返回true或false,如下:

select from a where exists (select 1 from b where aid=bpid)

这句话的意思是,查询a表里的数据,找到的所有数据符合这个条件:在b表中能到一条数据,且bpid=aid。

而select from a where not exists (select 1 from b where aid=bpid)

则是查询a表里的数据,找到的所有数据都不符合这个条件:在b表中能到一条数据,且bpid=aid。

这么说明白吧,这样再看你写的语句就是这个意思:

查找s表中的son字段,这些数据能够在c表中找到符合这个条件的记录:cteacher='liu',并且不符合条件“sc表中的scsno=ssno and sccn=ccno”

主要是我上面讲的,如果你理解了,你写的语法只是多了一层,仔细想下就明白了。

首先,EXISTS和NOT EXISTS强调的是是否返回结果集,不要求知道返回什么。

而NOT EXISTS引导的语句如果没有结果集返回,那么WHERE条件就成立。

好,一定先记住这一点。

然后往下分析。

最内层的条件WHERE PNO=PPNO AND SNO=SSNO,是对商品表和售货员表的一 一 列举。什么意思呢。比如:P表中有商品A,B;S表中有售货员X,Y。

那么,一 一列举就是:

WHERE PNO=A AND SNO=X

WHERE PNO=A AND SNO=Y

WHERE PNO=B AND SNO=X

WHERE PNO=B AND SNO=Y

列举每个售货员,卖出每种商品。然后对应R表进行筛选。

那么中间层对S的查询的否定,就是有某个售货员没有卖出过所有商品。不是所有售货员都没卖出任何商品。看看有没有这样的人。

然后最外层对P查询的否定,是找这样的商品:不存在这样一个人(中间层对S查询出来的人),这个人没有卖出过该商品。

这样找出来的商品,就是每个人都卖出过的商品。

1、左外连接:

用左外连接,指查询出来的是在右表中没有对应左表中的记录以及符合条件(cid=ocustomer_id)的数据,比如:

customers为左表,orders为右表

select cid,ocustomer_id,cname,oid order_id,order_number from customers c left outer join orders o on cid=ocustomer_id;

2、右外连接:

正好和左外连接相反,查询出来的结果是在左表中没有对应的项和以及符合条件(cid=ocustomer_id)的数据

join的意思就是连接

当对两个表进行连接 *** 作时,用join来表示,只是一种专业的记法而已,就像数学中的一些符号,为了是书写简单

示例:

将学生表和选课表连接,就可以写

join(StudentSno=SCSno)

这样既简单,又专业

希望可以帮助你

以上就是关于关于数据库SQL语言全部的内容,包括:关于数据库SQL语言、数据库初学求解答、请问下面这段SQL语句如何理解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10180300.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存