select : DML구문에 속하는 명령
명령의 종류 / 모든 열 / from / 테이블명 ;
SELECT * FROM 테이블명;
SQL 명령의 경우 select 구와 from 구로 나눌 수 있습니다. select 명령은 여러 개의 구로 구성됨.
데이터베이스에는 테이블 외에 다양한 데이터를 저장하거나 관리하는 어떤 것을 만들 수 있습니다. 이것을 데이터베이스 객체라 부르는데, 예를 들면 view가 그에 해당함. 데이터베이스 내 데이터베이스 객체는 중복된 이름을 허용하지 않는다.
행(레코드) - 열(컬럼,필드)
수치형 데이터
문자형 데이터
날짜 시간별 데이터
데이터는 자료형으로 분류함.
열은 하나의 자료형만 가질 수 있다
NULL : NULL이라는 데이터가 저장되어 있는 것이 아닌, 아무 것도 저장되어 있지 않은 상태
테이블 구조를 참조하는 법
INTEGER 정수 값을 저장할 수 있는 자료형
CHAR 최대 문자 길이를 설정한 다음 사용 가능 고정 길이 문자열
VARCHAR 가변 길이 문자열
DATA 날짜
TIME 시간
열 지정하기
select * from sample21;
select * no, name from sample21;
테이블의 열은 많아야 몇십 개 정도지만 행은 열에 비해 훨씬 많을 수 있다.
syntax
select 열 from 테이블명 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 열 이름, 두 번째 = 연산자 , = 연산자 기준으로 좌변과 우변의 항목을 비교 서로 같은 값이면 참 같지 않으면 거짓 <> 연산자는 다른 값, 값이 서로 다른 경우 참!
mysql> select * from sample21 where name='박준용';
+------+-----------+------------+---------------------------+
| no | name | birthday | address |
+------+-----------+------------+---------------------------+
| 1 | 박준용 | 1976-10-18 | 대구광역시 수성구 |
+------+-----------+------------+---------------------------+
1 row in set (0.01 sec)
= 연산자로 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)
교집합 나타내기
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)
합집합
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)
제대로 열 이름 + 연산자 + 상수로 작성하기
연산자의 우선 순위 : 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)
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)
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 | LIKE는 SQL에서 사용할 수 있는 술어 중 하나이다. |
+------+-----------------------------------------------------------------+
2 rows in set (0.00 sec)
%는 임의의 문자열과 매치하며, 빈 문자열에도 매치한다
mysql> select * from sample25 where text like '%\%%';
+------+------------------------------------------------------------+
| no | text |
+------+------------------------------------------------------------+
| 2 | LIKE에서는 메타문자 %와 _를 사용할 수 있다. |
+------+------------------------------------------------------------+
1 row in set (0.00 sec)
메타문자로 사용하지 않기
데이터베이스 내 데이터베이스 객체의 이름은 중복이 가능하다.
테이블의 열 속성 중 INTEGER 자료형은 소수점까지 나타낼 수 있다 ( )
문자열을 저장하고 싶은데, 어떤 문자열이 들어올지 모른다. 그럼 CHAR와 VARCHAR 중에서 어떤 걸 써야하나?
SQL문의 기본 구조를 나타내어라
NULL 값을 검색하는 법
연산자의 우선순위, AND가 OR에 우선한다 ( )
중복된 값을 허용하지 않는다.
X 정수값을 저장하는 자료형이기 때문에 소수점은 나타낼 수 없다.
가변 길이 문자열 자료형인 VARCHAR를 사용하여야 한다.
select 열 from 테이블명 where 조건
where 열 IS NULL