공부?/국비 지원 일기장

47일차 - MariaDB

무무요 2024. 9. 10. 17:50

 

=======

 

DataBase

틀을 만들어 데이터를 저장한다는 느낌으로 생각하기


기본SQL 문법종류

데이터정의어(DDL, Data Definition Language)
- 데이터베이스의 구조를 정의 하거나 변경, 삭제하기 위해 사용하는 언어
- 주로 DB관리자 또는 설계자가 사용
- CREATE(개체 생성), ALTER(개체 수정), DROP(개체 삭제), TRUNCATE(개체 초기화) 

데이터조작어(DML, Data Manipulation Language)
- data를 조작하기 위해사용하는언어
- data의 삽입, 수정, 삭제, 조회 등의 동작을 제어
- data를 이용하려는 사용자와 시스템간의 인터페이스를 직접적으로 제공하는 언어
- 가장 많이 사용됨(공격 시에도 가장 많이 사용)
- INSERT(데이터 생성), UPDATE(데이터 수정), DELETE(데이터 삭제), SELECT(데이터 조회)

데이터제어어(DCL, Data Control Language)
- DB에 대한보안, 무결성, 복구등 DBMS를 제어하기 위한 언어
- GRANT(권한할당), REVOKE(권한해제), COMMIT(실행), ROLLBACK(복구)


Table 생성
- 데이터베이스가 먼저 만들어져 있어야 하고 데이터베이스 선택 후 생성 가능
MariaDB> create database kor_db;
MariaDB> use kor_db;
MariaDB> show tables;  => 현재 내용 없음

MariaDB> create table <테이블명> ( <컬럼명> <데이터타입> [옵션] [제약조건 ... ] , …. );
 MariaDB> create table kor_member(
-> no int auto_increment not null primary key ,   => NOT NULL Unique
-> name char(20) ,-> id varchar(20) unique , 
-> password varchar(50) default “1234” , 
-> reg_date datetime not null );

 

테이블 생성 확인
MariaDB> show tables;

테이블 구조 확인
MariaDB> desc <테이블명>;

 

 

 

제약 조건
- 데이터의 무결성을 지키기 위해 제한된 조건
- 테이블 및 열 (컬럼) 레벨에서 적용 가능하며, 테이블의 생성이나 구조 변경 시에도 적용할 수 있음
- 적절한 제약 조건을 골라서 사용

- NULL값을 허용하지 않는 방식이 자주 사용된다.

 

 

Table 수정(구조변경)
Mariadb> alter table <테이블명> <ACTION> <옵션값 ...>;

alter = DDL

실제 데이터가 바뀌는건 DML

 

======= 

 

Table 생성
- 데이터베이스가 먼저 만들어져 있어야 하고 데이터베이스 선택 후 생성 가능
MariaDB> create database kor_db;
MariaDB> use kor_db;
MariaDB> show tables;  => 현재 내용 없음

MariaDB> create table <테이블명> ( <컬럼명> <데이터타입> [옵션] [제약조건 ... ] , …. );
 MariaDB> create table kor_member(
-> no int auto_increment not null primary key ,   => NOT NULL Unique
-> name char(20) ,-> id varchar(20) unique , 
-> password varchar(50) default “1234” , 
-> reg_date datetime not null );

테이블 생성 확인
MariaDB> show tables;

테이블 구조 확인
MariaDB> desc <테이블명>;

제약 조건
- 데이터의 무결성을 지키기 위해 제한된 조건
- 테이블 및 열 (컬럼) 레벨에서 적용 가능하며, 테이블의 생성이나 구조 변경 시에도 적용할 수 있음
- 적절한 제약 조건을 골라서 사용
- NULL값을 허용하지 않는 방식이 자주 사용됨

Table 수정(구조변경)
- Column 추가
Mariadb> alter table <테이블명> <ACTION> <옵션값 ...>;
- 위치 옵션
  - first : 가장 위에 추가
  - after <컬럼명> : 해당 컬럼 뒤에 추가

Table 삭제 - drop
- Column 삭제
MariaDB> alter table <테이블명> drop <컬럼명>;

Table 수정 - modify
- column 수정
MariaDB> alter table <테이블명> modify <컬럼명> <데이터 타입> [옵션] [제약조건] ;

Table 수정 - change
- column 변경
MariaDB> alter table <테이블명> change <기존컬럼명> <새컬럼명> <데이터타입> [옵션] [제약조건];

Table 수정(구조변경) - rename
- 테이블 이름 변경
MariaDB> alter table <기존테이블명> rename <변경할테이블명>;
MariaDB> rename table <기존테이블명> to <변경할테이블명>;

Table 초기화
-테이블 내 데이터를 모두 삭제하고 설정을 초기화
MariaDB> truncate <테이블명>;


TRUNCATE / DROP / DELETE 차이점

Truncate
- 해당 테이블의 데이터 모두 삭제되지만 테이블 자체가 지워지는 것은 아님

Drop
- 테이블 자체가 지워짐
- create로 만든건 drop으로 지운다

Delete => 특정 데이터만 지울 수 있지만, truncate는 안됨 => 그래서 데이터 삭제는 주로 delete 사용
- 데이터 삭제
- insert into 로 만든건 Delete로 삭제

Table 삭제
MariaDB> drop table <테이블명>;


DDL 실습
- 데이터베이스 생성하기
DB명 : koracademy
create database koracademy;

- 테이블 생성하기 
테이블명 : member, freeboard
테이블 구조
  > N.N은 not null을 의미

create table member(
-> id varchar(20) unique not null ;
-> pass varchar(20) not null;
-> name varchar(20) not null;
-> sex char(1);
-> tel varchar(20) default "010-0000-0000";
-> address varchar(90) );

create table freeboard(
-> num int auto_increment not null primary key ;
-> name varchar(20) not null;
-> email varchar(20) ;
-> subject varchar(100) not null;
-> content varchar(500) not null;
-> regist_day varchar(20) ;
-> ip varchar(20)  ) ;

- 테이블 구조 수정하기

member 테이블의 가장 위에 일련번호 컬럼 추가
   >컬렴명: no , 데이터 타입 : int , 옵션 : 번호 자동증가 , 제약조건 : primary key
> alter table member add no int auto_increment primary key first;

member 테이블의 비밀번호 컬럼 데이터타입을 varchar(50) 으로 수정
> alter table member modify pass varchar(50) not null ;

member 테이블의 성별 컬럼을 나이 컬럼으로 변경
   >컬럼명: age , 데이터 타입 : int , 옵션 및 제약조건 없음
> alter table member changer sex age int ;

member 테이블의 주소 컬럼을 작성일시 컬럼으로 변경
  >컬럼명: reg_date , 데이터 타입 : datetime , 옵션 없음 , 제약조건 : not null
> alter table member change address reg_date datetime not null;

member 테이블의 전화번호 컬럼삭제
> alter table member drop tel;

member 테이블 이름을 kor_mem 으로 변경
> rename table member to kor_mem;

freeboard 테이블의 이름 컬럼 다음에 게시글 비밀번호컬럼추가
   >컬럼명: passwd , 데이터 타입 : varchar(20) , 옵션 : 기본값 0000 으로 설정 , 제약조건 없음
> alter table freeboard add passwd varchar(20) default "0000" after name ;

freeboard 테이블의 글 내용 컬럼 데이터 타입을 text 로 수정
> alter table freeboard modify content text not null;

freeboard 테이블의 글쓴 날짜 컬럼 이름 및 데이터타입변경
   >컬럼명: reg_date , 데이터 타입: datetime , 옵션 없음 , 제약조건 : not null
> alter table freeboard change regist_day reg_date datetime not null; 
 
freeboard 테이블의 메일주소 컬럼 삭제
> alter table freeboard drop email;


데이터조작어(DML, Data Manipulation Language)
- data를 조작하기 위해 사용하는 언어
- data의 삽입, 수정, 삭제, 조회 등의 동작을 제어
- INSERT(데이터 생성), UPDATE(데이터 수정), DELETE(데이터 삭제), SELECT(데이터 조회)
- DELETE의 뒤엔 꼭 where   을 붙여야 한다. 안붙일시 전부다 삭제됨
- 데이터베이스와테이블이미리만들어져있어야함
 DB : koracademy
  Table : kor_mem

 DATA 생성 1
- 테이블의 모든 컬럼에 데이터 입력할 경우
- 입력할 데이터는 반드시 컬럼의 순서와 개수가 일치 해야 함
MariaDB> insert  into <테이블명> values (입력데이터 , …) ;
> insert into kor_mem
 -> values(null, 'test1', 'qwer1234','test1','25',now() );
확인하기
> select * from kor_mem;

 



- no 는 auto_increment 옵션에 의해 값이 자동으로 입력되므로 빈 값만 전달
- 문자형은 ‘ (싱글쿼터) 나 “ (더블쿼터) 로 묶어서 입력하고 숫자형은 값만입력
- now() : 현재 날짜와 시간을 알아오는 MariaDB 내장 함수

 

DATA 생성 2
- 특정 컬럼을 지정해서 데이터 입력할 경우
- 앞에 입력한 컬럼명과 입력 데이터의 순서와 개수가 일치 해야 함
MariaDB> insert  into <테이블명> (컬럼명 , …) values (입력데이터 , …) ;
> insert into kor_mem(name, id, pass, reg_date) values('test2','test2','1234qwer', now() );
확인하기
> select * from kor_mem;

 

 

 

 

 

 

DATA 조회 1
- 테이블 내 모든 데이터 조회
- 테이블에 저장된 컬럼 순서대로 조회
MariaDB> select  *  from <테이블 명>;
> select * from kor_mem; 




DATA 조회 2
- 특정 컬럼을 지정해서 조회
- 컬럼 순서는 테이블에 저장된 순서가 아닌 조회할때 지정한 순서로 조회됨
MariaDB> select  <컬럼명 [ , ... ] > from <테이블 명>;
> select pass from kor_mem;

 

 

 

DATA 조회 3
- 조건을 지정해서 원하는 데이터만 조회
- 조건은 기본 연산자를 이용해 지정 가능
- 조건이 여러개인 경우 논리연산자(and , or) 를 이용해 하나의 결과값으로 만들어 줘야 함
MariaDB> select  <컬럼명 [ , ... ]> from <테이블 명>  where  <조건>;

 

 


- 조건1개 일치하는 데이터조회
> select * from kor_mem where id = ‘test’;

- 조건 2개 일치하는 데이터조회
> select * from kor_mem where age > 20 and age < 29;

 

DATA 조회 3
- 조건과 비슷한 데이터 조회( like 연산자)
   메타문자
>% : 자리 수 제한 없이 모든 문자를 의미
>_  : 한 자리 수의 모든 문자를 의미

- 총 4글자중 앞에 tes로 시작하고 마지막 한글자는 아무거나 모두 조회
 > select * from kor_mem where id like 'tes_';

- 글자수 제한 없고 가장 앞에 tes로 시작하는 데이터 조회
 > select * from kor_mem where id like 'tes%';

- 글자수 제한 없고 12 가 포함된 모든 데이터 조회
 > select * from kor_mem where pass like '%12%';

=======

'공부? > 국비 지원 일기장' 카테고리의 다른 글

49일차  (0) 2024.09.12
48일차 - MariaDB DML  (0) 2024.09.11
46일차 - NFS, Samba, DB  (1) 2024.09.09
45일차 - FTP, 메일 서비스  (3) 2024.09.07
44일차 - GNS3 맛보기  (0) 2024.09.05