Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 0.0048 sec 1. Query 문으로 Safe Mode 해제하기 SET SQL_SAFE_UPDATES = 0; 세이프 모드 OFF Query 문 SET SQL_SAFE_UPDATES = 1; 세이프 모드 ON 2. WorkBench 상에서 Safe Mode 해제하기 Setting => SQL Editor 혹시 모를 사태에 권장하지 않는 옵션
테이블을 DB에 들어가서 보는 것이 아닌 문서로 빠르게 찾아보기 위해서 정리하기로 했다.하나하나씩 컬럼을 확인해서 적을 수는 없기 때문에 쿼리로 추출을 할 수 있다.나중에 후임을 위해서라도,,? 기본적인 정보를 다 담고 싶었고 쿼리가 길다.. 스키마 전체 테이블 추출SELECT t1.table_name as '테이블명(영문)', t1.table_comment as '테이블명(한글)', t2.column_name as '컬럼명(영문)', t2.column_comment as '컬럼명(한글)', t2.column_type as '데이터 타입', t2.column_key as 'key 타입', t2.extra as '컬럼 옵션', t2.is_nullable as ..
MySQL 기술서적을 보다가 나온 2가지 용어.. 똑같은 게 아닌가 싶어서 간단하게 정리해 본다. 정의 플러그인과 컴포넌트는 서버의 기능을 확장하거나 변경하는 도구이다. 즉, 간단하게 설명하자면 플러그인과 컴포넌트는 모두 "앱 스토어"에서 앱을 설치하는 것과 비슷하다. 특징 플러그인과 컴포넌트의 차이는, 어떤 "앱"이 기기의 전체 시스템에 더 깊게 통합되느냐에 따라 나뉜다. 플러그인은 기기에 추가 기능을 제공하는 앱과 같다. 컴포넌트는 기기의 운영체제 자체를 변경하거나 확장하는 앱과 같다. 결론 필요한 기능이나 변경사항을 제공하면 설치를 고려하면 되는 것이며, 추가로 설치할 수 있는 확장 기능이라고 생각하면 될 듯하다. 플러그인 = 기능적인 확장에 초점 컴포넌트 = 서버의 동작 방식을 변경하거나 확장
'SET PERSIST'와 'SET PERSIST_ONLY'는 MySQL 8.0 이상에서 제공하는 기능으로, 이 두 명령 모두 시스템 변수의 값을 영구적으로 설정하는 데 사용된다. SET PERSIST 예시) SET PERSIST max_connections = 200; SET PERSIST 명령은 지정된 변수의 글로벌 값을 즉시 변경하며, 이 변경된 값은 MySQL 서버 재시작 후에도 유지되게 한다. 이 변경사항은 mysqld-auto.cnf 파일에 기록되므로, 서버가 재시작될 때도 이 변경사항이 적용된다. SET PERSIST_ONLY 예시) SET PERSIST_ONLY max_connections = 200; SET PERSIST_ONLY 명령은 실행 즉시 해당 변수의 글로벌 값을 변경하지 않는다..
BETWEEN 특정 값이 주어진 두 값 사이에 있는지를 확인하는 데 사용 SELECT * FROM products WHERE price BETWEEN 10 AND 20; SELECT * FROM products WHERE price NOT BETWEEN 10 AND 20; IN 지정된 값 목록 중 하나와 일치하는지 확인하는 데 사용 SELECT * FROM users WHERE id IN (1, 3, 5); SELECT * FROM users WHERE id NOT IN (1, 3, 5); LIKE 특정 패턴과 일치하는 값을 찾는 데 사용 SELECT * FROM users WHERE email LIKE '%@gmail.com'; SELECT * FROM users WHERE email NOT LIKE ..
프로시저란? 데이터베이스 관련 작업을 수행하는 일련의 SQL 명령어들을 하나의 단위로 묶은 것 1) 장점 - 코드의 재사용성을 향상한다. - 코드의 복잡성을 낮춘다. 실습해 보기 공통사항 - DELIMITER //는 MySQL에서 프로시저를 생성할 때 사용하는 구문이다. 이는 기본적인 SQL 문장 구분자인 세미콜론(;)이 프로시저 내부에서도 사용되기 때문에, 프로시저의 시작과 끝을 명확히 구분하기 위해 일시적으로 문장 구분자를 //로 사용한다. - CREATE PROCEDURE HelloWorld()는 HelloWorld라는 이름의 새로운 프로시저를 만든다. 괄호 내부에는 매개변수가 들어갈 수도 있다. - BEGIN과 END 사이에 있는 부분에 프로시저가 수행할 SQL 문장들을 넣는다. - DELIMIT..
INNER JOIN 테이블의 교집합 두 테이블 간에 공통된 값을 가진 행만 반환 SELECT Orders.order_id, Customers.customer_name FROM Orders INNER JOIN Customers ON Orders.customer_id = Customers.customer_id; OUTER JOIN 한 테이블의 행이 다른 테이블의 행과 일치하면 그 행을 반환 단, 어떤 행과도 일치하지 않으면 해당 행을 NULL과 함께 반환한다. "LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN"이 있다. 1) LEFT JOIN(=LEFT OUTER JOIN) 첫 번째 테이블의 모든 행과 두 번째 테이블에서 일치하는 행을 반환하며, 일치하는 행이 없는..
sql_safe_updates 대량의 데이터를 수정하거나 삭제하는 것을 방지하기 위해 사용하는 MySQL 설정이다. UPDATE employees SET salary = salary * 1.1; 테이블의 전체 값을 변경하기 때문에 UPDATE 구문이 실행이 되지 않는다. UPDATE employees SET salary = salary * 1.1 WHERE employee_id = 1234; 이 경우에는 특정 WHERE이 있기 때문에 실행이 된다. set sql_safe_updates=0; 비활성화하기 set sql_safe_updates=1; 활성화하기 CHAR_LENGTH 특정 문자열의 길이를 반환하며, 문자열에 포함된 문자 수를 세는 데 사용된다. SELECT CHAR_LENGTH('Hello, W..
예시: 책을 출판한다. 1. 개념적 모델: 업무의 전반적인 요구 사항과 엔티티 간의 관계를 이해하고 정의 책의 아이디어를 고려하는 단계이다. 책의 주제는 무엇인가요? 주요 캐릭터는 누구인가요? 이들은 어떻게 상호작용하는가요? ex) 로맨스 소설을 쓰려고 한다면 주요 캐릭터들과 그들의 관계를 먼저 정의한다. 2. 논리적 모델: 개념적 모델을 바탕으로 논리적 구조를 설계한다. 테이블, 컬럼, 키(기본 키, 외래 키 등), 데이터 타입, 제약 조건 등을 정의하며, 어떤 DBMS를 사용할 것인지는 고려하지 않는다. 이것은 아이디어를 좀 더 구체적으로 만드는 단계이다. 책의 각 장은 어떤 내용을 담고 있을까요? 각 캐릭터는 어떤 역할을 하는가요? 책의 전체적인 구조는 어떻게 되는가요? ex) 각 장의 제목과 내용..
논리적 또는 개념적 데이터 모델(일반적으로 엔티티-관계 모델 또는 ERD 형태로 표현)을 실제 MySQL 데이터베이스 스키마로 변환하는 작업이다. 변환 과정 1. ERD를 바탕으로 SQL 스크립트를 생성한다. 2. 생성된 SQL 스크립트를 검토하고 필요한 경우 수정한다. 3. SQL 스크립트를 실행하여 데이터베이스를 생성한다. 용어 정리 ERD 다이어그램 - 데이터베이스의 구조를 시각적으로 나타낸 다이어그램 SQL 스크립트 - SQL 문 스키마 - 테이블, 뷰, 인덱스, 데이터 타입 등 데이터베이스 객체의 집합