'Database'에 해당되는 글 1건

  1. 2017.12.21 SQL 연습
Database2017. 12. 21. 21:12


Student 테이블, Point 테이블을 작성하고 다음과 같은 기초정보를 테이블에 저장할 때 SQL 문장을 사용한다



테이블 스키마

Student (num number(PK), id varchar2, pwd varchar2, name varchar2, phone varchar2, email varchar2)

Point (num number(FK), subject1 number, subject2 number, subject3 number)



작성할 SQL문장

  1. 위의 테이블을 생성하는 SQL문장과 그 실행결과를 제출하시오
  2. 위의 테이블에 각각 6행의 데이터를 입력하는 SQL문장과 그 실행결과를 제출하시오
  3. subject1의 최고점수를 기록한 플레이어의 번호와 이름, 점수를 가져오는 SQL문장을 작성한다
  4. subject2의 1위~5위까지의 이름과 점수를 가져오는 SQL문장을 작성한다
  5. 5번 학생의 전화번호를 123-4567-8901로 변경하는 SQL 문장을 작성한다
  6. subject3의 점수가 가장 저조한 학생의 점수기록을 삭제하는 SQL문장을 작성한다



테이블 생성

CREATE TABLE student

(

  num number PRIMARY KEY,

  id varchar2(20),

  pwd varchar2(20),

  name varchar2(20),

  phone varchar2(20),

  email varchar2(20)

);


CREATE TABLE point

(

  num number REFERENCES student(num),

  subject1 number,

  subject2 number,

  subject3 number

);



2개의 테이블에 기본 데이터 입력

INSERT INTO student VALUES (11, 'kang', 'kang', 'kanggildong', '010-1111-2222', 'kang@naver.com');

INSERT INTO student VALUES (12, 'kim', 'kim', 'kimgildong', '010-1111-2222', 'kim@naver.com');

INSERT INTO student VALUES (13, 'park', 'park', 'parkgildong', '010-1111-2222', 'parkg@naver.com');

INSERT INTO student VALUES (14, 'lee', 'lee', 'leegildong', '010-1111-2222', 'lee@naver.com');

INSERT INTO student VALUES (15, 'choi', 'choi', 'choigildong', '010-1111-2222', 'choi@naver.com');

INSERT INTO student VALUES (16, 'hong', 'hong', 'honggildong', '010-1111-2222', 'hongg@naver.com');


INSERT INTO point VALUES (11, 10,15,20);

INSERT INTO point VALUES (12, 25,30,35);

INSERT INTO point  VALUES (13, 50,45,40);

INSERT INTO point VALUES (14, 60,55,70);

INSERT INTO point VALUES (15, 85,75,80);

INSERT INTO point VALUES (16, 50,65,90);



subject1의 최고점수를 기록한 플레이어의 번호와 이름, 점수를 가져오는 SQL문장을 작성한다

SELECT p.num, name, subject1 

FROM student p INNER JOIN point s 

ON p.num=s.num

WHERE p.num =

(

    SELECT num FROM point WHERE subject1=

    (

        SELECT MAX(subject1) FROM point

    )

);



subject2의 1위~5위까지의 이름과 점수를 가져오는 SQL문장을 작성한다

SELECT name, subject2 FROM

(

    SELECT name, subject2, ROWNUM rn FROM

    (

        SELECT * FROM student p INNER JOIN point s

        ON p.num = s.num ORDER BY s.subject2

    )t1

)

WHERE rn BETWEEN 1 AND 5;



15번 이용자의 전화번호를 010-1111-2222로 변경하는 SQL 문장을 작성한다

UPDATE student SET phone='010-1111-2222' WHERE num=15;



subject3의 점수가 가장 저조한 이용자의 점수기록을 삭제하는 SQL문장을 작성한다

DELETE FROM point WHERE subject3=

(

    SELECT MIN(subject3) FROM point

);


Posted by cwisky