DataScience
article thumbnail
Published 2022. 12. 14. 13:40
R-SQL(ORACLE) 연동 기초 문제 SQL
728x90

--------------------------ORACLE SQL DEVELOPER--------------------------------
--1. SQL developer를 이용하여 Oracle XE DB에 scott계정으로 접속하여 아래 table 을 생성하시오.
CREATE TABLE EXAM_TABLE(
    ID VARCHAR(50) PRIMARY KEY,
    PASS VARCHAR(30) NOT NULL,
    NAME VARCHAR(25) NOT NULL,
    SCORE NUMBER(3)
);

INSERT INTO EXAM_TABLE VALUES('1001', '1234','Kim',90);
INSERT INTO EXAM_TABLE VALUES('1002', '3456','Lee',100);
INSERT INTO EXAM_TABLE VALUES('1003', '5678','Park',85);
INSERT INTO EXAM_TABLE VALUES('1004', '7890','Choi',75);
SELECT * FROM EXAM_TABLE;
COMMIT;

------------------------------RSTUDIO-----------------------------------
# 2. Oracle XE DB에 접근하기 위한 설정(driver 설정, 
# import package 또는 package loading, DB연결 등)을 하시오.

#import package
library(DBI)
library(rJava)
library(RJDBC)
#자바 환경변수 설정
Sys.setenv(JAVA_HOME = "C:\\Program Files\\Java\\jdk1.8.0_202")
# Driver 설정
drv <- JDBC("oracle.jdbc.driver.OracleDriver", "C:/OracleTest/ojdbc6.jar")
# 데이터베이스 연결
conn <- dbConnect(drv,"jdbc:oracle:thin:@//127.0.0.1:1521/xe", "scott", "tiger")


# 3.exam_table 내 모든 데이터를 조회하시오.
query = "SELECT * FROM EXAM_TABLE"
dbGetQuery(conn, query)

# ID PASS NAME SCORE
# 1 1001 1234  Kim    90
# 2 1002 3456  Lee   100
# 3 1003 5678 Park    85
# 4 1004 7890 Choi    75


# 4. 아래 레코드 추가하시오.
query = "INSERT INTO EXAM_TABLE VALUES('1005','2345','Jung',95)"
dbSendUpdate(conn,query)
query = "INSERT INTO EXAM_TABLE VALUES('1006','4567','Kang',80)"
dbSendUpdate(conn,query)


# 5. 추가된 레코드를 포함하여 exam_table 내 모든 데이터를 조회하시오.
query = "SELECT * FROM EXAM_TABLE"
dbGetQuery(conn, query)

# ID PASS NAME SCORE
# 1 1001 1234  Kim    90
# 2 1002 3456  Lee   100
# 3 1003 5678 Park    85
# 4 1004 7890 Choi    75
# 5 1005 2345 Jung    95
# 6 1006 4567 Kang    80


# 6. 성적(score) 기준으로 내림차순 정렬하시오.
query = "SELECT * FROM EXAM_TABLE ORDER BY SCORE DESC"
dbGetQuery(conn, query)

# ID PASS NAME SCORE
# 1 1002 3456  Lee   100
# 2 1005 2345 Jung    95
# 3 1001 1234  Kim    90
# 4 1003 5678 Park    85
# 5 1006 4567 Kang    80
# 6 1004 7890 Choi    75


# 7. name 이 ‘Choi’인 학생의 성적을 80점으로 수정하시오.
query = "UPDATE EXAM_TABLE SET SCORE = 80 WHERE NAME = 'Choi'"
dbSendUpdate(conn, query)

# ID PASS NAME SCORE
# 1 1001 1234  Kim    90
# 2 1002 3456  Lee   100
# 3 1003 5678 Park    85
# 4 1004 7890 Choi    80
# 5 1005 2345 Jung    95
# 6 1006 4567 Kang    80


# 8. 성적(score)이 80점 초과인 레코드만 조회하시오.
query = "SELECT * FROM EXAM_TABLE WHERE SCORE > 80"
dbGetQuery(conn, query)

# ID PASS NAME SCORE
# 1 1001 1234  Kim    90
# 2 1002 3456  Lee   100
# 3 1003 5678 Park    85
# 4 1005 2345 Jung    95


# 9. name이 ‘Kang’인 학생의 레코드를 삭제하시오.
query = "DELETE FROM EXAM_TABLE WHERE NAME = 'Kang'"
dbSendUpdate(conn, query)


# 10. 전체 레코드를 조회하시오.
query = "SELECT * FROM EXAM_TABLE"
dbGetQuery(conn, query)

# ID PASS NAME SCORE
# 1 1001 1234  Kim    90
# 2 1002 3456  Lee   100
# 3 1003 5678 Park    85
# 4 1004 7890 Choi    80
# 5 1005 2345 Jung    95

'SQL' 카테고리의 다른 글

SQL Oracle DB XE 11g환경 구축  (1) 2022.12.14
SQL 서브쿼리 연습문제  (2) 2022.12.14
PL/SQL 프로시저 IN, OUT, IN OUT 차이  (1) 2022.12.14
R-SQL 연동(csv,DataFrame)  (0) 2022.12.14
SQL(Oracle)-R 연동 환경 구축  (0) 2022.12.14
profile

DataScience

@Ninestar

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!