04. Hello World
MySQL 설치 및 설정
| 패키지 종류: MySQL Enterprise Edition, MySQL Cluster CGE, MySQL Community Server
* 학습용으로는 Community Server 권장
mysql 명령 실행
- mysql -u [User] -p [pw]
- mysql -u [User] -p 입력 후 Enter password: 문구 뒤에 설정한 pw 입력
* mysql 설치 당시 지정한 비밀번호를 반드시 기억해야하며 잊어버린 경우 비밀번호 찾기 기능을 지원하지 않음
SELECT
데이터베이스의 데이터를 읽어오는 명령어로 행과 열로 구성된 표 형식의 데이터를 출력
이때, NULL은 결측치
mysql> SELECT * FROM db;
* (*)는 애스터리스크로 모든 열을 의미하는 메타문자
* 예약어 [table name] 형태로 사용
show
MySQL에서는 하나의 서버에 여러 개의 데이터베이스를 넣을 수 있으며 목록을 출력할 때 사용
단, show 명령은 mysql 클라이언트 프로그램 고유 명령으로 SQL 명령은 아님
mysql> show database;
use
SQL 명령을 실행할 때 구체적으로 어떤 데이터베이스에 명령을 실행할지 결정하는 역할
mysql> SELECT * FROM db;
ERROR 1046 (3D000): No database selected
mysql> use data1;
Database changed
데이터베이스 지정
mysql -u [User] -p [database name]
C:\Users\SSE> mysql -u root -p data1;
mysql> SELECT * FROM db;
exit
mysql 클라이언트를 종료할 때 사용하는 명령어
05. 테이블 구조 참조하기
DESC
하나 이상의 열로 구성된 테이블에서 DESC 명령으로 테이블의 구조를 참조
자료형
| Integer: 수치형, 정수값을 저장할 수 있는 자료형으로 소수점은 출력 불가
| Char: 고정 길이 문자열 자료형으로 하나의 문자열을 저장할 수 있는 자료형
* 문자열형에서는 열의 최대 길이를 지정해야 하며 CHAR(8)의 경우 최대 8글자의 문자열을 저장
| Varchar: 가변 길이 문자열 자료형으로 문자열을 저장할 수 있는 자료형이지만 데이터 크기에 맞춰 저장공간의 크기도 변화
| Date: 날짜값을 저장할 수 있는 자료형으로 연/월/일 형태로 데이터 저장
| Time: 시간을 저장할 수 있는 자료형으로 시/분/초 형태로 데이터 저장
06. 검색 조건 지정하기
열 지정
SELECT [원하는 열] FROM [databas name];
: 원하는 열만 지정하여 선택 및 출력
mysql> SELECT number, name FROM db;
WHERE
SELECT * FROM [database name] WHERE [조건];
: 조건식의 비교 연산자로 원하는 행을 지정하여 선택 및 출력
mysql> SELECT * FROM db WHERE number = 2;
mysql> SELECT * FROM db WHERE number <> 2; //number <> x: number열의 값이 x가 아닌 행만 출력
문자열형의 상수
- 문자열, 날짜, 시간형을 비교하는 경우 싱글쿼트로 둘러싸 표기
- 날짜시간형은 연/월/일을 하이픈(-)으로 구분하며 시각은 시/분/초를 콜론(:)으로 구분하여 표기
mysql> SELECT * FROM db WHERE name='Amy';
mysql> SELECT * FROM db WHERE birthday='2002-08-17;
mysql> SELECT * FROM db WHERE birthday='2002-08-17 08:22:05;
IS NULL
결측값 NULL을 검색하기 위해서는 = 연산자가 아닌 'IS NULL' 사용
반대로, NULL이 아닌 값을 검색하고 싶은 경우에는 "IS NOT NULL' 사용
mysql> SELECT * FROM db WHERE birthday IS NULL
mysql> SELECT * FROM db WHERE birthday IS NOT NULL
07. 조건 조합하기
AND
모든 조건을 만족하는 행 출력
: 조건을 만족하는 행을 집합으로 표현했을 때 해당 집합이 겹치는 부분인 교집합을 의미
mysql> SELECT * FROM db WHERE a<>0 AND b<>0; //a열과 b열이 모두 0이 아닌 행 출력
OR
어느 쪽이든 조건을 만족하는 행 출력
: 조건을 만족하는 행을 집합으로 표현했을 떄 해당 집합들의 합한 부분인 합집합을 의미
mysql> SELECT * FROM db WHERE a<>0 OR b<>0; //a열이 0이 아니거나 b열이 0이 아닌 행 출력
* AND와 OR 사용시 주의점
mysql> SELECT * FROM db WHERE no=1 OR 2;
mysql> SELECT * FROM db WHERE no=1 or no=2;
; 상수 '2'는 논리 연산으로 항상 참이 되어 결과적으로 모든 행을 반환
mysql> SELECT * FROM db WHERE a=1 OR a=2 and B=2 OR b=;
: AND가 OR에 비해 우선순위가 높아 OR보다 AND가 먼저 계산
mysql> SELECT * FROM db WHERE a=1 OR (a=2 AND b=1) OR b=2;
: 3개의 조건식이 OR로 연결된 형식
mysql> SELECT * FROM db WHERE (a=1 OR a=2) AND (b=1 OR b=2);
: a열이 1 또는 2이고 b열이 1 또는 2인 행을 출력
NOT
오른쪽에만 항목 지정하는 단항 연산자로 오른쪽에 지정한 조건식의 반대 값 반환
주로 복수의 조건식에 대해 ~아닌, ~외, ~를 제외한 나머지 등의 조건을 지정
mysql SELECT * FROM db WHERE NOT(a<>0 OR b<>0); //a열이 0이거나 b열이 0이 아닌 행을 제외한 나머지 행 출력
08. 패턴 매칭에 의한 검색
LIKE
| %와 _: 패턴을 정의할 때 사용할 수 있는 메타문자
- (%): 임의의 문자열을 의미하며 빈 문자열과도 매치 가능
- (_): 임의의 문자 하나를 의미
* 단, 패턴을 정의할 때는 메타문자를 여러개 사용 가능하며 (*)는 LIKE에서 사용 불가
mysql> SELECT * FROM db;
mysql> SELECT * FROM db WHERE text LIKE 'SQL%'; //text 열 데이터가 SQL~로 시작하는 행 출력
mysql> SELECT * FROM db WHERE text LIKE '%SQL%'; //text 열 데이터에 SQL이 포함되는 행 출력
mysql> SELECT * FROM db WHERE text LIKE '%SQL'; //text 열 데이터가 ~SQL로 끝나는 행 출력
%검색
- 메타문자와 동일한 문자인 %를 LIKE로 검색하는 경우 dlfqksanswp %를 검색하기 위해서는 예외 처리가 필요
: \%와 같이 \를 %앞에 붙여 사용
mysql> SELECT * FROM db WHERE text LIKE '%\%%';
* %를 LIKE로 검색하는 경우 \%로, _를 LIKE로 검색하는 경우에는 \_로 사용
' 이스케이프
문자열 상수 안에 '를 포함하고 싶은 경우 표준 SQL에서는 '를 2개 연속 기술: 예외 처리
- it's 대신 it''s 사용
mysql> SELECT 'it's';
mysql> SELECT 'it''s';
* 간단한 패턴 매칭의 경우 LIKE를 사용하지만 복잡한 패턴 매칭의 경우 정규 표현식을 사용
정규 표현식(Regular Expression): 더 많은 메타문자를 사용해 폭넓게 패턴 지정 가능
'백엔드 > SQL 첫걸음' 카테고리의 다른 글
6. 데이터베이스 객체 작성과 삭제 (0) | 2024.10.12 |
---|---|
5. 집계와 서브쿼리 (0) | 2024.10.11 |
4. 데이터의 추가, 삭제, 갱신 (0) | 2024.10.05 |
3. 정렬과 연산 (1) | 2024.10.05 |
1. 데이터베이스와 SQL (2) | 2024.09.25 |