Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL

  1. MySQL 트리거에서 OLD·NEW 키워드로 행의 컬럼 값에 접근하는 방법

    MySQL에서 트리거(trigger)를 정의할 때는 삽입(INSERT), 수정(UPDATE), 삭제(DELETE) 작업의 대상이 되는 행(row)의 컬럼 값을 직접 참조할 수 있습니다. 이때 OLD와 NEW라는 두 가지 키워드를 사용하며, 각각 다음과 같은 역할을 합니다.OLD.column_name: 변경되기 전 원래 행(original row)의 컬럼 값을 참조합니다.NEW.column_name: 변경된 후의 새로운 행(new row)의 컬럼 값을 참조합니다.다만 OLD와 NEW 키워드는 아무 때나 사용할 수 있는 것이 아니라,

  2. MySQL에서 DISTINCT 절과 함께 WHERE 및 LIMIT 절 활용하기

    MySQL 쿼리에서 DISTINCT 절과 함께 WHERE 절을 사용하면, 결과 집합에서 고유한(중복 없는) 행을 반환할 기준 조건을 지정할 수 있습니다. 즉, WHERE 절의 조건을 만족하는 행들만 대상으로 중복이 제거된 고유한 값들이 반환됩니다.또한 DISTINCT 절과 함께 LIMIT 절을 사용하면, 서버가 반환할 고유한 행의 최대 개수를 제한할 수 있습니다. 이는 대량의 데이터에서 필요한 만큼의 고유한 값만 효율적으로 가져오고자 할 때 매우 유용합니다.예제다음은 testing이라는 테이블에 WHERE 절과 LIMIT 절을 DI

  3. MySQL 테이블에서 원하는 순서대로 레코드를 조회하는 방법 – ORDER BY 절 활용법

    MySQL 테이블에서 레코드를 오름차순 또는 내림차순 등 특정한 방식으로 정렬된 결과 집합(result set)으로 가져오려면 ORDER BY 절과 함께 ASC(오름차순) 또는 DESC(내림차순) 키워드를 사용해야 합니다.ORDER BY 절의 기본 동작만약 ASC나 DESC 키워드 중 어떤 것도 지정하지 않으면, MySQL은 기본적으로 레코드를 오름차순(ASC)으로 반환합니다. 즉, ORDER BY 절은 해당 절에 지정된 특정 필드를 기준으로 결과 집합을 오름차순 또는 내림차순으로 정렬하여 반환합니다.예제 테이블 준비하기다음과 같은

  4. MySQL 쿼리에 주석을 추가하는 3가지 방법

    MySQL 서버에서는 쿼리 작성 시 코드의 가독성을 높이거나 특정 부분을 설명하기 위해 주석(comment)을 추가할 수 있습니다. MySQL에서 지원하는 주석 작성 방식은 크게 세 가지가 있습니다. 1. # 주석 (샵 기호) # 문자로 시작하는 주석으로, 한 줄(single-line) 주석입니다. # 뒤에 작성된 내용은 해당 줄의 끝까지 모두 주석으로 처리됩니다. 2. -- 주석 (이중 대시) 이 역시 한 줄 주석입니다. 단, -- 다음에는 반드시 공백(space) 또는 제어 문자(control character)가 하나 이상 있

  5. MySQL에서 현재 사용 중인 데이터베이스가 아닌 다른 데이터베이스의 테이블 목록 확인하기

    MySQL에서는 SHOW TABLES FROM 명령어를 사용하면 현재 접속해 있는 데이터베이스와 별개로, 다른 데이터베이스에 어떤 테이블들이 존재하는지 간단하게 확인할 수 있습니다.기본 문법Show Tables from Database_name;사용 예시예를 들어, 현재 new라는 이름의 데이터베이스를 사용 중인 상태에서 gaurav라는 데이터베이스의 테이블 목록을 조회하고 싶다면 다음과 같은 쿼리를 실행하면 됩니다.mysql> use new; Database changed mysql> show tables from g

  6. MySQL 트리거 생성 시 구분 기호(DELIMITER)를 변경해야 하는 이유

    MySQL에서는 각 SQL 문장의 끝을 나타내기 위해 기본적으로 세미콜론(;)을 구분 기호(delimiter)로 사용합니다. 그런데 트리거(trigger)를 생성할 때는 이 구분 기호를 반드시 변경해 주어야 합니다.구분 기호를 변경해야 하는 이유트리거 본문 안에는 여러 개의 SQL 문장을 포함할 수 있습니다. 만약 구분 기호를 그대로 두면, MySQL은 트리거 본문 내부에 등장하는 첫 번째 세미콜론을 트리거 정의의 끝으로 잘못 해석하여 구문 오류를 발생시킵니다.따라서 구분 기호를 임시로 다른 기호로 바꾸면, MySQL에게 세미콜론이

  7. MySQL 결과 집합에서 열의 요약 출력을 얻는 방법

    MySQL 결과 집합 자체에서 열의 요약 출력을 얻으려면 WITH ROLLUP 수정자를 사용하면 됩니다. 이 수정자는 GROUP BY 절과 함께 사용되며, 상위 수준의 요약 연산을 나타내는 추가 행을 포함한 요약 출력을 제공합니다.WITH ROLLUP의 동작 방식WITH ROLLUP은 일반적인 GROUP BY 결과 뒤에 각 그룹별 소계와 전체 총계를 나타내는 행을 자동으로 추가합니다. 이때 요약 행의 그룹화 기준 열 값은 NULL로 표시되므로, 어떤 행이 요약 행인지 쉽게 구분할 수 있습니다.예시다음 예제에서 WITH ROLLUP

  8. MySQL에서 데이터베이스의 모든 트리거 목록 확인하는 방법

    MySQL에서는 SHOW TRIGGERS 문을 사용하여 데이터베이스에 정의된 모든 트리거의 목록을 간편하게 확인할 수 있습니다. 다음 예제를 통해 실제 사용 방법을 살펴보겠습니다.예제 1: 현재 데이터베이스의 트리거 조회mysql> Show Triggers\G *************************** 1. row ***************************   Trigger: trigger_before_delete_sample     Event: DELETE     T

  9. MySQL에서 트리거(Trigger) 메타데이터를 확인하는 방법

    MySQL에서 트리거(trigger)의 메타데이터를 확인하고 싶다면 INFORMATION_SCHEMA 데이터베이스를 활용하면 됩니다. INFORMATION_SCHEMA는 MySQL 서버 내부에 존재하는 가상 데이터베이스로, 데이터베이스·테이블·컬럼·트리거 등 서버의 모든 객체 정보를 담고 있어 별도의 도구 설치 없이 간단한 SELECT 문만으로 정보를 조회할 수 있습니다.트리거 메타데이터 조회 쿼리아래 문장을 실행하면 현재 서버에 정의된 모든 트리거의 메타데이터를 확인할 수 있습니다.mysql> Select trigger_sc

  10. MySQL INFORMATION_SCHEMA로 특정 데이터베이스의 트리거 상세 정보 조회하기

    INFORMATION_SCHEMA.TRIGGERS 테이블이란?MySQL에서는 information_schema.triggers 테이블을 조회하면 서버에 정의된 트리거의 메타데이터를 손쉽게 확인할 수 있습니다. 여기에 trigger_schema 조건을 추가하면 특정 데이터베이스(스키마)에 속한 트리거만 필터링하여 상세 정보를 얻을 수 있습니다.조회 쿼리 작성 방법아래와 같이 WHERE 절에서 LIKE 연산자를 사용해 원하는 데이터베이스 이름을 지정하면 됩니다.mysql> SELECT * FROM information_schema

  11. MySQL에서 특정 테이블에 연결된 모든 트리거 확인하는 방법

    INFORMATION_SCHEMA.TRIGGERS로 테이블의 트리거 조회하기MySQL에서는 INFORMATION_SCHEMA.TRIGGERS 테이블을 조회하면 특정 데이터베이스와 테이블에 연결된 모든 트리거 정보를 한 번에 확인할 수 있습니다. 아래 쿼리처럼 TRIGGER_SCHEMA에는 데이터베이스 이름을, EVENT_OBJECT_TABLE에는 테이블 이름을 조건으로 지정하면 됩니다.mysql> Select * from INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_SCHEMA = query AN

  12. MySQL 트리거 생성 및 사용에 필요한 권한 정리

    트리거를 사용하는 데 필요한 권한은 무엇입니까?MySQL에서 CREATE 또는 DROP 문을 사용하여 트리거를 생성하거나 삭제하려면 SUPER 권한이 반드시 필요합니다. 이는 트리거가 일반 사용자의 세션과 무관하게 실행될 수 있어야 하기 때문에 높은 수준의 권한이 요구되기 때문입니다.또한 트리거 내부의 SQL문에서 OLD 또는 NEW 키워드를 사용하는 경우에는 아래와 같은 추가적인 권한이 필요합니다.1. UPDATE 권한 — SET NEW.column_name = value트리거 본문에서 SET NEW.column_name = va

  13. MySQL 테이블 열의 고유한 값 개수 세는 방법 – COUNT(DISTINCT) 완벽 가이드

    MySQL에서 특정 열(column)에 중복되지 않는 고유한 값이 몇 개 있는지 확인하고 싶다면 COUNT() 함수와 DISTINCT 키워드를 함께 사용하면 됩니다. COUNT() 함수의 인수로 DISTINCT와 열 이름을 전달하면, 해당 열에서 중복을 제거한 값의 개수가 반환됩니다.기본 문법SELECT COUNT(DISTINCT Col_name) FROM table_name;예제설명을 돕기 위해 다음과 같은 tender 테이블이 있다고 가정해 보겠습니다. 이 테이블에는 clientid 열에 중복된 값이 포함되어 있습니다.mysql

  14. MySQL DISTINCT 절로 결과 집합에서 고유한 값만 조회하는 방법

    MySQL 테이블에서 데이터를 조회하다 보면 특정 열에 중복된 값이 여러 개 포함되어 결과 집합이 지저분해지는 경우가 자주 발생합니다. 이럴 때 SELECT 문의 DISTINCT 절을 사용하면 결과 집합에서 중복 데이터를 제거하고 각 열의 고유한(unique) 값만 깔끔하게 추출할 수 있습니다.DISTINCT 절 기본 문법SELECT DISTINCT 컬럼명 FROM 테이블명 WHERE 조건;DISTINCT 키워드를 SELECT 바로 뒤에 붙여주기만 하면, 해당 열에서 중복된 값을 하나로 묶어 반환합니다. WHERE 절은 필요에 따라

  15. MySQL DISTINCT 절과 NULL 값: NULL이 여러 개일 때 결과는 어떻게 될까?

    NULL 값이 여러 개인 열에 DISTINCT 적용 시 MySQL의 동작여러 개의 NULL 값이 포함된 열에 DISTINCT 절을 적용하면, MySQL은 모든 NULL 값을 동일한 값으로 취급합니다.즉, DISTINCT 절의 기본 특성에 따라 결과 집합에는 NULL이 단 하나만 반환되고, 나머지 중복 NULL 값들은 모두 제거됩니다.예제로 확인하기testing이라는 테이블의 Lname 열에 NULL 값이 여러 개 저장되어 있다고 가정해 보겠습니다.mysql> Select * from testing; +------+-------

  16. MySQL 트리거(Trigger)를 삭제하는 두 가지 방법

    MySQL에서 트리거(Trigger)는 크게 두 가지 방법으로 삭제할 수 있습니다. 하나는 DROP 문을 사용한 명시적 삭제이고, 다른 하나는 테이블이나 데이터베이스가 삭제될 때 함께 제거되는 암시적 삭제입니다.1. DROP 문을 사용한 명시적 삭제DROP TRIGGER 구문을 사용하면 특정 트리거를 직접 삭제할 수 있습니다. 아래 예시를 통해 확인해 보겠습니다.mysql> DROP TRIGGER before_insert_studentage1; Query OK, 0 rows affected (0.05 sec)위 명령어를 실행하

  17. MySQL은 여러 줄에 걸쳐 작성된 명령문을 어떻게 평가할까?

    MySQL은 종결 세미콜론(;)을 만나야 비로소 하나의 명령문이 끝났다고 판단합니다. 따라서 하나의 SQL 문장을 여러 줄에 나누어 작성하더라도 문제없이 처리됩니다.프롬프트 변화로 알아보는 명령문 입력 상태명령문을 여러 줄로 나누어 입력하는 경우를 살펴보겠습니다. 첫 번째 줄을 작성하고 Enter 키를 누르면 프롬프트가 mysql>에서 ->로 변경됩니다. 이는 아직 완전한 명령문을 받지 못했으며, 나머지 부분을 기다리고 있다는 의미입니다.이후 사용자가 계속해서 문장을 입력하다가 마지막에 세미콜론(;)을 입력하면, 그제야

  18. MySQL 명령문 작성 시 '\c' 옵션의 역할과 사용법

    MySQL 명령줄 클라이언트에서 \c 옵션은 clear(지우기)를 의미합니다. 이 옵션은 현재 입력하고 있는 명령문을 취소하고 지울 때 사용됩니다. 예를 들어, 명령문을 입력하던 도중 실행하고 싶지 않아진다면 \c를 입력하여 지금까지 작성한 내용을 한 번에 지울 수 있습니다.\c 옵션 사용 예시mysql> Select *    -> from\c위 예제와 같이 명령문 작성 중에 \c를 입력하면 MySQL은 현재 입력된 내용을 모두 지우고, 새로운 명령문을 받아들일 수 있도록 mysql> 프롬

  19. MySQL 트리거란 무엇일까? 트리거링 이벤트(INSERT·UPDATE·DELETE) 완벽 정리

    MySQL 트리거의 기본 개념MySQL 트리거(Trigger)는 데이터베이스 카탈로그에 저장된 일련의 SQL 문장 집합입니다. 이 데이터베이스 객체는 항상 특정 테이블과 연결되어 있으며, 해당 테이블에서 지정된 이벤트가 발생하면 자동으로 활성화되도록 정의됩니다.다른 관점에서 보면 MySQL 트리거는 일종의 특수한 저장 프로시저(Stored Procedure)라고 할 수 있습니다. 저장 프로시저와의 가장 큰 차이점은, 저장 프로시저처럼 직접 호출하는 것이 아니라 테이블에 대한 데이터 변경 이벤트가 발생했을 때 자동으로 실행된다는 점입

  20. MySQL 트리거에서 FOR EACH ROW는 어떻게 작동할까? 핵심 개념과 예제

    MySQL에서 FOR EACH ROW는 말 그대로 UPDATE 또는 DELETE 문에 의해 영향을 받는(매칭되는) 각 행(row)마다 트리거 본문이 실행된다는 의미입니다. 즉, 트리거가 테이블 전체에 딱 한 번 적용되는 것이 아니라, 조건에 해당하는 행의 수만큼 트리거 본문이 반복해서 실행됩니다.이 개념은 실제 예제를 통해 훨씬 명확하게 이해할 수 있습니다. 아래에서 삭제되는 각 행마다 트리거가 어떻게 동작하는지 단계별로 살펴보겠습니다.예제를 위한 테이블 준비먼저 예제에 사용할 두 개의 테이블, 즉 원본 데이터를 담을 Sample

Total 4564 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:186/229  20-컴퓨터/Page Goto:1 180 181 182 183 184 185 186 187 188 189 190 191 192