오름차순:ASC
(default,생략가능)
내림차순:DESC
order by를 설정해주지 않으면 자료를 입력한 순서대로 출력됨.
SELECT *
FROM member
-- WHERE(생략) --
ORDER BY debut_date ASC;
SELECT *
FROM member
WHERE height >= 164
ORDER BY height DESC;
문자
SELECT*
와 같이 띄어쓰기 없어도 SELECT *
로 인식.한글은 2byte, 영어는 1byte
-> 하이 : 길이 2, 4byte / hi : 길이 2, 2byte
정렬 1개
SELECT height, debut_date FROM member WHERE height >= 164 ORDER BY height;
height값이 같은 데이터를 debut_date 기준으로 다시 정렬
SELECT height, debut_date FROM member WHERE height >= 164 ORDER BY height, debut_date;
인덱스를 이용하여도 같은 결과를 도출해낼 수 있다.
SELECT height, debut_date FROM member WHERE height >= 164 ORDER BY 1, 2;
평균키가 164가 넘고 큰 순서대로 걸그룹 3개만 리턴하라.
SELECT *
FROM member
WHERE height >= 164
ORDER BY height DESC LIMIT 3;
LINIT N, M;
: N번째부터 M개를 리턴
SELECT *
FROM member
ORDER BY height DESC LIMIT 3, 2; -- 3번째부터 2개를 리턴 --
결과
위와 같이 중복값이 나왔을때 중복값을 제거하려면 DISTINCT를 사용하면 된다.
SELECT DISTINCT addr
FROM member
ORDER BY 1;
mem_id별로 구매한 물건의 개수의 합을 구하시오.
기본화면
여기서 그룹별 총 구매개수를 알고싶다면?
1. sum()을 통해 amount의 결과값을 합쳐주고 컬럼 별칭도 "총구매개수"로 수정
2. Group by를 통해 mem_id 그룹화
3. sum, max, min, max, avg를 사용하기위해 group by 함수 사용함.
mem_id별로 구매한 물건의 총 구매금액을 리턴하시오.
기본
물건 개수 * 가격 = 총 구매금액
전체 구매개수의 평균
AVG
전체구매횟수
COUNT
전체 레코드의 개수
COUNT 예제 1
COUNT 예제 2
그룹별로 평균 구매개수 리턴
그룹별로 구매한 상품중에 가장 비싼 금액 리턴
공식! avg, min 등이 사용되지 않은 컬럼에는 group by 함수를 써야 한다.
4-1.도시별로 평균키를 리턴하라
기본
결과
4-2. 도시별로 멤버 숫자를 높은 순서대로 리턴하라
기본
결과
그룹별로 총 구매금액이 1000이 넘는 값을 리턴하라.
기본
결과
일반 조건이 아니라 이미 그룹화 된 결과값에 조건을 주려면 WHERE
이 아닌 HAVING
을 사용해야한다.
제품의 가격이 50 이상인 것들 중에, 그룹별로 총 구매금액이 1000이 넘는 값 리턴하라.
📌 name -> irum
/ home-,house -> zip
과 같은 형식으로 변수명 선언 하지 말것!
CREATE TABLE hongong1(
toy_id INT,
toy_name CHAR(4),
age INT
)
INSERT hongong1 VALUES (1, '우디', 25);
INSERT hongong1 (toy_id, age, toy_name) VALUES (2, 25, '버즈');
INSERT hongong1 (toy_id, toy_name) VALUES (3, '랭시');
-- values가 아닌 value도 사용가능 --
INSERT hongong1 VALUE (4, '제시', 20);
CREATE TABLE hongong2(
toy_id INT AUTO_INCREMENT PRIMARY KEY,
toy_name CHAR(4),
age INT
)
SELECT LAST_INSERT_ID();
: 가장 최근 자동 증가값
간단하게 변경하는 법
? ? ?
Pusan을 검색하여 도시명을 한글로 수정하고 인구도 4,000,000으로 수정
city_name 데이터 중, New로 시작하는 데이터 삭제하기
DELETE FROM city_popul
WHERE city_name LIKE 'New%';
SELECT COUNT(*)
FROM city_popul
WHERE city_name LIKE 'S%';
DELETE FROM city_popul
WHERE city_name LIKE 'S%'
LIMIT 5;
CREATE TABLE member2(
mem_id CHAR(8) PRIMARY KEY,
mem_name VARCHAR(10) NOT NULL,
mem_number TINYINT UNSIGNED, -- UNSIGNED : ??? --
addr CHAR(2) NOT NULL,
phone1 CHAR(3),
phone2 CHAR(8),
height TINYINT UNSIGNED,
debut_date DATE
);
CREATE TABLE movie(
m_id INT,
m_title VARCHAR(30) NOT NULL,
m_director VARCHAR(20) NOT NULL,
m_star VARCHAR(20) NOT NULL,
m_script LONGTEXT,
m_film LONGBLOB,
PRIMARY KEY (m_id)
-- primary key를 지정하는 또 다른 방법임(컬럼 두개를 합쳐서 주 키로 설정해줄때 이용:복합주키) --
);
복합 주 키
: create구문 마지막에 PRIMARY KEY (컬럼명)
SELECT 1 + '2';
뒤에 문자 '2'가 숫자 2로 형변환이 일어나면서 결과는 3이 된다.(묵시적 형변환)
※
함수 : 짙은 네이비색, ()괄호와 그 안의 매개변수가 반드시 있어야 함
함수(매개변수. . .)SELECT AVG(price) FROM buy; -- 결과값 : 142.9167 --
signed : 부호가 있는 정수값
실수(142.9167)인 price를 부호가 있는 정수값으로 CASTSELECT CAST(AVG(price) AS SIGNED) "평균값" FROM buy; -- 결과:143 --
convert : 변환
SELECT CONVERT(AVG(price) , SIGNED) "평균값" FROM buy; -- 결과: 143 --
날짜
SELECT CAST('2022$08$18' AS DATE); -- $ : 의미없는 아무 문자, 결과:2022-08-18 -- SELECT CAST('2022#08^18' AS DATE); -- 결과:2022-08-18 --
concat = 합치기
SELECT CONCAT(100 , '200'); -- 묵시적으로 100 -> '100' 변환됨, 결과: 100200 --