=======
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 |