DATABASE

mariaDB SQL 문법 연습

초롱씨 2023. 11. 21. 20:32
728x90
반응형

1 별칭사용하기
별칭을 사용하는 이유 : 긴 단어를 줄여서 사용하는데 좋음

sql에서 별칭을 사용할 수 있는 곳
컬럼명 대신 별칭 사용 : 컬럼 명 뒤에 as 별칭  예시 ) Select mem_id as id
테이블 명 대신 별칭 사용 :테이블 명 뒤에 바로 별칭을 작성 예시 ) from member mem

테이블 별칭을 언제 사용하느냐? 이름이 길때, join할때, 첫음절을 대문자로

<처리순서>
1select 
2from
3테이블 메모리에 올리기
4where조건
5and 조건 또는 or 조건
6조회할 칼럼
7정렬

like '문자' : 형식이 일치하는지  '_a%' 두번째 글자가 a인 경우, '%a%'a가 포함된경우
beetween A and B : A 이상 B 이하의 범위 조건
날짜 타입 또는 숫자 타입에 대한 범위 연산 조건에 사용됨

날짜 형식( 포멧형식)
0000-00-00 , 0000.00.00, 0000/00/00, 00000000


                
SELECT LOWER(mem_id) AS '소문자로' , UPPER (mem_id) AS '대문자로'
FROM member                ;

SELECT
  '왼쪽공백',
  LTRIM(' 왼쪽공백 제거 '),
  '오른쪽 공백         ',
  RTRIM('오른쪽공백제거  '),
  '   좌우공백   ',
  TRIM(' 좌우공백제거 ');
  
  -- 특정 자리 수까지의 문자 추출하기 
  -- mysql OR maria db용
  SELECT LEFT(prod_id,4) , RIGHT (prod_id,6)
  FROM prod;
  

문자열 내 특정 위치값 추출하기
select substring('java program', 7,3),
substring('java program', 1,3)

sql 표준 : in , like, between
회사에서 만든 것 : concat , substring

in 함수를 이용해서 서브쿼리를 사용할 경우 규칙 : 다하나의 컬럼에 여러개의 행을 조회 할 수 있음.
단일 컬럼에 다중행 
비교연산자를 이용하는 서브쿼리의 특징: 하나의 컬럼에 하나의 값만 조회 가능해야 한다.
단일 컬럼에 단일 행이라고 합니다.

 

 

<-- 수업예제 -->

SELECT *
FROM MEMBER;

SELECT * FROM member;

SELECT mem_name FROM member WHERE mem_id= 'a001';

SELECT * FROM lprod WHERE lprod_gu = 'P201';

UPDATE lprod SET lprod_nm = "향수" WHERE lprod_gu='P201';

DELETE FROM lprod WHERE lprod_gu='P201';

SELECT prod_id, prod_name FROM prod WHERE prod_sale>= 1000;

SELECT PROD_ID, prod_name FROM prod WHERE prod_price>=1000 AND prod_sale >=2000;

SELECT * FROM member;

SELECT mem_id AS id, 
		 mem_name AS name,
		 mem_mileage AS POINT,
		 SUM(mem_mileage) AS sum
		 FROM member
		 WHERE mem_mileage>=10
		 GROUP BY mem_id,NAME, point with ROLLUP;
		 
SELECT mem_id, mem_name, mem_mileage
FROM member
WHERE mem_mileage >=10
-- AND mem_name = "김은대"
ORDER BY mem_id DESC;

SELECT mem_id as id, mem_name AS name, mem_mileage AS point
FROM member
WHERE mem_mileage >=10
ORDER BY point DESC;

SELECT mem_id, mem_name, mem_regno1
FROM member WHERE mem_regno1 >= 760101;


SELECT prod_id,
		prod_name,
		prod_lgu,
		prod_sale 
FROM prod
WHERE prod_lgu="P201" AND prod_sale=170000
ORDER BY prod_name;


SELECT prod_name, prod_sale
FROM prod
WHERE prod_sale=150000 OR
		prod_sale=170000 OR 
		prod_sale=330000
;
SELECT prod_name, prod_sale
FROM prod
WHERE prod_sale in(150000,170000,330000) ;

SELECT prod_name, prod_id
FROM prod 
WHERE prod_name LIKE '_성%';


SELECT mem_id, mem_name, mem_add1, mem_mileage
FROM member
WHERE mem_add1 LIKE '서울%' AND
mem_mileage >=1000;

SELECT mem_name, mem_bir
FROM member memeber
WHERE mem_bir LIKE '1975%';

SELECT mem_name, mem_bir
FROM member memeber
-- WHERE mem_bir BETWEEN '1975-01-01' AND '1975-12-31'
-- WHERE mem_bir BETWEEN '1975-01-01' AND '19751231'
-- WHERE mem_bir BETWEEN '1975-01-01' AND '1975/12/31'
-- WHERE mem_bir BETWEEN '1975-01-01' AND '1975.12.31'
WHERE mem_bir BETWEEN '19750101' AND '19751231';

SELECT mem_name, mem_mileage
FROM member 
WHERE mem_mileage BETWEEN 10 AND 10000 AND 
mem_name LIKE '김%';

SELECT mem_name, mem_bir
FROM member 
WHERE mem_bir NOT BETWEEN '1975-01-01' AND '1975-12-31';

SELECT mem_name ,CONCAT(mem_id, '-', MEM_REGNO2)AS MEM_REGNO,
                CONCAT(mem_add1,' ',mem_add2) AS MEM_ADD
                FROM member;
                
SELECT LOWER(mem_id) AS '소문자로' , UPPER (mem_id) AS '대문자로'
FROM member                ;

SELECT
  '왼쪽공백',
  LTRIM('		왼쪽공백 제거 '),
  '오른쪽 공백         ',
  RTRIM('오른쪽공백제거 		'),
  '   좌우공백   ',
  TRIM('	좌우공백제거	');
  
  -- 특정 자리 수까지의 문자 추출하기 
  -- mysql OR maria db용
  SELECT LEFT(prod_id,4) , RIGHT (prod_id,6)
  FROM prod;
  
  
  
-- p101 상품분류에 대해 새로운 상품을 등록하려고 합니다
-- p101000006이 현재 마지막 번호입니다
-- 마지막 번호에 1 증가 시키고자 합니다

SELECT LEFT(max(prod_id),8)      
FROM prod 
WHERE prod_id LIKE 'P101%'
 ORDER BY prod_id DESC ;
 
SELECT *
FROM member ;
 
  
  
SELECT prod_id, prod_name
FROM prod
WHERE SUBSTRING(prod_name,4,2)='칼라';

SELECT *
FROM member
WHERE mem_name LIKE '김%' AND
	SUBSTRING(mem_add1,1,2) IN ('서울', '대전') AND 
	mem_memorial LIKE '%결혼%';
	
SELECT mem_id, mem_mileage
FROM member 
WHERE mem_mileage >= (SELECT mem_mileage FROM member where mem_id='a001') ;
 

SELECT mem_id, mem_name
FROM member 
WHERE mem_id NOT IN(SELECT cart_member FROM cart);

SELECT mem_id, mem_name
FROM member 
LEFT OUTER JOIN cart ON member.mem_id =cart.cart_member
WHERE cart.cart_member IS NULL ;


SELECT lprod_gu, lprod_nm
FROM lprod
WHERE lprod_gu NOT IN(SELECT prod_lgu FROM prod);

SELECT mem_name 
FROM member
WHERE mem_id IN (SELECT cart_member FROM cart);


SELECT cart_member,
 (SELECT mem_name FROM member WHERE cart_member=mem_id ) AS mem_name,
cart_no,
cart_prod,
cart_qty 
FROM cart;

SELECT * FROM lprod ;

SELECT prod_name,
prod_sale,
prod_lgu,
(SELECT lprod_nm FROM lprod WHERE prod_lgu = lprod_gu) AS lprod_nm
FROM prod  ;

SELECT *
FROM cart;

SELECT mem_id
FROM member
WHERE mem_add1 LIKE '서울%' OR mem_add1 LIKE '대전%';


SELECT 
cart_no,
cart_prod,
cart_qty,
(SELECT prod_name FROM prod WHERE prod_id= cart_prod) AS prod_name,
(SELECT lprod_nm FROM lprod WHERE lprod_gu=(
SELECT prod_lgu FROM prod WHERE prod_id= cart_prod)) AS lprod_gu
FROM cart
WHERE cart_member IN (SELECT mem_id FROM member WHERE mem_add1 LIKE '서울%' OR mem_add1 LIKE '대전%');


SELECT *
from prod;

SELECT prod_buyer
FROM prod ;


SELECT buyer_id
FROM buyer
WHERE buyer_add1 LIKE '%서울%' OR buyer_add1 LIKE '%대전%' OR buyer_add1 LIKE '%광주%';

SELECT *
FROM cart
WHERE cart_qty>=5 AND
   (SELECT lprod_nm FROM lprod WHERE lprod_gu= SUBSTRING(cart_prod,1,4)) LIKE '%컴퓨터%' 
--	and (select prod_buyer FROM prod WHERE prod_id = cart_prod)
	
;

SELECT prod_id , prod_name, prod_sale, (SELECT buyer_name FROM buyer WHERE buyer_id = prod_buyer) AS buyer_name
FROM prod
WHERE prod_id IN (SELECT cart_prod FROM cart
where cart_member IN (SELECT mem_id FROM member WHERE mem_mileage >=100) AND cart_qty>=5)
AND prod_lgu IN (SELECT lprod_gu FROM lprod WHERE lprod_nm LIKE '%컴퓨터%');
AND prod_buyer IN (SELECT buyer_id FROM buyer WHERE SUBSTRING(buyer_add1,1,2) IN ('서울', '대전','광주') );

SELECT buyer_id FROM buyer WHERE SUBSTRING(buyer_add1,1,2) IN ('서울', '대전','광주')
;

 

728x90
반응형