Front-End/DB

[MySQL] 데이터베이스, 데이터베이스 관리시스템, MySQL 써보기

챌링킴 2021. 7. 18. 14:47
반응형

1) 데이터베이스(DataBase)

- 데이터 저장소를 말한다.
- 데이터를 통합하여 관리하는 집합체이다.

 

 

2) 데이터베이스 관리시스템(DataBase Management System)
- 데이터베이스를 관리하는 소프트웨어를 말한다.

- 데이터를 통합하여 관리하는 집합체, 저장소를 뜻한다.

 

 

3) 데이터베이스 관리시스템을 사용하는 이유

- 중복된 데이터를 제거한다.

- 자료를 구조화시킬 수 있다.

- 효율적인 처리가 가능하다.

- 다양한 프로그램을 사용하는 사용자들과 데이터를 공유할 수 있다.

 

 

4) SQL(Structured Query Language)

- 관계형 데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어이다.

- 대소문자를 구별하지 않는다.

- 문자열을 저장할 때 ' ' (싱글 따옴표)만 사용한다.

 

 

5) MySQL 써보기

 

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

-- 데이터베이스 확인
show databases;

 

2. 데이터베이스 생성, 삭제, 사용하기

-- 데이터베이스 생성
-- create database 데이터베이스명;
create database frontend;

-- 데이터베이스 삭제
-- drop database 데이터베이스명;
drop database frontend;

-- 데이터베이스 사용
-- use 데이터베이스명;
use frontend;

 

용어 설명

테이블 : 데이터를 행(로우, 레코드)과 열(필드, 컬럼, 어트리뷰트)로 스키마에 따라 저장할 수 있는 구조
스키마 : 데이터베이스 구조와 제약 조건에 관한 명세를 기술한 집합

 

3. 테이블 생성하기

-- create table 테이블명(
-- 		필드명1 필드타입 제약조건,
-- 		필드명2 필드타입 제약조건,
-- 		...
-- )

 

4. 테이블 구조 확인하기

-- desc 테이블명
desc tb_member;

 

5. 테이블 삭제하기

-- drop table 테이블명
drop table tb_member;

 

6. 테이블 필드 추가하기

-- alter table 테이블명 add 컬럼명 컬럼타입 제약조건;
alter table tb_member add mem_point int default 0;

 

7. 테이블 필드 수정하기

-- alter table 테이블명 modify column 컬럼명 컬럼타입 제약조건;
alter table tb_member modify column mem_point double default 0;

 

8. 테이블 필드 삭제하기

-- alter table 테이블명 drop 컬럼명;
alter table tb_member drop mem_point;

 

9. 데이터 확인하기

select * from tb_member;

 

10. 데이터 삽입하기(insert)

-- 설정한 모든 필드에 값을 넣을 때
-- insert into 테이블명 values (값1, 값2,...);

-- 특정 필드에 값을 넣을 때
-- insert into 테이블명 (필드명1, 필드명2, ...) values (값1, 값2,...);
insert into tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_hobby, mem_ssn1, mem_ssn2,
					mem_zipcode, mem_address1, mem_address2, mem_address3) values
                    ('apple', '1111', '김사과', '010-1111-1111', 'apple@apple.com', '영화감상',
                    '001011', '4068518', '12345', '서울 서초구 양재동', '111-11', '101동');

 

11. 데이터 수정하기(update)

-- update 테이블명 set 테이블명1 = 값1, 필드명2 = 값2, ..;
update tb_member set mem_point = 1000;

-- update 테이블명 set 테이블명1 = 값1, 필드명2 = 값2, .. where 조건절;
update tb_member set mem_point = mem_point + 200 where mem_idx = 1;

 

12. 데이터 삭제하기(delete)

-- delete from 테이블명;
-- delete from 테이블명 where 조건절;
delete from tb_member where mem_userid = 'avocado';

 

13. 데이터 검색하기(select)

-- select * from 테이블명; *는 모든 컬럼을 뜻한다.
select * from tb_member;

-- select 컬럼명1 별칭, 컬럼명2, .. from 테이블명 where 조건절;
select mem_userid "멤버 이름", mem_point 보유포인트 from tb_member;

select mem_idx, mem_userid "멤버 이름", mem_point 보유포인트 from tb_member
where mem_point between 1000 and 1300;

select mem_idx, mem_userid "멤버 이름", mem_point 보유포인트 from tb_member
where mem_address1 = '서울 서초구 양재동';

마지막 예제

 

14. 오름차순, 내림차순 정렬(order by)

-- 오름차순, 내림차순 정렬
select mem_idx, mem_userid, mem_name, mem_point from tb_member order by mem_point; -- 오름차순 정렬
select mem_idx, mem_userid, mem_name, mem_point from tb_member order by mem_point asc; -- 오름차순 정렬
select mem_idx, mem_userid, mem_name, mem_point from tb_member order by mem_point desc; -- 내림차순 정렬

 

15. 그룹함수(group by)

-- select 집계햠수 또는 그룹을 맺은 컬럼 from 테이블명 group by 컬럼명;
select mem_gender from tb_member group by mem_gender;

 

16. 그룹함수(sum, avg, max, min, count)

-- 그룹함수(sum(), avg(), max(), min(), count())
select mem_gender, count(mem_idx) from tb_member group by mem_gender;
select mem_gender, count(mem_idx) as cnt from tb_member group by mem_gender; -- as 별칭
select mem_gender, count(mem_idx) cnt from tb_member group by mem_gender; -- as 안써도 됨

 

17. 그룹함수(having)

-- select 컬럼명 .. from 테이블명 where 조건절 group by 컬럼명 having 조건절 order by 정렬할컬럼명;
-- where : 1차 조건 / having : 2차 조건
select mem_gender, count(mem_idx) as cnt from tb_member
where mem_point > 0 group by mem_gender having mem_gender='남';

 

18. limit

-- 처음부터 3개 행 가져오기
select mem_idx, mem_userid, mem_name, mem_point from tb_member limit 3;

-- 첫번째 행 데이터는 0부터 시작함, 4번째행부터 2개 행 가져오기
select mem_idx, mem_userid, mem_name, mem_point from tb_member limit 3,2;

 

19. join(inner join, left join, right join)

 

- 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과집합으로 표현한다.

-- inner join : 교집합
select mem_idx, mem_userid, mem_name, pro_age, pro_birthday from tb_member
inner join tb_profile on tb_member.mem_idx = tb_profile.pro_mem_idx;

-- left join : 왼쪽 테이블을 중심으로 오른쪽의 테이블을 매치시킴
select mem_idx, mem_userid, mem_name, pro_age, pro_birthday from tb_member
left join tb_profile on tb_member.mem_idx = tb_profile.pro_mem_idx;

-- rigth join : 오른쪽 테이블을 중심으로 왼쪽 테이블을 매치시킴
select mem_idx, mem_userid, mem_name, pro_age, pro_birthday from tb_member
right join tb_profile on tb_member.mem_idx = tb_profile.pro_mem_idx;

 

 

6) 데이터 타입 종류

 

숫자 타입


- 정수 : tinyint, smallint, mediumint, int, bigint ...


- 소수 : float, double

 


문자타입


- 텍스트 : char, varchar, text
- char(20) -> 1byte만 저장하더라도 총 20byte를 모두 소모한다.


- varchar(20) -> 1byte를 저장하면 1byte를 소모한다. 최대 65535byte까지 저장할 수 있다.


- 바이너리(영상, 이미지, 사운드 ...) : binary, varbinary


- 열거 : enum('여자','남자') -> 괄호안의 문자만 들어갈 수 있다.

 

 

날짜와 시간타입


- 날짜 : date


- 날짜와 시간타입 : datetime, timestamp(1970년 1월1일 0시0분0초 부터 현재까지의 시간을 초로 나타낸 것)

 

 

7) 제약조건 설명과 종류

- 데이터의 무결성을 지키기 위해 데이터를 입력받을 때 실행하는 검사 규칙이다.

 

1. NOT NULL

- 필드에 null값을 저장할 수 없다.

 

2. UNIQUE

- 중복된 값을 저장할 수 없다. null값은 허용된다.

 

3. DEFAULT

- 기본값을 설정해준다. 

 

4. AUTO_INCREMENT

- 자동으로 숫자가 증가되어 추가, 중복값이 저장되지 않는다.

- 직접 데이터를 추가할 수 없다.

- auto_increment를 쓰면 해당 필드를 primary key로 설정해야한다. (MySQL한정)

 

5. PRIMARY KEY

- UNIQUE 제약과 NOT NULL 제약을 동시에 가진다.

- 테이블에 오직 하나의 필드에만 적용된다.

- 데이터를 쉽고 빠르게 찾을 수 있다.

 

6. FORIEGN KEY

- 다른 테이블과 연결해주는 역할을 하며, PRIMARY 를 참조한다.

 

 

 

 

반응형