index

  • primary: 중복되지 않는 유일한 키
  • normal : 중복을 허용하는 인덱스
  • foreign : 다른 테이블과의 관계성을 부여하는 키
  • unique : 중복을 허용하지 않는 유일한 키
  • full text : 자연어 검색, myisam에서만 지원

primary KEY

  • 테이블 전체를 통틀어서 중복되지 않는 값을 지정해야 한다.
  • where 문을 이용해서 데이터를 조회할 때 가장 고속으로 데이터를 가져올 수 있다.
  • 테이블마다 딱 하나의 primary key를 가질 수 있다.

#id가 3인 데이터
select * from student where id=3;


unique KEY

  • 테이블 전체를 통틀어서 중복되지 않는 값을 지정해야 한다. (== primary key)
  • 고속으로 데이터를 가져올 수 있다.
  • 여러개의 unique key를 지정할 수 있다.

 

#number가 0534543인 데이터
select * from student where number=0534543;


normal KEY

  • 중복을 허용한다.
  • primary, unique 보다 속도가 느리다.
  • 여러개의 키를 지정할 수 있다.

 

#department가 국문과인 데이터
select * from student where department='국문과'


full text

  • mysql의 기본설정(ft_min_word_len)이 4로 되어 있기 때문에 최소 4글자 이상을 입력하거나 이 값을 조정해야 한다.
  • mysql은 전문 검색 엔진이 아니기 때문에 한글 검색이 잘 안된다.
    전문검색엔진으로 lucene, sphinx 참고
  • 스토리지 엔진 중 myisam에서만 사용가능

 

#indroduction 값에 '영문과에'를 포함한 데이터
AGAINST('영문과에') FROM student WHERE MATCH (introduction) AGAINST('영문과에');


중복

  • 하나의 키에 여러개의 칼럼을 포함

 

 

#국문과이면서 제주도가 주소인 데이터
select * from student where department='국문과' AND address='제주';


인덱스의 사용 방법

  • 자주 조회되는 칼럼에 적용
  • 조회 시 오랜시간을 소모하는 컬럼에 적용
  • 데이터가 긴 경우 인덱스를 사용하지 않는다.


JOIN

  • 여러개의 테이블 사용하기
  • 테이블간의 관계성에 따라서 복수의 테이블을 결합, 하나의 테이블인 것처럼 결과를 출력


JOIN의 종류

  • OUTTER JOIN : 매칭되는 행이 없어도 결과를 가져옴. 매칭되는 행이 없는 경우 NULL로 표시.
  • INNER JOIN : 조인하는 두개의 테이블 모두에 데이터가 존재하는 행에 대해서만 결과를 가져옴.

# FROM student AS s = student를 s라고 명명 # FROM location AS l = location를 l라고 명명 # l.name AS address = location의 name을 address로 명명 SELECT s.name, s.location_id, l.name AS address, l.distance FROM student AS s LEFT JOIN location AS l ON s.location_id = l.id;


* 해당 글은 생활코딩 MySQL강의(https://opentutorials.org/course/195)를 듣고 작성하였습니다.

'Programming > DB' 카테고리의 다른 글

MySQL-7.조회:Index,Join  (0) 2018.03.24
MySQL-6.조회:그룹,정렬  (0) 2018.03.24
MySQL-5.조회  (0) 2018.03.24
MySQL-4.TABLE:삽입,변경,삭제  (0) 2018.03.24
MySQL-3.TABLE  (0) 2018.03.24
MySQL-2.데이터관리(SQL)  (0) 2018.03.24


그룹

#성별이 어떻게 구성되어 있는지
select sex from student group by sex;

 

 

#성별을 기준으로 distance의 합과 평균값
select sex,sum(distance), avg(distance) from student group by sex;


정렬

#거리가 큰것부터 정렬
select * from student order by distance desc;

#거리가 큰것부터 정렬, 주소도 정렬(대전-청주)
select * from student order by distance desc, address asc;



* 해당 글은 생활코딩 MySQL강의(https://opentutorials.org/course/195)를 듣고 작성하였습니다.

 

 

'Programming > DB' 카테고리의 다른 글

MySQL-7.조회:Index,Join  (0) 2018.03.24
MySQL-6.조회:그룹,정렬  (0) 2018.03.24
MySQL-5.조회  (0) 2018.03.24
MySQL-4.TABLE:삽입,변경,삭제  (0) 2018.03.24
MySQL-3.TABLE  (0) 2018.03.24
MySQL-2.데이터관리(SQL)  (0) 2018.03.24

조회

데이터 내용 조회하기
데이터 예제 사용

스키마


스키마

#이름과 생일 조회하기
select name,birthday from student;


스키마

#아이디 값 3인 사람 조회하기
select * from student where id=3;

#성별이 남자고, 주소가 서울인 사람 조회하기
select * from student where sex='남자' and address='서울';


스키마

#성별이 여자거나 주소가 서울인 사람
select * from student where sex='여자' or address='서울';

#전체 데이터베이스에서 맨 위 부터 1개만
select * from student limit 1;


스키마

#오프셋0, 로우1 = 오프셋은 0이고, 1개의 행을 가지고옴
select * from student limit 0,1;

#오프셋1, 로우1 = 오프셋은 1이고, 1개의 행을 가지고옴
select * from student limit 1,1;

#오프셋2, 로우1 = 오프셋은 2이고, 1개의 행을 가지고옴
select * from student limit 2,1;


조회5

#오프셋0, 로우2 = 오프셋은 0이고, 2개의 행을 가지고옴
select * from student limit 0,2;

#오프셋1, 로우2 = 오프셋은 1이고, 2개의 행을 가지고옴
select * from student limit 1,2;


* 해당 글은 생활코딩 MySQL강의(https://opentutorials.org/course/195)를 듣고 작성하였습니다.

'Programming > DB' 카테고리의 다른 글

MySQL-7.조회:Index,Join  (0) 2018.03.24
MySQL-6.조회:그룹,정렬  (0) 2018.03.24
MySQL-5.조회  (0) 2018.03.24
MySQL-4.TABLE:삽입,변경,삭제  (0) 2018.03.24
MySQL-3.TABLE  (0) 2018.03.24
MySQL-2.데이터관리(SQL)  (0) 2018.03.24

TABLE 내용 삽입

테이블에 내용 입력하고 확인하기

스키마

#입력하기 방법1
INSERT INTO `student` VALUES ('2', 'leezche', '여자', '서울', '2000-10-26');

#입력하기 방법2
INSERT INTO `student` (`id`, `name`, `sex`, `address`, `birthday`) VALUES ('1', 'egoing', '남자', 'seoul', '2000-11-16');

#내용 확인하기
select * from stuent;


TABLE 내용 변경

데이터 내용 변경하기

스키마

실습을 위해 준비한 기본 데이터

DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` tinyint(4) NOT NULL,
  `name` char(4) NOT NULL,
  `sex` enum('남자','여자') NOT NULL,
  `address` varchar(50) NOT NULL,
  `birthday` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `student` VALUES (1, '이숙경', '여자', '청주', '1982-11-16 00:00:00');
INSERT INTO `student` VALUES (2, '박재숙', '남자', '서울', '1985-10-26 00:00:00');
INSERT INTO `student` VALUES (3, '백태호', '남자', '경주', '1989-2-10 00:00:00');
INSERT INTO `student` VALUES (4, '김경훈', '남자', '제천', '1979-11-4 00:00:00');
INSERT INTO `student` VALUES (8, '김정인', '남자', '대전', '1990-10-1 00:00:00');
INSERT INTO `student` VALUES (6, '김경진', '여자', '제주', '1985-1-1 00:00:00');
INSERT INTO `student` VALUES (7, '박경호', '남자', '영동', '1981-2-3 00:00:00');

스키마

#address 컬럼을 모두 서울로 변경하기
UPDATE student SET address='서울';

#결과 확인하기
select * from student;


TABLE 내용 삭제

데이터 내용 삭제하기

스키마

#id가 2인 데이터 삭제하기
DELETE FROM student WHERE id=2;

#결과 확인하기
select * from student;

데이터 내용 전부 삭제하기

스키마

#데이터 전부 삭제하기 TRUNCATE student; #결과 확인하기 select * from student

테이블 삭제하기

스키마

#테이블 삭제하기
Drop table student;

#결과 확인하기
select * from student;



* 해당 글은 생활코딩 MySQL강의(https://opentutorials.org/course/195)를 듣고 작성하였습니다.

'Programming > DB' 카테고리의 다른 글

MySQL-6.조회:그룹,정렬  (0) 2018.03.24
MySQL-5.조회  (0) 2018.03.24
MySQL-4.TABLE:삽입,변경,삭제  (0) 2018.03.24
MySQL-3.TABLE  (0) 2018.03.24
MySQL-2.데이터관리(SQL)  (0) 2018.03.24
MySQL-1.데이터베이스란?  (0) 2018.03.24

TABLE

데이터가 저장되는 곳

  • 스키마 : 테이블에 적재될 데이터의 구조와 형식을 정의하는 것

테이블 생성하기

스키마

#사용할 데이터베이스 선택하기
use class;

#테이블의 구조와 형식 정의하기
CREATE TABLE `student` (
    `id`  tinyint NOT NULL ,
    `name`  char(4) NOT NULL ,
    `sex`  enum('남자','여자') NOT NULL ,
    `address`  varchar(50) NOT NULL ,
    `birthday`  datetime NOT NULL ,
    PRIMARY KEY (`id`)
);


테이블 확인하기

스키마

#테이블 스키마 열람하기
DESC `테이블명`

#테이블 리스트 확인 하기
SHOW tables;



* 해당 글은 생활코딩 MySQL강의(https://opentutorials.org/course/195)를 듣고 작성하였습니다.

'Programming > DB' 카테고리의 다른 글

MySQL-6.조회:그룹,정렬  (0) 2018.03.24
MySQL-5.조회  (0) 2018.03.24
MySQL-4.TABLE:삽입,변경,삭제  (0) 2018.03.24
MySQL-3.TABLE  (0) 2018.03.24
MySQL-2.데이터관리(SQL)  (0) 2018.03.24
MySQL-1.데이터베이스란?  (0) 2018.03.24

데이터 관리(SQL)

Structured Query Language, 데이터베이스에서 데이터를 저장하거나 얻기 위해서 사용하는 표준화된 언어. 관계형 데이터베이스는 거의 비슷한 문법으로 사용 가능함.


데이터베이스 접속하기

접속

mysql -uroot -p



데이터베이스 생성 및 확인하기

접속

CREATE DATABASE `CLASS` CHARACTER SET utf8 COLLATE utf8_general_ci;
show databases;


* 해당 글은 생활코딩 MySQL강의(https://opentutorials.org/course/195)를 듣고 작성하였습니다.

'Programming > DB' 카테고리의 다른 글

MySQL-6.조회:그룹,정렬  (0) 2018.03.24
MySQL-5.조회  (0) 2018.03.24
MySQL-4.TABLE:삽입,변경,삭제  (0) 2018.03.24
MySQL-3.TABLE  (0) 2018.03.24
MySQL-2.데이터관리(SQL)  (0) 2018.03.24
MySQL-1.데이터베이스란?  (0) 2018.03.24

1. 데이터베이스란?

데이터 저장소

2. 데이터베이스 종류

  • 관계형 데이터베이스 : MySQL, ORACLE, MsSQL
  • NoSQL : mongodb, 빅데이터가 등장하면서 나옴

종류


  • 데이터베이스 서버 : 데이터를 저장하고, 제어하는 역할을 함.
  • 데이터베이스 클라이언트 : mysql-client, phpMyAdmin, navicat, mysql query browser 등…,
    데이터베이스 서버에 접속하기 위한 도구
  • 데이터베이스 : 테이블을 카테고리화 한 것
  • 테이블 : 열과 행을 가진 하나의 표



* 해당 글은 생활코딩 MySQL강의(https://opentutorials.org/course/195)를 듣고 작성하였습니다.

'Programming > DB' 카테고리의 다른 글

MySQL-6.조회:그룹,정렬  (0) 2018.03.24
MySQL-5.조회  (0) 2018.03.24
MySQL-4.TABLE:삽입,변경,삭제  (0) 2018.03.24
MySQL-3.TABLE  (0) 2018.03.24
MySQL-2.데이터관리(SQL)  (0) 2018.03.24
MySQL-1.데이터베이스란?  (0) 2018.03.24

+ Recent posts