본문 바로가기
DataBase/MySQL

[MySQL] SQL이란? & 데이터 타입과 제약조건 알아보기!

by coding-choonsik 2023. 3. 15.
728x90
반응형
SMALL

1. SQL(Structured Query Language)

  • 데이터 베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어
  • 대소문자를 구별하지 않음
  • 문자열을 사용할 때 ''(싱글쿼트)만 사용 
  • 언어의 종류
    • DDL(Data Definition Language)
    • DML(Data Manipulation Language)
    • DCL(Data Control Language)
종류 설명 주요 명령어
DDL 데이터베이스나 테이블 등을 생성, 삭제하거나 그 구조를 변경하기 위한 명령어 CREATE, ALTER, DROP
DML 데이터베이스에 저장된 데이터를 처리하거나 조회, 검색하기 위한 명령어 INSERT, UPDATE, DELETE, SELECT 등
DCL 데이터베이스에 저장된 데이터를 관리하기 위하여 데이터의 보안성 및 무결성 등을 제어하기 위한 명령어 GRANT, REVOKE 등

1-1. 주석문

  • 주석문 : /* */ 
  • 한줄 주석 : #  또는  //
/* 이것은
주석문
구문입니다.
*/

# 한 줄 주석문 입니다.

 

2. 데이터베이스 

2-1. 데이터베이스 확인하기

  • show databases;
show databases;

 

기본 database



2-2. 데이터베이스 생성하기

  • create database 데이터베이스명;
create database kdt;

kdt 데이터베이스가 생성되었다.



2-3. 데이터베이스 삭제하기

  • drop database 데이터베이스명;
drop database kdt;

 

kdt데이터베이스가 삭제되었다.


3. 테이블

데이터를 행과 열로 스키마에 따라 저장할 수 있는 구조

 

3-1. 스키마(schemas)

데이터베이스의 구조와 제약조건에 관한 명세를 기술한 집합의 의미

 

3-2. 테이블 생성하기

  • 사용할 데이터베이스 선택
  • use 데이터베이스명;
use kdt;
  • create table 테이블명 (
        필드명1 데이터타입 제약조건,
        필드명2 데이터타입 제약조건,
        필드명3 데이터타입 제약조건,
        ...
        필드명n 데이터타입 제약조건
    );
# 테이블 생성 예
create table member(
    userid varchar(20) primary key,     	# 중복, null 불가
    userpw varchar(200)	not null,		# 중복 허용, null 불가
    username varchar(20) not null,		# 중복 허용, null 불가
    hp varchar(20) not null,			# 중복 허용, null 불가
    email varchar(50) not null,			# 중복 허용, null 불가
    gender varchar(10) not null,
    ssn1 varchar(6) not null,			# 주민번호 앞 6자리
    ssn2 varchar(7) not null,
    zipcode varchar(5), 			# 우편번호 5자리 (필수값x)member
    address1 varchar(100),
    address2 varchar(100), 
    address3 varchar(100),
    regdate datetime default now(),		# 현재 시간을 자동으로 입력
    point int default 0    
);

4. 데이터 타입(Data Type)

4-1. 숫자형 타입

  • tinyint: 정수형 데이터 타입(1byte),  -128 ~ 127 표현
  • smallint: 정수형 데이터 타입(2byte), -32768 ~ 32767 표현
  • mediumint: 정수형 데이터 타입(3byte), -8388608 ~ 8388607 표현
  • int: 정수형 데이터 타입(4byte), -21억 ~ 21억 표현
  • bigint: 정수형 데이터 타입(8byte), 무제한 표현 
  • float: 부동 소수형 데이터 타입(4byte)
  • decimal(길이, 소수): 고정 소수형 데이터 타입(길이 + 1byte)
  • double: 부동 소수형 데이터 타입(8byte)

💡 int를 보편적으로 많이 사용: 21억을 넘기지 않음, 기본형이기 때문에 가장 속도가 빠르고 안정적
💡 소수표현 시 double을 보편적으로 사용: 소수점을 모두 표현하는 것이 좋음, 속도가 빠름

 

 

4-2. 문자형 타입

  • char: 고정 길이 데이터 타입(최대 255byte), 지정된 길이보다 짧은 데이터 입력 시 나머지 공간을 공백으로 채움
  • varchar: 가변 길이 데이터 타입(최대 65535byte), 지정된 길이보다 짧은 데이터 입력 시 나머지 공간은 채우지 않음
  • text: 문자열 데이터 타입(최대 65535byte)
  • longtext: 무제한 문자열 데이터 타입

💡 char 사용 권고하지 않음

 

4-3. 이진 데이터 타입 (0, 1로 이루어진 데이터 - 영상, 동영상 등)

  • binary 또는 byte: char 형태의 이진 데이터 타입(최대 255 byte)
  • varbinary: varchar의 형태의 이진 데이터 타입(최대 65535 byte)

💡 데이터베이스에 이진데이터를 거의 저장하지 않음  

 

 

4-4. 날짜 데이터 타입

  • date: 날짜(년도, 월, 일) 형태의 데이터 타입(3byte)
  • time: 시간(시, 분, 초) 형태의 데이터 타입(3byte)
  • datetime: 날짜와 시간 형태의 데이터 타입(8byte)
  • timestamp: 1970년 1월 1일 부터 시작한 ms 타입의 시간이 저장(4byte)

💡 날짜의 계산이 용이함  

 


5. 제약조건(Constraint)

  • 데이터의 무결성을 지키기 위해 데이터를 입력 받을 때 실행되는 검사 규칙을 의미

5-1. not null

  • null 값을 허용하지 않음
  • 중복값을 허용

5-2. unique

  • 중복값을 허용하지 않음
  • null값을 허용


5-3. primary key

  • null값을 허용하지 않음
  • 중복값도 허용하지 않음
  • 테이블에 단 하나


5-4. foreign key

  • primary key를 가진 테이블과 연결하는 역할

primary key 와 foreign key


5-5. default

  • null 값을 삽입할 때 기본이 되는 값을 저장할 수 있게 함


5-6. enum

  • 원하는 범위를 설정하고 해당 범위의 값만 저장
  • enum('남자', '여자') -> '남자'와 '여자' 두 가지 형태의 데이터만 저장됨

💡 사용을 권장하지 않음

 

 

 

728x90
반응형
LIST