1. SELECT 명령 구문
1)SELECT 명령: DML에 속하는 SQL 명령어. 이 명령어를 통해 데이터베이스의 데이터를 읽어올 수 있음. '질의'나 '쿼리'라고 불리기도 한다.
-예시
SELECT * FROM sample21;
▶ SELECT 명령 입력 예시
→ SELECT: SQL 명령의 한 종류. 'SELECT 명령을 실행하세요'라는 의미임.
→ 애스터리스크(*): '모든 열'을 의미하는 메타문자
→ FROM: 처리 대상 테이블을 지정하는 키워드. FROM 뒤에 테이블 명을 지정함.
→ sample21: 테이블명
→ 세미콜론(;): 명령문의 마지막을 나타내는 문자. 세미콜론을 붙이지 않고 엔터키를 누르면 입력 중인 것으로 간주되어 명령문이 실행되
지 않음.
→ 명령어를 실행하면 sample21 테이블의 모든 데이터를 읽어옴.
-SQL 명령은 키워드에 의해 '구'라는 단위로 나눌 수 있음.
→ ex)SELECT구: SELECT * / FROM구: FROM sample21
2) 예약어와 데이터베이스 객체명
-예약어: 구를 결정하는 키워드
→ ex)SELECT, FROM 등
-데이터베이스 객체: 다양한 데이터를 저장하거나 관리하는 기능을 가진 것. 테이블, 뷰 등이 있음.
→ 데이터베이스 객체는 이름을 붙여 관리함.
※ 주의사항
- 같은 이름으로 다른 데이터베이스 객체를 만들 수 없음.
- 데이터베이스 객체명에는 예약어와 동일한 이름을 사용할 수 없음.
→ 예약어와 데이터베이스 객체명은 대소문자를 구별하지 않음.
3) 테이블
-테이블은 '행(레코드)'과 '열(컬럼/필드)'로 구성된 표 형식의 데이터를 말함.
-행은 모두 동일한 형태로 되어 있으며 옆으로 '열'이 나열되는데, 열마다 이름이 지정되어 있음.
-각각의 행과 열이 만나는 부분을 '셀'이라고 부르며, 셀에는 하나의 데이터 값이 저장됨.
| no | name | birthday | address |
| 1 | 박준용 | 1976-10-18 | 대구광역시 수성구 |
| 2 | 김재진 | NULL | 대구광역시 동구 |
| 3 | 홍길동 | NULL | 서울특별시 마포구 |
-숫자만으로 구성된 데이터를 '수치형' 데이터라고 함.
→ 수치형 데이터는 오른쪽 정렬로 표시됨 ex) 각 행의 no열 값
-임의의 문자로 구성된 데이터를 '문자열형' 데이터라고 함.
→ 문자열형 데이터는 왼쪽 정렬로 표시됨 ex) 각 행의 name열 값
-날짜와 시각을 나타내는 데이터를 '날짜시간형' 데이터라고 함.
→ 날짜시간형 데이터는 왼쪽 정렬로 표시됨 ex) 각 행의 birthday열 값
-각 열은 하나의 자료형만 가질 수 있음.
-NULL은 '아무 것도 저장되어 있지 않은 상태'를 의미함.
2. 테이블 구조 참조하기
1)DESC 명령
DESC 테이블명;
-DESC 명령을 실행하면 테이블 구조를 참조할 수 있음.
- Field: 열 이름이 표시됨.
- Type: 해당 열의 자료형을 나타냄.
- Null: NULL 값을 허용할 것인지 아닌지를 나타내는 제약사항으로, yes로 지정하면 NULL 값을 허용한다는 의미.
- Key: 해당 열이 '키'로 지정되어 있는지를 나타냄.
- Default: 행을 추가할 때 열의 데이터 값을 생략했을 경우 적용되는 값(=기본값)
2) 자료형
- INTEGER형: 수치형의 하나로, 정수값을 저장할 수 있는 자료형. 소수점은 포함 불가함.
- CHAR형: 문자열형의 하나로, 문자열을 저장할 수 있는 자료형. 문자열의 최대 길이를 지정해야 함. VARCHAR형과 달리 언제나 고정된 길이로 데이터가 저장됨(=고정 길이 문자열 자료형). 최대 길이보다 작은 문자열 저장시 공백문자로 나머지를 채운 후 저장.
- VARCHAR형: 문자열형의 하나로, 최대 길이를 지정하는 점은 CHAR형과 같음. 그러나, CHAR형과 달리 데이터 크기에 맞춰 저장공간의 크기도 변경됨(=가변 길이 문자열 자료형).
- DATE형: 날짜값을 저장할 수 있는 자료형. 즉 연월일의 데이터를 저장할 수 있는 자료형.
- TIME형: 시간을 저장할 수 있는 자료형.
3. 검색 조건 지정하기
-검색: 행이나 열을 선택하여 데이터베이스에서 데이터를 읽어오는 것.
-검색 조건 지정은 행을 선택하는 것과 열을 선택하는 것으로 구분할 수 있음.
→행을 선택할 때는 WHERE 구를 사용하며, 열을 선택할 때는 SELECT 구를 사용함.
1)SELECT 구에서 열 지정하기
SELECT 열1, 열2… FROM 테이블명
-콤마를 이용하여 열명 여러개를 지정 가능함.
-지정한 열만 결괏값으로 표시됨.
-열을 전혀 지정하지 않거나, 테이블에 존재하지 않는 열을 지정하면 구문 에러 발생.
-열 지정 순서는 임의로 정할 수 있고, 결과는 지정한 열의 순서대로 표시됨.
-동일한 열을 중복해서 지정해도 무관함.
2)WHERE 구에서 행 지정하기
SELECT 열 FROM 테이블명 WHERE 조건식
-WHERE 구는 FROM 구의 뒤에 표기해야 함.
→SQL에서는 구의 순서가 정해져 있어 순서를 바꿔적을 수 없음. WHERE 구는 생략 가능함. 만약 WHERE 구를 생략하면 테이블 내의
모든 행이 검색대상이 됨.
-조건에 일치하는 행만 SELECT의 결과로 반환됨.
-조건식: 열과 연산자, 상수로 구성되는 식. 조건식은 참과 거짓을 반환하는 비교 연산자나 술어를 사용해서 표기되고, 명령문은 조건식이 참이 되는 행만 결과로 반환함.
→ex) no = 2
3)문자열형의 상수
-리터럴: 자료형에 맞게 표기한 상수값
-수치형 조건식의 경우, 비교할 숫자를 그대로 조건식에 표기함.
-문자열형과 날짜시간형 조건식의 경우, 리터럴을 싱글쿼트('')로 둘러싸 표기함.
→이때, 날짜시간형 리터럴의 연월일은 하이픈(-)으로 구분하고, 시각형 리터럴은 시분초를 콜론(:)으로 구분하여 표기함.
4)NULL 값 검색
-NULL 값은 = 연산자가 아닌 'IS NULL' 이라는 술어를 사용함.
→ex) SELECT * FROM sample21 WHERE birthday IS NULL; 과 같이 사용. 결과로 birthday 항목의 값이 NULL인 행을 반환.
-NULL 값이 아닌 행을 검색하고 싶다면 'IS NOT NULL' 이라는 술어를 사용함.
5)비교 연산자
- = 연산자: 좌변과 우변의 값이 같을 경우 참이 됨.
- <> 연산자: 좌변과 우변의 값이 같지 않을 경우 참이 됨.
- > 연산자: 좌변의 값이 우변의 값보다 클 경우 참이 됨.
- < 연산자: 좌변의 값이 우변의 값보다 작을 경우 참이 됨.
- >= 연산자: 좌변의 값이 우변의 값보다 크거나 같을 경우 참이 됨.
- <= 연산자: 좌변의 값이 우변의 값보다 작거나 같을 경우 참이 됨.
4. 조건 조합하기
1)AND로 조합하기
-좌우의 식 모두 참일 경우 AND 연산자는 참을 반환함.
-논리곱을 계산하는 논리 연산자
SELECT * FROM sample24 WHERE a<>0 AND b<>0;
→a 열과 b 열이 모두 0이 아닌 행을 반환.
2)OR로 조합하기
-좌우의 식 중 어느 쪽이든 조건을 만족하면 참을 반환함.
-논리합을 계산하는 논리 연산자
SELECT * FROM sample24 WHERE a<>0 OR b<>0;
→a 열이 0이 아니거나 b 열이 0이 아닌 행을 반환.
3)AND와 OR을 사용할 경우 주의할 점
-AND 연산자나 OR 연산자의 좌우로 열이나 상수만을 지정한다면 기대한 결과값을 얻을 수 없을 가능성이 있음.
→ex) no 열의 값이 1 또는 2인 행을 추출하는 경우
SELECT * FROM sample24 WHERE no=1 OR 2;
▶ 상수 2는 논리 연산으로 항상 참이 되므로 결과적으로 모든 행을 반환하게 된다. 따라서 이 명령어를 통해 올바를 결과를 얻을 수 없음.
SELECT * FROM sample24 WHERE no=1 OR no=2;
▶ 올바른 조건식.
-연산자 우선순위: AND는 OR에 비해 우선 순위가 높음.
→ 원하는 조건을 지정하기 위해 괄호()로 우선순위를 변경할 수 있음.
4)NOT으로 조합하기
-오른쪽에만 항목을 지정하는 단항 연산자.
-오른쪽에 지정한 조건식의 반대 값을 반환함.
SELECT * FROM sample24 WHERE NOT(a<>0 OR b<>0);
5. 패턴 매칭에 의한 검색
1)LIKE로 패턴 매칭하기
-패턴 매칭(=부분 검색): 셀의 데이터 값에 특정 문자나 문자열이 포함되어 있는지를 검색하고 싶은 경우 사용하는 방법.
-= 연산자로 검색할 경우에는 열 값이 완전히 일치할 때 참이 되지만 LIKE 술어를 사용하면 열 값이 부분적으로 일치하는 경우에도 참이 됨.
열명 LIKE '패턴'
→ 왼쪽에는 매칭 대상을 지정하고, 오른쪽에는 패턴을 문자열로 지정(수치형 상수는 지정 불가)
→ 패턴을 지정할 때는 메타문자를 사용할 수 있음.
-메타문자: 패턴 매칭 시 '임의의 문자 또는 문자열'에 매치하는 부분을 지정하기 위해 쓰이는 특수 문자. '와일드카드'라고도 함. 패턴을 정의할 때 사용할 수 있는 메타문자로는 퍼센트(%)와 언더스코어(_)가 있다.
→ 퍼센트: 임의의 문자열 / 언더스코어: 임의의 문자 하나를 의미.
SELECT * FROM sample25 WHERE text LIKE 'SQL%';
→ 문자열이 SQL로 시작하는 행을 반환.
SELECT * FROM sample25 WHERE text LIKE '%SQL%';
→ 문자열 도중에 SQL이 존재하는 행을 반환. 이때, 메타문자 %는 빈 문자열과도 매치하므로 SQL로 시작하는 문자열도 반환됨.
2) 이스케이프
-LIKE에서는 메타문자 부분이 임의의 문자열을 의미하므로 %나 _를 검색조건으로 지정하는 방법이 필요
→ 이스케이프라는 방법으로 처리 가능('\%'나 '\_'와 같이 \를 메타문자 앞에 붙여서 검색 가능)
→ 문자열 상수 '의 이스케이프: 문자열 상수 안에 '를 포함하고 싶은 경우 '를 2개 연속해서 기술하면 됨.
'ECC > SQL 첫걸음' 카테고리의 다른 글
| [SQL] 6. 데이터베이스 객체 작성과 객체 (0) | 2025.04.05 |
|---|---|
| [SQL] 5. 집계와 서브쿼리 (0) | 2025.04.04 |
| [SQL] 4. 데이터의 추가, 삭제, 갱신 (0) | 2025.03.28 |
| [SQL] 3. 정렬과 연산 (0) | 2025.03.28 |
| [SQL] 1. 데이터베이스와 SQL (0) | 2025.03.22 |