728x90
반응형

DB/MySQL 18

[MySQL] ERROR 1231 "NO_AUTO_CREATE_USER" 해결

MySQL이나 MariaDB에서 dump파일을 restore 할 때 버전이 높거나 맞지 않는 경우 해당 오류가 발생하는 것 같다. Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'" dump를 한 파일은 MySQL 5.6 이었고 restore 하려고 하는 version은 MySQL 8.0과 MariaDB 10.6이었다. 우선 새로운 Version에는 'NO_AUTO_CREATE_USER" 옵션이 없다. 에디터로 해당 덤프 파일을 열어서 "NO_AUTO_CREATE_USER"를 삭제한다. (에디터의 모두 변경을 이용하면 편리하다.) 삭제 후에는 다음과 같은 에러가 발생했다. ERROR 1418 (HY000) : This funct..

DB/MySQL 2022.06.13

[MySQL] SELECT 결과 INSERT 하기

TABLE 과 TABLE 사이에 레코드를 복사를 할 때 하나하나 SQL문을 작성하는 것은 비효율적이다. 이럴 경우 사용하는 것이 INSERT ... SELECT 다. INSERT INTO 대상테이블 SELECT * FROM 소스테이블 INSERT INTO 대상테이블 (컬럼1, ....., 컬럼n) SELECT 컬럼1, ... , 컬럼n FROM 소스테이블 일반 예제 INSERT dropusertbl (userID, userName) SELECT userID, userName FROM usertbl INSERT dropusertbl (userID, userName) SELECT userID, userName FROM usertbl ORDER BY userID 레코드 합성 예제 INSERT INTO drop..

DB/MySQL 2021.09.02

[MySQL] 외래키(FOREIGN KEY) 지정

MySQL 외래 키(FOREIGN KEY) 지정 시 UPDATE/DELETE 옵션 지정 방법 RESTRICT 개체를 변경/삭제할 때 다른 개체가 참조하고 있을 경우 변경/삭제가 취소됨. CASCADE 개체를 변경/삭제할 때 다른 개체가 참조하고 있을 경우 함께 변경/삭제 됨. NO ACTION MySQL에서는 RESTRICT와 동일 SET NULL 개체를 변경/삭제할 때 다른 개체가 참조하고 있을 경우 참조하고 있는 값을 NULL로 설정 됨. 실제 외래키 설정 예) -- CREATE MACHINE DOMAIN TABLE DROP TABLE IF EXISTS `equipmenttbl`; CREATE TABLE `equipmenttbl` ( equipID VARCHAR(8) NOT NULL, mcdomain..

DB/MySQL 2021.08.30

[MySQL] LIKE 구문

Query문의 WHERE을 사용하여 제약을 만들 때 부분적 일치를 확인하는 구문이다. -- A로 시작하는 이름을 가진 레코드 SELECT '컬럼명' FROM '테이블명' WHERE '컬럼명' LIKE 'A&' -- A로 끝나는 이름을 가진 레코드 SELECT '컬럼명' FROM '테이블명' WHERE '컬럼명' LIKE '&A' -- A를 포함하는이름을 가진 레코드 SELECT '컬럼명' FROM '테이블명' WHERE '컬럼명' LIKE '&A&' -- A로 시작하는 이름을 가진 두 글자 레코드 SELECT '컬럼명' FROM '테이블명' WHERE '컬럼명' LIKE 'A_' -- A로 시작하는 이름을 가진 세 글자 레코드 SELECT '컬럼명' FROM '테이블명' WHERE '컬럼명' LIKE '..

DB/MySQL 2021.06.04

[MySQL] SHOW TABLES 테이블 정보 확인

데이터베이스에 생성된 테이블 정보를 확인하는 명령은 'SHOW TABLES'가 있다. MariaDB [stsodb]> SHOW TABLES; +---------------------+ | Tables_in_stsodb | +---------------------+ | machcomptbl | | machsubcomptbl | | v_machcompDomain | | v_machsubcompDomain | | v_submachDomain | +---------------------+ 14 rows in set (0.000 sec) 다른 방법으로는 information_schema를 사용할 수 있는데 엄청난 정보들이 나와서 추천하지는 않는다. SELECT TABLE_NAME FROM information_s..

DB/MySQL 2021.05.25

[MySQL] REPLACE 문자열 일괄 변경

PRIMARY KEY를 복수개를 사용할 경우, 외래키를 사용하는 것이 쉽지 않다. 그럴 경우에는 데이터의 무결성을 지켜기 위해서 CASCADE를 직접 구현해야 할 때가 있다. 그 중에서 UPDATE의 경우에 'REPLACE'라는 명령어를 사용하면 쉽게 구현할 수 있다. Column에서 특정 문자를 변경해서 표시할 경우 SELECT REPLACE(필드명, TARGET, NEW) FROM 테이블명; Column의 특정 문자를 변경해서 업데이트 할 경우 UPDATE 테이블명 SET 필드명 = REPLACE(필드명, TARGET, NEW); 상기와 같은 명령을 실행하게 되면 테이블에서 TARGET 데이터가 NEW 데이터로 일괄 변경되어 버린다. 이 때 특정 조건을 이용하여 변경될 데이터를 제약할 수 있다. UP..

DB/MySQL 2021.05.03

[MySQL] LEAVE , 프로시저 중에 중단하기

프로시저를 진행 중에 조건을 만족하지 않을 경우 실행을 중단하고 싶은 경우가 있다. 프로시저는 함수처럼 RETURN이 없어서 IF ~ END IF로 조건문으로 감싸서 해결하였는데 LEAVE를 사용하면 쉽게 해결할 수 있다. 프로시저를 시작하는 BEGIN 앞에 BLOCK의 이름을 넣어주면 LEAVE [BLOCK이름]을 사용하여 종료할 수 있다. DELIMITER $$ CREATE PROCEDURE SP_insert_block( IN mcdomain VARCHAR(13), IN seqblkID VARCHAR(256) ) PROC_BODY : BEGIN -- BLOCK NAME 설정 DECLARE sqlmcdomain VARCHAR(13); IF NOT CHAR_LENGTH(mcdomain) = 13 THEN..

DB/MySQL 2021.04.27

[MySQL] REGEXP_REPLACE 한글, 영문, 특수문자, 숫자 제거

REGEXP_REPLACE는 MySQL 8.0 이상부터 사용 가능하다. 정규식을 통해 한글, 영문, 특수문자, 숫자를 제거하는 방법은 아래와 같다. SELECT REGEXP_REPLACE(대상 문자열, 대상 문자열, 변경 문자열) AS 닉네임; -- 한글제거 SELECT REGEXP_REPLACE('abcd(1234)가나다라', '[가-힣]', '') AS nickname; -- 숫자제거 SELECT REGEXP_REPLACE('abcd(1234)가나다라', '[0-9]', '') AS nickname; -- 영문제거 SELECT REGEXP_REPLACE('abcd(1234)가나다라', '[a-z]', '') AS nickname; -- 특수문자제거 (특정문자) SELECT REGEXP_REPLACE(..

DB/MySQL 2021.04.27

[MySQL] CHECK문을 이용한 제약 조건 설정

CHECK 제약 조건 COLUMN에 들어갈 수 있는 값을 제한 부호, 숫자 비교, 문자 비교 등을 비교할 수 있다. 입력되는 값이 CHECK 조건과 맞지 않으면 에러가 발생한다. -- 출생년도가 1900년 이후, 2023년 이전으로 제한 -- 이름은 반드시 기입해야 한다. CREATE TABLE userTBL ( userID CHAR(8) PRIMARY KEY, name VARCHAR(10), birthYear INT CHECK (birthYear >= 1900 AND birthYear

DB/MySQL 2021.04.23

[MySQL] Cursor

MySQL은 Stored Procedure의 내부에 Cursor를 사용할 수 있다. Cursor는 일반 프로그래밍 언어의 파일 처리와 방법이 비슷하기 때문에 행의 집합을 다루기에 편리한 기능을 많이 제공해 준다. 1. Cursor의 처리 순서 Curosr는 일반적으로 아래와 같은 순서를 통해서 처리된다. Cursor를 하나씩 이해하기보다는 우선 간단한 예제로 Cursor의 동작을 이해하는 것이 빠르다. DELIMITER $$ CREATE PROCEDURE SP_check_integrity_submach() BEGIN DECLARE endOfRow BOOLEAN DEFAULT FALSE; -- 행의 끝 여부 (Default : FALSE) -- CURSOR에 사용할 변수 DECLARE sqlmachID V..

DB/MySQL 2021.04.20

[MySQL] 중복 제거문 DISTINCT, GROUP BY

SELECT 문을 실행하다 보면 여러 개의 같은 데이터를 반환하게 된다. 이때 중복된 데이터를 제거하고 싶다면 DISTINCT나 GROUP BY를 사용하면 된다. 예를 들어 아래와 같은 TABLE이 있다고 가정하자. machID가 01인 Machine을 불러오는 Query를 작성해 보자. SELECT FIELD명 FROM TABLE명 WHERE machID='01'; Query를 전송하면 다음과 같은 결과를 나타나는데, 이때 '01'이라는 값이 중복되어 호출된다. 이러한 중복을 제거하기 위해서 사용하는 SQL 명령어가 DISTINCT, GROUP BY이다. e.g) DISTINCT문 SELECT DISTINCT FIELD명 FROM TABLE명 WHERE machID='01'; e.g) GROUP BY문..

DB/MySQL 2021.04.20

[MySQL] Stored Procedure, Function

1. Stored Procedure Stored Procedure란 MySQL에서 제공되는 프로그래밍 기능이라고 생각하면 된다. 이것은 일반적인 프로그래밍과는 조금 차이가 있지만 MySQL 내부에서 사용하기 위해서는 아주 적절한 방식을 제공해 준다. Stored Procdedure는 Query문의 집합으로 어떠한 동작을 일괄 처리하기 위한 용도로 사용된다. 자주 사용되는 일반적인 쿼리를 모듈화 시켜서 훨씬 편리하게 MySQL을 운영할 수 있다. 형식 : DELIMITER $$ CREATE PROCEDURE Stored_Procedure_Name ( IN | OUT Parameters ) BEGIN SQL Coding ... END $$ DELIMITER ; ( 띄어쓰기 주의!! ) 사용 : CALL St..

DB/MySQL 2021.04.19

[MySQL] 사용자 검색/추가/삭제 및 권한 설정

1. MySQL 사용자 조회 MySQL에서 생성된 사용자를 확인하려면 아래와 같다. host : 접속이 허용된 ip 주소. ( % 는 어디에서 접속하여도 OK! ) user : 등록된 사용자 ID MariaDB [mysql]> SELECT host,user FROM user; +-----------+--------+ | host | user | +-----------+--------+ | % | bskim | | % | guest | | % | hdjang | | % | root | | % | shson | | % | yjcho | | localhost | root | +-----------+--------+ 7 rows in set (0.000 sec) MariaDB [mysql]> 2. MySQL 사..

DB/MySQL 2021.04.16

[MySQL] SQL Server 접속하기 (Using Workbench)

새로운 연결을 만든다. 1. 상단의 집 모양의 Home Button을 누르면, 아래와 같은 화면이 나타난다. 2. MySQL Connections 옆의 + 버튼을 누르면, 연결을 설정할 수 있는 창이 나타난다. 새로운 연결을 작성한다. 1. Connection Name에 적당한 이름을 넣는다. 2. Hostname은 localhost (서버가 같은 PC에 있는) 경우에는 127.0.01로 한다. Port 번호는 MySQL Server가 초기 값은 3306이며, 서버 구축 시 특별히 바꿨다면 해당 Port 번호와 맞춘다. 3. Username은 사용 가능한 ID를 기입한다. 이 정도만 진행해도 되지만, 접속할 때마다 비밀번호를 작성하는 것이 귀찮다면 화살표가 가리키고 있는 'Store in Vault'를 ..

DB/MySQL 2021.04.16

[MySQL] MySQL 8.0 설치 방법 (Windows, 학습용)

1. MySQL 다운로드 및 설치 MySQL Community 8.0을 설치하기 위한 PC 사양은 Windows가 설치되었을 때는 특별한 제한이 없다. 하지만 Windows 운영체제는 64Bit Windows 10 / Windows Server 2012 R2 이상의 Version에서만 설치 가능하다. 단, 64Bit Windows 7을 사용해도 MySQL 8.0.3 RC Version을 사용하면 동일하게 사용이 가능하다. 다음 내용은 Windows 7에서 진행하였다. 1.1 MySQL Community 8.0 다운로드 https://dev.mysql.com/downloads/mysql/에 접속하여 OS : Microsoft Windows를 선택하고 Windows (x86, 32 & 64 Bit), MyS..

DB/MySQL 2021.04.09
728x90
반응형