조인 관계를 이해하고 아래의 쿼리문을 작성하면서 결과값을 확인한다면 관계형 데이터베이스에서 테이블 간의 관계를 이해하여 원하는 출력값을 데이터베이스로부터 가져올 수 있습니다 ! 가장 먼저 데이터베이스를 생성하고 USE 데이터베이스명; 쿼리를 실행하시고 작성하세요.
SHOW DATABASES(데이터베이스명);
SHOW TABLES(테이블명);
USE 데이터베이스명;
DROP DATABASE 데이터베이스명;
DESC 테이블명;
DROP TABLE 테이블명;
ALTER TABLE 테이블명 ADD 컬럼명 컬럼타입 제약조건;
ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 컬럼타입 제약조건;
ALTER TABLE 테이블명 DROP 컬럼명;
INSERT INTO 테이블명 VALUES (값1, 값2, 값3, ...);
INSERT INTO 테이블명 (필드명1, 필드명2) VALUES (값1, 값2, 값3, ...);
UPDATE 테이블명 SET 필드명1 = 값1, 필드명2 = 값2, ...
UPDATE 테이블명 SET 필드명1 = 값1, 필드명2 = 값2, ... WHERE 조건절;
DELETE FROM 테이블명 WHERE 조건절;
CREATE TABLE tb_member (
mem_idx bigint auto_increment primary key,
mem_userid varchar(20) unique not null,
mem_userpw varchar(20) not null,
mem_name varchar(20) not null,
mem_hp varchar(20) not null,
mem_email varchar(50) not null,
mem_hobby varchar(100),
mem_ssn1 char(6) not null,
mem_ssn2 char(7) not null,
mem_zipcode char(5),
mem_address1 varchar(100),
mem_address2 varchar(100),
mem_address3 varchar(100),
mem_regdate datetime default now()
);
CREATE TABLE tb_profile (
pro_useridx bigint,
pro_age int,
pro_gender enum('남자', '여자')
pro_height double,
pro_weight double,
forign key(pro_useridx) references tb_member(mem_idx)
);
1. 산술연산자
산술연산자 | 설명 |
---|---|
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
/ | 나누기 |
div | 왼쪽 피연산자를 오른쪽 피연산자로 나눈 후 소수부분을 버림 |
mod | 나머지 연산 |
2. 대입연산자
대입연산자 | 설명 |
---|---|
= | 같다 |
3. 비교연산자
비교연산자 | 설명 |
---|---|
= | 같다 |
<> | 같지 않다 |
> | 크다 |
< | 작다 |
>= | 크거나 같다 |
<= | 작거나 같다 |
IS | = |
IS NOT | <> |
BETWEEN A AND B | A와 B사이 |
IN() | 포함 |
4. 논리연산자 (AND, OR, XOR, NOT)
// mem_point 필드가 300 이상이거나 700이하인 경우
SELECT * FROM tb_member WHERE mem_point >= 300 AND mem_point <= 700;
// mem_point 필드가 300 이상이거나 700이하인 경우
SELECT * FROM tb_member WHERE mem_point BETWEEN 300 AND 700;
// vacation 필드가 NULL인 경우
SELECT * FROM employee WHERE vacation_cnt IS NULL;
// vacation 필드가 NULL이 아닌 경우
SELECT * FROM employee WHERE vacation_cnt IS NOT NULL;
// 아래 두 쿼리문의 결과는 동일하다.
// 하지만 위보다 아래의 쿼리문이 더 간결하다.
SELECT department, employee_id FROM employee WHERE department = 'IT' OR department = 'SERVICE' OR department = 'ACCOUNT' OR department = 'MANAGEMENT';
SELECT department, employee_id FROM employee WHERE department IN('IT', 'SERVICE', 'ACCOUNT', 'MANAGEMENT');
1. SELECT 필드명1, 필드명2, ... FROM 테이블명;
SELECT * FROM tb_member JOIN tb_profile ON tb_member.mem_idx = db_profile.pro_useridx;
SELECT mem_idx, mem_userid, mem_name FROM tb_member;
2. SELECT 필드명1, 필드명2, ... FROM 테이블명 WHERE 조건절;
SELECT mem_idx, mem_userid, mem_name FROM tb_member WHERE mem_idx = 2;
SELECT mem_idx FROM tb_member WHERE mem_userid = 'apple' AND mem_userpw = '1111';
3. SELECT 필드명1, 필드명2, ... FROM 테이블명 ORDER BY 정렬할 필드(ASC, DESC)
SELECT * FROM tb_member ORDER BY mem_idx ASC;
--> 오름차순 ASC 생략 가능 (default)
SELECT * FROM tb_member ORDER BY mem_idx DESC;
4. SELECT 그룹을 맺은 필드 또는 집계함수 FROM 테이블명 GROUP BY 필드;
SELECT mem_gender, COUNT(mem_idx) FROM tb_member GROUP BY mem_gender;
집계함수 | 설명 |
---|---|
count() | 데이터의 개수 |
sum() | 합계 |
max() | 최대값 |
min() | 최솟값 |
avg() | 평균 |
SELECT mem_gender, COUNT(mem_idx) as '별명' FROM tb_member GROUP BY mem_gender;
데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과집합으로 표현
SELECT * FROM tb_member JOIN tb_profile;
(INNER: 교집합)
SELECT mem_idx, mem_userid, mem_name, pro_gender, pro_height, pro_weight FROM tb_member INNER JOIN tb_profile ON tb_member.mem_idx = tb_profile.pro_useridx;
(LEFT: 첫 테이블 중심)
SELECT mem_idx, mem_userid, mem_name, pro_gender, pro_height, pro_weight FROM tb_member LEFT JOIN tb_profile ON tb_member.mem_idx = tb_profile.pro_useridx;
(RIGHT: 두번째 테이블 중심)
SELECT mem_idx, mem_userid, mem_name, pro_gender, pro_height, pro_weight FROM tb_member RIGHT JOIN tb_profile ON tb_member.mem_idx = tb_profile.pro_userid;
w_kor이 '사'로 포함되는 말
SELECT w_eng, w_kor, w_lev, w_date FROM tb_word WHERE w_kor LIKE '%사%';
w_kor이 사로 시작하는 말
SELECT w_eng, w_kor, w_lev, w_date FROM tb_word WHERE w_kor LIKE '사%';
w_kor이 사로 끝나는 말
SELECT w_eng, w_kor, w_lev, w_date FROM tb_word WHERE w_kor LIEK '%사;
create table tb_member (
mem_idx number(7) unique not null,
mem_userid varchar2(20) unique not null,
mem_userpw varchar2(20) not null,
mem_name varchar2(20) not null,
mem_gender varchar2(10),
mem_email varchar2(50) unique,
mem_hp varchar2(20),
mem_zipcode char(5),
mem_address1 varchar2(100),
mem_address2 varchar2(100),
mem_address3 varcahr2(100),
mem_regdate date default sysdate,
constraint pk_userid primary key(mem_idx, mem_userid),
constraint ck_gender check(mem_gender in('남자', '여자'))
);
constraint 제약조건명1 primary key(필드명1, 필드명2),
constraint 제약조건명2 check(필드명1 in ('남자', '여자'))
create table tb_order (
ord_no varchar2(10),
ord_userid varchar2(20),
ord_product varchar2(50) not null,
ord_count number(5),
ord_price number(7),
ord_regdate date default sysdate,
constraint pk_no primary key(ord_userid),
constraint fk_userid foreign key(ord_userid) references tb_member(mem_userid)
);
constraint 제약조건명 foreign key(ord_userid) references to tb_member(mem_userid)
ord_usexrid --------------------------> mem_userid
ord_userid 필드는 tb_member 테이블의 mem_userid 필드를 참조한다.
create table tb_point (
po_idx number(7) unique not null,
po_userid varchar2(20) not null,
po_memo varchar2(10) not null,
po_point number(7) default 0,
po_ordno varchar2(10) unique not null,
po_regdate date default sysdate,
constraint fk_point_userid foreign key(po_userid) references tb_member(mem_userid),
constraint fk_point_ordno foreign key(po_ordno) references tb_order(ord_no)
);
constraint 제약조건명 foreign key(po_userid) references tb_member(mem_userid)
po_userid --------------------------> mem_userid
po_userid 필드는 tb_member 테이블의 mem_userid 필드를 참조한다.
constraint 제약조건명 foreign key(po_ordno) references tb_order(ord_no)
po_ordno --------------------------> ord_no
po_ordno 필드는 tb_order 테이블의 ord_no 필드를 참조한다.