* 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 |