관계형 데이터베이스 (2일차)

Tyun_Record·2023년 8월 22일
0
post-custom-banner

mysql 환경설정

  • vi /etc/mysql/mysql.conf.d/mysqld.cnf
  • 유니코드 설정
  • 모든 주소에 대해 접근 허용
  • utf8mb4 환경변수 추가된 모습



DATABASE 생성

  • 데이터베이스( = 스키마 )는 테이블의 집합소
  • 테이블 생성을 위해서는 저장될 데이터베이스가 존재해야함
  • CREATE DATABASE [IF NOT EXISTS] database
  • mysql> CREATE DATABASE study

DATABASE 검색

  • mysql> SHOW DATABASE [LIKE '패턴']
  • LIKE 연산자는 문자 또는 문자열 비교시에 사용되는 연산자





테이블 데이터 검색

  • SELECT 컬럼명 FROM 테이블명;



계정 삭제

  • DROP user 유저명;



Table 생성

  • 테이블은 열과 행으로 구성
    • 열 : column 또는 field
    • 행 : row 또는 record
  • 각 컬럼이 어떤 값을 의미하는가를 나타내고 있는 곳이 속성(Atribute), 그리고 Atribute의 수를 차수 (Degree)라고 함
    • 즉, 속성 = column, 속성 수 = degree
  • 행 = Tuple, 튜플의 수 = Cardinality
  • CREATE TABLE [IF NOT EXISTS] 테이블이름
    (column_defination[...])
    [table_options]

ssh 서버

  • ssh 서버 설치
    • sudo apt install -y openssh-server
  • putty로 접속



  • 리눅스에서 만들어놓은 study 데이터베이스 사용
    • use study


  • edit 명령어 사용하면 sql문 작성



  • ; 입력하면 실행



  • edit 활용하여 테이블 생성
    • unsigned = 음수 입력 금지



  • 생성된 테이블 확인



  • select을 이용하여 테이블 생성
    • select 된 컬럼을 가지고 user라는 테이블을 현재 데이터베이스 ( study)에 만들어라



  • 생성된 모습



  • vi 편집기로 sql문 작성 ( vi create_board.sql )



  • mysql에 있는 study에 해당 sql문을 넣는다 ( 리다이렉션 )



  • vi desc_board.sql 에 DESC board 넣고 리다이렉션하여 생성된 테이블 확인



  • 테이블 이름 변경 ( user > person )



스케쥴 관리 db

  • 스케쥴 관리는 일정을 등록하고 일정일 하루 전 부터 일정에 대한 알람 제공 여부를 선택할 수 있다. 일정은 년, 월, 일과 시 분까지 지정하며 일정 장소와 간략한 일정 내용에 대한 정보를 제공한다. 일정은 일정을 생성한 주체가 있으며 일정 주체는 이름으로 기술한다.

업무명 : 스케쥴

단어목록
알람제공여부, 일정 년 월일, 일정 시분, 장소, 간략 내용, 주체

테이블명 : schedule
일련번호 : id int unsigned primary
일정일자시간 : s_date datetime current_timestamp
장소 : place varchar(100) not null
내용 : content text not null
주체 : subject varchar(20) not null
알람제공여부 : alarm enum('Y', 'N') default 'N'




  • 컬럼명 변경 ( 변경시 제약조건 그대로 넣어야함 )
  • 장소 컬럼 추가 ( where 은 예약어이므로 백틱으로 묶어줌 )
  • 내용 컬럼 추가 ( id 다음 위치에 추가, after 사용 )
  • 주체 컬럼 추가 ( 맨 앞으로, first 사용)
  • 주체 컬럼 위치를 id 뒤로 변경 ( modify 사용 )
  • 장소 칼럼 삭제
  • 장소, 알람 칼럼 추가
  • primary key 제거 ( auto_increment는 primary key여야 하므로 우선 제거 )
  • 다시 primary key 추가
  • 두 컬럼에 primary key를 넣으면 복합키라고 함
  • primary key의 데이터는 중복되면 안됨!! ( primary key 값은 인덱스 됨 )
  • 컬럼 순서를 지정해서 값 넣기

  • primary key 제거하면 데이터 중복 입력 가능
  • 데이터 중복 상태에서 primary key 지정 안됨
  • autocommit
    • autocommit 비활성화로 명령 실행을 자동으로 안함, 로그에서만 지워진거기 때문에 rollback 명령어로 데이터 복구가 가능함

    • 해당 내용을 반영하고 싶으면 commit 명령어로 가능
    • 단, sql 나갔다오면 autocommit 다시 켜짐
  • truncate 테이블명;
    • truncate는 rollback이 안됨!!
    • 테이블 자체를 지우는 것이기 때문
    • delete는 테이블내의 행을 지우는 것이기 때문에 롤백이 되는 것
    • ddl은 트랜잭션의 영향을 안받음, dml만 영향을 받으므로 롤백이 가능한 것

데이터 검색

  • c:\temp에 미리 데이터 저장했음
  • study라는 데이터베이스에 sql 파일 넣음
  • 정상적으로 들어간것 확인
  • limit 으로 제한된 검색 가능

  • where을 사용한 조건 검색
  • 컬럼에 별칭 붙이기
  • 컬럼 검색시 테이블 별칭으로 검색
  • 서적명, 정상판매가, 20%할인가 출력하면서 할인가는 100 단위에서 절삭
    • 100단위 절삭 방법
      • 100을 곱한값으로 구한후 100으로 나눈 후 소수점 때기
      • 100으로 나눈 후 소수점 때버린 후 100 곱하기
  • 컬럼에 있는 값과 특정 값 비교
post-custom-banner

0개의 댓글