※MySQL에서 문자 데이터 값 검색 시 대소문자를 구분하지 않음.
데이터 조회 SELECT
select * from 테이블명 [where 조건문];
-- 예시
select * from members;
select * from products;
select * from orders;
select 컬럼1, 컬럼2,... from 테이블명 [where 조건문];
-- 예시
select member_id, member_name from members;
select company, prod_name, price from products;
select orde_num, order_date from orders;
※데이터 조회 시 컬럼 순서와 테이블의 컬럼 순서와 같을 필요가 없다. 출력하고 싶은 컬럼을 순서대로 작성하면 작성한 순서대로 나온다.
Where 작성 방법
- 테이블로부터 특정 행 조회하기 위해서는 where 조건문이 필요
- 좌변 비교연산자 우변 →비교할 컬럼명 비교연산자 비교할 값(숫자,'문자','날짜')
- ※문자나 날짜는 작은 따옴표 안에 쓰되 날짜는 년-월-일 순으로 작성
비교연산자
--members 테이블에서 member_id가 105인 회원 정보를 출력
select * from members where member_id = 105;
-- members 테이블에서 이름이 '홍길동'인 회원 정보 출력
select * from members where member_name='홍길동';
-- members 테이블에서 직업이 회사원이 아닌 회원 정보를 출력
select * from members where job<>'회사원';
select * from members where job!='회사원';
--member_id컬럼명만, 생년월일이 2000년이후 출생인 회원 정보를 출력
select * from members where birth > '2000-01-01';
-- products 테이블에서 가격이 300 이상인 제품의 이름과 가격을 출력
select prod_name, price from products where price>=300;
-- members 테이블에서 생년월일이 1990년 이전인 회원의 이름, 생년월일, 전화번호를 출력
select member_name, birth, phone from members where birth < '1990-01-01';
조건문은 여러 개가 들어갈 수 있다. and, or의 논리연산자로 나열 where 조건1 and/or 조건2,...;
-- products 테이블에서 상품가격이 300이상 500이하인 상품만 출력
select * from products where 300<=price<=500;
-- members 테이블에서 생년월일이 1990년 이전이거나 1991년 이후인 회원만 출력
select * from members where birth>'1991-12-31' or birth<'1990-01-01';
-- products 테이블로부터 LG 제품 중 가격이 300이상인 상품만 출력
select * from products where company='LG' and price >= 300;
-- where에 조건문이 여러개 작성되었을 경우에 and 와 or가 함께 사용된 경우 우선순위는 and>>or
select * from products where company='lg' or company='삼성' and price<=300;
-- company='삼성' and price<=300이를 작업한 후 이것의 결과 res와 company='lg' or res;
-- 단, 괄호를 해주면 괄호 먼저
select * from products where (company='lg' or company='삼성') and price<=300;
테이블로부터 데이터 조회 시 정렬하기
select * / 컬럼명1, 컬럼명2,... from 테이블명 [where 조건문] [order by 컬럼명 asc/desc];
-- 숫자컬럼을 기준으로 정렬하기
select * from products order by price;
select * from products order by price desc;
select * from orders order by member_id; -- 같은 값일 경우 저장된 순서대로 출력
select * from orders order by member_id desc;
-- 날짜컬럼을 기준으로 정렬하기 null값은 가장 작은 값으로 판단(오름차순 위, 내림차순 아래)
select * from products order by make_date; -- 오래된 날짜부터 최신날짜 순.
select * from products order by make_date desc; -- 최신날짜부터 오래된 날짜 순.
-- 문자 컬럼을 기준으로 정렬하기 // 영어-한글 순
select * from members order by member_name;
select * from products order by prod_name;
select * from products order by prod_name desc;
-- 여러 컬럼을 기준으로 정렬하기
select * from orders order by member_id, orde_num;
select * from orders order by member_id, orde_num desc;
select * from orders order by member_id desc, orde_num;
select * from orders order by member_id desc, orde_num desc;
select * from products order by company, price desc;
select 구문을 사용한 데이터 검색
※ use hr; -- use db; db를 사용한다 혹은 들어간다.
테이블 구조 조회하기 : desc[ribe] 테이블명;
테이블 리스트 조회하기 : show 테이블명;
-- 예시
desc employees;
desc departments;
desc locations;
테이블로부터 데이터 검색하기
select *(모든 컬럼) | 컬럼명1, 컬럼명2, ... from 테이블명;
-- 예시
select * from employees;
select * from departments;
select department_id, location_id from departments;
select 구문에 산술식( 산술연산자가 활용된 계산식. 산술연산자 : +, - ,*, / )이 사용 가능하며,
산술식 결과가 DB에 저장되지 않는다.
select employee_id, last_name, salary, 12*salary+100, 12*(salary+100) from employees;
null
null값? 알 수 없는 값, 아직 정의 되지 않은 값,...
null은 0(숫자),공백(문자)과는 다른 특수한 값. 모든 데이터 타입에 사용 가능.
데이터를 삽입할 때 정해지지 않는 값에는 null 값으로 설정.
※산술식에 null 값이 포함된 경우 결과는 무조건 null이 발생한다.
Column Alias
산술식으로 조회했을 경우 식이 그대로 노출되며 명확히 무엇을 나타내는지 바로 이해하기 어려울 수 있다.
그때 사용하는 것이 Column Alias를 사용한다.
Column Alias는 컬럼명이나 산술식으로 작성된 컬럼의 제목을 원하는 이름으로 출력하는 방법이다.
영문, _, $ 가 포함된 컬럼명은 큰따옴표로 붙히지 않아도 됨. 나머지는 큰 따옴표로 붙혀야한다.
※테이블명, 컬럼명은 호환성 때문에 한글을 사용하지 않음.
컬럼명 as alias | 컬럼명 alis | 컬럼명 [as] "공백|(_,#,$를 제외한)특수문자(한글포함)"
-- 예시
select EMPLOYEE_ID, LAST_NAME,SALARY, SALARY*12 as "연봉(커미션제외)"
from employees;
select EMPLOYEE_ID as emp_number, LAST_NAME as "이름",SALARY "급여", COMMISSION_PCT "수당 비율"
from employees;
MySQL에서 큰따옴표, 작은따옴표를 동일 시한다.
distinct
컬럼에서 중복값을 제거하고, 한 번만 출력해주는 키워드
select distinct 컬럼명1, 컬럼명2,... from 테이블명
-- 예시
-- employees 테이블에서 사원들이 소속된 부서의 종류(부서리스트)를 출력
select department_id from employees;
select distinct department_id from employees;
-- employees 테이블에서 사원들의 부서 내 담당업무종류를 출력
select DEPARTMENT_ID, JOB_ID from employees;
select distinct DEPARTMENT_ID "부서번호", JOB_ID "업무" from employees;
-- 연습문제1
select EMPLOYEE_ID "Emp #", LAST_NAME "Employee",JOB_ID "Job",HIRE_DATE "Hire Date" from employees;
-- 연습문제2
select distinct JOB_ID from employees;
where절과 order by 절
use hr;
조건문(where절)
select 컬럼명1, 컬럼명2,... | * from 테이블명 where 좌변(컬럼명) 비교연산자 우변(비교할 값);
비교할 값은 값은 숫자, '문자', '날짜'일 수 있다.
비교연산자에는 단일행 비교연산자(우변에 단일 값이 올 수 있는 연산자. 종류로는 = > < <> != 등)가 온다.
-- where절 예시
select EMPLOYEE_ID, LAST_NAME,JOB_ID,DEPARTMENT_ID from employees where DEPARTMENT_ID = 90;
-- MySQL에서 문자 데이터 값 검색 시 대소문자를 구분하지 않음.
select LAST_NAME,JOB_ID,SALARY,DEPARTMENT_ID from employees where LAST_NAME = 'whalen';
-- MySQL에서 날짜 데이터 값 검색 시 '년-월-일' 순서로 작성해야함.
select EMPLOYEE_ID, LAST_NAME, HIRE_DATE from employees where HIRE_DATE='1996-02-17';
select EMPLOYEE_ID, LAST_NAME,SALARY,DEPARTMENT_ID from employees where SALARY<=30000;
'KDT > DB' 카테고리의 다른 글
231115 DB - ERD, JOIN 1 (0) | 2023.11.17 |
---|---|
231108 DB - WHERE 2, ORDER BY (0) | 2023.11.08 |
231101 DB - CRUD (0) | 2023.11.01 |
231027 DB - MySQL 설치 및 설정 (0) | 2023.10.31 |
231026 DB - DB와 DBMS (0) | 2023.10.31 |