센서와 변환기의 중요한 차이점 중 하나는센서가 물리적 변화를 감지 함주변에서 발생하는 반면트랜스 듀서는 물리량 또는 비 전기를 다른 신호로 변환합니다.또는 전기 신호.센서와 변환기 사이의 다른 차이점은 아래의 비교 차트에서 설명합니다.
트랜스 듀서와 센서는 모두 물리적입니다.물리적 양을 측정하기 위해 전기 및 전자 기기에 사용되는 장치. 센서는 에너지 레벨을 감지하여 디지털 미터로 쉽게 측정 할 수있는 전기 신호로 변경합니다. 트랜스 듀서는 동일한 형태 또는 다른 형태로 에너지를 전달합니다.
내용 : 센서 대 트랜스 듀서
비교 차트
정의
주요 차이점
결론
비교 차트
비교 근거감지기변환기
정의
물리적 변화가 주변에서 발생하고이를 읽을 수있는 양으로 변환 함을 감지합니다.
변환기는 작동 할 때 에너지를 한 형태에서 다른 형태로 변형시키는 장치입니다.
구성 요소
센서 자체
센서 및 신호 컨디셔닝
기능
변경 사항을 감지하고 해당 전기 신호를 유도합니다.
한 형태의 에너지를 다른 형태로 전환.
예제들
근접 센서, 자기 센서, 가속도 센서, 광 센서 등
서미스터, 전위차계, 열전대 등
센서의 정의
센서는 물리량 (예 : 열, 빛, 소리 등)을 쉽게 읽을 수있는 신호 (전압, 전류 등)로 측정하는 장치입니다. 교정 후 정확한 판독 값을 제공합니다.
예제들- 온도계에 사용 된 수은은측정 된 온도는 보정 된 유리 튜브의 도움으로 쉽게 측정 할 수있는 액체의 팽창과 수축으로 이어진다. 열전쌍은 또한 온도를 온도계로 측정 한 출력 전압으로 변환합니다.
센서는 전자 장비에 많은 응용 분야를 가지고 있습니다. 그 중 몇 가지가 아래에 설명되어 있습니다.
모션 센서는 가정 보안 시스템 및 자동화 도어 시스템에 사용됩니다.
포토 센서가 적외선 또는 자외선을 감지합니다.
가속도계 센서는 화면 회전을 감지하기 위해 모바일에 사용됩니다.
변환기의 정의
트랜스 듀서는비 전기 신호의 물리적 속성을 쉽게 측정 할 수있는 전기 신호로 변환합니다. 트랜스 듀서에서의 에너지 변환 과정은 트랜스 덕션 (transduction)으로 알려져 있습니다. 형질 도입은 두 단계로 완료됩니다. 먼저 신호를 감지하고 추가 처리를 위해 신호를 강화합니다.
변환기는 세 가지 주요 구성 요소를 가지고 있습니다. 그것들은 입력 장치, 신호 조절 또는 처리 장치 및 출력 장치입니다.
입력 장치는 측정 량을 수신합니다.비례 아날로그 신호를 컨디셔닝 디바이스로 전송할 수있다. 컨디셔닝 디바이스는 출력 디바이스에 의해 쉽게 받아 들여지는 신호를 수정, 필터링 또는 감쇠합니다.
센서와 변환기의 주요 차이점
다음은 센서와 변환기의 주요 차이점입니다.
센서는 주변의 물리적 변화를 감지하는 반면 변환기는 한 형태의 에너지를 다른 형태로 변환합니다.
센서 자체는 센서의 주요 구성 요소이며 센서와 신호 조정은 센서의 주요 구성 요소입니다.
센서의 주요 기능은 물리적 변화를 감지하는 반면 변환기는 물리적 양을 전기 신호로 변환합니다.
가속도계, 기압계, 자이로 스코프가 센서의 예이며 서미스터와 열전대는 변환기의 예입니다.
결론
센서와 변환기는 둘 다 측정하기 어려운 온도, 변위, 열 등과 같은 물리적 양을 측정하는 데 사용되는 물리적 장치입니다.
Sensors have become an integral part of theembedded system. Right from your mobile to security systems installed at home. They are also becoming important for meteorological stations to predict weather parameters like temperature, pressure, humidity, and many more.
To interface any sensor to the microcontroller, you have to know the function of the sensor and different types of sensors used in remote sensing, weather systems, security devices, health equipment etc. But, before going to know about sensors and its types you must know the basic definition of the sensor and its use.
What is a Sensor and How does it Work?
Sensor – Block Diagram
Sensor is a module or chip that observes the changes happening in the physical world and sends the feedback to the microcontroller or microprocessor. Excitation (Power supply) and Grounding must be provided to the sensor for the proper working.
Classification of Sensors
Microcontroller accepts two types of inputs depending up on the type of sensor i.e. analog or digital.
Analog sensorsenses the external parameters (wind speed, solar radiation, light intensity etc.) and gives analog voltage as an output. The output voltage may be in the range of 0 to 5V.Logic Highis treated as “1” (3.5 to 5V) andLogic Lowis indicated by “0” (0 to 3.5 V).
Analog Sensor – Block Diagram
Unlike analog sensor,Digital Sensorproduce discrete values (0 and 1’s). Discrete values often called digital (binary) signals in digital communication.
Digital Sensor – Block Diagram
Sensor Selection [Analog or Digital]
To select a sensor it’s important to know about analog and digital circuits. Analog circuits are made up of analog components likeresistor, capacitor, Operational amplifiers, diodes and transistors.
Whereas digital circuits consist of logic gates and microcontroller chips. Analog signals are much affected by external noise and create errors in the output signal. But digital signals are susceptible to noisy environments and hence digital sensors are preferred over analog ones.
Note:If your application needs better accuracy and throughput go for digital sensors.
Problem with digital sensors:
Digital sensors have low calculation range. For example, digital temperature sensors such asHYT 271and SHT series have lower temperature range.
But analog temperature sensors (RTD) have higher resolution (positive and negative temperature). This feature makes analog sensors suitable for wide temperature range and stability. The analog output from the sensor is processed by the ADC (Analog to Digital Converter) of the microcontroller.
As discussed above, how sensors are classified and how to select a sensor, now it’s time to know about different sensors in nature and how they are used in the industrial applications.
Types of Sensors
1. Analog Pressure Sensor
Analog Pressure sensors work on the input voltage and against the known pressure value. The output of pressure sensor is analog output voltage (normalized). The units of pressure arepsi(pounds per square inch).
Analog pressure Sensors (Barometric)
2. Digital Pressure Sensor
Digital pressure sensor has inbuilt signal processing unit such as ADC that converts the analog input to digital pressure output. Generally, in most of the digital sensors I2c based digital signals are taken out.
Some of the applications of the Barometric pressure sensor are:
Leak detection in gas pipes and cables
Measuring pressure for environmental purpose
Radiosonde
Tyre pressure monitoring
Respiration analytics
Industrial and process control
Medical devices
Airflow monitoring
Drones
Inhalers
Water level measurement
3. Analog Hall effect/Magnetic Sensor (Position Sensor)
The Hall Effect sensor works on the magnetic field. It senses the magnetic field and gives the output voltage. When the magnetic field is positive output voltage increases above the null voltage (no magnetic field and zero current).
Applications of Hall sensor are:
GPS positioning
Current sensing
Speed movement detection
Magnetic code decoder
Metal detector
Controlling motors
4. Load cell (weighing sensors)
Load cells measures and process the weight. There are different types of load cell sensors based on usage of the application. Some of them are:
Beam Load cells(Bending Load cell)
These are suited for normal weight measurement applications and industrial-weight measurement. Applications of beam load cell are
To fill the machinery
Tank weighing
Vehicle Onboard weight
Medical equipment
Bed weighing
To package machinery
Single point Load cell
Single point load cells are used for low weight systems.
Applications:
Bench and retail scaling
Waste collection
Package and filling machinery
Compression Load cell
These are suitable for high weight scaling systems.
Applications:
Medical devices
Measuring equipment
Pump controlling devices
Railway weight checkers
5. Temperature Sensor
Analog temperature sensor measures the temperature of the current location based on the resistance in variation. The value of resistance changes with temperature.
RTD sensors are best suitable for stability, accuracy and reliability. They comes with wide temperature range.
Applications:
To measure water temperature
Air temperature measurement
Air conditioning
Plastics
Food processing
6. Reflex Sensor
A simple reflex sensor has transmitter and receiver sections. The transmitter sensor emits a light beam and when an object is detected the receiver captures and process this as changeover signal.
Applications:
Monitors flow of material process
Level measurement
Print and Color detection
Inspection of Assembly
Sealing cap monitoring
Recording level of liquid quantities
7. Fork Sensor
Fork sensors are quite close to the reflex sensor but efficient in picking and detecting very small objects with a size of micrometers (µm).
Applications:
Bonding control
Placing and sorting small components
Power supply control
Gap monitoring and control
Recognize holes and drills
8. Wind speed / Wind direction Sensor
Wind speed/wind direction sensor commonly called anemometer uses the ultrasonic technique to get wind speed and direction.
Applications:
Environmental weather stations
Drifter Buoys
Oceanographic and meteorological stations
Harbours and seaports
Road tunnels
9. Radar Sensor
Radar transmit short microwave signals that travel at the light speed. Radar sensors are used for measurement of liquid levels. The output analog current (4-20 mA). This current is converted to the voltage by placing a resistor and read by the ADC of a microcontroller.
10. Solar Radiation Sensor
Global radiation sensor (solar radiation) uses photo voltaic diode for measuring solar radiation.
Applications:
Meteorological stations
Hydrological and agriculture
Energy applications
Irrigation
11. Humidity Sensor
Humidity sensor calculates the humidity of the present location. Humidity is an important parameter for environmental observance, consumer electronics and medical diagnostics.
Applications:
Humidity transmitter
Handheld devices
Refrigerators
Air compressors
Weather stations
Industrial incubators
Medical systems
Dew measurement
12. Air Quality Sensor [Gas sensor]
This sensor monitors the number of gases in the air like CO2 (carbon dioxide), SO2 (sulfur dioxide), CO (carbon monoxide) etc.
Applications:
Meteorological institutes
Health agencies
Homes and Hospitals
Industrial applications
Ventilation systems
Air cleaning
13. Light Sensor
Light sensor captures the ambient light (dark/bright) and converts it to current.
Applications:
Display backlight in Mobiles and LCDs
PDA (Personal digital assistant)
TVs, Cameras
Toys
Automatic street light control
CCTVs
14. Rainfall Sensor
Meteorological agencies use rain gauge sensor to measure the amount of rainfall falls in a particular location. Rainfall is measured inmm. The most used device for measuring rainfall isTipping bucket Rain gauge.
15. Soil Moisture Sensor
Soil moisture measures the amount of salt and moisture in the soils. It also measures the temperature in the soil. It is based on SDI-12 protocol.
16. Water Level Sensor
Water level sensor calculates the depth of water in lakes, dams and rivers. There are various analog and digital based water level sensors.
Applications:
Water level monitoring
Environmental applications
Groundwater tanks
Surface water applications
Conclusion
Sensors have become a vital part of consumer electronics, industrial electronics, Robotics and Internet of things. I hope this article gives you an overview of different types of sensors used in the industry.
Five sensory organs of human body such as ears which senses sound in the environment nose which senses smell in the environment and tongue which senses taste of any food atom that we eat skin which senses the hotness or coldness of other body and eyes which senses different colors seen from it in
The same way sensor is an electronic device which detects and responds to some type of input from the physical environment and converts this output signals to in human readable display now let’s have a look
What is a Sensor?
In general, sensor is known as aDetector.
The basic definition of,
A sensor is an electronic equipment that is used to detect and observe the physical activities and pass the notifcation/signal to other electrical control devices.
In other words, a sensor is an electronic device that can transform energy from one form to another form. So, it is also called aTransducer.
The main function of the sensor is to identify and communicate with physical quantities such as temperature, heat, pressure, distance, moisture, gas, and so on.
And it provides output in the form of electrical signal to connected control systems.
You can easily understand this from following simple block diagram.
For example, in an automation system, the sensor is the most important equipment that provides an input to theprogrammable logic controller (PLC).
In daily life applications, commercial and industrial devices, the educational projects, different types of sensor are used with a specific role.
What are the different types of Sensors?
Sensors are split up into four main categories. Such as,
Analog Sensor
Digital Sensor
Active Sensor
Passive Sensor
Each category is having the different types of sensor as follows.
1. Temperature Sensor (온도 센서)
Temperature sensor uses to detect the temperature and heat energy and convert it into an electrical signal (in form ofvoltageorcurrent).
There are several types of temperature sensor used.
Thermometer
Thermocouple
Resistance Temperature Detector (RTD)
Thermistor Temperature Sensor
Semiconductor Temperature Sensor
Vibrating Wire Temperature Sensor
The temperature sensor is used in a computer, refrigerator, automobile, medical device, cooking appliances,electrical motor, etc.
2. Pressure Sensor (압력 센서)
Pressure sensor is called Pressure Transduceror Pressure Transmitter or Piezometer.
A pressure sensor detects the pressure of air, gas, water and provides electrical signal to the controller.
According to different uses and many more features, it is divided into different parts like,
Vacuum Pressure Sensor
Absolute Pressure Sensor
Gauge Pressure Sensor
Differential Pressure Sensor
Pressure sensors are used in many systems like pneumatic, hydraulic, vacuum systems, etc.
3. Touch Sensor
The touch sensor is called aTactile sensor. It is an electronic sensor that is used for detecting and recording physical touch.
Capacitive touch sensor, resistive touch sensor are the best example of touch sensor.
It is used in industrial applications like switches for turn on/off light, remote control by the air conditioner (AC), door open/close operation, elevator, and robotics, smartphones, so on.
An oximeter is one of the best example of a touch-based sensor to detect oxygen levels in the human body.
In this COVID pandemic, Pulse Oximeter is in huge demand. It is easy to handle and operate, even at your home. You can easily buy an online Pulse Oximeter.
4. Image Sensor
The image sensor is an electronic device that is used to detect the image pixels and provide information to the display devices.
There are analog and digital types of sensor. Generally, an electronic image sensor is classified into two main types.
Charge-Coupled Device (CCD)
Active Pixel Sensor
For the digital camera, closed-circuit television (CCTV), medical imaging equipment, thermal imaging devices, radar, sonar, etc., image sensors are used.
5. Motion Sensor
Motion sensor measures and records physical activities or movements. It is classified into different types.
Active Motion Sensor
Passive Motion Sensor
Tomographic Motion Sensor
Gesture Motion Sensor
The motion sensor is used in home security, automatic doors operation, microwaves, robotics, ultrasonic waves, gesture detector, etc.
6. Light Sensor
Light sensor is aphotoelectric device. This sensor detects and converts the brightness or luminescence of light or photon into an electrical signal.
There are three types of light sensor.
Photoresistor or Light Dependent Resistor (LDR)
Photodiode
Phototransistor
It is widely used in thesolar system, automobile, agriculture sector (automatic sprinkler system), and electronic-based project device like Arduino.
7. Vibration Sensor
Sometimes, vibration sensor is known asPiezoelectric Sensor.
The vibration sensor detects and records any movement or activities. And it provides data or signals to connected machines or systems.
This sensor helps to send acknowledgement if there is any hazardous activity.
In an industrial area such as gas and oil, food and beverage, mining, metalworking, paper, wind power, power generation, the vibration sensords are needed.
8. Humidity Sensor
Humidity sensor is also known as aHygrometer.
For detecting moisture in air and soil, the humidity sensor is very essential. Mostly, it is used in Air Conditioner (AC) system.
WS1 Prois an example of the wireless humidity sensor.
9. Proximity Sensor (근접센서)
Proximity sensor can easily detect nearby objects without any physical touch. It is divided into different types like-
Capacitive Proximity Sensor
Inductive Proximity Sensor
It is widely used in smartphones, tablet computers, machines, robotic systems, roller coasters, etc.
10. Colour Sensor
Colour sensor is the type ofphotoelectric sensor.
It helps to sense the color of an object and recognize the color mark. This sensor uses RGB (red, green, and blue) color scale.
SEN-11195 is thebest example of the color sensor.
For colour painting and printing, cosmetic material, textile area, medical diagnosis, computer color monitor, and the process control, colour sensor is used.
11. Radiation Sensor
A radiation sensor is an electronics instrument that senses and measures the radiation particles like alpha, beta, gamma, neutrons, X-ray.
Also, it senses electromagnetic radiation like waves, cosmic radiation (sunlight).
Radiation sensor includes three different type.
Gas-filled Radiation Sensor
Scintillation Radiation Sensor
Solid-state Radiation Sensor
This sensor is used for nuclear energy, medical imaging modalities, and monitoring of environmental radioactivity.
12. Level Sensor
The main role of the level sensor is to measure the level or height of different materials like solid, liquid, and gaseous.
It is classified into different parts.
Laser Level Sensor
Float Sensor
Capacitive Level Sensor
Resistive Level Sensor
Ultrasonic Level Sensor
Hydrostatic Level Sensor
Optical Level Sensor
Electromagnetic Level Sensor
It is widely used in vessel, container,water tank, fuel tank bin, etc for water level check.
13. Position Sensor
Position sensor determines the displacement and the position (like linear and rotational).
Basically, position sensor available in the different types.
Optical Position Sensor
Linear Position Sensor
Rotary Position Sensor
Inductive Position Sensor
Capacitive Position Sensor
Fiber-Optic Position Sensor
Ultrasonic Position Sensor
For example, a potentiometer contains the rotational position sensor that can vary with angular movement.
The position sensor is used in domestic and industrial applications like door closing/opening, valve monitoring, motor controlling, throttles for controlling the flow of fuel or power to an engine.
14. Gas or Smoke Sensor
Gas sensor is used to detect different types of gasses, toxic or explosive gasses, smoke in the air. Some of these sensors are also capable to measure gas concentration.
Gas or smoke sensor is divided into three parts.
Optical Type Smoke Sensor
Ionization Type Smoke Sensor
Laser Type Smoke Sensor
Smoke sensor is used in plant, industries, buildings, ships, airplanes, etc.
15. Flame Sensor
The flame sensor easily detects fire or flame of nearby materials. These detected signals are passed to the connected control devices.
It is used in industrial areas for an alarm system, natural gas plant, fire suppression system and Arduino based design fire detector project.
16. Leak Sensor
Leak sensor is used in a closed vessel or vaccum for detecting water leakage, fluid leakage, air leakage, etc.
As per the working role, it is divided into two main parts.
Spot Leak Sensor
Flow Leak Sensor
17. Accelerometer (가속도계)
Accelerometer is an instrument that measure motion acceleration or velocity.
It is used in many applications such as hand gesture controlled robot, navigation system for aircraft and missiles, process and control system, vehicle acceleration, and other rotating electronic equipment like a turbine, roller, fan, compressor, pump.
18. Tilt Sensor
Tilt sensor detects and varies with an angular movement, angular slope, angular motion, axes of the reference plane.
It is mostly used for monitoring the angle and auto-rotating operation in mobile, tablet, hand-held games, boats, vehicles, and aircraft, etc.
19. Mark Sensor
Mark sensor works as photoelectric type of sensor. It is used to sense colour mark on presence of an objects.
Mark sensor is widely used in printing and packaging industries.
20. Flow Sensor or Float Sensor
Flow sensor measures and detects virtually any process fluid. This detected data will be provided to the controller system.
It is used in industrial area, power generating instruments, power plant, etc.
A Table의 트리거를 사용하여 B Table에 insert할 경우에는 B Table의 Primary key를 잘 선택 해야 한다.
B Table의 Key로 인해서, Trigger의 동작이 Error나면, A Table의 Data도 insert되지 않는다.
A Table의 트리거를 사용하여 Romote Server에 insert하지 않아야 한다.
Connection이 끊어졌을경우, Trigger는 Error나게 되고, 소실된 Data를 찾을 수 없다.
Remote서버에 insert할 경우에는 Procedure를 이용하여 작업한다.
1. 트리거(Trigger)란?
트리거(Trigger)란 영어로 방아쇠라는 뜻인데, 방아쇠를 당기면 그로 인해 총기 내부에서 알아서 일련의 작업을 실행하고 총알이 날아갑니다. 이처럼 데이터베이스에서도 트리거(Trigger)는 특정 테이블에 INSERT, DELETE, UPDATE 같은 DML 문이 수행되었을 때,데이터베이스에서 자동으로 동작하도록 작성된 프로그램입니다.즉! 사용자가 직접 호출하는 것이 아니라, 데이터베이스에서 자동적으로 호출하는 것이 가장 큰 특징입니다.
트리거(Trigger)는 테이블과 뷰 데이터베이스 작업을 대상으로 정의할 수 있으며,전체 트랜잭션 작업에 대해 발생되는 트리거(Trigger)와 각행에 대해 발생되는 트리거(Trigger)가 있습니다.
2. 트리거(Trigger)가 적용되는 예
다음과 같은 상황에서 트리거(Trigger)를 사용할 수 있습니다. 어떤 쇼핑몰에 하루에 수만 건의 주문이 들어옵니다. 주문데이터는 주문일자, 주문상품, 수량, 가격이 있으며, 수천명의 임직원이 일자별, 상품별 총 판매수량과 총 판매가격으로 구성된 주문 실적을 실시간으로 온라인상에 조회를 했을 때, 한사람의 임직원이 조회할 때마다 수만 건의 데이터를 읽고 계산해야합니다. 만약 임직원이 수만명이고, 데이터가 수백만건이라면, 또 거의 동시다발적으로 실시간 조회가 요청된다면 시스템 퍼포먼스가 떨어질 것입니다.
따라서! 트리거(Trigger)를 사용하여 주문한 건이 입력될 때마다, 일자별 상품별로 판매수량과 판매금액을 집계하여 집계자료를 보관하도록 만들어보겠습니다. 먼저 관련된 테이블을 생성해보겠습니다.
테이블은 다음과 같습니다. 주문정보테이블에 실시간으로 데이터가 입력될 때마다 트리거가 발동되어 자동으로 일자별판매집계테이블에 일자별, 상품별 판매수량과 판매금액을 계산해 업데이트 하는 작업을 하도록 하고, 사용자들은 미리 계산된 일자별판매집계테이블을 조회하게 하여 실시간 조회를 지원하게 하는 것입니다.
3. 트리거(Trigger) 구현
자, 이제 2개 테이블을 CREATE, DDL을 통해 만들어보겠습니다.
CREATE TABLE ORDER_LIST(
ORDER_DATE CHAR(8) NOT NULL,
PRODUCT VARCHAR2(10) NOT NULL,
QTY NUMBER NOT NULL,
AMOUNT NUMBER NOT NULL
);
CREATE TABLE SALES_PER_DATE(
SALE_DATE CHAR(8) NOT NULL,
PRODUCT VARCHAR2(10) NOT NULL,
QTY NUMBER NOT NULL,
AMOUNT NUMBER NOT NULL
);
SELECT *
FROM ORDER_LIST
SELECT *
FROM SALES_PER_DATE
조회를 해보면 다음과 같습니다.
아직 2개 테이블다 데이터가 없음을 확인할 수 있습니다.
이제 트리거(Trigger)를 만들어 보겠습니다. 트리거(Trigger)를 구현하기 위해 우선 절차형 SQL과 PL/SQL을 알아야합니다. 절차형 SQL과 PL/SQL은 따로 글을 올리도록 하고, 오늘은 절차형 SQL과 PL/SQL을 안다는 전제하에 트리거(Trigger)를 구현해보겠습니다.
트리거(Trigger) 처리 절차를 설명하면 다음과 같습니다.
8 ~ 14 Line
Trigger를 선언합니다.
order_list 테이블에 insert가 발생하면 그 이후 each row 즉 각 행에 해당 트리거(Trigger)를 적용한다라는 뜻입니다. 또한, declare 선언문에는 변수를 선언합니다. order_list 테이블에 있는 order_date, product Type에 맞게 o_date, o_prod 변수를 선언합니다.
15 ~17 Line
new 는 트리거(Trigger)에서 사용하는 구조체 입니다. new는 새로 입력된 레코드 값을 담고 있습니다.
o_date 에 새로 들어온 order_date 값을 , o_prod 에 새로 들어온 product 값을 저장합니다.
18 ~ 26 Line
sales_per_date 테이블에 update 구문을 실행하는데, 기존에 있는 qty, amount 를 누적합해서 다시 Set 합니다. 여기서 where문을 통해 현재 새로 들어온 날짜과 상품이 일치하는 데이터만 해당 update문을 실행하도록 조건을 걸었습니다.
또한 만약 해당 조건에 모두 해당되지 않는다면, if sql%notfound 구문이 실행됩니다. 기존에 있던 레코드 값이 아니고 전혀 새로운 레코드이기 때문에 insert 구문을 통해 새로 들어온 데이터를 새로 삽입합니다.
끝으로 / 부분은 트리거(Trigger)를 실행하는 실행명령어입니다.
위 구문을 실행하면, 이제 2개 테이블에 트리거(Trigger)가 적용된 것입니다.
이제 order_list 테이블에 레코드를 insert 해서 sales_per_date 테이블에 트리거(Trigger)가 자동으로 동작하여, 데이터 값을 자동으로 계산하고 반영하는지 확인해보겠습니다!
ORDER_LIST 테이블에 아래와 같이 데이터 값을 삽입해보겠습니다.
-> INSERT INTO ORDER_LIST VALUES('20120901','MONOPACK',10,300000)
삽입후 ORDER_LIST, SALES_PER_DATE 테이블 조회를 해보겠습니다.
ORDER_LIST 정상적으로 값이 삽입되었습니다.
트리거에 의해서 SALES_PER_DATE 에도 정상적으로 값이 삽입되어있습니다.
자. 다시한번 값을 삽입하고 테이블을 확인해보겠습니다.
-> INSERT INTO ORDER_LIST VALUES('20120901','MONOPACK',20,600000);
ORDER_LIST 를 조회하면 지금까지 삽입한 값들이 리스트로 있습니다.
SALES_PER_DATE 테이블은 트리거에 의해서 주문날짜별 상품별 물량과 가격이 합산되어 업데이트 되어있음을 확인할 수 있습니다.
4. 트리거(Trigger)와 트랜잭션(Transaction)의 상관관계
이번에는 다른 상품으로 주문 데이터를 입력한 후 두 테이블의 결과를 조회해보고 트랜잭션을 ROLLBACK 해보겠습니다. 판매 데이터의 입력취소가 일어나면, 주문 정보 테이블(ORDER_LIST)과 판매 집계테이블(SALES_PER_DATE )에 동시에 입력(수정) 취소가 일어나는지 확인해보기 위함입니다.
-> INSERT INTO ORDER_LIST VALUES('20120901','MULTIPACK',10,300000);
ORDER_LIST 에 정상적으로 판매 데이터가 삽입되었습니다.
SALES_PER_DATE 테이블은 트리거에 의해 판매날짜별, 상품별 누적 물량과 가격이 업데이트 되었습니다.
이제ROLLBACK; 명령어를 실행해보겠습니다.
ORDER_LIST 테이블에 방금 삽입한 판매데이터가 취소되었습니다.
SALES_PER_DATE 테이블에도 똑같이 트리거로 입력된 데이터 정보까지 하나의 트랜잭션으로 인식하여 입력 취소가 되었습니다.
즉, 트리거는데이터베이스에 의해 자동 호출되지만 결국 INSERT, UPDATE, DELETE 구문과 하나의 트랜잭션 안에서 일어나는 일련의 작업들이라 할 수 있다.
(추가로 트리거는 Begin ~ End 절에서 COMMIT , ROLLBACK 을 사용할 수 없다.)
00937. 00000 - "not a single-group group function"
부서번호를 그룹화 했음에도 불구하고 위의 예제의 경우 에러가 발생한다.
max(avg()), min(avg())는 평균값의 최대 값과 최소 값이므로 어떤 컬럼으로 그룹을 하던 결과는 최대 값 하나 최소 값 하나이다. 그러나 부서번호의 경우 부서별로 그룹을 묶었기 때문에 값이 여러 개이다.
이해가 안된다면 차근차근 생각해보자.
일단 위의 예제는 부서별로 그룹을 묶었다. 10, 20, 30, … 각 부서마다 그룹으로 묶인 것이다.
그 후 그룹별로 사원들 급여의 평균 값을 구한다.
각 그룹별로 평균 값 중에서 최대 값과 최소 값을 구했다. 각각 결과는 하나이다.
select절에 부서번호를 기술했기 때문에 화면에 출력할 때는 그룹으로 묶인 부서들도 보여주어야 한다.
현재는 어느 부서의 최대평균, 최소평균인지는 모른다. 단지 평균값들 중에 최대, 최소가 무엇인지만 검색된 상황이다. 각 부서별로 하나의 행을 차지하고 있을텐데 특정 부서의 옆에 최대평균, 최소평균을 같이 출력한다면 마치 그 부서의 최대평균과 최소평균인 것처럼 보이기 때문에 잘못된 정보가 되버린다. 그래서 이런 상황이 나오지 않도록 예제처럼 SQL문을 작성할 경우 에러로 인식되게 한 것이다.
selectmax(avg(salary)) 최대평균,min(avg(salary)) 최소평균
fromemployees
group bydepartment_id;
정리하면그룹 함수가 중첩된 경우 GROUP BY절에 기술한 컬럼도 출력 할 수 없다.
No. 03
HAVING 절
HAVING 절은 해석상 WHERE 절과 동일하다. 단 조건 내용에 그룹 함수를 포함하는 것만을 포함한다.
일반 조건은 WHERE 절에 기술하지만 그룹 함수를 포함한 조건은 HAVING 절에 기술한다.
기본 구조
SELECT[DISTINCT] 컬럼, 그룹 함수(컬럼)
FROM테이블명
[WHERE조건]
[GROUP BYGroup대상]
[HAVING그룹 함수 포함 조건]
[ORDER BY정렬대상 [ASC/DESC]]
HAVING 절은 GROUP BY 절 뒤에 기술한다.
HAVING 절의 조건은 그룹 함수를 포함해야 한다.
◈ 예제
selectdepartment_id 부서번호, round(avg(salary)) 평균급여
fromemployees
group bydepartment_id
havingavg(salary) < 7000;
SQL문장에서 일반 조건은 WHERE절에 기술하지만 조건에 그룹 함수가 포함된 경우에는 HAVING절에 기술해야 한다.
WHERE절에 그룹 함수가 포함된 조건을 기술하면 에러가 발생한다.
selectdepartment_id 부서번호,sum(salary) 급여총액
fromemployees
group bydepartment_id
havingjob_id != 'IT_PROG';
ORA-00979: not a GROUP BY expression
00979. 00000 - "not a GROUP BY expression"
반대로 HAVING 절에 일반 조건을 기술하면 에러가 발생한다.
그러나 GROUP BY에 기술된 컬럼에 대한 일반 조건은 HAVING절에 기술 가능하다. 하지만 그렇게 되면 SQL문을 해석하기 힘들기 때문에 기술하지 않는 것이 좋다.
일반 조건은 WHERE 절에 그룹 함수를 포함한 조건은 HAVING 절에 기술한다.
selectjob_id,sum(salary) 급여총액
fromemployees
wherejob_id not like '%REP%'
group byjob_id
havingsum(salary) > 13000
order by sum(salary);
GROUP BY 와 HAVING 절까지 기술한 SELECT 구문을 해석해보자.
from 절에 기술한 테이블에서
where 절에 기술한 조건에 해당하는 내용들만 정리하고
정리된 내용들을 가지고 group by 절에 나열된 컬럼에 대해서 그룹을 만든다.
만들어진 그룹별로 having절에 기술된 그룹함수로 계산하여 having절 조건에 맞는 그룹만 추리고