본문 바로가기
DataBase

[MariaDB]자료형의 종류 / 데이터베이스 관련 쿼리문 / 데이터베이스 생성 / 데이터베이스 삭제 /테이블 생성 관련 쿼리문 / 테이블 이름 규칙(30자 이내 영문자) /create table 테이블명 / desc(ribe) 테..

by bkuk 2022. 10. 18.

자료형의 종류

 

문자

  • varchar(크기) - 가변형 10 / 2 -> 2자리만 사용 => 검색 느림
  • char(크기) - 고정형 10 / 2 -> 10자리 사용 => 검색 빠름
  • XXXText - 고용량

숫자

  • 정수형 - int(크기)
  • 실수형 -  decimal(전체길이, 소수점길이)

날짜

  • date
  • datetime

이진

  • 이미지, 사운드

 


데이트베이스 관련 쿼리문

 

해당 데이터베이스가 없으면 생성하기

create database if not exists 데이터베이스명;

 

데이터베이스 삭제

drop database 데이터베이스명;

 

해당 데이터베이스가 존재한다면 삭제

drop database if exists 데이터베이스명;

 


테이블 생성 관련 쿼리문

 

테이블 이름은

  • 30자 이내이며, 영문자로 구성
  • 함수명 사용 X
  • 다른 테이블 이름과 중복 X

테이블 생성 문법

create table 테이블명 (
    열 이름 자료형(크기) 옵션,
    열 이름 자료형(크기) 옵션,
    열 이름 자료형(크기) 옵션
    ...)

 

 

테이블 생성

create table dept(
    -> deptno int(2),
    -> dname varchar(14),
    -> loc varchar(13)
    -> );

 

테이블 구조 확인

desc dept;

테이블 복제 관련 쿼리문

 

테이블 복제 문법

create table 테이블명
	as select * from 복사할 데이터명.테이블명

예)create table dept1
    -> as select * from sample.dept;

 

테이블 복제 예제 1

사원번호, 사원이름, 급여, 연봉, 입사일을 중심으로 테이블 복제
연봉은 (sal * 12 + comm)로 표현

create table empcopy
    -> as select empno, ename, sal, sal*12+ifnull(comm,0), hiredate from sample.emp;

 

위 쿼리문을 통해 생성된 컬럼은 헷갈릴수 있으므로, 컬럼의 별명 생성

create table empcopy2
	as select empno no, ename name, sal sal, sal*12+ifnull(comm,0) annsal, hiredate hdate 
	from sample.emp;

 

컬럼 복제 1 (데이터를 제외한 틀만 가져올 경우)

create table empty_emp
    -> as select * from sample.emp where 1 != 1;

 

컬럼 복제 2 (데이터를 제외한 틀만 가져올 경우)

create table empty_emp2 like sample.emp;

 


테이블 수정 관련 쿼리문

테이블 수정 범위

  • 컬럼 추가
  • 컬럼 설정 변경
  • 컬럼 삭제
  • 제약 조건 변경

add, 새로운 컬럼 추가(단, 중간에 삽입 X)

alter table emp_year
    -> add job varchar(10);

 

modity, 컬럼의 데이터 타입 크기 변경(크기 축소는 데이터가 없을 때에만)

alter table emp_year
    -> modify job varchar(20);

 

rename, 컬럼의 이름 변경

alter table emp_year
    -> rename column job to work;

 

drop, 컬럼의 삭제(제거)

alter table emp_year
    -> drop work;

 

rename, 컬럼의 이름변경

alter table emp_year rename emp_year3;

 

show create, 명령어를 통해 creat table 뜯어보기

show create table emp_year2;

 

drop, 테이블 삭제(제거)

drop table emp_year2;

데이터 삽입

 

데이터 삽입 기본 형식(컬럼명 생략가능..)

insert into 테이블명 ( 컬럼명, 컬럼명, 컬럼명 ...) values( 값 1, 값  2, 값 3...);

 

values( 값1, 값2, ...), 값이 숫자일 경우

insert into 테이블명 values ( 값 1, 값 2, 값 3 ...)

 

values( "값1", "값2", ...), 값이 문자열 또는 날짜일 경우(' 또는 " 추가)

insert into 테이블명 values ( "값 1", "값 2", "값 3" ...)

 

values( 값1, 값2, ...), 데이터 삽입 예제

insert into dept1 values ( 10, '개발부', '서울');

 

데이터 삽입 시 오류 1 - 데이터 타입이 다른 경우

* 데이터 삽입 시, 데이터 타입이 다른 경우
insert into dept1 values ( 10, 개발부, '서울');

** 오류 메시지
Unknown column '개발부' in 'field list'

 

데이터 삽입 시 오류 2 - 데이터 타입이 다른 경우

데이터 삽입 시, 입력길이 초과
** 오류 메시지
ERROR 1406 (22001): Data too long for column 'dnama' at row 1

 

데이터 삽입 시 오류 예외

데이터 타입이 int형, 삽입 시 문자열(따옴표)로 표시한 경우는 에러가 X( int형으로 자동 형변환)
insert into dept1 values ( '10', '개발부', '서울');

 

테이블 생성 시 컬럼명 설정(생성)

create table dept1 (
    -> deptno int(2),
    -> dnama varchar(14),
    -> loc varchar(13)
    -> );

 

데이터 삽입 시 오류, 컬럼의 숫자만큼 데이터를 삽입하지 않았을 때

insert into dept1 values ( 30, "기획부");

 

 

Null 값 허용, Default(기본값) 확인

desc dept1;

 

자동적으로 Null 값이 삽입되게 하려면

insert into dept1( deptno, dnama ) values ( 30, '기획부' );

 

또한, 고의적으로 Null 값을 명시할 수 도 있음.

insert into dept1 values (40, '생산부', null);

 

Null이 아닌 공백을 넣었다면? (공백은 공백이고, null은 null이다. 둘은 서로 다른 값이다.)

insert into dept1 values (40, '생산부', '');

 

 

Null을 허용하지 않는 필수 입력값으로 만들려면? 생성할 때 not null을 명시

create table dept2 (
    -> deptno int(2) not null,
    -> dname varchar(14) not null,
    -> loc varchar(13)
    -> );

 

 

댓글