자료형의 종류
문자
- 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)
-> );
댓글