명령프롬프트 실행
sqlplus sys/세팅한비밀번호입력 as sysdba
(sys가 관리자 아이디)
입력
show user
파일 <scott.txt>
C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\scott.sql
@C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\scott.sql
show user SYSTEM 아닌 SCOTT 으로 바뀜
alter user scott identified by tiger;
명령어로 비밀번호를 tiger로 바꾼다.
둘째줄
@C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\scott.sql
을 명령창에 친다
show user
명령창에 치면
user is scott
alter user scott identified by tiger;
명령창에 치면
User altered.
select*from tab;
내가 가진 모든 테이블을 본다.
치면 데이터베이스 내에 존재하는 파일들이 나온다? (파일 하나가 테이블)
***************************
SQL문
SELECT
INSERT
UPDATE
DELETE
COMMIT
*****************************
select*from dept;
select*from emp;
select*from salgrade;
from ~ : ~테이블로 부터
* : 모두
*대신 field 명을 넣어서 보고싶은것만 출력 가능
select GRADE,HISAL from salgrade;
(등급과 최고값을 salgrade 테이블로 부터 불러온다)
select hisal,grade from salgrade;
순서바꿔서 보기
명령어, 필드이름은 대소문자 구분 필요 없다.
select empno,ename,sal,comm from emp;
>직원번호, 이름, 연봉,수수료 3개 필드를 emp 테이블로부터 불러온다
select empno,ename,sal*12 from emp;
> 샐러리에 12를 곱해서 1년치를 본다.
(12를 곱해서 볼 뿐이지 데이터를 바꾸는게 아니다.)
(연산도 가능)
특정 행을 보고 싶을 경우
where 조건절 사용
select*from emp where empno=7521;
사원번호가 7521인 사원 보기
select*from emp where mgr=7698;
매니저번호가 7698번인 사원 보기
SQL에서는 ==가 아니라 = 사용
****************
사원번호, 이름, 직업, 부서번호를 불러온다
조건은 월급이 1000 이상
select empno,ename,job,deptno from emp where sal>=1000;
**
오라클 홈
인스턴트 클라이언트 다운
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
Instant Client for Microsoft Windows (x64) 서버는 32비트지만 게스트64이므로
11g 버전
*Instant Client Package - SQL*Plus: Additional libraries and executable for running SQL*Plus with Instant Client
|
********
select*from dept where deptno=30;
select*from emp where ename='KING';
문자열을 검색할 때는 앞 뒤로 ' ' 작은 따옴표를 붙여준다.
데이터 값들은 대소문자를 구분한다.
********************************
desc dept;
dept 테이블의 설명을 보겠다
NOT NULL 있는 항은 무조건 기입해야함
타입에서 NUMBER에는 숫자
VARCHAR에는 문자 넣기
데이터 입력
insert into dept(deptno,dname,loc)
2 values(50,'information','SEOUL');
새로운 데이터 추가
확인
select * from dept;
연습
insert into dept(deptno,dname,loc)
2 values(60,''marketing','LA');
insert into dept(deptno,dname,loc)
2 values(50,'HR','SEATTLE');
확인
select * from dept;
테이블면안치고 입력하기
insert into dept
2 values(80,'clean','DAEGU');
대신 순서가 중요함
컨트롤+c 누르면 SQL 빠져나옴
다시 들어가기 scott 유저로 들어가기
sqlplus scott/tiger
아까 as admin 은 관리자이므로
유저는 안해도 됨.
commit;
이전 자료 저장??
커밋 이후로 친 자료는 저장 전단계
insert into dept
2 values(99,'test','tset');
추가됨
그 다음
rollback;
롤백을 치면 commit 치기 이전 상태로 돌려 놓는다.
commit 과 rollback
저장을 해야겠다 싶으면 commit 해두자
수정
update 문
updata 테이블명
set 필드명1=값1, 필드명2=값2, ...
실습
update dept
2 set loc='BUSAN'
3 where deptno=50;
확인
select*from dept;
인포메이션부서가 부산으로 위치가 바뀌어있다.
실습2
hr>it
seattle>pangyo
update dept
2 set dname='IT' , loc='PANGYO'
3 where daptno=70;
부서번호 50이상의 지역을 구로로 바꾸고 싶다.
update dept
2 set loc='GURO'
3 where deptno>=50;
확인
select*from dept;
update dept
2 set loc='SUWON'
3 where deptno=50 or deptno=80;
두개 행 업데이트
부서번호 50, 80번 지역을 수원으로 변경
확인
select*from dept;
삭제
delete
실습
delete dept
2 where deptno=50;
부서번호 50번 데이터 삭제
확인
select * from dept;
부서번호 50번 데이터가 삭제되었다.
***
다시 관리자 로그인
sqlplus sys/비밀번호 as sysdba
sqlplus / as sysdba
로컬에서만 가능한
/로 가능 (원격에선 불가능)
Table space 생성
이 파일 서버로 보내기
create tablespace user01
2 datafile 'c:\oraclexe\oradata\user01.dbf'
3 size 10M ;
해당폴더에 가면 DBF 파일이 생성되어 있음
create user user01 identified by user01
2 default tablespace user01;
grant connect,resource to user01 ;
커넥트, 리소스 권한을 유저01에게 주겠다
Grant succeeded.
ctrl + c 빠져나가기
이제 user01로 접근하기
sqlplus user01/user01
select*from tab;
모든 테이블 보기
아직 안만들었으므로 비어있다.
******************************************************
오라클의 데이터 형
1.NUMBER(전체자릿수,소수점자릿수)
자바와 달리 오라클 DB에서는 정수(int) 실수(double) 모두 NUMER 데이터타입
NUMBER(전체 자릿수, 소수점 자릿수)
NUMBER(2) : 0~99
NUMBER(3) : 0~999
NUMBER(3,1) =>> 132.1 불가능(전체 4자리), 12.1 가능(전체 3자리)
2.CHAR(바이트수)
-고정 길이 문자열을 저장
-최대 2000바이트 까지 저장가능
-입력되는 문자수와 상관없이 항상 지정된 바이트 수만큼 공간이 할당
-ex)전화번호,주민번호,계좌번호 .. 고정된 자릿수
3.VARCHAR2(바이트수)
-가변 길이 문자열을 저장
-최대 4000 바이트 까지 저장
-입력되는 문자수 만큼 공간이 할당. 데이터 값이 유동적인 경우에 권장
-ex)이름,id,pw 등등
4.DATE 날짜 , TIMESTAMP : 이건 DATE보다 좀 더 정밀
**리터럴(Literal)
>문자 데이터와 날짜 데이터에는 ' ' (홑따옴표)를 사용하여 표현한다. 리터럴은 대소문자를 구별
****************************8
create table students(
테이블명
필드명 데이터타입
)
primary key : 유일한키 , 빈값X , 중복X
NOT NULL : 빈값X, 중복O
create table students(
2 num number(2) primary key,
3 name varchar2(10) not null,
4 kor number(3),
5 eng number(3),
6 math number(3) ) ;
select*from tab;
모든 테이블 보기
select * from students;
reat
방금만든 스튜던트 테이블 보기
결과
no rows selected
행이없음
따라서 데이터 추가
insert into students
2 values(1,'suji',80,90,100);
select * from students ;
확인하기
insert into students
2 values(2,'iu',75);
나머지 점수들은 낫널이므로 비워서 넣어보면 에러메세지
not enough values
이런경우
insert into students (num,name,kor)
2 values(2,'iu',75);
10명의 학생을 추가한다.
그 다음 국어점수 60점이상 영어점수 80점 이상인 학생 찾기
select name from students where kor>=60 and eng>=80;
iu빠진거 고치기 > 수정 > update
영어 90점 이상 ,
수학 80점 이상인 학생들을 찾아서 국어점수를 40점으로 만들기
update students
2 set kor=40
3 where eng>=90 and math>=80 ;
Teacher 테이블 생성
ID,PW,이름, 과목, 나이, 성별, 경력,
create table teachers(
2 id number(3) primary key,
3 pw number(3) not null,
4 name varchar2(10) not null,
5 subject varchar2(20),
6 age number(3),
7 sex char(5),
8 years number(3) ) ;
******************************8
alter (수정 - 필드)
****************************
ojdbc14.jar
ojdbc14 파일을
C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext
이 폴더에 옮긴다.
이클립스 실행
윈도우
쇼 뷰
아더스
데이터메니지먼트
데이터 소스 익스플로러 오캐
하단
데이터베이스 커넥션 우클릭 뉴
밑에 오라클 선택
넥스트
우측 뉴 드라이버 데피니션 클릭
Oracle Thin Driver 중 11 클릭 11g설치했으므로
오른쪽 메뉴 jar list
있는거 지우고
add jar
아까 복사한 경로 가기
ojdbc14 열기
다시 네임 타입
다시 11 선택하고 ok
SID : xe
host : 호스트 아이피 192.168.116.128
포트넘버 : 1521 기본 오라클기본
User name : user01
password : 비번입력 user01
우측하단 테스트 커넥션
ping succeed
피니시
하단 메뉴
데이터베이스 커넥션 확장
마이 오라클 우클릭
Open SQL 스크랩북
타입
Oracle_11 (오라클 11깔았으니까)
name : MyOracle
Database:xe
select * from students
드래그 하고 우클릭
Execute Selected text
****************************************8
'프로그래밍, 통계학 > Oracle Database' 카테고리의 다른 글
[46일차]2015.09.10, 오라클DB SQL문 , Cookie , 게시판 만들기 (0) | 2015.09.10 |
---|---|
[24일차]2015.08.11.화요일, 제약조건 (0) | 2015.08.11 |
[23일차]2015.08.10.월,이클립스로 sql문 작성 (0) | 2015.08.10 |