oracle11g如何查找表,Oracle11g简单建表(约束)、查询、修改脚本

记录一下简单的创建和约束脚本,还有几个一般查询的语句

等以后熟练了再来改进

题目源于“MLDN魔乐科技_Oracle课堂20_完整练习.rar”,大家应该能电驴到

发的东西和课程里讲的答案不一样,自己瞎写的 不过功能无误

DROP TABLE grade;

DROP TABLE sporter;

DROP TABLE item;

CREATE TABLE sporter

(

sporterid NUMBER(9),

name VARCHAR2(50) NOT NULL,

sex VARCHAR2(3) NOT NULL,

department VARCHAR2(30) NOT NULL,

CONSTRAINT sporter_sporterid_pk PRIMARY KEY(sporterid),

CONSTRAINT sporter_sex_ck CHECK(sex IN ('男','女','中'))

);

CREATE TABLE item

(

itemid VARCHAR2(9),

itemname VARCHAR2(50) NOT NULL,

location VARCHAR2(50) NOT NULL,

CONSTRAINT item_itemid_pk PRIMARY KEY(itemid)

);

CREATE TABLE grade

(

sporterid NUMBER(9),

itemid VARCHAR2(9),

mark NUMBER(9) NOT NULL,

--CONSTRAINT grade_sporterid_pk PRIMARY KEY(sporterid),

CONSTRAINT grade_mark_ck CHECK(mark IN(6,4,2,0)),

CONSTRAINT sporter_grade_sportid_fk FOREIGN KEY(sporterid) REFERENCES sporter(sporterid) ON DELETE CASCADE,

CONSTRAINT item_grade_itemid_fk FOREIGN KEY(itemid) REFERENCES item(itemid) ON DELETE CASCADE

);

INSERT INTO sporter(sporterid,name,sex,department) VALUES(1001,'李明','男','计算机系');

INSERT INTO sporter(sporterid,name,sex,department) VALUES(1002,'张三','男','数学系');

INSERT INTO sporter(sporterid,name,sex,department) VALUES(1003,'李四','男','计算机系');

INSERT INTO sporter(sporterid,name,sex,department) VALUES(1004,'王二','男','物理系');

INSERT INTO sporter(sporterid,name,sex,department) VALUES(1005,'李娜','女','心理系');

INSERT INTO sporter(sporterid,name,sex,department) VALUES(1006,'孙俪','女','数学系');

INSERT INTO item(itemid,itemname,location) VALUES('x001','男子五千米','一操场');

INSERT INTO item(itemid,itemname,location) VALUES('x002','男子标枪','一操场');

INSERT INTO item(itemid,itemname,location) VALUES('x003','男子跳远','二操场');

INSERT INTO item(itemid,itemname,location) VALUES('x004','女子跳高','二操场');

INSERT INTO item(itemid,itemname,location) VALUES('x005','女子三千米','三操场');

INSERT INTO grade(sporterid,itemid,mark) VALUES(1001,'x001','6');

INSERT INTO grade(sporterid,itemid,mark) VALUES(1002,'x001','4');

INSERT INTO grade(sporterid,itemid,mark) VALUES(1003,'x001','2');

INSERT INTO grade(sporterid,itemid,mark) VALUES(1004,'x001','0');

INSERT INTO grade(sporterid,itemid,mark) VALUES(1001,'x003','4');

INSERT INTO grade(sporterid,itemid,mark) VALUES(1002,'x003','6');

INSERT INTO grade(sporterid,itemid,mark) VALUES(1004,'x003','2');

INSERT INTO grade(sporterid,itemid,mark) VALUES(1005,'x004','6');

INSERT INTO grade(sporterid,itemid,mark) VALUES(1006,'x004','4');

--查询

--1.1 分数总和最高的系名和对应分数

SELECT *

FROM

(SELECT s.department sd,SUM(sums.sm) summax

FROM sporter s,

(SELECT g.sporterid,SUM(mark) sm FROM grade g GROUP BY g.sporterid ORDER BY g.sporterid)sums

WHERE s.sporterid=sums.sporterid

GROUP BY s.department

ORDER BY summax DESC)

WHERE ROWNUM=1

;

--1.2

SELECT *

FROM (SELECT s.department sd,SUM(sums.sm) summax

FROM sporter s,

(SELECT g.sporterid,SUM(mark) sm FROM grade g GROUP BY g.sporterid ORDER BY g.sporterid)sums

WHERE s.sporterid=sums.sporterid

GROUP BY s.department

ORDER BY summax DESC)temp

WHERE temp.summax = (SELECT MAX(SUM(sums.sm)) summax

FROM sporter s,

(SELECT g.sporterid,SUM(mark) sm FROM grade g GROUP BY g.sporterid ORDER BY g.sporterid)sums

WHERE s.sporterid=sums.sporterid

GROUP BY s.department

--ORDER BY summax DESC

)

;

第二天续

--2

SELECT name,tmpname.itemid,i.itemname

FROM sporter s,item i,

(SELECT sporterid,itemid FROM grade WHERE itemid IN (SELECT itemid FROM item WHERE location IN '一操场') AND mark=6)tmpname

WHERE s.sporterid=tmpname.sporterid AND tmpname.itemid=i.itemid

;

--3

SELECT name

FROM sporter s,

(SELECT DISTINCT sporterid FROM grade WHERE itemid IN (SELECT itemid FROM grade WHERE sporterid IN(SELECT sporterid FROM sporter WHERE name IN ('张三'))))spid

WHERE s.sporterid=spid.sporterid AND name NOT IN ('张三')

;

--4

UPDATE grade

SET mark = 0

WHERE sporterid IN (SELECT sporterid FROM sporter WHERE name IN ('张三'))

;

--5

DELETE FROM item

WHERE itemname IN ('女子跳高')

;

补充个序列的创建、查询、删除:

--创建序列

CREATE SEQUENCE studentPKSequence START WITH 1 INCREMENT BY 1;

--序列增长

SELECT studentPKSequence.nextVal AS studentid FROM dual;

--删除序列

DROP SEQUENCE studentPKSequence;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值