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表的操作权限管理的使用