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 |