카테고리 없음

9-1일차 수업(KDT)_코리아IT강남점

teminam 2023. 3. 15. 17:24

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 ='여자';

 

위 3개를 실행한 결과



# 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;