Module
Contents
Index 🔎︎

# 쿼리 디자인

쿼리 디자인 보기를 사용하여 데이터베이스 쿼리를 만들고 편집할 수 있습니다.

이 명령을 사용하려면...

In a database file window, click the Queries icon, then choose Edit - Edit.

대부분의 데이터베이스는 데이터베이스 테이블을 필터링하거나 정렬하는 쿼리를 사용하여 컴퓨터의 레코드를 표시합니다. 보기는 쿼리와 동일한 기능을 제공하지만 서버 사이드에서 작동합니다. 데이터베이스가 보기를 지원하는 서버에 있으면 보기를 사용하여 서버의 레코드를 필터링함으로써 표시 시간을 단축할 수 있습니다.

데이터베이스 문서의 테이블 탭 페이지에서 보기 만들기 명령을 선택하면 여기서 설명한 쿼리 디자인 창과 유사한 보기 디자인 창이 표시됩니다.

쿼리 디자인 창 레이아웃은 생성된 쿼리에 저장됩니다. 하지만 생성된 보기에는 저장되지 않습니다.

## 디자인 보기

쿼리를 만들려면 데이터베이스 문서에서 쿼리 아이콘을 클릭하고 디자인 보기에서 쿼리 만들기를 클릭합니다.

The lower pane of the Design View is where you define the query. To define a query, specify the database field names to include and the criteria for displaying the fields. To rearrange the columns in the lower pane of the Design View, drag a column header to a new location, or select the column and press Command Ctrl+arrow key.

쿼리 디자인 보기 창의 맨 위에 쿼리 디자인 도구 막대와 디자인 도구 막대의 아이콘 이 표시됩니다.

쿼리를 테스트하려면 데이터베이스 문서에서 쿼리 이름을 더블 클릭합니다. [데이터 원본 보기]와 유사한 테이블에 쿼리 결과가 표시됩니다. 참고: 표시된 테이블은 임시로 작성된 것입니다.

### 쿼리 디자인 보기의 키

키 | 함수
F4 | 미리보기
F5 | 쿼리 실행
F7 | 테이블 또는 쿼리 추가

## 찾아보기

쿼리 디자인을 처음 열면, 새 쿼리의 기초가 되는 테이블이나 쿼리를 선택하는 대화 상자가 나타납니다.

필드를 더블 클릭하면 쿼리에 추가됩니다. 관계를 지정하려면 끌어서 놓습니다.

쿼리를 디자인할 때 선택한 테이블을 수정할 수 없습니다.

### 테이블 제거

디자인 보기에서 테이블을 삭제하려면 테이블 창의 위쪽 여백을 클릭한 다음 콘텍스트 메뉴를 불러오십시오. 삭제 명령어를 사용하여 테이블이 디자인 보기에서 삭제됩니다. 또는 (삭제) 키를 사용할 수도 있습니다.

### 테이블 이동과 테이블 크기 변경

사용자가 원하는대로 테이블을 정렬하고 그 크기를 변경할 수 있습니다. 테이블을 이동하려면 마우스로 테이블의 위쪽 여백을 포착한 다음 원하는 위치로 테이블을 끌어오십시오. 테이블 표시를 확대하거나 축소하려면 여백이나 모서리를 끌어오십시오.

## 테이블 관계

테이블의 데이터 필드와 다른 테이블의 데이터 필드 사이에 데이터 관계가 있을 경우 이 관계를 사용자의 쿼리에 이용할 수 있습니다.

If, for example, you have a spreadsheet for articles identified by an article number, and a spreadsheet for customers in which you record all articles that a customer orders using the corresponding article numbers, then there is a relationship between the two "article number" data fields. If you now want to create a query that returns all articles that a customer has ordered, you must retrieve data from two spreadsheets. To do this, you must inform LibreOffice about the relationship which exists between the data in the two spreadsheets.

To do this, click a field name in a table (for example, the field name "Item-Number" from the Customer table), hold down the mouse button and then drag the field name to the field name of the other table ("Item-Number" from the Item table). When you release the mouse button, a line connecting the two fields between the two table windows appears. The corresponding condition that the content of the two field names must be identical is entered in the resulting SQL query.

LibreOffice을(를) 관계형 데이터베이스에 대한 인터페이스로 사용하는 경우에만 여러 관련 시트를 기반으로 하는 쿼리를 만들 수 있습니다.

각기 다른 데이터베이스의 테이블을 하나의 쿼리로 액세스할 수 없습니다. 여러 테이블과 관련된 쿼리는 한 데이터베이스 내에서만 만들 수 있습니다.

### Specifying the relation type

If you double-click on the line connecting two linked fields or call the menu command Insert - New Relation, you can specify the type of relation in the Relations dialog.

또는 라인이 선택될 때까지 Tab 키를 누른 다음, 콘텍스트 메뉴를 보기 위하여 Shift + F10 을 누르고 이 메뉴에서 편집 명령을 선택합니다. 일부의 데이터베이스는 결합 유형의 하위집합만을 지원합니다.

### 관계 삭제

두 테이블 사이의 관계를 삭제하려면 마우스를 사용하여 연결선을 클릭한 다음 (삭제) 키를 누르십시오.

또는 관계 대화 상자의 사용된 필드에서 해당 항목을 삭제합니다. 또한 연결 벡터가 강조 표시될 때까지 Tab 키를 누른 다음 Shift + F10 을 눌러 콘텍스트 메뉴를 열고 삭제 명령을 선택합니다.

## Defining the query

쿼리를 지정할 조건을 선택합니다. 디자인 테이블의 각 열은 쿼리의 데이터 필드를 포함합니다. 한 행의 조건은 부울 AND로 연결됩니다.

### Specifying field names

First, select all field names from the tables that you want to add to the query. You can do this either by drag-and-drop or by double-clicking a field name in the table window. With the drag-and-drop method, use the mouse to drag a field name from the table window into the lower area of the query design window. As you do this, you can decide which column in the query design window will receive the selected field. A field name can also be selected by double-clicking. It will then be added to the next free column in the query design window.

### 데이터 필드 삭제

데이터 필드를 쿼리에서 삭제하려면 마우스를 사용하여 필드의 열 머리글을 클릭한 다음 열의 콘텍스트 메뉴에서 삭제 명령어를 불러오십시오.

### Saving the query

Use the Save icon on the Standard toolbar to save the query. You will see a dialog that asks you to enter a name for the query. If the database supports schemas, you can also enter a schema name.

#### 구성표

쿼리 또는 테이블 보기에 지정할 스키마 이름을 입력합니다.

#### 쿼리/테이블 보기 이름

쿼리 또는 테이블 보기의 이름을 입력합니다.

### 데이터 필터링

To filter data for the query, set the desired criteria in the lower area of the query design window. The following options are available:

#### 필드

Enter the name of the data field that is referred to in the Query. All settings made in the filter option rows refer to this field. If you activate a cell here with a mouse click you'll see an arrow button, which enables you to select a field. The "Table name.*" option selects all data fields with the effect that the specified criteria will be applied to all table fields.

#### 별칭

Specifies an alias. This alias will be listed in the query instead of the field name. This makes it possible to use user-defined column labels. For example, if the data field is named PtNo and, instead of that name, you would like to have PartNum appear in the query, enter PartNum as the alias.

In a SQL statement, aliases are defined as follows:

SELECT column AS alias FROM table.

예를 들면 다음과 같습니다.

SELECT "PtNo" AS "PartNum" FROM "Parts"

#### 테이블

The corresponding database table of the selected data field is listed here. If you activate this cell with a mouse click, an arrow will appear which enables you to select a different table for the current query.

#### 정렬

If you click on this cell, you can choose a sort option: ascending, descending and unsorted. Text fields will be sorted alphabetically and numerical fields numerically. For most databases, administrators can set the sorting options at the database level.

#### 표시

If you mark the Visible property for a data field, that field will be visibly displayed in the resulting query. If you are only using a data field to formulate a condition or make a calculation, you do not necessarily need to display it.

#### 기준

Specifies a first criteria by which the content of the data field is to be filtered.

#### 또는

Here you can enter one additional filter criterion for each line. Multiple criteria in a single column will be interpreted as boolean OR.

You can also use the context menu of the line headers in the lower area of the query design window to insert a filter based on a function:

### 기능

The functions which are available here depend on those provided by the database engine.

If you are working with the embedded HSQL database, the list box in the Function row offers you the following options:

옵션 | SQL | 효과
기능 없음 |  | 기능이 실행되지 않습니다.
교차점 | AVG | 필드의 산술 평균을 계산합니다.
개수 | COUNT | Determines the number of records in the table. Empty fields can either be counted (a) or excluded (b). a) COUNT(*): 별표를 인수로 이용할 경우 테이블의 모든 데이터 레코드가 계산됩니다. b) COUNT(column): Passing a field name as an argument counts only those records for fields in which the field name in question contains a value. Records with fields having Null values (i.e. fields containing no characters) will not be counted.
최대 | MAX | Determines the highest value of a record for that field.
최소 | MIN | Determines the lowest value of a record for that field.
합계 | SUM | Calculates the sum of the values of records for the associated fields.
그룹화 | GROUP BY | Groups query data according to the selected field name. Functions are executed according to the specified groups. In SQL, this option corresponds to the GROUP BY clause. If a criterion is added, this entry appears in the SQL HAVING sub-clause.

SQL 문에 직접 함수 호출을 입력할 수도 있습니다. 구문은 다음과 같습니다.

SELECT FUNCTION(column) FROM table.

SQL에서 합계 계산 기능 호출은 예를 들어 다음과 같습니다:

SELECT SUM("가격") FROM "항목".

Except for the Group function, the above functions are called Aggregate functions. These are functions that calculate data to create summaries from the results. Additional functions that are not listed in the list box might be also possible. These depend on the specific database engine in use and on the current functionality provided by the Base driver used to connect to that database engine.

To use other functions not listed in the list box, you must enter them manually under Field.

You can also assign aliases to function calls. If you do not want to display the query string in the column header, enter a desired substitute name under Alias.

SQL 설명에서 해당 기능 호출은 다음과 같습니다:

SELECT FUNCTION() AS alias FROM table

예:

SELECT COUNT(*) AS 개수 FROM "항목"

If you run such a function, you cannot insert any additional columns for the query other than as an argument in a "Group" function.

예

다음의 예에서 두 테이블에 대한 쿼리가 실행됩니다: 하나는 "항목_No" 필드가 있는 "항목" 테이블이고 또 하나는 "공급자_이름" 필드가 있는 "공급자" 테이블입니다. 뿐만 아니라 두 테이블에는 공동의 데이터 필드인 "공급자_No"가 있습니다.

3개 이상의 항목을 공급하는 모든 공급자가 포함된 쿼리를 만들려면 다음 단계가 필요합니다:

1. "항목"과 "공급자" 테이블을 쿼리 디자인에 삽입.

2. 두 개 테이블 사이에 해당 관계가 없을 경우 두 테이블의 "공급자_No" 필드 연결.

3. Double-click on the "Item_No" field from the "Item" table. Display the Function line using the context menu and select the Count function.

4. 기준으로 >3 입력하고 표시 필드 숨기기.

5. "공급자" 테이블의 "공급자_이름" 필드 더블 클릭, 그룹화 기능 선택.

6. 쿼리를 실행합니다.

"항목" 테이블에 "가격" (항목의 개별 가격) 필드와 "공급자_No" (항목 공급자) 필드가 있을 경우 공급자가 준비한 다음의 쿼리를 사용하여 항목의 평균 가격을 얻을 수 있습니다:

1. "항목" 테이블을 쿼리 디자인에 삽입.

2. "가격"과 "공급자_No" 필드 더블 클릭.

3. 기능 행 적용, "가격" 필드에서 평균 기능 선택.

4. 원할 경우 행에 별칭 이름으로 "평균"을 입력 (따옴표 없이).

5. "공급자_No" 필드에서 그룹화 선택.

6. 쿼리를 실행합니다.

다음의 콘텍스트 메뉴 명령어와 아이콘이 있습니다:

### 기능

Shows or hides a row for the selection of functions.

### 테이블 이름

테이블 이름 행을 표시하거나 숨깁니다.

### 별칭 이름

별칭 이름 행을 표시하거나 숨깁니다.

### 단일 값

Retrieves only distinct values from the query. This applies to multiple records that might contain several repeating occurrences of data in the selected fields. If the Distinct Values command is active, you should only see one record in the query (DISTINCT). Otherwise, you will see all records corresponding to the query criteria (ALL).

예를 들어, 주소 데이터베이스에서 "Smith"란 이름이 여러 번 발생하는 경우 명료값 명령을 선택하여 "Smith"란 이름이 한 번만 발생할 것을 쿼리에 지정할 수 있습니다.

여러 필드와 관련된 쿼리의 경우 결과가 특정 레코드로부터 구성될 수 있게 모든 필드의 값 조합이 고유해야 합니다. 예를 들어, 주소록에 "Smith in Chicago"가 한 번 나오고 "Smith in London"이 두 번 나오는 경우. 명료값 명령을 사용하면 쿼리에서 "last name"과 "city"라는 두 필드를 사용하여 "Smith in Chicago"가 한 번, "Smith in London"이 한 번 발생하는 쿼리 결과를 구합니다.

SQL에서 이 명령은 DISTINCT 조건자에 해당합니다.

### 라임

Allows you to limit the maximum number of records returned by a query.

If a Limit construction is added, you will get at most as many rows as the number you specify. Otherwise, you will see all records corresponding to the query criteria.

### 필터 조건 수식화

When formulating filter conditions, various operators and commands are available to you. Apart from the relational operators, there are SQL-specific commands that query the content of database fields. If you use these commands in the LibreOffice syntax, LibreOffice automatically converts these into the corresponding SQL syntax via an internal parser. You can also enter the SQL command directly and bypass the internal parser. The following tables give an overview of the operators and commands:

연산자 | 의미 | ...의 경우 조건이 충족됩니다
= | 등가입니다 | ... 필드 내용이 지정된 표현과 동일합니다. The operator = will not be displayed in the query fields. If you enter a value without any operator, the = operator is automatically assumed.
<> | 동일하지 않습니다 | ... 필드 내용이 지정된 표현과 일치하지 않습니다.
> | ..보다 큽니다 | ... 필드 내용이 지정된 표현보다 큽니다.
< | ..보다 작습니다 | ... 필드 내용이 지정된 표현보다 작습니다.
>= | greater than or equal to | ... 필드 내용이 지정된 표현보다 크거나 동일합니다.
<= | 작거나 같습니다 | ... 필드 내용이 지정된 표현보다 작거나 동일합니다.

LibreOffice 명령어 | SQL 명령어 | 의미 | ...의 경우 조건이 충족됩니다
IS EMPTY | IS NULL | 비어 있음 | ... the field contains no data. For Yes/No fields with three possible states, this command automatically queries the undetermined state (neither Yes nor No).
IS NOT EMPTY | IS NOT NULL | 비어 있지 않음 | ... the field is not empty, i.e it contains data.
LIKE placeholder (*) for any number of characters placeholder (?) for exactly one character | LIKE placeholder (%) for any number of characters Placeholder (_) for exactly one character | ..의 구성요소입니다 | ... the data field must contain the indicated search string in the order given. The position of the (*) placeholder indicates whether the searched for string (x) occurs before the placeholder (x*), after the placeholder (*x) or between the placeholders (*x*). Instead of the familiar file system (*) placeholder, you can also use the SQL (%) character as a placeholder in SQL queries in the LibreOffice interface. The (*) or (%) placeholder stands for any number of characters. The question mark (?) in the LibreOffice interface or the underscore (_) in SQL queries is used to represent exactly one character.
NOT LIKE | NOT LIKE | ...의 구성요소가 아닙니다 | ... the field does not contain data having the specified expression.
BETWEEN x AND y | BETWEEN x AND y | 간격 [x,y]에 위치합니다 | ... the field contains a data value that lies between the two values x and y.
NOT BETWEEN x AND y | NOT BETWEEN x AND y | [x,y] 간격 내에 위치하지 않습니다. | ... the field contains a data value that does not lie between the two values x and y.
IN (a; b; c...) Note that semicolons are used as separators in all value lists! | IN (a, b, c...) | a, b, c...를 포함합니다 | ... the field name contains one of the specified expressions a, b, c,... Any number of expressions can be specified, and the result of the query is determined by a boolean OR operator. The expressions a, b, c... can be either numbers or characters
NOT IN (a; b; c...) | NOT IN (a, b, c...) | a, b, c...를 포함하지 않습니다 | ... the field does not contain one of the specified expressions a, b, c,...
= TRUE | = TRUE | True 값이 있습니다 | ... 데이터 필드에 True 값이 있습니다.
= FALSE | = FALSE | False 값이 있습니다 | ... the field data value is set to false.

### 예

='Ms.' | "여성"이라는 필드 내용이 있는 데이터 필드를 제공합니다.
<'2001-01-10' | 2001년 1월 10일 이전 날짜를 구합니다.
LIKE 'g?ve' | returns records with field content such as "give" and "gave".
LIKE 'S*' | returns records with field contents such as "Sun".
BETWEEN 10 AND 20 | returns records with field content between the values 10 and 20. (The fields can be either text fields or number fields).
IN (1; 3; 5; 7) | returns records with the values 1, 3, 5, 7. If the field name contains an item number, for example, you can create a query that returns the item having the specified number.
NOT IN ('Smith') | returns records that do not contain "Smith".

Like Escape 시퀀스: {escape 'escape-character'}

예: select * from Artikel where Artikelname like 'The *%' {escape '*'}

이 예는 항목 이름이 'The *'로 시작하는 모든 항목을 제공합니다. 그러므로 *, ?, _, % 나점과 같이 보통 자리 표시자로 해석되는 문자도 찾을 수 있습니다.

외부 조인 Escape 시퀀스: {oj outer-join}

예: select 항목.* from {oj 항목 LEFT OUTER JOIN 주문 ON 항목.No=주문.ANR}

### 텍스트 필드 쿼리

To query the content of a text field, you must put the expression between single quotes. The distinction between uppercase and lowercase letters depends on the database in use. LIKE, by definition, is case-sensitive (though some databases don't interpret this strictly).

### 날짜 필드 쿼리

날짜 필드는 명확하게 날짜로 식별하기 위해 #Date#로 표시됩니다. 조건에서 문자 상수로 사용되는 date, time, date/time 는 SQL Escape Syntax 형식이거나 기본 SQL2 구문일 수 있습니다.

날짜 유형 요소 | SQL Escape 문법 #1 - 오래된 구문일 수 있음 | SQL Escape 구문 #2 | SQL2 구문
날짜 | {D'YYYY-MM-DD'} | {d 'YYYY-MM-DD'} | 'YYYY-MM-DD'
시간 | {D'HH:MM:SS'} | {t 'HH:MI:SS[.SS]'} | 'HH:MI:SS[.SS]'
날짜 시간 | {D'YYYY-MM-DD HH:MM:SS'} | {ts 'YYYY-MM-DD HH:MI:SS[.SS]'} | 'YYYY-MM-DD HH:MI:SS[.SS]'

예: select {d '1999-12-31'} from world.years

예: select * from mytable where years='1999-12-31'

All date expressions (date literals) must be enclosed with single quotation marks. (Consult the reference for the particular database and connector you are using for more details.)

### 예/아니요 필드 쿼리

예/아니요 필드를 쿼리하려면 dBASE 테이블에 대해 다음 구문을 사용합니다.

상태 | 쿼리 기준 | 예제
예 | dBASE 테이블에 대해서: 0과 같지 않은 임의의 값 | =1 은 예/아니요 필드의 상태가 "예"나 "작동"인 모든 데이터 레코드를 제공합니다 (검은색 선택 표시).
아니요 | . | =0 은 예/아니요 필드의 상태가 "아니요"나 "해제"인 모든 데이터 레코드를 제공합니다(선택 표시 없음).
Null | IS NULL | IS NULL은 예/아니요 필드의 상태가 예나 아니요가 아닌 모든 데이터 레코드를 제공합니다 (회색 선택 표시).

구문은 사용되는 데이터베이스 시스템에 따라 달라집니다. 예/아니요 필드는 세 가지가 아닌 두 가지 상태로 다르게 지정될 수도 있음에 유의해야 합니다.

### 매개 변수 쿼리

매개 변수 쿼리를 이용해 사용자는 런타임에 값을 입력할 수 있습니다. 이 값은 표시할 레코드를 선택하기 위한 기준 내에서 사용됩니다. 이러한 각 값에는 쿼리와 관련된 매개 변수 이름이 있습니다. 이 이름은 쿼리가 실행될 때 사용자에게 표시됩니다.

쿼리의 디자인 보기 및 SQL 보기에서 파라미터명 앞에는 콜론이 표시됩니다. 이 변수에는 어떤 값도 사용할 수 있습니다. 쿼리에 같은 값이 두 번 이상 있으면, 같은 파라미터명이 사용됩니다.

가장 간단한 예로, '같음' 과 일치하는 값을 입력하면 이름 앞에 콜론이 붙은 매개 변수 이름이 기준 영역에 입력됩니다. SQL 모드 에서는 WHERE "Field" = :Parameter_name 와 같이 입력되어야 합니다.

매개 변수 이름에는 <space>`!"$%^*()+={}[]@'~#<>?/, 과 같은 문자를 사용할 수 없습니다. 또한 필드명이나 SQL 예약어도 사용할 수 없습니다. 다만 별칭(alias)와는 같아도 됩니다.

특정 텍스트를 포함하는 레코드를 선택하는데 유용한 조건은 "LIKE '%' || :Part_of_field || '%'" 입니다. 이 조건을 사용하면 지정한 텍스트와 정확하게 일치하는 텍스트를 포함한 레코드를 선택합니다. 대소문자를 구분하지 않으려면 필드 항목에LOWER(Field_Name)을 사용하고, 조건으로 LIKE LOWER ( '%' || :Part_of_field || '%' ) 를 사용합니다. SQL 파서는 조건에 사용된 공백도 문자로 취급되므로 주의해야 합니다.SQL 모드에서는 LOWER ( "Field_Name" ) LIKE LOWER ( '%' || :Part_of_field || '%' ) 로 입력합니다.

하위 양식의 원본 데이터로 매개 변수 쿼리를 사용하여 표시되는 레코드를 제한할 수 있습니다.

### 매개 변수 입력

매개 변수 입력 대화 상자에 각 쿼리 매개 변수의 값을 입력하고 [확인] 버튼을 누르거나 Enter 키를 누릅니다.

사용자는 관련 기준에 해당하는 SQL 문법에서 허용하는 문자만 입력할 수 있습니다. 이는 기본 데이터베이스 시스템에 따라 다를 수 있습니다.

"%" (임의 문자열) 또는 "_" (임의 문자) 와 같은 SQL 와일드카드 문자를 사용하여 좀 더 복잡한 조건을 통해 레코드를 검색할 수 있습니다.

## SQL 모드

SQL는 "Structured Query Language"의 약어이며 관계 데이터베이스를 쿼리하려는 목적으로 업데이트하고 관리하는 지침을 설명합니다.

In LibreOffice you do not need any knowledge of SQL for most queries, since you do not have to enter the SQL code. If you create a query in the query designer, LibreOffice automatically converts your instructions into the corresponding SQL syntax. If, with the help of the Switch Design View On/Off button, you change to the SQL view, you can see the SQL commands for a query that has already been created.

You can formulate your query directly in SQL code. Note, however, that the special syntax is dependent upon the database system that you use.

If you enter the SQL code manually, you can create SQL-specific queries that are not supported by the graphical interface in the Query designer. These queries must be executed in native SQL mode.

By clicking the Run SQL command directly icon in the SQL view, you can formulate a query that is not processed by LibreOffice and sent directly to the database engine.