본문 바로가기

컴퓨터학원(복습)(수료)

자바(JAVA)기반 안드로이드 웹&앱 개발 15일차(MySQL, DDL, DML, DCL, SELECT, WHERE, ORDER BY, GROUP BY, JOIN, CREAT)

1. MySQL 명령창(Command Line Client)

.1) MySQL 명령창에서 ‘testdb’라는 데이터베이스를 생성하는 예제

mysql > show databases; (데이터베이스 조회)

mysql > create database testdb; (데이터베이스 생성)

mysql > use testdb; (데이터베이스 선택)

mysql > CREATE TABLE test (id smallint unsigned not null auto_increment PRIMARY KEY, name varchar(20) not null); (테이블 생성)

mysql > show tables; (테이블 보기)

mysql > INSERT INTO test(id, name) VALUES (1, ‘Sample data’); (테이블에 값 넣기)

mysql > SELECT * FROM test; (테이블 조회)

1. SQL 개요

.1) 데이터 정의어(DDL) : 테이블이나 관계의 구조를 생성하는데 사용

....- CREATE, ALTER, DROP 문 등이 있다.

.2) 데이터 조작어(DML) : 테이블에 데이터를 검색, 삽입, 수정, 삭제하는데 사용

....- SELECT(질의어query), INSERT, DELETE, UPDATE 등이 있다.

.3) 데이터 제어어(DCL) : 데이터의 사용 권한을 관리하는데 사용

....- GRANT, REVOKE 문 등이 있다.

 

1. 데이터조작어(DML)

.1) 검색

,,(1) SELECT (질의어 query)

SELECT [ALL | DISTINCT] 속성이름()

FROM 테이블이름()

[WHERE 검색조건()]

[GROUP BY 속성이름]

[HAVING 검색조건()]

[ORDER BY 속성이름 [ASC | DESC]]

[] : 대괄호 안의 SQL 예약어들은 선택적으로 사용한다.

| : 선택가능한 문법들 중 한개를 사용할 수 있다.

....- SQL 문은 관계대수와 달리 기본적으로 중복을 제거하지 않는다.

....- 중복을 제거하고 싶으면 DISTINCT라는 키워드를 사용한다.(SELECT DISTINCT)

 

 

 

 

 

..(2) WHERE 조건

술어

연산자

사용 예

비교

=. <>, <. <=, >, >=

pirce < 20000

범위

BETWEEN

price BETWEEN 10000 AND 20000

집합

IN, NOT IN

price IN (10000, 20000, 30000)

패턴

LIKE

bookname LIKE ‘축구의 역사

NULL

IS NULL, IS NOT NULL

price IS NULL

복합조건

AND, OR, NOT

(price < 20000) AND (bookname LIKE ‘축구의역사’)

와일드문자

의미

사용 예

+

문자열을 연결

골프’ + ‘바이블’ : ‘골프 바이블

%

0개 이상의 문자열과 일치

‘%축구%’ : 축구를 포함하는 문자열

[]

1개의 문자와 일치

‘[0-5]%’ : 0-5 사이 숫자로 시작하는 문자열

[^]

1개의 문자와 불일치

‘[^0-5]%’: 0-5사이 숫자로 시작하지 않는 문자열

_

특정 위치의 1개의 문자와 일치

‘_%’ : 두번째 위치에 가 들어가는 문자열

 

..(3) OREDER BY

....- 오름차순 ASC(기본설정)

....- 내림차순 DESC

 

..(4) 집계함수

집계함수

문법

사용 예

SUM

SUM([ALL | DISTINCT] 속성이름)

SUM(price) 합계

AVG

AVG([ALL | DISTINCT] 속성이름)

AVG(price) 평균

COUNT

COUNT({[[ALL | DISTINCT] 속성이름] | * })

COUNT(*) 속성의 투플의 개수

MAX

MAX([ALL | DISTINCT] 속성이름)

MAX(price) 최대값

MIN

MIN([ALL | DISTINCT] 속성이름)

MIN(price) 최소값

 

..(5) GROUP BY

....- 속성 값이 같은 값끼리 그룹을 만들 수 있다.

....- HAVING 절은 GROUP BY 절의 결과 나타나는 그룹을 제한하는 역할을 한다.

 

..(6) 조인(Join)

....- 한 테이블의 행을 다른 테이블의 행에 연결하여 두 개 이상의 테이블을 결합하는 연산

...동등조인(equi join) : 대부분의 조인, 두개의 테이블을 하나의 테이블로 만듦

...외부조인(outer join) : 기준(LEFT, RIGHT, FULL)에 따라 NULL 값을 표현하여 보여줌

 

..(7) 부속질의(중첩질의)

....- SELECT 문의 WHERE 절에 또 다른 테이블 결과를 이용하기 위해 다시 SELECT 문의 ......괄호를 묶는 것

....- 하위 부속질의를 먼저 실행하고 그 결과를 이용하여 상위 부속질의를 실행한다.

....- 상관 부속질의는 상위 부속질의의 튜플을 이용하여 하위 부속질의를 계산한다.

 

..(8) 집합연산

....- UNION : 합집합

....- MINUL(= NOT IN) : 차집합

....- INERSECT(=IN 연산자) : 교집합

 

..(9) EXISTS

....- 상관 부속질의문 형식

....- 조건에 맞는 튜플이 존재하면 결과에 포함, 즉 부솔질의문의 어ᄄᅠᆫ 행이 조건에 만족하면 참

....- NOT EXISTS : 부속질의문의 모든 행이 조건에 만족하지 않을 때만 참

 

2. 데이터 정의어(DDL)

1) CREATE

..(1) 테이블을 구성하고 속성과 속성에 관한 제약을 정의하며 기본키 및 외래키를 정의

CREATE TABLE 테이블이름

({속성이름 데이터 타입

[NULL | NOT NULL | UNIQUE | DEFAULT 기본값 | CHECK 체크조건]

}

[PRIMARY KEY 속성이름()]

[FOREIGN KEY 속성이름 REFERENCES 테이블이름(속성이름)]

[ON DELETE {CASCADE | SET NULL}]

)

 

2) ALTER

..(1) 테이블의 속성과 속성에 관한 제약을 변경하며, 기본키 및 외래키를 변경한다.

ALTER TABLE 테이블이름

[ADD 속성이름 데이터타입]

[DROP COLUMN 속성이름]

[ALTER COLUMN 속성이름 데이터타입]

[MODIFY 속성이름 데이터타입]

[MODIFY 속성이름 [NULL | NOT NULL]]

[ADD PRIMARY KEY(속성이름)]

[[ADD | DROP] 제약이름]

 

3) DROP

..(1) 테이블을 삭제하는 명령, 테이블의 구조와 데이터를 모두 삭제한다.(주의!!)

DROP TABLE 테이블이름

 

3. 데이터 조작어 삽입, 수정, 삭제

1) INSERT

..(1) 테이블에 새로운 튜플을 삽입하는 명령

INSERT INTO 테이블이름[(속성리스트)] VALUES (값리스트);

 

2) UPDATE

..(1) 특정 속성 값을 수정하는 명령

UPDATE 테이블이름

SET 속성이름 1- 1[, 속성이름 2= 2, ...]

[WHERE <검색조건>];

 

3) DELETE

..(1) 테이블에 있는 기존 튜플을 삭제하는 명령

DELETE FROM 테이블이름

[WHERE 검색조건];