https://www.oracle.com/database/technologies/xe-prior-release-downloads.html
여기서 설치한다. (가입 필요)
비밀번호 까먹으면 재설치해야함
RUN SQL commend line 프롬포트에서
SQL은 항상 문장 끝에 ;를 붙여서 끝내야 한다! 안붙이면 문장이 안 끝난 것으로 간주하고 기다림
대소문자는 상관X
SQL> show user
user is " " <- 연결된 유저 없음
SQL> conn/as sysdba <- 시스템과 연결 명령프롬포트는 sqlplus / as sysdba 입력시 sql과 연결
Connected. (나가는건 exit)
SQL> show user
USER is "SYS"
alter user hr identified by 1234 account unlock;
-> user altered
conn hr 입력시 Enter password: <- 입력한 1234 그대로 입력(프롬포트창에선 변화없는것처럼 나옴!! 주의!!)
일반 프롬포트에서 hr 접속하려면 (hr은 원래 있는 기본 교육용 유저이다. 다만 lock이 되어있어서 unlock해야함)
SQLPLUS 입력후 유저 hr, 비번 1234 입력
유저 삭제: drop user hr
이번엔 scott란 유저를 만들어보자
alter user scott identified by 패스워드 account unlock;
user 'SCOTT' does not exist
그래서 scott를 만들려면
create user scott identified by 1234;
그러나
ERROR at line 1:
ORA-01031: insufficient privileges
에러코드
로 결과나옴 (hr유저인 상태에서 만들면 이렇게 됨)
sys유저로 전환 후 같은 명령어 실행시: User created. 출력
권한 부여하기 (sys상태에서)
grant connect, resource, dba to scott; <- hr상태에서는 사용자 유저라서 권한 grant 불가
(resources : view 표, 객체)
grant succeeded 로 출력 (커넥트, 리소스 권한 줌)
scott로 사용자 전환 후에,
drop table department; (drop = 삭제) -> table, view 이런거 애초에 없으면 error
table 생성하기 (varchar = string in python)
CREATE TABLE DEPARTMENT(
DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
DNAME VARCHAR2(14), 제약조건과 key가 있는 넘버..
LOC VARCHAR2(13) ) ;
-> Table created.
테이블 열람: desc 이름;
desc department;
null = 아무것도 없는 공백
hr은 권한이 없어서 이 표 자체를 볼 수 없다.
표 지우기 : drop table 이름;
또 다른 테이블 (-- <- 이건 주석문 표시)
CREATE TABLE DEPT(
DEPTNO NUMBER(2) , --DNO (부서번호)
DNAME VARCHAR2(14), --DNAME (부서이름)
LOC VARCHAR2(13) ) --LOC (부서위치);
CREATE TABLE EMP
(EMPNO NUMBER(4) , ----사원번호
ENAME VARCHAR2(10), --사원이름
JOB VARCHAR2(9), --사원업무
MGR NUMBER(4), --사원의 관리자
HIREDATE DATE, --입사일(DATE 타입)
SAL NUMBER(7,2), --월급
COMM NUMBER(7,2), --인센티브/보너스
DNO NUMBER(2) );
특정 테이블에 내용 추가
insert into 테이블이름 내용 ;
Ex) insert into dept values(10, 'ACCOUNTING', 'NEW YORK'); -> 1 row created
select * from dept; -> 보기 (* = 모든 것)
Insert into Emp values(7369,'SMITH','CLERK', 7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
이제 SQL oracle developer를 다운받자.
SQL에디터(주피터노트북 같은 것)
https://www.oracle.com/database/sqldeveloper/technologies/download/
만약 실행 오류가 있다면
윈도우 + r 에서 %AppData%\SQL Developer\ 로 입력 후, 폴더내에 있는 파일을 모두 삭제하고 다시 시도해보자.
도구 - 설정에서
원활한 한글 입력을 위해 UTF-8을 설정하자
행 여백 설정에서 번호 표시가 나오게끔 설정하자.
그외 개인 취향에 따라 글꼴 크기를 조정하는 등 디스플레이 설정을 한다.
초록 플러스를 눌러서 새로만들기를 해보자
SID = system identifiertest 결과 성공. (이름은 괄호쓰면 오류 可 언더바로 바꾸자)
그럼 이렇게 만들어진다
여기에 수많은 오라클 기능들이 있다.
아까 만든 두 표가 다 있다.
표를 클릭하면 열람이 된다.
column ID는 생성된 순서를 보여준다.
이걸 클릭하고
데이터베이스 파일을 누르면
sql파일을 생성할 수 있다.
아까 commit 안되어 누락된 것을 dept 에 넣고 refresh를 해보자
(이 편집기 툴은 자동 커밋이다.)
insert into dept values(10, 'ACCOUNTING', 'NEW YORK');
입력 후 ctrl + enter로 실행!
그러면 해당 내용은
dept table의 columns이 아닌 data 탭에 새로 생성된다.
(안보이는 경우 refresh를 해준다.)
resource is busy error <- 컴퓨터 메모리 사용량이 높다는 의미. 작업관리자에서 정리해주자.
SQL은 커서가있는 곳 한 줄
블럭단위
혹은 전체 선택 등으로 부분 실행이 可
ROLLBACK;
입력시 이전에 수행한 액션이 모두 취소된다. UNDO 효과이다. commit은 save의 의미를 지니고 있다.
DDL = Data Definition Language (데이터정의어): 유일하게 ; 생략 可 명령어!
DDL코드들 ex) CREATE, ALTER, DROP OBJECT(TABLE, VIEW, SYNONYM, USER 등)
DML = Data Manipulation Language (데이터조작어):
DML코드들 ex) INSERT, SELECT(JOIN), UPDATE, DELETE
DCL = Data Control Language (데이터제어어):
DCL코드들 ex) COMMIT, ROLLBACK
[사용자 유형]
DBA : DB관리자 = sysdba -> 최상위 권한 소유자. ex) 유저 만들기, 표 생성, 패스워드 권한 설정
실예) sqlplus / as sysdba (기본) conn/as sysdba (sql commend)
DDL, DCL 주로 사용. DML은 조회용
개발자: DML 주로 사용 (Java, Python, 등)
사용자: hr유저 DML 주로 사용하지만 해놓은 것을 쓰는 느낌.
SQL은 DB(Data base)를 다룸. DB없이 다뤄지는 작업은 없다. 그래서 중요함.
[DBMS 종류] microsoft IBM(은행권, 서버중심)
Oracle (세계적으로 많이쓰는) > MS-SQL > DB2 > my SQL > informix, sybase(SAP가 인수)
대,중규모 프로젝트, 회사, 중소규모 소기업 시장퇴출
요즘은 클라우드 산업 연결에 신경쓰고있다.
'Programming > Oracle SQL' 카테고리의 다른 글
Subquery (0) | 2023.08.25 |
---|---|
JOIN (0) | 2023.08.24 |
다중행 함수, GROUP BY, HAVING (0) | 2023.08.24 |
Oracle Functions (1) | 2023.08.23 |
기본 이론, 명령어 (table 관리), constraint, SELECT (0) | 2023.08.23 |