NOW OR NEVER

[DataBase] 데이터베이스 명령어 본문

Back-End/Database

[DataBase] 데이터베이스 명령어

LAURA 2022. 4. 19. 17:53
반응형

데이터 베이스

  • 데이터 베이스 : 데이터를 쌓아 놓은 더미
  • 데이터 베이스의 필요성
    • 프로그램 실행 결과
      • 화면에 출력: 컴퓨터를 끄면 날아가 버림(휘발성)
      • 파일로 출력 : 실행 결과를 영구 저장 가능, 이해 관계에 있는 다 수의 사용자가 최신의 정보를 공유하기 어려움
      • 데이터 베이스로 출력: 이해 관계에 있는 다 수의 사용자가 최신의 정보 공유 가능
  • 데이터 베이스 관리시스템 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>
  • 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;

Tips

 

 

 

Comments