SQL 데이터 조회 문법
SELECT 컬럼명 AS 별칭 FROM 테이블명 WHERE 필드명 조건식 ORDER BY 컬럼명 ASC / DESC
sql 문법으로 테이블 내 데이터를 조회하기 위해서는 SELECT 문법을 사용해야 한다. [ SELECT 컬럼명 FROM 테이블명 ] 으로 검색하는데, 검색할 컬럼명과 테이블명을 기재해주면 된다. 만일 여러개의 컬럼을 보고자 할 때는 콤마(,)를 이용하면 되고, 모든 컬럼을 검색하고자 할 경우에는 * 을 입력하면 된다. 참고로 컬럼과 필드는 같은 단어이다.
조회문을 사용해보기 위해 새로운 데이터베이스를 만들어준다. Databases 폴더를 누르면 샘플 db인 sys가 들어있을 것이다. 나는 삭제해 주고 테스트용 내 db를 생성했다. 우클릭을 하고 Create New Database를 눌러, 이름을 설정해준다.
Database는 '파일 이름'과 같은 역할을 한다. 이제 사용할 '테이블'을 생성해준다. 엑셀에서의 '시트' 단위, 표에서는 '표 하나' 의 단위라고 보면 된다. 그림으로 표현하면 아래와 같다. 한 줄의 row를 '레코드' 라고 한다.
테이블 이름 : user
컬럼1(=필드1) | 컬럼명2(=필드2) | |
레코드 1 | row 하나 | row 하나 |
레코드 2 | row 둘 | row 둘 |
레코드 3 | row 셋 | row 셋 |
Tables 폴더에서 우클릭을 하고 Create New Table를 눌러 테이블을 생성해 준 다음, '테이블명' 이라고 적힌 input 박스에 사용할 테이블의 이름을 입력한다.
표, 즉 테이블을 생성하였으니 표 헤더, 즉 컬럼명을 입생성해준다. 우클릭을 하고 Create New Column을 클릭한다.
email이라는 컬럼을 만들어 주었다. 기본으로 설정되어 있는 Data Type인 VARCHAR(100)은 문자형 데이터 타입으로, 최대 100자까지 저장하겠다는 뜻이다. 데이터 타입에는 INT, boolean 등 여러 타입이 있으니 필요한 것으로 골라 사용하면 된다.
간단하게 유저에게 필요한 컬럼들을 만들어 주었다. 이메일, 비밀번호, 닉네임, 휴대폰번호, 주소, 가입 날짜를 컬럼으로 설정해준다.
데이터를 추가하려면 Data 탭에 들어가서, 하단의 '로우 추가' 버튼을 눌러주면 된다. 시범으로 다섯개의 데이터를 넣어주었다.
이제 기본키를 설정해본다. 기본키(primary key)란 sql과 같은 관계형 데이터베이스에서 레코드(1개의 row)의 식별자로 이용하기에 가장 적합한 것을 일컫는다. 테이블 당 단 하나만 설정할 수 있다. 만일 sql문으로 테이블을 생성한다면, 테이블을 생성할 때 아래와 같은 문법으로 기본키를 설정해 줄 수 있다. 필드명 옆에 PRIMARY KEY 키워드를 입력해주는 것이다.
CREATE TABLE 테이블이름 ( 필드이름 필드타입 PRIMARY KEY, ... ) |
우선은 기초단계이므로 직접 GUI를 사용해 추가해본다. Create New Constraint를 클릭하고, email을 PK로 설정해 주었다.
이제 조회문을 사용해본다. 우클릭을 통해 SQL 편집기를 열 수 있다.
데이터를 조회하는 문법은 SELECT 컬럼명 FROM 테이블명 이다. user 테이블의 모든 데이터를 조회하려면 컬럼명에 * 을 입력해준다. 와일드카드 * 은 '모든 것' 을 뜻한다. FROM 뒤는 데이터베이스명.테이블명으로 입력해도 되고, 그냥 테이블명을 입력해도 된다.
데이터를 조회하고, 조회한 데이터를 순서대로 정렬할 때 사용하는 문법은 ORDER BY이다. ORDER BY 컬럼명 ASC/DESC 으로 사용하는데, ASC는 오름차순(1,2,3,4..) 이며, DESC는 내림차순(5,4,3,2,1..) 이다.
만일 데이터가 중복될 경우를 염려할 때는 여러개의 조건으로 정렬할 수도 있다. 먼저 password를 기준으로 오름차순 정렬을 한 뒤, 만일 같은 데이터가 있다면 nikname으로 내림차순 정렬을 해보았다. 조회한 데이터들이 password를 기준으로 먼저 오름차순 정렬 된 다음, 해당 필드에 같은 데이터가 존재하면 nikname을 기준으로 내림차순 정렬된다.
이제 WHERE문을 사용해보자. WHERE문을 사용하면 조건을 주어 원하는 row, 즉 원하는 행만 출력할 수 있다. 가령 닉네임이 'third'라는 데이터만 출력하고 싶다면 아래와 같이 사용한다.
등호, 부등호같은 수학 기호를 사용할 수도 있다. password가 1111보다 큰 데이터를 도출해보았다.
만일 A와 B 사이에 있는 값을 조회하고 싶다면, WHERE 필드명 BETWEEN A AND B 라고 입력해주면 된다. 2222와 4444 사이의 값을 조회한다.
정보처리기사 시험을 준비할 때 sql문에서 가장 많이 마주했던 것은 in, or, and, not 연산자였다.
in은 in으로 주어진 데이터들 속에 일치하는 데이터를 가진 레코드를 조회해준다.
or은 or 연산자로 이어진 조건들 중 하나라도 일치하는 레코드를 조회해준다.
and는 and 연산자로 이어진 조건들을 모두 만족하는 레코드를 조회해 준다.
not은 말 그대로 '주어진 조건이 아닌' 레코드를 조회한다.
- WHERE 필드명 IN (값1,값2,값3...) : 필드명 의 데이터 값이 값1, 또는 값2, 또는 값3인 레코드를 조회하라.
- WHERE 필드명1=A OR 필드명2=B OR 필드명3>=C : 필드명1이 A이거나, 필드명2의 값이 B거나, 필드명3의 값이 C인 레코드를 조회하라.
- WHERE 필드명1=AAND 필드명2=B : 필드명 1의 값이 A이고, 필드명2의 값이 B인 레코드를 조회하라.
- WHERE NOT필드명=A : 필드명의 값이 A가 아닌 레코드를 조회하라.
여러 조건을 줄 경우 괄호를 사용한다.
AS를 이용하여 컬럼명에 '별명' 을 붙여줄 수도 있다. 'nikname' 컬럼을 한글로 '닉네임'이라고 출력하고 싶은데, 원래 db의 컬럼명은 변경하고 싶지 않은 경우 아래와 같이 조회문을 사용한다.
참고한 글 : http://www.tcpschool.com/mysql/mysql_basic_select
'SQL' 카테고리의 다른 글
[MySQL] 1-4. 데이터 조회 - CASE문과 IF문 (0) | 2022.12.23 |
---|---|
[MySQL] 1-3. 데이터 조회 - SELECT 절 옵션 (CONCAT(), TRIM(), RIGHT()...), 서브쿼리, GROUP BY, HAVING (0) | 2022.12.23 |
[MySQL] 1-2. 데이터 조회 - 집계함수(MAX, MIN, AVG, COUNT, SUM...) (0) | 2022.12.23 |
[MySQL] 1-1. 데이터 조회 - WHERE 필드명 LIKE 필드명 = 와일드카드 조건 (1) | 2022.12.23 |
[MySQL] 0. MySQL과 DBeaver 설치 (1) | 2022.12.22 |
댓글