반응형
Notice
Recent Posts
Recent Comments
Link
NOW OR NEVER
[DataBase] 데이터베이스 명령어 본문
반응형
데이터 베이스
- 데이터 베이스 : 데이터를 쌓아 놓은 더미
- 데이터 베이스의 필요성
- 프로그램 실행 결과
- 화면에 출력: 컴퓨터를 끄면 날아가 버림(휘발성)
- 파일로 출력 : 실행 결과를 영구 저장 가능, 이해 관계에 있는 다 수의 사용자가 최신의 정보를 공유하기 어려움
- 데이터 베이스로 출력: 이해 관계에 있는 다 수의 사용자가 최신의 정보 공유 가능
- 프로그램 실행 결과
- 데이터 베이스 관리시스템 DataBase Management System(DBMS)
- 데이터 베이스를 관리하는 시스템(sw)
- oracle, mysql, mssql
데이터베이스의 종류
- 관계형 데이터 베이스
- ex) oracle
- 서로 관련(관계)가 있는 테이블로 구성
- 테이블은 행과 열로 구성됨
SQL(Structured Query Language)
- 데이터 베이스 명령어
초기설정
- sqlplus
- oracle에서 데이터베이스 명령어 모드를 실행하기 위해서는 cmd 창에서 sqlplus 명령어 실행
- 시스템 계정으로 로그인: sqlplus system/오라클 설치 시 작성한 system DB 비밀번호
- 한번에 로그인 : sqlplus 사용자계정/비밀번호
- 1. cmd 창에 sqlplus 입력
- 2. 사용자 명과 비밀번호 입력
- 처음 접속시 사용자 계정이 안만들어진 상태이므로 아이디는 system을 작성하면 된다.
- 비밀번호 입력 시 화면에 보이지 않으니 당황하지 말고 그냥 설치할 때 설정한 비밀번호 치면 됨
- 3. SQL>
- oracle에서 데이터베이스 명령어 모드를 실행하기 위해서는 cmd 창에서 sqlplus 명령어 실행
- create user 사용자이름 identified by 암호 : 사용자 계정 만드는 명령어
- grant 권한명1,권한명2,... to 사용자 이름; : 사용자한테 연결할 수 있고 자원을 사용할 수 있고, dba의 권한 부여
- ex) grant connect, resource, dba to 사용자계정;
- exit : 관리자 연결 종료
- create table 테이블이름(속성이름1 자료형1(해당 속성의), 속성이름2 자료형2(해당 속성의),...);: 테이블 생성
- 중복이 되지 않는 식별자로 만들기 위해서는 key primary 해당 속성의 자료형 뒤에 작성
- desc 테이블이름 : 해당 테이블의 속성 확인
- insert into 테이블이름 values(값1, 값2,...) : 테이블에 자료 추가
- 값의 수와 순서는 테이블의 구조의 속성 수와 순서가 동일해야 함
- select column이름1, column이름2, ... from 테이블이름; : 자료 확인(자료 검색)
- 전체 검색 시: select * from 테이블이름;
- column 폭의 설정
- 파일을 만들어 설정
- 1. ed 파일명 : 해당 파일명으로 새파일 생성 or 해당 파일 열기
- 2. 해당 파일에 col column이름 format col폭너비;를 각 column을 enter로 구분하여 작성해 폭너비 설정
- 파일을 만들어 설정
- update 테이블이름 set 컬럼이름 = 값; : 모든 레코드의 값이 변경
- update 테이블이름 set 컬럼이름=값 where 조건식; : 특정 레코드만 수정하기
- update 테이블이름 set 컬럼1=값1, 컬럼2=값2, ... where 조건식; : 한꺼번에 여러개의 속성 바꾸기
- 자료 삭제
- delete 테이블이름;
- delete 테이블이름 where 조건식; : 해당 테이블에서 조건에 맞는 거 삭제
oracle 자료 형
- 문자: varchar2(가변길이)
- 숫자: number
- 문자와 문자열 처리 : '문자 or 문자열', oracle에서는 문자와 문자열 처리를 동일하게 한다.
- references 참조할테이블명(참조할 키) : 다른 테이블의 키를 참조하여 쓸 수 있다.
- @ff : file 안 sql 실행 시켜줌
- 자료형 길이 작성시 a10 이런 것들은 문자열 자료형 길이를 뜻함
- 한글은 한글자당 2칸의 자리를 차지함
- ed ff했을 때 열린 파일 안에 테이블들의 column format 작성 : column 테이블키이름 format column의format;
sql 종류
- 데이터 정의어(DDL: Data Defination Language)
- 데이터 베이스 테이블을 만들거나, 삭제 혹은 구조를 변경(수정)하는 명령어들을 뜻함 ex) create(생성), alter(변경), drop(삭제)
- 데이터 조작어(DML: Data Manipulation Language)
- 데이터 베이스 테이블에서 데이터를 검색, 삽입, 수정, 삭제 하는 데 사용하는 명령어들 ex) select, insert, delete, update
- 특히 조회(검색)하는 select 명령어는 query(질의어)라 한다.
- 데이터 제어어(DCL: Database Control Language)
- 데이터의 사용 권한을 관리하는 데 사용하는 명령어들 ex) grant, revoke
데이터 조작어(DML: Data Manipulation Language)
select문
- select 조회할속성1, 속성2,... from 조회할table where 검색조건식;
- 먼저 작성한 속성 먼저 조회됨
- select 절과 from 절을 엔터로 쳐서 나눠서 표현하기도 함
- select * from 조회할table : 테이블의 모든 속성 출력
- select과 from은 필수 요건, 나머지는 생략 가능
- select all/distinct 속성이름(들) from 테이블이름(들) where 검색조건(들) group by 속성이름(들) having 검색조건(들) order by 속성이름 asc/desc;
- distinct : 동일한 값이 중복이 되는 경우 한번만 나타내고자 할 때 사용
- group by : 속성별로 검색하고 자 할 때 사용
- groupby로 나온 결과에 대해서 검색조건을 주고자 할 때 having 구문 사용
- order by
- 어떤 속성을 기준으로 정렬하고자 할 때 사용
- 특정 칼럼을 기준으로 자료를 정렬하여 검색하고자 할 때에 사용
- order by 컬럼이름 asc/desc, 동일값정렬속성 asc/desc
- asc : 오름차순(기본), 생략 가능
- desc : 내림차순
- 가격 동일시 다른 속성으로 정렬 가능
- select * from book order by price desc, bookname asc/desc; : 북 테이블을 price 속성을 기준으로 내림차순으로 정렬하고 가격 동일시 bookname을 기준으로 정렬한다.
- where
술어 | 연산자 | 설명 | 예 |
비교 | =, <>,<,<=,>,>= | =은 일치, <>은 부정 | |
범위 | between | 범위 설정 | select * from book where price between 10000 and 20000; |
집합 | in, not in | in 다음에 오는 집합에 있는 속성값이 포함되는 가 안되는 가 | select * from book where publisher in ('굿스포츠','대한미디어'); select * from book where publisher not in ('굿스포츠','대한미디어'); |
패턴 | like | 그냥 문자열만 작성시 =과 같은 역할, %이단어 앞뒤로 어떤 글자가 와도 좋을 때%, %이단어로 끝나는 거, 이단어로 시작하는거%, _해당 단어 앞에 문자 한 개 있는 거 |
select bookname,publisher from book where bookname like '축구의 역사'; select bookname, publisher from book where bookname like '_구%'; --> 두번째 글자가 구이고 구 뒤에는 글자 수 상관없이 아무 글자가 오는 책이름을 찾아라 |
null | is null, is not null | 비어있는가, 안비어있는가 | |
복합조건 | and, or, not | 둘다, 둘 중 하나, 부정 조건 식에 2개 이상일 때 and와 or 연산자 사용 |
- 집계함수와 group by
- 컬럼별로 총합, 평균, 최대값, 최소값, 개수를 파악하기 위한 함수들을 말한다.
- select 집계함수1(속성), 집계함수2(속성), ... as 별칭 from 테이블명
- as 키워드 생략 가능, 띄어쓰기 하고 별칭만 입력해도 별칭 사용 가능
- 총합 : sum, 평균: avg, 최대값: max, 최소값: min, 개수 : count
- count(컬럼이름) : 그 컬럼의 값이 null이 아닌 개수를 알려주는 함수
- count(*) : 모든 레코드의 수를 알려주는 함수
- 한 건만 나타남
- 집계함수는 동일 컬럼에서만 가능
- 집계함수와 group by 함께 사용 ex) select custid, count(*) 총주문건수, sum(saleprice) from orders group by custid;
- 집계 함수 사용할 경우 group by 절에 나타난 칼럼만이 select 절에 올 수 있다.
- having : group by 절에 나타난 결과에 대한 검색조건
- 두 개 이상의 테이블에서 sql 질의
- 중첩 질의(subquery)
- 예시 : select custid, count(*) from orders, book where publisher in (select bookid from book where publisher in('굿스포츠', '이상미디어','대한미디어')) group by custid;
- 중첩 질의(subquery)
Tips
- oracle 다운로드 : https://www.oracle.com/kr/database/technologies/xe-downloads.html
- 칼럼 = 속성 = 필드 , 한 개의 행 = 레코드 = 튜플
'Back-End > Database' 카테고리의 다른 글
[DataBase] 데이터 조작어(DML) - 명령어 (0) | 2022.04.25 |
---|---|
[DataBase] 데이터 정의어(DDL) (0) | 2022.04.24 |
[DataBase] 데이터 베이스 연동 프로그램 (0) | 2022.04.23 |
[DataBase] 데이터조작어(DML) - Sub Query (0) | 2022.04.22 |
[DataBase] 데이터조작어(DML) - Join (0) | 2022.04.21 |