SQL 기본 정리
SQL 이란
- SQL 은 Structured Query Language의 약자로 데이터베이스에서 데이터를 조회, 입력, 수정, 삭제 저장 하는데 사용되는 질의 언어 입니다.
- SQL은 관계형 데이터베이스에 대해서 데이터의 구조를 정의, 데이터 조작, 데이터 제어 등을 할 수 있는 절차형 언어
- SQL은 ANSI/ISO 표준을 준수하기 때문에 데이터베이스 관리 시스템이 변경되어도 그대로 사용할 수 있다.
- SQL 은 역할에 따라 DML, DDL, DCL, TCL 로 나뉩니다.
DDL (Data Definition Language) : 데이터 정의 언어, 테이블 구조 관련
- 관계형 데이터베이스 테이블을 생성, 변경, 삭제하는 것으로 데이터를 저장할 구조를 정의하는 언어
- create, alter, drop, rename
CREATE ( 데이터 베이스 객체 생성 )
SQL> CREATE TABLE 테이블명 ;
SQL> CREATE INDEX 인덱스명 ;
ALTER ( 기존의 생성된 객체를 변경 )
SQL> ALTER TABLE 테이블명
ADD PARTITION ……;
DROP ( 데이터 베이스 객체 삭제 )
SQL> DROP TABLE 테이블명 ;
SQL> DROP INDEX 인덱스명 ;
RENAME (객체 이름 변경)
SQL > RENAME 테이블명 TO 바꿀테이블명;
DML (Data Manipulation Language) : 데이터 조작 언어, 테이블 행(데이터)에 관련
- 데이터 구조가 DDL로 정의되면 테이블에 데이터를 입력, 수정, 삭제, 조회한다.
- insert, update, delete, select
INSERT ( 신규데이터 입력 )
SQL> INSERT INTO 테이블 ( Column1, Column2 ) VALUES ( Column1 값, Column2 값 );
UPDATE ( 기존 데이터 수정 )
SQL> UPDATE 테이블 SET 변경 Column1 = 값 WHERE 조건절 ;
DELETE ( 데이터 삭제 )
SQL> DELETE FROM 테이블 WHERE 조건 ;
SELECT ( 데이터 조회 )
- SELECT 문은 테이블에 저장된 데이터를 조회하는데 사용되는 SQL 입니다.
- SELECT 문의 기본 패턴은 다음과 같습니다
- SQL> SELECT 컬럼1 FROM 테이블 WHERE 조건 ;
DCL (Data Control Language) : 데이터 제어 언어
- 데이터베이스 사용자에게 권한을 부여하거나 회수
- grant, revoke
GRANT (객체에 권한 부여 )
SQL> GRANT privilege
ON object
TO {user | role | PUBLIC }
[WITH GRANT OPTION] ;
REVOKE (객체에 부여된 권한 삭제 )
SQL> REVOKE {privilege | ALL}
ON object
FROM {user | role | PUBLIC}
[CASCADE CONSTRAINTS]
TCL (Transaction Control Language) : DML문의 변경을 관리함.
- 트랜잭션을 제어하는 명령어
- commit, rollback
- 트랜잭션 : 데이터베이스의 작업을 처리하는 단위
COMMIT
데이터 변경 작업을 한뒤 COMMIT을 실행해야만 변경된 데이터들이 데이터 파일에 반영이 됩니다.
SQL> COMMIT ;
ROLLBACK
COMMIT과 반대 개념으로 변경된 데이터들을 변경 전 상태로 되돌립니다.
SQL> ROLLBACK ;
도스창으로 쿼리문 연습(hr 계정 접속)
DDL 데이터 정의 언어
CREATE로 테이블 생성해보기
- CREATE TABLE member( ~~ );
CREATE TABLE member(
id NUMBER NOT NULL Primary Key,
username VARCHAR(20),
dept VARCHAR(7),
birth DATE,
email VARCHAR(40),
tel VARCHAR(30) NOT NULL
);

- 출력

ALTER로 속성 추가해보기
- ALTER TABLE member add (tel varchar2(30) NOT NULL);

속성 타입 변경해보기
- ALTER TABLE member modify (username varchar2(10));

속성 삭제해 보기
- ALTER TABLE member DROP (tel);

테이블 삭제해 보기
- TABLE DROP 테이블명

테이블 이름 변경해보기
- RENAME 테이블명 TO 바꿀테이블명;

속성 이름 변경해보기
- ALTER TABLE member RENAME COLUMN username to name;

DML 데이터 조작 언어
INSERT로 데이터 삽입해보기
INSERT INTO member VALUES(202103,'홍길동','SL','00.01.01','m@m.com','000-0000-0000'); INSERT INTO member VALUES(202104,'장길산','SL','00.01.01','m@m.com','000-0000-0000'); INSERT INTO member(id,dept,username,birth,email,tel) VALUES(202101,'SL','너무해','01.02.02','2@3.com','010');
- 테이블 속성에 들어갈 VALUES 값들의 순서랑 일치해야함.

성공일시
그리고 COMMIT; 을 해준다 (무조건 해줘야함!!!)

SELECT로 데이터 조회해보기
- SELECT * FROM member;

SELECT 조건절을 이용하여 조회해보기
- select * from member WHERE id = '202101';

- SELECT id, username, birth FROM member WHERE id = 202101 AND DEPT = 'SL';

SQL Developer로 확인해보기
- 데이터 삽입 확인하기

SQL Developer 워크시트 작성해보기
- select * from member;
UPDATE로 데이터 수정해보기
- UPDATE member set username = 'aaa' where id = '202104';
- UPDATE member set username = 'jjj' where id = '202103';
- UPDATE member set username = 'ppp' where id = '202101';
- commit;

DELETE로 데이터 삭제해보기
- DELETE FROM member WHERE id = '202101' AND username = 'ppp';

'개발 공부 > SQL, DB' 카테고리의 다른 글
SQL Developer 사용법과 hr 계정 접속 (0) | 2023.11.23 |
---|---|
Oracle SQL로 계정 생성하기(System 아이디 이용) (0) | 2023.11.23 |
SQL 조건문 (0) | 2023.11.23 |
[Oracle/DBeaver] Java heap space Error, Unhandled event loop exception(Java heap 공간 메모리 늘리기) (0) | 2023.11.22 |
[MYSQL] No database selected ERROR 해결법 (0) | 2023.11.22 |