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 를 참조한다.
'Front-End > DB' 카테고리의 다른 글
[NoSQL] MongoDB 개요, 기본 문법 알아보기 (0) | 2021.08.15 |
---|---|
[NoSQL] NoSQL 개요, mongoDB 다운로드하기 (0) | 2021.08.15 |
[MySQL] 데이터베이스 관리시스템 MySQL 다운로드 (0) | 2021.07.18 |