| CRUD
- 소프트웨어가 가지는 기본적인 데이터 처리 기능
- CRUD는 MariaDB/MySQL, ORACLE 모두 동일한 문법을 사용하는 것으로 확인됐다. (아래 코드 비교)
구분 | 의미 | SQL | REST API | WHERE 필수 |
CREATE | 삽입 | INSERT | PUT/POST | X |
READ | 조회 | SELECT | GET | X |
UPDATE | 갱신 | UPDATE | PUT/PATCH | O |
DELETE | 삭제 | DELETE | DELETE | O |
-- CRUD
-- INSERT
INSERT INTO bootcamp_member2
(name, email, mobile_no, password, marketing_yn, register_date)
VALUES
('테스트3', 'test3@gmail.com', '01022223212', '2222', true, now());
-- SELECT : WHERE 선택 (대다수 WHERE 사용)
SELECT *
FROM bootcamp_member2
WHERE marketing_yn = true
AND name = '테스트3';
-- UPDATE : WHERE 필수
UPDATE bootcamp_member2
SET marketing_yn = false
WHERE name = '김길동';
-- DELETE : WHERE 필수
DELETE FROM bootcamp_member2
WHERE email = 'kim123@gmail.com';
1. 데이터 삽입(INSERT)
🐱 단순 데이터 추가
- 아래와 같이 단순 데이터를 추가할 경우, 데이터가 없을 때(NULL) 문제가 발생할 수 있다. - 회원가입을 예로 들었을 때, 어떤 MEMBER의 ID는 유일해야한다. --> 데이터 입력에 대한 제약이 필요 - 여기서 제약 조건이 필요해진다. * 제약조건(Constraint) : 특정 데이터에 대해 거는 제약 |
📡 MariaDB
INSERT INTO 테이블명
(칼럼명, 칼럼명, 칼럼명....)
VALUES
(값, 값, 값...);
-- 예시
INSERT INTO bootcamp_member
(name, email, mobile_no, password, marketing_yn, register_date)
VALUES
('홍길동', 'simDev1234@gmail.com', '01011111111', '1234', true, now());
더보기
📡 Oracle
INSERT INTO MEMBER(ID, PWD) VALUES('NEW LEC','111');
INSERT INTO MEMBER(ID, PWD) VALUES('DRAGON','111');
🌈 인코딩 문제 해결
- 테이블에 Insert를 하려고 보니 아래와 같은 오류가 나타났었다.
Incorrect string value: '\xED\x99\x8D\xEA\xB8\xB8...' for column ~~~~~~~~
- 내용을 쭉 읽어보니까 위 'name' 칼럼의 한글이 깨져서여서(인코딩 문제) 정확한 원인과 해결 방법을 찾았는데
- 원인 : DB의 디폴트 인코딩 방식 (default_character_set_name)이 utf8이 아니여서였다.
select schema_name, default_character_set_name from information_schema.schemata;
+--------------------+----------------------------+
| schema_name | default_character_set_name |
+--------------------+----------------------------+
| information_schema | utf8mb3 |
| mysql | latin1 |
| performance_schema | utf8mb3 |
| sys | utf8mb3 |
| testdb1 | latin1 |
+--------------------+----------------------------+
- 해결 : 아래와 같이 db의 인코딩 방식과, 테이블의 인코딩 방식을 변경하면 된다.
* 한 번 셋팅된 테이블 인코딩 방식은 db 인코딩 방식을 변경해도 유지되므로 꼭 table도 변경해야한다.
alter database 디비명 default character set utf8;
alter table 테이블명 convert to character set utf8;
🐱 제약조건을 통한 INSERT
- 아래에서는 제약조건으로 pk를 예시로 들었다. - 제약조건에 대한 자세한 내용으로는 [더보기]를 참고하면 자세한 내용이 들어있다. |
📡 MariaDB
alter table bootcamp_member2 add constraint primary key pk_bootcamp_member2(email);
2. 데이터 조회(SELECT)
(1) 선택적 조회 : WHERE절을 쓰자 - 일반적으로 회사에서 데이터를 조회할 때는, 전체 조회를 하지 않는다. 데이터 양이 방대하기 때문에 컴퓨터나 너무 느려질 수 있기 때문 - 따라서, WHERE절이 필수는 아니라도 함께 써주는 것이 좋다. (2) and 나 or를 통해 추가적인 조건사항을 걸 수 있다. - 아래의 코드처럼, where절을 통한 조건을 걸 때 and나 or를 통해 추가 조건을 걸 수 있다. |
📡 MariaDB
-- 전체 조회
select *
from 테이블명
;
-- 선택 조회
select
name, email
from 테이블명
;
-- where절 조건
select *
from 테이블명
where 조건
or 조건
;
더보기
📡 Oracle
-- 전체 조회
select *
from 테이블명
;
-- 선택 조회
select
name, kor, eng, mat, prev
from 테이블명
;
3. 데이터 갱신(UPDATE)
(1) WHERE절을 필수로 사용해야 한다. - 그렇지 않은 경우 전체 데이터가 모두 갱신된다. (2) 여러개의 칼럼을 동시에 갱신할 수 있다. |
📡 MariaDB
update 테이블명
set
변경할 칼럼의 데이터
where 조건
;
더보기
📡 Oracle
update 테이블명
set
변경할 칼럼의 데이터
where 조건
4. 데이터 삭제(DELETE)
(1) WHERE절을 필수로 사용해야 한다. - 그렇지 않은 경우 전체 데이터가 모두 삭제된다. (2) 데이터를 삭제할 때는 주의를 요한다. |
📡 MariaDB
delete from 테이블명
where 조건;
더보기
📡 Oracle
delete from scores
where name = '바길동';
delete from scores
where 1 = 1; -- 전체 데이터 삭제
[ 출처 및 참고 ]
- 부트캠프 수업 내용을 들은 후 정리한 내용입니다.
- 과거에 정리했던 내용과 함께 정리
'Language > SQL' 카테고리의 다른 글
데이터 처리 - View, 함수/프로시져, 트리거 (0) | 2022.08.20 |
---|---|
데이터 처리 - ALIAS, JOIN, 내장함수, 페이징 처리 (0) | 2022.08.17 |
테이블 - 데이터 자료형, DDL/툴을 통한 생성 및 삭제 (0) | 2022.08.15 |
데이터베이스 - 데이터베이스 생성 및 권한 부여(DDL) (0) | 2022.08.11 |
데이터베이스 환경 구축(설치) (0) | 2022.08.11 |