6675ey

本文介绍了SQL查询的不同类型,包括简单查询、连接查询和嵌套查询,并提供了实际示例。探讨了如何提高数据查询效率,如使用索引、避免排序等。此外,还涉及了数据库更新操作,如更改数据、删除记录以及权限管理。这些内容对于理解和优化数据库操作至关重要。
摘要由CSDN通过智能技术生成
insert into s(sno,sname,status,city) values('s1', '精益', 20, '天津')
insert into s(sno,sname,status,city) values('s2', '盛锡', 10, '北京')
insert into s(sno,sname,status,city) values('s3', '东方红', 30, '北京')
insert into s(sno,sname,status,city) values('s4', '丰泰盛', 20, '天津')
insert into s(sno,sname,status,city) values('s5', '为民', 30, '上海')
insert into p(pno, pname, color, weight) values('p1', '螺母', '红', 12)
insert into p(pno, pname, color, weight) values('p2', '螺栓', '绿', 17)
insert into p(pno, pname, color, weight) values('p3', '螺丝刀', '蓝', 14)
insert into p(pno, pname, color, weight) values('p4', '螺丝刀', '红', 14)
insert into p(pno, pname, color, weight) values('p5', '凸轮', '蓝', 40)
insert into p(pno, pname, color, weight) values('p6', '齿轮', '红', 30)
insert into j(jno, jname, city) values('j1', '三建', '北京')
insert into j(jno, jname, city) values('j2', '一汽', '长春')
insert into j(jno, jname, city) values('j3', '弹簧厂', '天津')
insert into j(jno, jname, city) values('j4', '造船厂', '天津')
insert into j(jno, jname, city) values('j5', '机车厂', '唐山')
insert into j(jno, jname, city) values('j6', '无线电厂', '常州')
insert into j(jno, jname, city) values('j7', '半导体厂', '南京')
insert into spj(sno, pno, jno, qty) values('s1', 'p1', 'j1', 200)
insert into spj(sno, pno, jno, qty) values('s1', 'p1', 'j3', 100)
insert into spj(sno, pno, jno, qty) values('s1', 'p1', 'j4', 700)
insert into spj(sno, pno, jno, qty) values('s1', 'p2', 'j2', 100)
insert into spj(sno, pno, jno, qty) values('s2', 'p3', 'j1', 400)
insert into spj(sno, pno, jno, qty) values('s2', 'p3', 'j2', 200)
insert into spj(sno, pno, jno, qty) values('s2', 'p3', 'j4', 500)
insert into spj(sno, pno, jno, qty) values('s2', 'p3', 'j5', 400)
insert into spj(sno, pno, jno, qty) values('s2', 'p5', 'j1', 400)
insert into spj(sno, pno, jno, qty) values('s2', 'p5', 'j2', 100)
insert into spj(sno, pno, jno, qty) values('s3', 'p1', 'j1', 200)
insert into spj(sno, pno, jno, qty) values('s3', 'p3', 'j1', 200)
insert into spj(sno, pno, jno, qty) values('s4', 'p5', 'j1', 100)
insert into spj(sno, pno, jno, qty) values('s4', 'p6', 'j3', 300)
insert into spj(sno, pno, jno, qty) values('s4', 'p6', 'j4', 200)
insert into spj(sno, pno, jno, qty) values('s5', 'p2', 'j4', 100)
insert into spj(sno, pno, jno, qty) values('s5', 'p3', 'j1', 200)
insert into spj(sno, pno, jno, qty) values('s5', 'p6', 'j2', 200)
insert into spj(sno, pno, jno, qty) values('s5', 'p6', 'j4', 500)

1、检索上海产的零件的工程名称

select sname from s
where city = '上海'

2、检索供应工程j1零件p1的供应商号sno

select sno from spj
where jno = 'j1' and pno = 'p1' 

3、检索供应工程j1零件为红色的供应商号sno

SELECT SNO
FROM SPJ
WHERE JNO='J1' AND PNO IN(SELECT PNO
                          FROM P
                          WHERE COLOR='红');

4、检索没有使用天津生产的红色零件的工程号jno

SELECT JNO
FROM J
WHERE NOT EXISTS
(SPJ.JNO=J.JNO
 AND SPJ.SNO=S.SNO
 AND SPJ.PNO=P.PNO
 AND S.CITY='天津'
 AND P.COLOR='红');

5、检索至少用了供应商s1所供应的全部零件的工程号jno

SELECT JNO
FROM SPJ
WHERE SNO='S1' AND PNO IN
(SELECT PNO
 FROM SPJ
 WHERE SNO='S1');  

6、检索购买了零件p1的工程项目号jno及数量qty,并要求对查询的结果按数量qty降序排列

select jno,qty from spj
where pno = 'p1'
order by qty desc

如何提高数据查询和连接速度。
1.合理使用索引2.避免或简化排序3.消除对大型表行数据的顺序存取4.避免相关子查询5.避免困难的正规表达式6.使用临时表加速查询7.用排序来取代非顺序存取

若一个查询只涉及一个表,则称之为简单查询。
若一个查询同时涉及两个或两个以上的表,则称之为连接查询。
嵌套查询又称子查询,是指在父查询的where条件语句中再插入一个子查询语句。

连接查询与嵌套查询区别:
1、含义上的不同
嵌套查询是包含一个或多个子查询或者子查询的另一个术语的SELECT语句。在一个外层查询中包含有另一个内层查询子查询是SQL语句的扩展。
连接查询是关系数据库中最主要的查询。在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。
2、特性上的不同
嵌套查询的主要特性是SQL允许多层嵌套,是由内而外地进行分析,子查询的结果作为主查询的查询条件。
连接是关系数据库模型的主要特点,通过连接运算符可以实现多个表查询。连接操作给用户带来很大的灵活性,可以在任何时候增加新的数据类型。

1、把全部红色零件的颜色改为粉红色

update p
set color = '粉红'
where color = '红'

2、由s1供给j1的零件p1今改为由s2供应,作必要修改

update spj
set sno = 's2'
where sno = 's1' and pno = 'p1' and jno = 'j1'

3、删去全部蓝色零件及相应的spj记录

delete from p
where color = '蓝'

delete from spj
where pno = 'p3'

4、把全部螺母的重量置为0

update p
set weight = 0
where pname = '螺母'

5、为spj表的qty字段设计CHECK约束:0<qty<100

alter table spj
add constraint ck_qty check(qty >0 and qty <100)

6、实现对spj表的操作权限管理的使用


  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值