9-1일차 수업(KDT)_코리아IT강남점
DataBase(데이터 베이스)
* Data: 자료
* DataBase: 자료를 통합하여 관리하는 집합체, 저장소
* DBMS(Database Management System, 데이터베이스 관리 시스템)
데이터베이스를 관리해주는 소프트웨어
DBMS를 사용하는 이유
- 중복된 데이터를 제거 또는 관리
- 효율적인 데이터를 처리
- 자료를 구조화시킬 수 있음
- 다양한 프로그램을 사용하는 사용자들과 데이터를 공유
# https://db-engines.com/en/ranking
MySQL 서버 다운로드
1. https://dev.mysql.com/downloads/installer/ 로 이동
2. Windows (x86, & 64-bit), MySQL Installer MSI 이동
3. Windows (x86, & 64-bit), MY Installer DownLoad
4. No thanks, just start my download. 클릭
정보를 요청하는 쪽 정보를 제공하는 쪽
Client ----> Sever
관계형 데이터베이스(RDBMS)
- DataBase -> Table(엑셀과 비슷)
- 행, 열을 중심으로 저장
- 행('로우', '레코드') 라고 부름
- 열('필드', '컬럼') 이라 부름
- 엑셀의 sheet를 Table라고 함\
- SQL 언어를 사용
SQL(Structured Query Language)
- 데이터베이스에서 데이터를 저장하고 조작, 제어하기 위해 사용하는 언어
- 대소문자를 구별하지 않음
- 문자열을 저장할 때 ' '(싱글 쿼트)만 사용
주석문
한 줄 주석문: # 또는 --
주석처리 방법 /*--*/
-------------------------------------
# 데이터베이스 확인하기
show databases; # 워크벤치를 실행할 때는 세미콜론 넣어주기
# 데이터베이스 생성하기
# create database 데이터베이스명;
create database kdt;
# 데이터베이스 삭제하기
# drop database 데이터베이스명;
drop database kdt;
--------------------------------
/*
테이블(table)
데이터를 행과 열로 스키마에 따라 저장할 수 있는 구조
✔ 스키마
데이터베이스의 구조와 제약조건에 관한 명세를 기술한 집합의 의미
create table 테이블명(
필드명1 데이터타입 제약조건,
필드명2 데이터타입 제약조건,
필드명3 데이터타입 제약조건,
...
필드명n 데이터타입 제약조건
)
데이터 타입(Data Type)
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) # 은행권 같은 정수 형태에서 가장 빠름
# 일반 회원사이트 왜냐면 왠만하면 21억 넘기 힘듦
# 보통 속도가 빠른 int형태를 주로 사용, 회원수가 21억 진짜 넘을 것 같으면 bigint
2. 문자형 타입
char: 고정 길이 데이터 타입(최대 255byte).지정된 길이보다 짧은 데이터를 입력할 때, 나머지 공간을 공백으로 채움
vachar: 가변 길이 데이터 타입(최대 65535byte). 지정된 길이보다 짧은 데이터를 입력할 때, 나머지 공간을 공백으로 채우지 않음
text: 문자열 데이터 타입(최대 65535byte)
longtext: 무제한 문자열 데이터 타입
3. 이진 데이터 타입 # 동영상, 음악 등의 텍스트가 아닌 데이터
binary 또는 byte: char 형태의 이진 데이터 타입(최대 255byte)
varbinary: varchar의 형태의 이진 데이터 타입(최대 65535byte)
4. 날짜 데이터 타입
date: 날짜(년도, 월, 일) 형태의 데이터 타입(3byte)
time: 시간(시, 분. 초) 형태의 데이터 타입(3byte)
datatime: 날짜와 시간 형태의 데이터 타입(8byte)
timestamp: 1970년 1월 1일 0시 0분 0초부터 시작한 ms 타입의 시간이 저장(4byte)
제약 조건(constraint)
데이터의 무결성을 지키기 위해 데이터를 입력받을 때 실행되는 검사규칙을 의미
not null
- null 값을 허용하지 않음
- 중복값을 허용
unique
- 중복값을 허용하지 않음
- Null 값을 허용
primary key
- null 값을 허용하지 않음
- 중복값을 허용하지 않음
- 테이블에 오로지 단 하나만 사용가능
- 테이블의 대표
koreign key
- primary key를 가진 테이블과 연결하는 역할
default
- null 값을 삽입할 때 기본이 되는 값을 저장할 수 있게 함
enum
- 원하는 범위를 설정하고, 해당 범위의 값만 저장 # 권장하지 않음
enum('남자', '여자') # 남자 여자의 값만 들어갈 수 있음 이외의 값은 에러뜸
*/
--------------------------------------------------
---------------------------------
# 데이터 삭제하기
# delete from 테이블명;
# delete from 테이블명 where 조건절;
delete from member; # Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
# 조건절의 예)
delete from member where userid = 'apple'; # userid가 apple인 사용자를 삭제
delete from member where gender = '남자';
# 데이터 수정하기
# update 테이블명 set 필드명1 = 값1, 필드명2 = 값2...
# updeat 테이블명 set 필드명1 = 값1, 필드명2 = 값2... where 조건절;
update member set point = 100;
update member set point = point+50; # 기존 100에 50을 더해주는 방법?
update member set point= point+300 where gender ='여자';
# banana 회원의 이메일을 banana@naver.com으로 변경
update member set email='banana@naver.com' where userid='banana';
# orange 회원의 우편번호를 '12345', 주소1은 '서울시 서초구', 주소2는 '양재동', 주소3은 '아파트 101동 101호'`
update member set zipcode='12345' where userid='orange';
update member set address1='서울시 서초구' where userid='orange';
update member set address2='양재동' where userid='orange';
update member set address3='아파트 101동 101호' where userid='orange';
update member set zipcode='12345', address1='서울시 서초구', address2='양재동', address3='아파트 101동 101호' where userid='orange';
# 테이블 확인하기
# desc 테이블명
desc member;
# 테이블 삭제하기
# drop table 테이블명
drop table member;
# 테이블 필드 추가
# alter table 테이블명 add 컬럼명 데이터타입 제약조건
alter table member add mbti varchar(10);
# 테이블 필드 수정하기
# alter table 테이블명 modify cloumn 컬럼명 데이터타입 제약조건
alter table member modify column mbti varchar(20);
# 테이블 필드 삭제
# alter table 테이블명 drop 컬러명
alter table member drop mbti;
# 데이터 삽입하기
# insert into 테이블명 values (값1, 값2, 값3, ...)
# insert into 테이블명 (필드명1, 필드명2, 필드명3 ..) values (값1, 값2, 값3 ...)
create table word(
eng varchar(50) primary key,
kor varchar(50) not null,
lev int
);
insert into word values('apple', '사과', 1);
select * from word; # 확인하는 코드
# insert into word values('banana', '바나나'); # Error Code: 1136. Column count doesn't match value count at row 1
insert into word values('banana', '바나나', null);
# insert into word values('orange', null, null); # Error Code: 1048. Column 'kor' cannot be null
insert into word (eng, kor, lev) values ('melon', '메론', 1);
insert into word (eng, kor) values ('orange', '오렌지');
# insert into word (eng) values ('grapes'); # Error Code: 1364. Field 'kor' doesn't have a default value
desc word;