백엔드/SQL 첫걸음

2. 테이블에서 데이터 검색

smallsilver_west 2024. 9. 25. 15:45

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