개발새발 블로그
[SQL 첫걸음] 1,2장 - 테이블에서 데이터 검색 본문
- database(db) 를 효율적으로 관리하는 소프트웨어를 DBMS 라고 부름.
-dbms는 데이터 검색, 추가, 삭제, 갱신 등 기본 기능을 제공해준다.
-> 이 dbms 중 RDBMS(관계형 데이터베이스 관리 시스템) 을 조작할 때 SQL 사용.
1. mysql 명령 실행
mysql -uroot -p
명령어를 입력한 후 설정시 입력해주었던 비밀번호를 입력해준다.
2. 데이터베이스 선택하기
- 현재 모든 db 보여주기
show databases;
- db 사용하기
USE db명;
현재 이렇게 sample_db 안에 여러개의 테이블이 들어있으므로, 이 테이블을 사용하기 위해 사용할 db를 지정해준다.
- 테이블 보여주기
SELECT * FROM 테이블명;
- SELECT: 명령어의 종류(예약어)
- * : 모든 열
3. 테이블 구조 참조하기
DESC 테이블명;
SELECT * FROM 와는 다르게 열들의 자료형과 키값 등을 보여준다.
<자료형>
- INTEGER 형
- CHAR 형 : 언제나 고정된 길이로 데이터 저장. 빈 여백은 공백문자로 채워둠.
- VARCHAR 형 : 최대길이를 지정한다는 점은 CHAR과 동일하지만, 데이터 크기에 맞춰서 저장공간의 크기 변경.
- DATE 형
- TIME 형
4. 검색 조건 지정하기
열을 선택할 때는 SELECT, 행을 선택할 때는 WHERE 사용.
- 열 지정하기
SELECT 원하는열 FROM 테이블명;
- 행 지정하기
SELECT 원하는열 FROM 테이블명 WHERE 조건식;
<연산자>
= 연산자는 같은 경우
<> 연산자는 적어준것 빼고 전부 다 보여준다.
날짜형 : '2023-09-23' (중간에 -)
시간형 : '10:21:00' (중간에 :)
NULL 값인걸 검색하기 위해서 name = null; 이 아닌 name IS NULL;
=, <>, >, <, >=, <= 비교 연산자는 동일하게 사용하고,
논리연산자로 AND, OR, NOT 을 사용한다.
a=1 OR a=2 AND b=1 OR b=2;
라는 조건식이 있으면, AND가 OR에 비해 우선 순위가 높으므로!!!
a=2 AND b=1 이걸 먼저 계산 후에 나머지 OR 계산을 한다.
그러므로 괄호 중요!
5. 패턴 매칭에 의한 검색
LIKE 를 사용하면 문자열의 >일부분<을 비교하는 부분검색을 할 수 있다.
열 LIKE 패턴
= 연산자와는 달리 특정 문자를 포함하고 있는지를 파악할 수 있다.
no | text |
1 | SQL은 RDBMS를 조작하는 언어이다. |
2 | LIKE에서는 메타문자 %와 _를 사용할 수 있다. |
3 | LIKE는 SQL에서 사용할 수 있는 술어이다. |
이런 table 이 있다고 생각하고,
%은 메타문자로, 빈문자열을 의미한다.
SELECT * FROM sample_db WHERE text LIKE 'SQL%';
no | text |
1 | SQL은 RDBMS를 조작하는 언어이다. |
no 3에도 SQL이 들어가있지만 결과값으로 나오지 않는 이유는,
이 경우는 SQL%이므로 앞에는 공백이 없어야 하는것이므로 추출되지 않는다.
문자열 앞쪽과 일치하므로 전방일치 라고 부른다.
SELECT * FROM sample_db WHERE text LIKE '%SQL%';
no | text |
1 | SQL은 RDBMS를 조작하는 언어이다. |
3 | LIKE는 SQL에서 사용할 수 있는 술어이다. |
반면 %SQL%는 앞뒤에 모두 공백이 있어도 괜찮으므로, 중간일치라고 부른다.
'SQL%', 즉 후방일치로 검색을 하게 되면 아무런 결과값도 얻을 수 없을 것이다.
그런데 만약 %가 들어있는지 확인하고 싶다면 어떻게 해야할까?
SELECT * FROM sample_db WHERE text LIKE '%\%%';
%앞에 \를 붙여주면 된다.
% \% % 이렇게 쓰면 중간일치로 %를 찾는 방법이다.
+) My SQL 사용해서 db생성하기
- PK : primary key 라는 뜻으로, 열들을 구분하는 가장 대표값이다.
- NN : not null 라는 뜻으로, 비어있을 수 없이 반드시 하나의 값을 가져야 한다.
'백 > SQL' 카테고리의 다른 글
[SQL 첫걸음] 3장 - 연산 (1) | 2023.10.01 |
---|---|
[SQL 첫걸음] 3장 - 정렬 (0) | 2023.09.30 |