웅진X유데미 STARTERS/TIL (Today I Learned)

[스타터스 TIL] 8일차.SQL을 통한 데이터활용과 분석 (1) - DDL, DML, WHERE절

라밍쏭 2023. 2. 16. 09:36
728x90


1. 새롭게 알게된 내용

1.1 SQL 명령어

DML
(Data Manipulation Language)
- 데이터 조작어로 검색 및 수정 기능 제공
- SELECT, INSERT, UPDATE, DELETE, MERGE
DDL
(Data Definition Language)
- 데이터 구조를 생성, 변경, 삭제 등의 기능을 제공
- CREATE, ALTER, DROP, RENAME
DCL
(Data Control Language)
- 데이터에 대한 권한 관리 및 트랜잭션 제어
- GRANT, REVOKE

 

1.2 SHOW 명령어

-- 환경변수 확인
SHOW VARIABLES;

-- char로 시작하는 환경변수 확인
SHOW VARIABLES LIKE 'char_%';

-- 데이터베이스 확인
SHOW DATABASES;

-- 테이블 확인
SHOW TABLES;

 

1.3 safe mode 설정

update, delete 명령을 사용했을 때, 조건을 걸어주지 않으면 에러가 발생하고 실행되지 않는다. (모든 데이터가 수정, 제거되는 것을 방지하기 위함)

Error Code: 1175. You are using safe update mode you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect.

만일 모든 데이터를 수정, 제거를 하고 싶다면 아래의 쿼리를 실행하면 된다.

-- safe mode 해제
SET SQL_SAFE_UPDATES = 0;

 

또는 아예 workbench 자체에서 safe mode를 해제하고 싶다면, 설정에서 변경해줄 수 있다.

Edit > Preferences 

 

 

1.4 WHERE 조건의 LIKE절

✅ 연산 기호 ('와일드카드' 문자열)

 

SELECT *
FROM customer;

 

-- 문자열에 '-'가 들어있는 데이터 출력

SELECT *
FROM customer
WHERE phone LIKE '%-%';

 

-- 0~9로 시작하는 문자열 데이터 출력

SELECT *
FROM customer
WHERE phone LIKE '[0-9]%';

❓ 왜 어떤 데이터도 출력이 되지 않는 걸까...(질문하기)

 

▶ [답변]

와일드카드 문자열 사용이 불가함. 그래서 정규표현식을 활용해야함. 

SELECT *
FROM customer
WHERE phone regexp('^[0-9]+');

 

 

[MY SQL] 정규식 (REGEXP)

REGEXP ?? REGEXP는 LIKE를 이용한 검색과 달리 Regular Expression(정규 표현식)를 이용해 검색한다. REGEXP를 사용하면 SQL에서 정규표현식을 활용하여 기본 연산자보다 복잡한 문자열 조건을 걸어 데이터를

dadev.tistory.com

 

1.5 외부 테이블과 관계 맺기 (FOREIGN KEY)

- 테이블에 있는 특정 컬럼을 다른 테이블의 PRIMARY KEY와 관계를 맺으려면 FOREIGN KEY를 활용하면 된다.

- 관계를 맺은 외부 테이블의 특정 컬럼의 데이터가 변경이 되면 연결된 테이블의 데이터도 같이 변경이 된다.

-- 외부 테이블과 관계를 맺음 (FOREIGN KEY 활용)
-- 관계를 맺은 외부 테이블의 특정 컬럼의 데이터가 변경이 되면, Orders의 데이터도 변경이 됨

CREATE TABLE Orders (
  orderid INTEGER PRIMARY KEY,
  custid  INTEGER ,
  bookid  INTEGER ,
  saleprice INTEGER ,
  orderdate DATE,
  FOREIGN KEY (custid) REFERENCES Customer(custid), -- customer 테이블의 custid와 관계 맺기
  FOREIGN KEY (bookid) REFERENCES Book(bookid)      -- Book 테이블의 bookid와 관계 맺기  
);

 

 

2. 회고

SQL으로 코딩 테스트 문제도 풀고 여러 프로젝트를 진행해서 그런가 대부분 아는 내용이었다.

그 중에서도 조금 헷갈리는 내용을 간단히 정리해보았다. 이 중에서 '와일드카드' 문자열, 정규식에 대해서는 잘 모르는데, 배운대로 실행하려니 되지 않아서 내일 멘토링 시간에 물어볼 예정이다.

728x90