본문 바로가기

코딩 공부/Database

Oracle SQLPLUS 명령어 모음

CRUD

Create → INSERT

Read → SELECT

Update → UPDATE

Delete → DELETE

 

기본적으로 데이터를 다룰 때 쓰는 개념.

 

 

*명령어는 대문자로 , 변수 등 임의의 이름(테이블명과 컬럼명등) 은 소문자로 표기합니다.

접속하기

1. 유저 아이디를 먼저 만든다.

CREATE USER oracle(아이디) IDENTIFIED BY oracle(패스워드);

2. 권한 부여를 한다.

GRANT DBA TO(권한 부여) oracle;

3. 만든 유저로 접속한다.

SQLPLUS oracle/oracle

 

자료형

VARCHAR2() 문자열 , var는 가변을 의미(byte 수)

NUMBER 정수 int long정수의 값은 기본 7byte

등등

*자료형으로는 칼럼명을 지정할 수 없다.

 

CREATE

테이블 만들기

CREATE TABLE 테이블명(

칼럼명 자료형(자료의 크기 byte),

컬럼명 자료형(자료의 크기 byte),

.....

컬럼명 자료형(자료의 크기 byte)

);

 

예시 :

CREATE TABLE table_a(
id VARCHAR2(20),
pw VARCHAR2(20),
name VARCHAR2(20),
num NUMBER
);

 

INSERT

칼럼의 순서에 맞게 값 입력

INSERT INTO table_a VALUES('admin', 'password', '관리자',1);

행의 이름을 지정하고, 해당하는 데이터 넣기

INSERT INTO table_a (id,pw) VALUES('user1', '1111'); 

 

* 데이터에서 중요한 건 무결성

DB하나로 여러 서버를 나눠서 관리하는 것은 까다롭다.

DB도 같은 주제로 나눠서 관리하는 것도 방법이다. 필요한 것만 가져올 수 있도록 해서 부하의 영역을 줄이자

 

 

Read

select

테이블의 모든 데이터 호출하기

SELECT * FROM table_a;

 

 여기서 * 는 모든 것을 뜻한다.

 

 칼럼의 값을 선택해서 그에 해당하는 컬럼의 데이터 호출하기

SELECT pw,name,num FROM table_a WHERE id='admin';

 여기서 = 은 자바에서 ==

 

 이때 칼럼 값이 완벽하게 똑같지 않다면 찾지 못하니 오 탈자에 주의하자.

SELECT pw, name, num FROM table_a WHERE id='adm';

no rows selected

 

 like를 써서 이 문자를 포함하고 있는 칼럼 명의 행을 찾을 수 있다

SELECT * FROM table_a WHERE name LIKE '%유저%'; 

 

 이런 식으로 결과를 받아 중복체크나 찾기 등을 할 수 있다

SELECT pw, name, num FROM table_a WHERE id='admin'and pw='1';

no rows selected

 

 

=를 쓰면 완벽하게 같은 문자열만 가져올 수 있다. 

LIKE는 부분 선택이 가능하다.

게시글 검색할 때 많이 쓰인다.

 

행의 수 구하기

SELECT count(*) FROM table_a 

 

  COUNT(*)

----------

         3

 최댓값을 가져온다. 최대 번호를 가져온 후 +1을 하면 게시글을 넘버링할 수 있다.

SELECT max(num) FROM table_a 

 

  MAX(NUM)

----------

         3

 

특정 값도 count로 불러올 수 있다.

SQL> SELECT count(*) from table_a  where id like '%user%';

 

  COUNT(*)

----------

         2

UPDATE

UPDATE table_a SET pw = '0000';

이렇게 되면 테이블에 있는 모든  pw가 0000으로 바뀐다.

 

UPDATE table_a SET pw = '4321' WHERE id = 'user1';

이렇게 어디를 바꿀 건지 특정해줘야 한다.

 

UPDATE table_a SET pw='user2', name='user2' where id = 'user2';

콤마로 다수의 값을 지정해 줄 수 있다. 마지막에는 , 를 넣지 않는다.

 

DELETE

DELETE FROM table_a;

이렇게 되면 모든 데이터가 삭제된다.

 

DELETE FROM table_a  WHEREid='admin'; 

이렇게 where로 지정을 해주자.

 

DROP TABLE table_a; 

테이블을 지울 때. 이렇게 테이블을 삭제한다면 롤백을 한다고 하더라도 복구가 안된다.

ALTER TABLE

column 추가

ALTER TABLE table_a ADD email varchar2(20); 

 

크기 변경

ALTER TABLE table_a MODIFY email varchar2(200); 

 

기존 이름 변경(수정)

ALTER TABLE table_a RENAME COLUMN pw TO password;

 

column 삭제

ALTER TABLE table_a DROP COLUMN email;

 

SEQUENCE

CREATE SEQUENCE test_seq INCREMENT BY 1 START WITH 1;

1부터 1 만큼씩 올라간다.

 

SQL> INSERT INTO table_a VALUES(test_seq.nextval, 'admin', '1234', '관리자');

1 row created.

 

SQL> INSERT INTO table_a VALUES(test_seq.nextval, 'user1', '1111', '유저일');

1 row created.

 

SQL> INSERT INTO table_a VALUES(test_seq.nextval, 'user2', '2222', '이유저');

1 row created.

 

미리 1~40을 만들어서 캐시로 두고 있다. 다음 시퀀스를 만들 때는 41부터 만들어진다.

 

오름차순으로 정렬

SELECT *FROM test ORDER BY num; 

 

그 외

GRANT DBA TO oracle

시스템 관리자에 권한이 있으면 외부 침입에 민감할 수 있으니 계정을 나눠서 사용한다.

 

DESC test;

테이블의 정보(자료형과 크기)를 볼 수 있다

 

COMMIT;

메모리의 정보를 DB파일에 올린다. commit을 해야지만 eclipse와 연동했을 때 값을 가져올 수 있다

 

ROLLBACK;

commit 된 장소로 돌아간다.

 

'코딩 공부 > Database' 카테고리의 다른 글

Eclipse와 oracle연결하기  (0) 2022.09.11
DATABASE SQLPLUS  (0) 2022.09.06