단단히

DB(MySQL) 기본쿼리_ Selete 원하는 쿼리(데이터) 선택하기 본문

DataBase/개념 정리

DB(MySQL) 기본쿼리_ Selete 원하는 쿼리(데이터) 선택하기

이게아닌데 2022. 10. 3. 18:43

 

 

Selecte문은 원하는 데이터를 선택해주는 키워드이다.

원하는 데이터를 보여준다.

조건을 넣어 원하는 칼럼을 골라서 선택할 수 있다.

Selecte문과 조건문까지 정리해보자.

 

 

2022.09.28 - [DataBase/개념 정리] - DB 기본 쿼리 _ insert

 

이때 잠깐 사용했던 Selecte문은 

select *from test;

전체 insert 한 구문을 보여준다.

 


 

시작 DB 정보 

create database start_1199;
-- Drop database start_1199;

use start_1199;

create table test(
num 			int				unique 			auto_increment,
userID 		char(20) 		not null			primary key,
userPW 		char(20) 		not null,
age			int
);
-- drop table test;
desc test;

insert into test value(1,'tester','1234',29),
(2,'test02','1234',15),
(3,'sample','1234',null);

insert into test(num,userID,userPW) values (4,'ID123','123PW');

select *from test;

 

select 문법과 전체 필드 선택 / 특정 필드 선택

 

기본 문법을 알아보자.

Select 필드이름(F/N) from 테이블이름(T/N)

 

특정 필드 선택

기본 문법을 토대로 위의 기본 정보를 대입해 넣어보면

select num, userID, userPW from test;

 

 

작업자는 의미를 알 수 있지만, 공동 작업자가 아니거나 시간이 지나 다시 볼 때 칼럼의 이름을 기억하지 못할 수도 있다. 이때 칼럼의 이름을 바꿀 수 있다.

 

select num'번호', userID'회원아이디', userPW'회원비밀번호' from test;

 

 

전체 필드 선택

별표(*) 기호는 모든 필드를 의미한다.

모든 필드를 선택해야 할 경우 별표(*) 기호로 쉽게 사용할 수 있다.

select * from test;

 

 

 

select 조건문 (where)

데이터를 검색할 때 특정 조건이 맞는 데이터를 불러오는 경우가 많다.

예를 들어 나이가 20살 이상 사람, 주소가 '서울시'인 사람.. 등 조건 검색을 할 때가 있다.

이때 where 절을 사용한다. (테이블의 크기가 매우 클 때 사용되기도 한다.)

 

예시로 회원 비밀번호가 1234인 데이터만 선택해보자.

select * from test where userPW='1234';

 

이렇게 비밀번호가 1234인 회원들만 추출되었다.

 

● 연산자

where 조건절에는 기본적인 연산자(<,>,>=,<=,=,!=)를 사용할 수 있다.

 

select * from test where age>20;

 

여러 조건을 사용해야 하는 경우 논리 연산자(and / or)를 사용한다.

 

● 논리연산자 (and / or)

▩ and

비밀번호가 1234이며 나이가 20 이하인 데이터를 선택하고자 한다.

select * from test where userPW='1234' and age<20;

 

▩ or

나이가 10살 이상이고 20살 이하인 데이터를 뽑으려 한다.

 

select * from test where age>=10 and age<=20;

 

● between

위의 where문에서  10살 이상이고 20 이하인 데이터를 선택할 때 between and 문을 사용할 수 있다.

 

 

위와 같은 결과를 도출할 수 있다.

 

 

● in 구문


구문을 더 정확하게 확인할 수 있도록 기본 데이터를 약간 바꿔보고자 한다.

 

create database start_1199;
-- Drop database start_1199;

use start_1199;

create table test(
num 			int				unique 			auto_increment,
userID 		char(20) 		not null			primary key,
userPW 		char(20) 		not null,
age			int
);
-- drop table test;
desc test;

insert into test value(1,'tester','1234',29),
(2,'test02','1234',15),
(3,'sample','1234',20);

insert into test(userID,userPW,age) values ('ID123','123PW',20)
,('sam','1234',29);

select *from test;


만약 나이가 20인 사람과 29인 사람을 선택하기 위해서 어떻게 구문을 적을 것인가?

위에서 배운 대로라면 or문을 사용할 것이다.

select * from test where age = 20 or age =29;

하지만 in 구문을 사용할 수도 있다.

조건(or)이 많다면 in 구문을 사용하는 게 더 효율적이다.

 

select * from test where age in(20,29);

 

 where 절은 필터라고 생각하면 사용하기 편하다. 액셀로 비교하면 필터 기능이다.

 

select 정렬(오름차순 /  내림차순) - order by

 

정렬 기본 문법

select 필드명 from 테이블명 order by 정렬할컬럼명  asc/desc;

 

■ 오름차순

 

select * from test order by num asc;

 

■ 내림차순

 

select * from test where age in(20,29) order by num desc;

 

 

 

select 별칭 설정 선택 ( alias )

 

별칭을 붙여줄 수 있다. 

필드 이름에 별칭을 붙여줄 수도 있고 테이블 이름에 별칭을 붙여줄 수도 있다.

 

별칭 부여(as) 기본 문법

1. SELECT 필드이름 AS 별칭 FROM 테이블이름;

 

2. SELECT 필드이름 FROM 테이블이름 AS 별칭;

※ concat() : 여러 문자열 혹은 칼럼 값 합치는 함수

concat(문자열1, 문자열2 [, 문자열3 ...])

예시 1)

select userID as uID from test;

 

 

예시 2)

select concat(userID," : ", age) as userInfo, userPW from test;

 

 

 

 

 한번 알아두면 조금 더 효율적으로 쿼리를 짤 수 있다.

         특히 in 같은 경우 or문을 많이 쓰는 것보다 짧게 사용이 가능하다.

 

where 절은 액셀로 비교하면 필터 기능이다.

Comments