일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 다대다
- shared lock
- 즉시로딩
- CHECK OPTION
- 유니크제약조건
- querydsl
- FetchType
- 비관적락
- 이진탐색
- SQL프로그래밍
- dfs
- 다대일
- 동적sql
- 지연로딩
- fetch
- JPQL
- 스프링 폼
- 연관관계
- 연결리스트
- BOJ
- 백트래킹
- execute
- 스토어드 프로시저
- eager
- 힙
- exclusive lock
- 낙관적락
- PS
- 일대다
- 데코레이터
- Today
- Total
목록SQL (23)
흰 스타렉스에서 내가 내리지
MySQL (맥에서 MySQL 서버 실행하기) 설치 brew mysql 실행 mysql.server start MySQL을 데몬으로 실행 brew services start mysql 운영체제의 백그라운드로 MySQL이 계혹 실행되게 하고 싶을 때, HomeBrew가 제공하는 명령을 이용하면 된다. → 데몬 실행 데몬 프로세스 (daemon process) 서비스 요청에 응답하기 위해 오랫동안 실행중인 백그라운드 프로세스. 운영체제에서 보통 d로 끝나는 프로세스들이 대표적인데, httpd, sshd, named, lpd 등이 있다. 재시작 brew services restart mysql 데몬으로 실행되고 있는 프로그램들 보기 brew services list MySQL 프로세스가 운영체제에 실행되고 있..
PK : Primary key, 중복이나 빈값(NULL)이 들어올 수 없음 NN : Not Null UQ : Unique, 중복 값을 넣을 수 없음 B : Binary, 데이터를 이진 문자열로 저장함 (ex 이미지 파일) UN : Unsigned ZF : Zero Filled, 크기보다 작은 값을 넣었을 경우 0으로 채운 뒤 삽입시킴 AI : Auto Increment, Insert 시마다 값 1씩 늘어남 G - 다른 열을 기반으로 한 수식으로 생성된 값 Default/Expression - 기본값, 기본값에 수식 설정
naver_db 라는 이름의 database 생성 CREATE DATABASE naver_db; member 테이블 생성 USE naver_db; DROP TABLE IF EXISTS member; CREATE TABLE member ( mem_idCHAR(8) NOT NULL PRIMARY KEY, mem_nameVARCHAR(10) NOT NULL, mem_numberTINYINT NOT NULL, addrCHAR(2) NOT NULL, phone1CHAR(3) NULL, phone2CHAR(8) NULL, heightTINYINT UNSIGNED NULL, debut_date DATE NULL ); buy 테이블 생성 DROP TABLE IF EXISTS buy; CREATE TABLE buy ( ..
동적SQL : 미리 SQL을 준비한 후에 나중에 실행하는 것. PREPARE : SQL 문을 실행하지는 않고 미리 준비만 해놓는다. EXECUTE : 준비한 SQL 문을 실행한다. DEALLOCATE PREPARE : 준비한 SQL문을 해제한다. 예제 동적 SQL의 활용 PREPARE 문에서는 ?로 입력될 값을 비워 놓고, 나중에 USING으로 값을 전달할 수 있다. 예제
Stored Procedure DELIMITER $$ CREATE PROCEDURE 프로시저_이름() BEGIN -- 이 부분에 SQL 프로그래밍 코딩 END $$ -- stored procedure 종료 DELIMITER ; -- 종료 문자를 다시 세미콜론으로 변경 CALL 프로시저_이름(); -- stored procedure 실행 DELIMITER $$ : 세미콜론(;)으로는 SQL의 끝인지, stored procedure의 끝인지 구별할 수 없어서 $$를 사용한다. IF 문 IF THEN ... END IF; 사용 예시 DROP PROCEDURE IF EXISTS ifProc1; DELIMITER $$ CREATE PROCEDURE ifProc1() BEGIN IF (100 = 100) THEN ..
조인 (join)이란 두개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다. 일대다 관계의 이해 두 테이블의 조인을 위해서는 기본 키 - 외래 키 관계로 맺어져야 하고, 이를 '일대다 관계'라고 부른다. 두 테이블의 조인을 위해서는 테이블이 일대다 (one to many) 관계로 연결되어야 한다. 일대다 관계란 한쪽 테이블에는 하나의 값만 존재해야 하지만, 연결된 다른 테이블에는 여러 개의 값이 존재할 수 있는 관계를 말한다. 예를 들어, 회원테이블의 아이디는 기본 키(Primary Key)이고, 구매 테이블의 아이디는 외래 키(Foreign Key)이다. 내부 조인 일반적으로 조인이라고 부르는 것은 내부 조인(inner join)으로, 가장 많이 사용된다. SELECT FROM INNER..
정수형 데이터 형식 바이트 수 숫자 범위 TINYINT 1 -128 ~ 127 SMALLINT 2 -32,768 ~ 32,767 INT 4 약 -21억 ~ +21억 BIGINT 8 약 -900경 ~ +900경 0부터 시작되는 UNSIGNED 예약어를 사용할 수 있다. TINYINT UNSIGNED 를 사용하면 0~255의 숫자 범위를 사용할 수 있다. 그러면 사람의 키를 저장하기 좋은 숫자범위가 되겠다. 마찬가지로 SMALLINT UNSIGNED는 0부터 65535까지 저장된다. 문자형 데이터 형식 바이트 수 CHAR (개수) 1 ~ 255 VARCHAR (개수) 1 ~ 16383 CHAR는 고정길이 문자형이다. 즉, 자릿수가 고정되어 있다. 예를 들어, CHAR(10)에 '가나다' 3글자만 저장해도 1..
INSERT INSERT INTO 테이블 [(열1, 열2, ...)] VALUES (값1, 값2, ...) 테이블 이름 다음에 나오는 열은 생략 가능하다. 열 이름을 생략할 경우에 VALUES 다음에 나오는 값들의 순서 및 개수는 테이블을 정의할 때의 열 순서 및 개수와 동일해야 한다. toy_id와 toy_name만 입력하고 age는 입력하고 싶지 않다면 다음과 같이 테이블 이름 뒤에 입력할 열의 이름을 써줘야 한다. 이 경우 생략한 age 열에는 아무것도 없다는 의미의 NULL 값이 들어간다. AUTO_INCREMENT AUTO_INCREMENT 는 열을 정의할 때 1부터 증가하는 값을 입력해준다. INSERT에서는 해당 열이 없다고 생각하고 입력하면 된다. 단, 주의할 점은 AUTO_INCREMEN..
SELECT 문에서는, 결과의 정렬을 위한 ORDER BY, 결과의 개수를 제한하는 LIMIT, 중복된 데이터를 제거하는 DISTINCT 등을 사용할 수 있다. GROUP BY는 지정한 열의 데이터들을 같은 데이터끼리는 묶어서 결과를 추출하고, HAVING 절을 통해 조건식을 추가할 수 있다. ORDER BY SELECT 열_이름 FROM 테이블_이름 WHERE 조건식 GROUP BY 열_이름 HAVING 조건식 ORDER 열_이름 LIMIT 숫자 ORDER BY 는 결과의 값이나 개수에 대해서는 영향을 미치지 않지만, 결과가 출력되는 순서를 조절한다. debut_date가 늦은 순서대로 정렬하려면, 제일 뒤에 DESC라고 붙여주면 된다. 기본값은 ASC이다. 정렬 기준은 1개 열이 아니라 여러 개 열로..
USE USE 데이터베이스_이름; '지금부터 이 DB를 사용하겠으니 모든 쿼리는 이 DB에서 실행하라' 앞으로 모든 SQL 문은 '데이터베이스_이름' 에 해당하는 데이터베이스에서 수행된다. SELECT SELECT select_expr [FROM table_references] [WHERE where_condition] [GROUP BY {col_name | expr | position}] [HAVING where_condition] [ORDER BY {col_name | expr | position}] [LIMIT {[offset,] row_count | row_count OFFSET offset}] -- 대괄호로 묶인 부분은 생략이 가능하다. * SELECT, FROM 원래 테이블의 전체 이름은 데이..