20220211_SQL 기초 3 (AUTO_INCREMENT, FOREIGN KEY(외래키), 범위 조회, LIKE 연산자)

2022. 2. 16.공부/SQL, R

728x90
CREATE TABLE userTbl (
user_id varchar(8) primary key,
user_name varchar(10) not null,
birth_year int(4) not null,
addr varchar(4) not null,
phone_number varchar(11),
height int(3),
reg_date date
);

CREATE TABLE buyTbl (
order_number INT AUTO_INCREMENT PRIMARY KEY,
user_id VARCHAR(8) NOT NULL,
prod_name VARCHAR(6) NOT NULL,
group_name VARCHAR(4),
price INT(7) NOT NULL,
amount INT(3) NOT NULL
FOREIGN KEY(user_id) REFERENCES userTbl(user_id)
);

 

가상의 쇼핑몰을 만든다고 가정해보자. 회원 정보는 userTbl, 회원의 구매 내역은 buyTbl에 저장해준다. 위의 코드를 해석해보면, userTbl과 buyTbl이라는 두 개의 테이블을 만들었으며 buyTbl에서 데이터 적재시마다 order_number가 1씩 증가하고, 적재 시 user_id가 userTbl의 user_id를 참조하여 일치하는지 확인하도록 하는 구조라고 이야기할 수 있다. 이렇게 테이블을 만들 때 사용할 수 있는 AUTO_INCREMENTFOREIGN KEY를 기억하자!

 

/* AUTO_INCREMENT는 기본적으로 1씩 증가하는데,
이 증가분을 수정하고 싶다면 서버측 변수인
@@auto_increment_incremet를 바꿔야 한다. */

-- testTbl3의 AUTO_INCREMENT 값을 0으로 수정
ALTER TABLE testTbl3 AUTO_INCREMENT = 0;

-- AUTO_INCREMENT의 증가분을 1이 아닌 3으로 세팅
SET @@auto_increment_increment = 3;

 

1. 테이블 만들 때 AUTO_INCREMENT라는 명령어를 통해 컬럼에 자동으로 1씩 증가하는 숫자를 배정시킬 수 있다. 해당 명령어는 int 자료형에만 붙일 수 있다. (+ 서버측 변수 @@auto_increment_increment의 값을 SET하여 자동으로 증가하는 값에 변화를 줄 수 있다.)
2. 테이블을 만들 때 FOREIGN KEY라는 명령어를 통해 컬럼에 제약 조건을 걸어줄 수 있다. 여기서 FOREIGN KEY(외래키)는 한 테이블의 필드 중 다른 테이블의 행을 식별할 수 있는 키를 말한다

 

 

만든 테이블에서 임의의 범위를 가진 데이터를 조회할 때는 어김없이 WHERE을 쓴다. WHERE 구문에서는 관계연산자를 이용한 대소비교가 가능하며 논리 연산자 AND, OR를 이용하여 조건 여러개를 연결할 수 있다. 또, WHERE 구문 안에 LIKE 연산자를 써서 범위 조회를 하기도 한다. LIKE 연산자는 %(와일드 카드), _(와일드 카드 문자)를 이용해 매칭되는 문자열/문자를 찾는다. 

 

 

* BETWEEN ~ AND 키워드로 숫자 데이터 범위 조회

해당 컬럼이 숫자1과 숫자2에 해당하는 범위의 데이터를 조회하는데, 이때 조회되는 데이터의 범위는 쿼리문의 숫자1과 숫자2를 포함한다.

SELECT * FROM 테이블명 WHERE 컬럼명 BETWEEN 숫자1 AND 숫자2; 

 

* IN 키워드로 특정 컬럼에 괄호가 담긴 데이터가 포함되는 경우 전부 조회

해당 컬럼이 서울, 화성, 경기에 해당하는 범위의 데이터를 조회한다.

SELECT * FROM 테이블명 WHERE 컬럼명 IN ('서울', '화성', '경기');

 

* LIKE 연산자로 채씨를 찾는 케이스 (% 이용)

해당 컬럼이 '채'로 시작하는 모든 데이터를 조회한다. '채' 한 글자도 포함. %를 쓰는 것은 문자열만 가능한듯한데, 테이블 만들 때 번호들어가는 컬럼같은 것을 그냥 문자열 데이터로 선언하고 그 쪽 컬럼에 데이터 넣어서 INSERT할 때 숫자를 소괄호에 담아서 넣어주면 숫자도 %로 찾을 수 있다.

SELECT * FROM 테이블명 WHERE 컬럼명 LIKE '채%'; 

 

* LIKE 연산자로 두 글자인 경우만 찾는 케이스 (_ 이용)

해당 컬럼이 두글자인 모든 데이터를 조회한다. 응용해서 '__H' 이렇게 써보면 해당 컬럼이 3글자이면서 H로 끝나는 케이스를 찾아달라는 말이 된다.

SELECT * FROM 테이블명 WHERE 컬럼명 LIKE '__';