[Database] SQL 기본문법(DDL,DML,DCL)
ref -우재남, 『이것이 SQL Server다』, 한빛미디어(2020)
📌전체 데이터베이스 구성도
✅GROUP BY
GROUP BY 절은 말 말그대로 그룹으로 묶어주는 역활은 한다.
-
GROUP BY 사용이유
-
GROUP 사용 전
SELECT mem_id, amount FROM buy ORDER BY mem_id;
회원 아이디와 구매 개수를 출력하는 쿼리문
APN(에이핑크) 회원의 경우에는 1+2+1+1=5개의 물건을 구매했다. 그러나 합계를 이렇게 암산이나 계산기로 계산해야 한다면 MySQL을 사용할 이유가 없다.
- GROUP 사용 후
SELECT mem_id "회원 아이디", SUM(amount) "총구매 개수"
FROM buy
GROUP by mem_id;
각회원(mem_id)별로 구매한 개수(amount)를 합쳐서 출력하기 위해서는 집게 함수인 SUM()과 GROUP BY 절을 사용함.GROUP BY로 회원별로 묶어준 후에 SUM() 함수로 구매한 개수를 합치면 된다. 집게 함수는 주로 GROUP BY 절과 함께 쓰이며 데이터를 그룹화 해주는 기능을 제공한다.
다음과 같이 총 구매개수가 5개 인것을 확인할수있다.
✅데이터 조회:SELECT
-- 데이터 조회
SELECT 열이름
FROM 테이블명
[WHERE]조건식
[GROUP BY 속성 HAVING 조건] --GROUP BY 이에 조건문을 쓸떄는 HAVING 을써야함 WHERE 불가능
[ORDER BY 속성 [ASC}DESC]]; --ASC: 오름차순,DESC:내림차순
PREDICATE: ALL, DISTINCT(중복제거), DISTINCTROW(튜플 전체 대상으로 중복 제거)
연산자: = <> < LIKE(문자열비교)(%문자열, _문자, #숫자), NOT, AND
-- 집게 함수(GROUP BY와 함꼐 주로 사용되는 집게 함수)
- SUM(),AVG(),MIN(),MAX(),COUNT()
ex)집게함수를 사용하여 회원이 구매한 총합
SELECT mem_id "회원 아이디", SUM(price*amount) "총구매 금액"
FROM buy
group by mem_id;
✅데이터 입력:INSERT
-- 데이터 입력
insert into 테이블
[(열1,열2)] values (값1,값2)
* 예제코드
create table honggong1(
toy_id INT,
toy_name varchar(4),
age int
)
INSERT INTO hongong1 VALUES(1,'우디',25); //데이터 3개 값이 똑같이 들어갈떄는 열 생략가능
INSERT INTO hongng1(toy_id,toy_name) VALUES(2,'버즈'); // 데이터 2개값만 넣는다 하면 직접 열 이름 써야한다.
CREATE TABLE hongong2(
toy_id INT AUTO_INCREMENT PRIMARY KEY, /* AUTO_INTCREMENT 는 기본키(PRIMARY KEY) 로 지정해줘야한다.*/
toy_name CHAR(4),
age INT);
INSERT INTO hongong2 VALUES (NULL, '보핍',25);
INSERT INTO hongong2 VALUES (NULL, '슬링키',22);
INSERT INTO hongong2 VALUES (NULL, '렉스',21);
ALTER TABLE hongong2 AUTO_INCREMENT= 100; //alter로 오토인크리먼트 100부터 시작하게 설정함.
CREATE TABLE hongong3(
toy_id INT auto_increment primary key,
toy_name char(4),
age int);
alter table hongong3 auto_increment = 1000;
set @@auto_increment_increment=3; /*1003 1006 건너뛰는 숫자 3씩 증가*/
✅데이터 수정:UPDATE
-- 데이터 수정
UPDATE 테이블 이름
SET 열1 = 값1, 열2 = 값2 --set 하고 바꾸는 열 = 새로 바뀌는 값
WHERE 조건; --where 어떤 컬럼하고 바꿀지 명시
* 예제코드
create table city_popul(
city_name char(35) ,
population int);
insert into city_popul
select name, population from world.city;
update city_popul
set city_name = '서울' -- 영어떄기 도시네임 컬럼 seoul을 - > 한글 서울로 바꿔라.
where city_name = 'seoul' ;
update city_popul
set city_name = '뉴욕' , population = 0
where city_name = 'New York' ;
✅데이터 삭제:DELETE
DELETE FROM 테이블이름 WHERE 조건;
*예제코드
delete from city_popul
where city_name like = 'New%' --city_popul 테이블에 city_name 컬럼에 값이 앞에 new로 시작하는것을 삭제해라.
📌DDL,DML,DCL 이란?
✅DDL(Data Definition Language이란?
-
테이블과 컬럼을 정의하는 명령어로 생성, 수정, 삭제 등의 데이터 전체 골격을 결정하는 역할을 담당한다.
- create : 데이터베이스, 테이블등을 생성
- alter : 테이블을 수정
- drop : 데이터베이스, 테이블을 삭제
- truncate : 테이블을 초기화
SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 언어 데이터 베이스 관리자나 데이터베이스 설계자가 사용.
✅DML(Data Manipulation Language)이란?
- 데이터 조작어란 정의된 데이터베이스에 입력된 레코드를 조회하거나 수정하거나 삭제하는 등의 역할을 하는 언어.
- select : 데이터 조회
- insert : 데이터 삽입
- update : 데이터 수정
- delete : 데이터 삭제
✅DCL(Data Control Language)이란?
-
데이터베이스에 접근하거나 객체에 권한을 주는등의 역할을 하는 언어
- grant : 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 부여
- revoke : 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 박탈, 회수
- commit : 트랜잭션의 작업을 저장
- rollback : 트랜잭션의 작업을 취소, 원래대로 복구
Leave a comment