1. 程式人生 > >pl/sql練習1

pl/sql練習1

     --建立學生表
    CREATE TABLE tb_Student(
      ID number  PRIMARY KEY, --學生編號
      NAME VARCHAR2(20) NOT NULL,--學生姓名
      Sex VARCHAR2(2) CHECK(Sex IN('男','女')) , --學生性別
      Age number, --學生年齡
      Address VARCHAR2(50) , --學生地址
      Tel VARCHAR2(30), --學生電話
      Email VARCHAR2(30)--學生郵箱
    )
; --插入學生表資料 INSERT INTO tb_Student VALUES (1,'小強','男',20,'湖南省長沙市伍家嶺江南苑9棟203號','0731-4230123','[email protected]'); INSERT INTO tb_Student VALUES (2,'李雲','女',19,'湖南省長沙市東風路東風新村21棟502號','0731-4145268','[email protected]'); INSERT INTO tb_Student VALUES (3,'魯智深'
,'男',30,'湖南省株洲市601廠宿舍15棟308號','0732-8342567',NULL); INSERT INTO tb_Student VALUES (4,'張飛','男',28,'湖南省郴洲市人民醫院20棟301號','0735-2245214',NULL); INSERT INTO tb_Student VALUES (5,'翠花','女',21,'湖南省長沙市望月湖12棟403號','0731-8325124','[email protected]');
    --建立考試表
    CREATE TABLE tb_Exam
    (
ID number , --學生編號 NAME VARCHAR2(20) NOT NULL, --課程名稱 Score number CHECK(Score BETWEEN 0 AND 100), --考試分數 exam_date DATE, --考試時間 PRIMARY KEY(ID,NAME), --學生編號和課程名稱做聯合主鍵 CONSTRAINT tb_exam_fk FOREIGN KEY (id) REFERENCES tb_Student(id) ); --插入資料 INSERT INTO tb_Exam VALUES(1,'C語言',78,to_date('2004-06-10','yyyy-mm-dd')); INSERT INTO tb_Exam VALUES(2,'C語言',90,to_date('2004-06-10','yyyy-mm-dd')); INSERT INTO tb_Exam VALUES(3,'C語言',0,NULL); INSERT INTO tb_Exam VALUES(3,'VB',35,to_date('2004-07-16','yyyy-mm-dd')); INSERT INTO tb_Exam VALUES(4,'VB',35,to_date('2004-07-16','yyyy-mm-dd')); INSERT INTO tb_Exam VALUES(5,'VB',85,to_date('2004-07-16','yyyy-mm-dd')); INSERT INTO tb_Exam VALUES(2,'網頁程式設計',85,to_date('2004-08-20','yyyy-mm-dd')); INSERT INTO tb_Exam VALUES(3,'網頁程式設計',85,NULL);
--1.查詢小強的詳細資訊
select * from tb_Student where name='小強';
--2.查詢20歲以上的所有男同學的資訊
select * from tb_Student where sex='男' and age>20;
--3.按年齡降序顯示學生的資訊
select * from tb_Student order by age desc;
--4.按學生ID升序顯示學生的ID,姓名,性別,課程,分數
select s.id,s.name,s.sex,e.name classname,e.score 
from tb_Student s,tb_Exam e
where s.id=e.id;
--5.按學生分數降序顯示學生的ID,姓名,性別,課程,分數
select s.id,s.name,s.sex,e.name classnamename,e.score 
from tb_Student s,tb_Exam e
where s.id=e.id 
order by e.score desc;
--7.查詢所有學生的資訊
select * from tb_Student;
--8.顯示成績表的前4條資訊
select * from tb_Exam where rownum<=4;
--10.列出所有考試分數的一個總和
select sum(score) from tb_Exam;
--11.列出魯智深的成績總和
select sum(e.score) from  Tb_Student s,tb_Exam e 
where s.name='魯智深' and s.id=e.id;
--12.列出C語言考試的平均分
select avg(score) from tb_Exam where name='C語言';
--14.列出李雲參加了幾次考試
select count(1) 
from tb_Student s,tb_Exam e
where s.id=e.id and s.name='李雲';
--15.列出學生中最大的年齡
select max(age) 
from tb_Student s,tb_Exam e
where s.id=e.id;
--16.列出C語言最高的分數
select max(score) 
from tb_Student s,tb_Exam e
where s.id=e.id and e.name='C語言';
--17.列出每種考試的考試名稱和成績總和
select name,sum(score) 
from tb_Exam 
group by name;
--18.列出每個學生的姓名和考試次數
select s.name,count(*) 
from tb_Student s,tb_Exam e
where s.id=e.id
group by s.name;
--19.列出每個學生的姓名和考試次數,小於2次的不顯示
select s.name,count(*) 
from tb_Student s,tb_Exam e
where s.id=e.id
group by s.name
having count(*)>=2; 
--20.顯示年齡在20到25歲之間的學生資訊
select * from tb_Student where age between 20 and 25;