본문 바로가기
DB & SQL

Database 기초(Query)

by pms93 2022. 8. 4.

* Oracle DB port 번호는 통상적으로 1521번을 사용한다.
* SQLPlus - database client 도구

<< QUERY >>
SQL> sqlplus (유저명)/(비밀번호)
 - sqlplus에 접속


SQL> set linesize (숫자)
 - 숫자만큼 라인사이즈를 설정한다.


SQL> CREATE USER (유저명) IDENTIFIED BY (비밀번호);
 - ID : 유저명, PW : 비밀번호로 계정을 생성한다.


SQL> ALTER USER oracle IDENTIFIED BY oracle2;
 - oracle 계정의 비밀번호를 oracle2로 변경한다.


SQL> GRANT DBA TO (유저명)
 - (유저명)에게 관리자 권한을 부여한다.


SQL> CREATE TABLE test_table( -> 테이블 생성
  2  id varchar2(20), -> varchar2(=가변길이 문자열(20byte))
  3  pw varchar2(20),
  4  name varchar2(15),
  5  num number(100, 2)
  6  );
 - 가변길이의 값은 최대치를 의미하며 더 작은 데이터가 저장될 시에 자동으로 크기를 맞춰 저장한다.

 - numbur parameter의 첫번째 값은 사이즈를 지정하며, 두번째 값은 소숫점 자리수를 지정한다.


SQL> SELECT * FROM TAB;
 - 테이블의 전체 목록을 보여준다.
 - 만든 테이블 이름이 대문자로 나온다.(대소문자를 구별하지 않는다.)
 - 테이블 생성시에 이름을 더블쿼터로 감싸주면 원하는데로 명명이 가능하다.


SQL> DESC test_table;
 - test_table의 구성을 보여준다.


SQL> INSERT INTO test_table VALUES('admin', '1234', '관리자', 1);
SQL> INSERT INTO test_table(id, pw) VALUES('user1', '1111');
 - test_table에 값을 넣어준다
 - 문자열은 싱글쿼터로 감싸서 넣어줘야 한다.(숫자는 안묶어도 된다.)
 - test_table의 원하는 컬럼에만 값 입력도 가능하다.
 - INSERT문에서 WHERE절은 지원하지 않는다.


SQL> SELECT * FROM test_table WHERE id='admin';
SQL> SELECT pw, name, num FROM test_table WHERE id = 'admin';
SQL> SELECT * FROM test_table WHERE id = 'admin' and pw = '1';
 - WHERE문 내에 조건연산자/조건문 사용 가능
 - WHERE문의 조건이 false여도 오류는 아니다.


SQL> commit;
 - 최종 저장
 - commit을 하지 않으면 이전 작업은 저장되지 않음을 알 수 있다.
 - DB에서의 작업은 commit에 따라 저장 여부가 결정되나 java와 연동하여 java에서 작업시
   자동저장이 되므로 작업에 주의가 필요하다.

 


SQL> DELETE FROM test_table;
 - WHERE절 없이 사용시 해당 테이블의 내용 전부 삭제
 - WHERE절을 통해 원하는 데이터만 삭제 가능하다.


SQL> rollback;
 - 마지막 commit지점으로 되돌려준다.



SQL> DROP TABLE test_table;
 - 테이블을 삭제한다.
 - 테이블은 rollback되지 않는다.


SQL> SELECT * FROM test WHERE name LIKE '%유저%';
 - LIKE '%%';
 - LIKE, wildcard(%)를 사용해서 특정 데이터가 포함된 데이터들을 가져올 수 있다.
 - ex) 유저% - 유저로 시작하는, %유저 - 유저로 끝나는


SQL> UPDATE (테이블명) SET num = data, pw = data, name = 'data' WHERE id = 'user1';
 - id가 user1인 데이터의 num, pw, name 컬럼을 수정하고 있다.
 - WHERE절이 생략되면 SET에 해당하는 모든 컬럼의 값이 변경된다.


SQL> SELECT count(*) FROM test;
SQL> SELECT count(*) FROM test WHERE id = 'admin';
 - 해당하는 행의 수를 반환받는다.
 - WHERE절이 없다면 모든 행의 수를 반환받는다.


SQL> SELECT max(num) FROM test;
 - num에 해당하는 가장 큰 수를 반환받는다.


<< ALTER >>
SQL> ALTER TABLE test ADD email varchar2(20);
 - 컬럼을 추가한다.


SQL> ALTER TABLE test MODIFY email varchar2(200);
 - 컬럼의 자료형(크기)을 변경한다.


SQL> ALTER TABLE test RENAME COLUMN pw to password;
 - 컬럼의 이름을 변경한다.


SQL> ALTER TABLE test DROP COLUMN email;
 - 컬럼을 삭제한다.


SQL> CREATE SEQUENCE test_seq INCREMENT BY 숫자1 START WITH 숫자2;
SQL> INSERT INTO test VALUES(test_seq.nextval, 'admin', '1234', '관리자');
SQL> INSERT INTO test VALUES(test_seq.nextval, 'user1', '1111', '유저일');
SQL> INSERT INTO test VALUES(test_seq.nextval, 'user2', '2222', '이유저');
 - 숫자2로 시작하여 숫자1만큼 증가하는 시퀀스를 생성한다.
 - 시퀀스는 cache의 성질을 가지고 있다.
   시퀀스가 동작이 된 이후 약 20~40크기의 공간을 미리 생성한다.
   이후 사전에 생성된 공간의 크기만큼 데이터가 입력이 되지 않고 일정 시간동안 클라이언트의 응답이 없거나 DB 종료 후 다시 연결하면 다음 시퀀스로 자동으로 넘어간다.
 - 데이터들의 numbering작업이 편해진다.


SQL> SELECT * FROM test ORDER BY num;
 - 데이터 (num기준)오름차순 정렬
SQL> SELECT * FROM test ORDER BY num DESC;
 - 데이터 (num기준)내림차순 정렬


























'DB & SQL' 카테고리의 다른 글

MySQL IN, NOT IN 연산자  (0) 2023.01.04
MySQL LIKE와 WildCards  (0) 2023.01.04
MySQL SUM, COUNT, AVG  (0) 2023.01.04
MySQL Min, Max  (0) 2023.01.04
MySQL Limit  (0) 2023.01.04