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

유동헌·2021년 8월 4일
0

SQL첫걸음

목록 보기
2/2

04강 Hello World 실행하기

1. select * from 테이블명 실행

2. select 명령 구문

select : DML구문에 속하는 명령

명령의 종류 / 모든 열 / from / 테이블명 ; 

SELECT * FROM 테이블명; 

SQL 명령의 경우 select 구와 from 구로 나눌 수 있습니다. select 명령은 여러 개의 구로 구성됨.

3. 예약어와 데이터베이스 객체명

데이터베이스에는 테이블 외에 다양한 데이터를 저장하거나 관리하는 어떤 것을 만들 수 있습니다. 이것을 데이터베이스 객체라 부르는데, 예를 들면 view가 그에 해당함. 데이터베이스 내 데이터베이스 객체는 중복된 이름을 허용하지 않는다.

행(레코드) - 열(컬럼,필드)

수치형 데이터

문자형 데이터

날짜 시간별 데이터

데이터는 자료형으로 분류함.

열은 하나의 자료형만 가질 수 있다

NULL : NULL이라는 데이터가 저장되어 있는 것이 아닌, 아무 것도 저장되어 있지 않은 상태

05강 테이블 구조 참조하기

테이블 구조를 참조하는 법

1. desc 명령

2. 자료형

INTEGER 정수 값을 저장할 수 있는 자료형

CHAR 최대 문자 길이를 설정한 다음 사용 가능 고정 길이 문자열

VARCHAR 가변 길이 문자열

DATA 날짜

TIME 시간

06강 검색 조건 지정하기

1. select 구에서 열 지정하기

열 지정하기

select * from sample21;

select * no, name from sample21;

2. where 구에서 행 지정하기

테이블의 열은 많아야 몇십 개 정도지만 행은 열에 비해 훨씬 많을 수 있다.


syntax

selectfrom 테이블명 where 조건식

구의 순서와 생략 : SQL에서는 구의 순서가 정해져 있어 바꿔적을 수 없음. from 뒤에 where를 표기한다

where 구

조건식은 열과 연산자, 상수로 구성되는 식

mysql> select * from sample21 where no=2;
+------+-----------+----------+------------------------+
| no   | name      | birthday | address                |
+------+-----------+----------+------------------------+
|    2 | 김재진    | NULL     | 대구광역시 동구        |
+------+-----------+----------+------------------------+
1 row in set (0.00 sec)

mysql> select * from sample21 where no<>2;
+------+-----------+------------+---------------------------+
| no   | name      | birthday   | address                   |
+------+-----------+------------+---------------------------+
|    1 | 박준용    | 1976-10-18 | 대구광역시 수성구         |
|    3 | 홍길동    | NULL       | 서울특별시 마포구         |
+------+-----------+------------+---------------------------+
2 rows in set (0.00 sec)

조건식

no=2는 열 값이 2일 경우에 참이 되는 조건. 세 가지 항목으로 나눌 수 있음.

no 열 이름, 두 번째 = 연산자 , = 연산자 기준으로 좌변과 우변의 항목을 비교 서로 같은 값이면 참 같지 않으면 거짓 <> 연산자는 다른 값, 값이 서로 다른 경우 참!

3. 문자형열의 상수

mysql> select * from sample21 where name='박준용';
+------+-----------+------------+---------------------------+
| no   | name      | birthday   | address                   |
+------+-----------+------------+---------------------------+
|    1 | 박준용    | 1976-10-18 | 대구광역시 수성구         |
+------+-----------+------------+---------------------------+
1 row in set (0.01 sec)

4. NULL 값 검색

= 연산자로 NULL 값 검색 불가 → IS NULL

mysql> select * from sample21 where birthday IS NULL;
+------+-----------+----------+---------------------------+
| no   | name      | birthday | address                   |
+------+-----------+----------+---------------------------+
|    2 | 김재진    | NULL     | 대구광역시 동구           |
|    3 | 홍길동    | NULL     | 서울특별시 마포구         |
+------+-----------+----------+---------------------------+
2 rows in set (0.01 sec)

5. 비교연산자

07강 조건 조합하기

1. AND로 조합하기

교집합 나타내기

mysql> select * from sample24 where a <> 0 and b <> 0;
+------+------+------+------+
| no   | a    | b    | c    |
+------+------+------+------+
|    4 |    2 |    2 |    0 |
+------+------+------+------+
1 row in set (0.00 sec)

2. OR로 조합하기

합집합

mysql> select * from sample24 where a <> 0 or b <> 0;
+------+------+------+------+
| no   | a    | b    | c    |
+------+------+------+------+
|    1 |    1 |    0 |    0 |
|    2 |    0 |    1 |    0 |
|    4 |    2 |    2 |    0 |
|    5 |    0 |    2 |    2 |
+------+------+------+------+
4 rows in set (0.00 sec)

3. AND OR 사용할 경우 주의할 점

제대로 열 이름 + 연산자 + 상수로 작성하기

연산자의 우선 순위 : OR 보다 AND 쪽이 우선 순위가 높다

mysql> select * from sample24 where (a=1 or a=2) and (b=1 or b=2);
+------+------+------+------+
| no   | a    | b    | c    |
+------+------+------+------+
|    4 |    2 |    2 |    0 |
+------+------+------+------+
1 row in set (0.00 sec)

4. NOT으로 조합

not 연산자는 오른쪽에만 항목을 지정하는 단항 연산자. 오른쪽에 지정한 조건식의 반대 값을 반환함. 만약 조건식이 참을 반환하면 not은 이에 반하는 거짓을 반환. 주로 복수의 조건식에 대해 ~ 아닌, ~ 외에, ~를 제외한 나머지, 등의 조건을 지정할 경우 사용됨.

mysql> select * from sample24 where not (a<>0 or b<>0);
+------+------+------+------+
| no   | a    | b    | c    |
+------+------+------+------+
|    3 |    0 |    0 |    1 |
+------+------+------+------+
1 row in set (0.00 sec)

08강 패턴 매칭에 의한 검색

1. LIKE로 패턴 매칭하기

like 술어 사용하면 열 값이 부분적으로 일치하는 경우에도 참

이항 연산자처럼 항목을 지정. 왼쪽에는 매칭 대상을 지정하고 오른쪽에는 패턴을 문자열로 지정함. 수치형 상수는 지정할 수 없고, 메타문자를 사용함.

%_

% 임의의 문자열

_ 임의의 문자 하나

' * ' 사용 불가

mysql> select * from sample25 where text like 'SQL%';
+------+---------------------------------------------------+
| no   | text                                              |
+------+---------------------------------------------------+
|    1 | SQL은 RDBMS를 조작하기 위한 언어이다.             |
+------+---------------------------------------------------+
1 row in set (0.00 sec)

mysql> select * from sample25 where text like '%SQL%';
+------+-----------------------------------------------------------------+
| no   | text                                                            |
+------+-----------------------------------------------------------------+
|    1 | SQL은 RDBMS를 조작하기 위한 언어이다.                           |
|    3 | LIKESQL에서 사용할 수 있는 술어 중 하나이다.                 |
+------+-----------------------------------------------------------------+
2 rows in set (0.00 sec)

%는 임의의 문자열과 매치하며, 빈 문자열에도 매치한다

2. like로 % 검색하기

mysql> select * from sample25 where text like '%\%%';
+------+------------------------------------------------------------+
| no   | text                                                       |
+------+------------------------------------------------------------+
|    2 | LIKE에서는 메타문자 %와 _를 사용할 수 있다.                |
+------+------------------------------------------------------------+
1 row in set (0.00 sec)

메타문자로 사용하지 않기

3. 문자열 상수 ' 의 이스케이프

정리

연습문제

  1. 데이터베이스 내 데이터베이스 객체의 이름은 중복이 가능하다.

  2. 테이블의 열 속성 중 INTEGER 자료형은 소수점까지 나타낼 수 있다 ( )

  3. 문자열을 저장하고 싶은데, 어떤 문자열이 들어올지 모른다. 그럼 CHAR와 VARCHAR 중에서 어떤 걸 써야하나?

  4. SQL문의 기본 구조를 나타내어라

  5. NULL 값을 검색하는 법

  6. 연산자의 우선순위, AND가 OR에 우선한다 ( )

  7. 중복된 값을 허용하지 않는다.

  8. X 정수값을 저장하는 자료형이기 때문에 소수점은 나타낼 수 없다.

  9. 가변 길이 문자열 자료형인 VARCHAR를 사용하여야 한다.

  10. select 열 from 테이블명 where 조건

  11. where 열 IS NULL

profile
지뢰찾기 개발자

0개의 댓글