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 검색조건];
'컴퓨터학원(복습)(수료)' 카테고리의 다른 글
자바(JAVA)기반 안드로이드 웹&앱 개발 17일차(MySQL, ER다이어그램, 데이터 모델링, draws.io) (0) | 2021.03.15 |
---|---|
자바(JAVA)기반 안드로이드 웹&앱 개발 16일차(MySQL, 내장함수, 부속질의, 저장 프로그램, 프로시저, 트리거, 커서, ) (0) | 2021.03.12 |
자바(JAVA)기반 안드로이드 웹&앱 개발 14일차(데이터베이스, DBMS, 관계대수, mySQL설치) (0) | 2021.03.10 |
자바(JAVA)기반 안드로이드 웹&앱 개발 13일차(배열의 정렬,탐색, Generic(제네릭)) (0) | 2021.03.08 |
자바(JAVA)기반 안드로이드 웹&앱 개발 12일차(자바의 기본 클래스, Wrapper, Number) (0) | 2021.03.05 |