데이터

SELECT-FROM-WHERE

ron_nie 2024. 1. 9. 17:47
728x90

데이터베이스 만들기

drop database if exists martet_db;
create database martet_db;

데이터베이스 선택하기

USE market_db;

구매 테이블 만들기

전체 코드

CREATE TABLE buy -- 구매 테이블product
(  num 		INT AUTO_INCREMENT NOT NULL PRIMARY KEY, -- 순번(PK)
   mem_id  	CHAR(8) NOT NULL, -- 아이디(FK)
   prod_name 	CHAR(6) NOT NULL, --  제품이름
   group_name 	CHAR(4)  , -- 분류
   price     	INT  NOT NULL, -- 가격
   amount    	SMALLINT  NOT NULL, -- 수량
   FOREIGN KEY (mem_id) REFERENCES member(mem_id)
);

auto_increment

num 		INT AUTO_INCREMENT NOT NULL PRIMARY KEY,

자동으로 숫자를 입력해줌!

데이터 입력하기

INSERT INTO member VALUES('TWC', '트와이스', 9, '서울', '02', '11111111', 167, '2015.10.19');

CHAR, VARCHAR, DATE형은 작은따옴표를 사용하고 INT형은 작은따옴표 없이 그냥 넣어주면 된다.

INSERT INTO buy VALUES(NULL, 'BLK', '지갑', NULL, 30, 2);

NULL인 이유는 num은 자동으로 입력되기 때문에 처음엔 NULL로 넣어줬다

Select문 알아보기

핵심 형식

select 열_이름
	from 테이블_이름
	where 조건식
	group by 열_이름
	having 조건식
	order by 열_이름
	limit 숫자

select문 구성

user market_db;
select * from member;
  1. select : 테이블에서 데이터를 가져와라
  2. * : 일반적으로 ‘모든것’을 의미한다 원래는 열이 들어갈 자리이기 때문에 ‘모든 열’을 뜻한다
  3. from : 다음 테이블 이름이 나온다. 어떤 테이블에서 내용을 가져와라 라는 뜻
  4. 마지막 : 조회할 테이블 이름

원칙

원래 테이블의 전체 이름음 데이터베이스_이름.테이블_이름 형식으로 표현해야한다.

select * from market_db.member;

하지만 데이터베이스 이름을 생략하면 use문으로 지정해놓은 데이터베이스가 자동으로 선택된다.

여러 열 지정해서 가져오기

select addr, debut_date, mem_name from member;

별칭

한칸 띄우고 적으면 되는데 만약 별칭에 공백이 있다면 큰따옴표로 묶어준다

select addr 주소, debute_date "데뷔 일자", mem_name from member;

특정한 조건만 조회하기

기본

select 열_이름 from 테이블_이름 where 조건식;

또는

select 열_이름
	from 테이블_이름
	where 조건식;

관계연산자, 논리 연산자

숫자로 표현된 데이터는 범위를 지정할 수 있다.

select mem_id, mem_name
	from member
	where height <= 162;

2가지 이상의 조건 주기

두가지 조건 모두 만족

select mem_name, height, mem_number
	from member
	where height >= 165 and mem_number > 6;

두가지 중에 한가지 조건만 만족

select mem_name, height, mem_number
	from member
	where height >= 165 or mem_number > 6;

범위를 구하는 경우에 between ~ and

select mem_name, height
	from member
	where height between 163 and 165;

in()

주소와 같은 데이터는 문자로 표현되기 때문에 어느 범위에 들어있다고 표현할 수 없다. 그럴땐 in을 써보자

select mem_name, addr
	from member
	where addr in('경기', '전남', '경남');

like

문자열의 일부 글자를 검색하려면 like를 사용한다. 예를 들어 이름의 첫글자가 ‘우’로 시작하는 회원을 찾을 때 쓴

select *
	from member
	where mem_name like '우%';

핑크로 끝나는 이름을 찾을 수도 있다. 그럴땐 언더바 두개를 사용하자

select *
	from member
	where mem_name like '__핑크';

서브쿼리

select 안에 select가 또 들어갈 수 있다. 이것을 서브쿼리 또는 하위 쿼리라고 한다. 이름이 에이핑크인 회원의 평균 키 보다 큰 회원을 검색하고 싶다고 가정해보자

select height
	from member
	where mem_name = '에이핑크';
select mem_name, height 
	from member 
	where height > 164;

위 두개의 sql문을 합치면 된다

select mem_name, height 
	from member
	where height > (select height from member where mem_name = '에이핑크');
반응형