본문 바로가기
공부/sql

41일차 복습

by 샤샤샤샤 2023. 1. 13.

sql 복습

 

기본 문법

select  : 보여주고자 하는 column(열/세로값) 값을 선택

from :  테이블 선택.

where : 조건문절. 조건문에 해당하는 row(행/가로) 만 선택.

 

 

테이블 만들기

DROP DATABASE IF EXISTS market_db; -- 만약 market_db가 존재하면 우선 삭제한다.
CREATE DATABASE market_db; -- 데이터베이스 생성
USE market_db; -- market_db 선택

CREATE TABLE `member` (
	`memberno` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
	`id` VARCHAR(50),
	`name` VARCHAR(50)
	);

형식 :

CREATE TABLE 테이블 이름 (

    COLUMN 값들

);

선언시 column의 데이터 타입, 허용되는 글자수(자릿수)를 괄호에 넣어 지정해준다.

null값은 기본값으로 허용되고 있으며, 허용하기 싫다면 not null을 명시해주어야 한다.

AUTO_INCREMENT 는 자동적으로 숫자가 증가하도록 하는 예약어이며, PRIMARY KEY는 필수는 아니지만, 만약 선언한다면 테이블에 단 하나 존재할수 있는 유일무이한 값이다. 이를 적용시키면 자동적으로 NOT NULL이 선언된다.

 

` 문자열 ` : ``(백틱)으로 감싸면 예약어가 아닌 문자열임을 명시할수 있다.

 

ROW추가하기

INSERT INTO 테이블이름 (컬럼 이름1, 컬럼 이름2) VALUES( 데이터1 );

만약 열의 갯수와 삽입하는 데이터 갯수가 일대일 대응된다면 컬럼 이름을 안적어도 된다.

INSERT INTO 테이블이름  VALUES( 데이터1, 데이터2 );

CREATE TABLE toys1 (
	toy_id INT, -- PK (NOT NULL + UNIQUE 제약조건), A.I 추가 안함 
	toy_name CHAR(4),
	age INT
);

INSERT INTO toys1 (toy_id, toy_name, age) 
	VALUES (1, '우디', 25);
    
INSERT INTO toys1	
	VALUES (2, '제시', 20);

 

논리연산자 AND, OR은 다른 언어와 마찬가지로 작동한다. 사용할때 다른 기호로 나타나지 않고, 직접 영어로 작성한다.

 

BETWEEN ~ AND ~ : a<b and a>c 처럼 코드가 길어지는 것을 막기 위한 예약어. 두 조건 사이의 값이 선택된다.

IN() 함수 : 조건문에 쓰는 함수. IN내부 값중 하나라도 맞으면 선택된다. OR연산자로 코드가 길어지는 것을 막기 위한 함수

-- BETWEEN AND ~사이 조건식
SELECT *
	FROM	member
--	WHERE height >= 163 AND height <= 165;
	WHERE height BETWEEN 163 AND 165;

-- IN( )함수 : ~중에 하나이면
SELECT mem_name, mem_number 
	FROM	member
--	WHERE	mem_number=5 OR mem_number=6 OR mem_number=7;
	WHERE mem_number IN( 5, 6, 7 );

LIKE "%a" 또는 LIKE "_a" : 문자열 포함 여부를 확인하기 위한 예약어. %는 a앞에 몇글자가 존재하건 상관없이, 마지막이 a로 끝나는 row를 선택한다. 반면 _는 끝이 a로 끝나고 두글자로 이뤄진 row를 선택한다.

 

-- 문자열의 일부 검색 : LIKE 
-- % : 여러문자열을 대치
-- _ : 한 문자를 대치

-- 멤버명이 우로 시작하는 걸그룹 검색
SELECT *
	FROM member
	WHERE mem_name LIKE '우%';
    
-- 멤버명이 걸로 끝나는 걸그룹 검색
SELECT *
	FROM member
	WHERE mem_name LIKE '%걸';

 

서브쿼리( )

쿼리문 안에 쿼리문을 또 적어 특정 값을 선택하기 위한 기능.

SELECT * FROM member
	WHERE height > ( SELECT height FROM member WHERE mem_name='우리엄마' );

ORDER BY

정렬순서 정하기

기본값은 ASC로 오름차순이며, DESC로 설정하면 내림차순으로 설정된다. 만약 두개 이상으로 정렬하면 먼저 쓴 정렬 방식이 우선순위를 갖는다.

ORDER BY 절은 무조건 WHRER절보다 뒤에 와야 한다.

 

GROUP BY

같은 열의 값이라면 하나로 줄이는 예약어.

예)

alphabet

    A

    A

   B

   B

   B

   C

와 같이 출력됬을때, ORDER BY alphabet; 과 같이 덧붙이면 

A

B

C

로 출력된다.

HAVING절로 집계 조건을 넣어줄수 있다.

 

DISTINCT 열 이름

해당 열을 중복된 값을 제거하고 집계한다. GROUP BY와 달리 조건은 넣을수 없다.

 

LIMIT 숫자 : 출력할 ROW의 갯수를 제한한다.

 

 집계함수 
 SUM() : 합계
 AVG() : 평균
 MIN() : 최소값
 MAX() : 최대값
 COUNT() : 행의 개수 반환
 COUNT(DISINCT) : 행의 개수(중복은 삭제)

 

'공부 > sql' 카테고리의 다른 글

44일차 복습  (0) 2023.01.15
42일차 복습  (0) 2023.01.13