2023.05.10 수업
교육을 들으며 기록한 내용입니다.
잘못된 내용이 있으면 댓글로 알려주시면 감사하겠습니다:)
* 데이터베이스 = 정보그룹 집합
정보 != 데이터
정보 : 일정형식의 양식을 가지고 분류됨, 의미있는 데이터(다른 사람에게 도움이 됨)
데이터 : 주변에 있는 모든 사물
● 테이블 만들기 - 방법 1
* 생성된 bbs에서 테이블(익스플로러)과 컬럼(하단) 만들기 > 저장하면 SQL명령이 나온 창이 뜸
1. 테이블 만들기
- 테이블 오른쪽 마우스 눌러 Create New 테이블 누르기
- 상단의 테이블이름과 테이블 설명 작성하기
2. 컬럼 만들기
- 화면 오른쪽 아래 Create New 칼럼(긴 표 모양) 눌러 원하는 칼럼이름, 길이, 데이터타입, 설정 하기
- VARCHAR는 String이라고 생각하면 되고 BIGINT는 long, INTEGER는 int로 생각하면 됨
- Not null는 비어서 안되는 값이면 체크하기 ex)아이디는 꼭 입력되어야 하므로 체크
- auto increment는 자동증가 기능을 원하면 체크하기 ex) 연번과 같은 숫자가 필요하면 체크

3. 하단의 SAVE 클릭하기 - 명령창 뜨면 persist 누르기
* 명령창 내용
CREATE TABLE PUBLIC."member" (
NUM INTEGER NOT NULL AUTO_INCREMENT, // 번호 자동증가
ID VARCHAR(20) NOT NULL,
PASSWORD VARCHAR(20) NOT NULL
);
COMMENT ON TABLE PUBLIC."member" IS '회원정보';
- persist : 저장해서 파일로 남겨진다(영속성)
-> 지금까지 만든 구조가 저장됨
4. 멤버테이블에서 Data누르고 하단에 +(로우추가) 눌러 회원정보 입력 후 저장

* 데이터베이스는 공백도 입력 가능(공백 사용하지 말 것)
대소문자 구분하지 않음
"" 내가 입력한 그대로 사용하고 싶을때 활용
● 테이블 만들기 - 방법 2 (SQL로 바로 내용 추가하기(상단의 방법은 번거로움))
1. 편집화면 열기
1-1. 익스플로러화면에서 생성한 테이블(member)에 오른쪽 마우스를 눌러 Read Data in SQL edit 누르기
1-2. 익스플로러화면에서 PUBPLIC에 오른쪽 마우스를 눌러 SQL 편집기 > 새 SQL편집기 클릭

2. 데이터입력(INSERT)
형식 : INSERT INTO 테이블명 (데이터컬럼명...) VALUES (데이터 값...);
예시 : INSERT INTO "member" (id, PASSWORD) VALUES ('san', '1234');
-- 데이터 추가하기
/*
* INSERT INTO 테이블명 (데이터컬럼명...) VALUES (데이터 값...);
*/
INSERT INTO "member" (id, PASSWORD) VALUES ('san', '1234');
-- 연습
INSERT INTO "member" (id, PASSWORD) VALUES ('kang', '4567');
INSERT INTO "member" (id, PASSWORD) VALUES ('sun', '0000');
INSERT INTO "member" (id, PASSWORD) VALUES ('bada', '1111');

실행 결과
- 명령문 블럭잡고 +붙은 실행버튼(주황버튼) 눌러 하나씩 실행하면 데이터가 입력 됨
3. 데이터검색(SELECT)
형식 : SELECT 보여줄 컬럼명, ... FROM 테이블명 WHERE 조건식;
예시 : SELECT * FROM "member" m ;
-- 데이터 검색하기
/* SELECT 보여줄 컬럼명, ... FROM 테이블명 WHERE 조건식;
1. 전체 레코드 전체 컬럼보기( * : 전체컬럼)
테이블에 별명적용하기 : 테이블 이름에 별명을 주어 쉽게 사용하게 한다.
구조1 : 테이블명 AS 별명 OR
구조2 : 테이블명 별명 "member"의 별명은 m
*/
SELECT * FROM "member" m;
* 전체 레코드 전체 컬럼보기( * : 전체컬럼)
* 테이블에 별명적용하기 : 테이블 이름에 별명을 주어 쉽게 사용하게 한다.
-구조1 : 테이블명 AS 별명 OR
-구조2 : 테이블명 별명 / "member" m -> m이 별명

실행 결과
3-1. 내가 원하는 컬럼만 검색하기
형식 : SELECT 컬럼명... FROM 테이블명;
SELECT ID, PASSWORD FROM "member" m;

실행 결과
※ 데이터베이스 주석의 종류
-- 단일주석
/* 멀티주석 */
/* #(샾) 단일주석 (db마다 호환성이 있음) */
* 명령문 블럭잡고 +붙은 실행버튼(주황화살표) 누르면 해당 명령만 적용되어 보임
* DROP TABLE PUBLIC."member"; // 멤버테이블을 삭제하라
* Refresh(f5) - 새로고침
* sql 명령어 구조 자동완성 - 복사하여 활용

데이터베이스 입문
* 영문방식은 명령어 목적어순
* 데이터베이스 표기법
- 대소문자를 가리지 않아서 스네이크표기법(_)을 활용
● 데이터베이스 창이 안보인다면
- 상단탭의 Window > Sho view > other > 데이터 검색하여 네비게이터 추가(오픈)

● 대소문자 구별하지 않게 설정하기
1. 콘센트 눌러 (삼각형 누르면 새 데이터베이스연결) > all > h2 검색하여 H2 Embedded 설치

2. 저장경로에서 sns 파일 생성
- C:\app\database\h2\sns
3. url 체크(변경)
- jdbc:h2:C:\app\database\h2\sns 로 변경 됨
4. url에 옵션 추가

1) 저장경로
2) 모드변경 : h2를 mysql 형식으로 사용하겠다
3) 데이터베이스 명령어를 전부 대문자로 이용하겠다(끄기)
4) 딜레이 -1 : 강제중지 하지않겠다
5) case_대소문자 구분하지않다_식별자 = true (끄기)

완료!
● SQL 문법 연습
◎ 데이터 입력하기
CREATE TABLE member ( -- 테이블을 만들겠다
id bigint, -- long과 유사(8바이트의 정수) / int : 4바이트
name varchar(10), -- String과 유사
primary key(id) -- 중복을 허용하지 않음
);
INSERT INTO member (id, name) -- 데이터 입력
values (5, '황정민');
SELECT * FROM member; -- 데이터 출력(모든 내용 보이기)
* primary key = 중복을 허용하지 않는다
- 유일함, 값이 항상 있어야함
◎ 이름바꾸기 (UPDATE)
UPDATE 테이블_이름
SET 속성_이름1 = 값1, 속성_이름2 = 값2, · · ·
[WHERE 조건];
※ 업데이트 주의사항(오류) - where절의 중요성
1. UPDATE member SET id = ' ', name = ' ';

경고문구가 뜸
* 경고를 무시하고 진행하면 오류가 뜸
- 오류메세지
SQL Error [22018] [22018]: Data conversion error converting "'' (member: ""id"" BIGINT NOT NULL)"; SQL statement:
UPDATE member SET id = '', name = '' [22018-199]
-> id는 유일성을 가져야하는 primary key인데 중복으로 값이 들어가서 오류가 남
-> id는 정수를 입력해야하는데 문자열을 입력한 것에 대한 오류는 나지 않았다 - ' '를 0으로 인식함 (SQL에서는 허용이 되기도 함)
* 실행하고 SELECT로 테이블 보기
- SELECT * FROM member;
-> 테이블 값이 그대로임 : 트랜잭션(오류 때문에 지금까지의 작업을 인정하지 않음- 자동 rollback)
2. UPDATE member SET name = '';
SELECT * FROM member;
- id (primary key)를 지우니 실행이 됨
-> 데이터가 삭제 됨
* where절이 없어서 모든 데이터가 공백이 됨
◎ 삭제하기 (DELETE)
DELETE
FROM 테이블_이름
[WHERE 조건];
1. DELETE FROM MEMBER where id == 3;
- 오류메세지
SQL Error [42001] [42001]: Syntax error in SQL statement "DELETE FROM where[*] MEMBER id == 3"; expected "identifier"; SQL statement:
DELETE FROM where MEMBER id == 3 [42001-199]
-> sql은 = 이 같다는 연산자임
DELETE FROM MEMBER where id = 3; 이 올바른 명령어
'백엔드 > 데이터베이스' 카테고리의 다른 글
데이터베이스 - 테이블 만들기 (0) | 2023.05.18 |
---|---|
데이터베이스 - 기본명령어 (0) | 2023.05.16 |
데이터베이스 - 명령어 (0) | 2023.05.15 |
데이터베이스 - 테이블 만들기 (0) | 2023.05.14 |
데이터베이스 설치 (0) | 2023.05.14 |