> 데이터 베이스 > MySQL 튜토리얼 > SQL 기초 | SELECT 문 | 데이터베이스 관리

SQL 기초 | SELECT 문 | 데이터베이스 관리

WBOY
풀어 주다: 2024-08-26 12:41:36
원래의
759명이 탐색했습니다.

소개

SQL Fundamentals | SELECT Statement | Database Management

SQL에서 가장 일반적으로 사용되는 문 중 하나인 SELECT 문은 테이블에서 데이터를 선택하는 데 사용됩니다. 본 실습에서는 SELECT를 학습하고 이를 실제 실무에 적용하는 방법을 학습합니다.

학습 목표

  • SELECT 기본 구문
  • 수학적 기호 조건
  • 그리고 또는 안으로
  • 와일드카드
  • 정렬
  • SQL 내장 함수 및 계산
  • 하위 쿼리 및 조인 쿼리

준비

시작하기 전에 관련 데이터 테이블을 다운로드하고 mysql_labex라는 데이터베이스를 생성합니다(3개 테이블: 부서, 직원, 프로젝트).

MySQL 서비스를 시작하고 루트로 로그인하세요.

으아아아

~/project/에 create-database.sql과 insert-data.sql 두 개의 파일이 있습니다.

파일에 데이터를 로드합니다. 데이터베이스를 구축하려면 MySQL 콘솔에 다음 명령을 입력해야 합니다.

으아아아

데이터베이스 연산문에서 가장 자주 사용되며 가장 중요하다고 여겨지는 것은 SELECT 쿼리입니다. 이전 실습에서는 SELECT * FROM table_name을 사용했습니다. 테이블의 모든 내용을 보려면 여러 위치에 있는 명령문을 사용하세요. SELECT는 다양한 기능을 포함하는 다양한 제약 조건의 키워드와 함께 사용할 수 있습니다. 본 실습에서는 이러한 용도를 자세히 소개합니다.

기본 SELECT 문

SELECT 문의 기본 형식:

으아아아

테이블의 모든 내용을 쿼리하려면 테이블의 모든 열이 쿼리됨을 나타내는 별표 *를 사용하여 열 이름을 쿼리하세요. 대부분의 경우 직원 테이블의 이름과 나이를 보는 것과 같이 테이블의 지정된 열만 보면 됩니다.

으아아아 으아아아

수학 기호 조건

SELECT 문에는 보다 정확한 쿼리를 수행하는 데 사용되는 WHERE 제약 조건이 있는 경우가 많습니다. WHERE 제약조건은 수학적 표기법(=, <,>,>=, <=)을 가질 수 있습니다. 방금 이름과 나이만 쿼리했는데 이제 약간 수정해 보겠습니다.

으아아아

25세 이상으로 결과 필터링:

으아아아

또는 Mary라는 직원의 이름, 나이, 전화번호를 찾으세요.

으아아아

결과:

으아아아

"그리고" & "또는"

WHERE 뒤에는 둘 이상의 제약 조건이 있을 수 있으며 이러한 조건의 논리적 관계에 따라 ORAND를 사용하여 연결할 수 있습니다.

필터 - 연령이 25세 미만이거나 30세 이상입니다

으아아아 으아아아

필터 - 연령은 25세 이상 30세 미만

으아아아

25세와 30세를 포함해야 하는 경우 age BETWEEN 25 AND 30을 사용하세요.

으아아아

안으로 & 안으로 있지 않음

키워드 IN ​​및 NOT IN은 특정 범위의 결과를 필터링하는 데 사용됩니다. 예를 들어 dpt3 또는 dpt4:
에서 사람을 찾고 싶습니다.

으아아아

NOT IN의 경우 다음 명령과 같이 dpt1이나 dpt3에 없는 사람을 가져옵니다.

으아아아 으아아아

와일드카드

키워드 LIKE는 SQL 문에서 와일드카드와 함께 사용되며 와일드카드는 알 수 없는 문자를 나타냅니다. SQL의 와일드카드는 _ 및 %입니다. _는 불특정 문자를 나타내고, %는 무한 불특정 문자

를 나타냅니다.

예를 들어 전화번호의 처음 네 자리가 1101이라는 것만 기억하고 마지막 두 자리를 잊어버린 경우 두 개의 _ 와일드카드로 바꿀 수 있습니다.

으아아아

여기에는 1101로 시작하는 전화번호가 있습니다.

으아아아

이름의 첫 글자만 기억하고 이름의 길이를 모르는 경우와 같이 무기한 문자 대신 % 와일드카드를 사용하세요.

으아아아

여기에는 J로 시작하는 이름이 있습니다.

으아아아

결과 정렬

쿼리 결과를 보다 체계적으로 정리하고 쉽게 따라갈 수 있도록 특정 규칙에 따라 정렬해야 할 수도 있습니다. ORDER BY가 유용합니다. 기본적으로 ORDER BY오름차순 배열이며 ASCDESC를 사용하면 오름차순 및 내림차순 결과도 얻을 수 있습니다. 주문하세요.

예를 들어 급여를 내림차순으로 정렬하는 SQL 문은 다음과 같습니다.

으아아아 으아아아

SQL 내장 함수 및 계산

SQL을 사용하면 테이블의 데이터를 계산할 수 있습니다. 이와 관련하여 SQL에는 SELECT의 결과를 수행하는 5개의 내장 함수가 있습니다.

Function: COUNT SUM AVG MAX MIN
For: count numbers sum up average maximum value minimum value

The COUNT function can be used for any data type (because it is only a count), while SUM and AVG functions can only calculate numeric data types. MAX and MIN can be used for numeric, string, or datetime data types.

For example, when we want to calculate the maximum and minimum value of salary, we use a statement like this:

SELECT MAX(salary) AS max_salary,MIN(salary) FROM employee;
로그인 후 복사

You may have noticed a tiny detail. Use AS keyword can rename value. E.g. Max value is renamed into max_salary:

MariaDB [mysql_labex]> SELECT MAX(salary) AS max_salary,MIN(salary) FROM employee;
+------------+-------------+
| max_salary | MIN(salary) |
+------------+-------------+
|       3600 |        2500 |
+------------+-------------+
1 row in set (0.000 sec)




</p>
<h2>
  
  
  Subqueries
</h2>

<p>The SELECT statements discussed above all involve data in only one table, but sometimes you have to process multiple tables to get the information you need. For example, you want to know a few projects done by the department where the employee named "Tom" is located. Employee information is stored in the employee table, but the project information is stored in the project table.</p>

<p>We can use subqueries to deal with such situations:<br>
</p>

<pre class="brush:php;toolbar:false">SELECT of_dpt,COUNT(proj_name) AS count_project FROM project
WHERE of_dpt IN
(SELECT in_dpt FROM employee WHERE name='Tom');
로그인 후 복사
MariaDB [mysql_labex]> SELECT of_dpt,COUNT(proj_name) AS count_project FROM project
    -> WHERE of_dpt IN
    -> (SELECT in_dpt FROM employee WHERE name='Tom');
+--------+---------------+
| of_dpt | count_project |
+--------+---------------+
| dpt4   |             2 |
+--------+---------------+
1 row in set (0.000 sec)
로그인 후 복사

Subqueries can also be extended to three, four or more layers.

Join

When dealing with multiple tables, the subquery is only useful when the results are from the same table. However, if you need to display data in two or more tables, you must use the join operation.

The basic idea is to connect two or more tables as a new table to operate, as follows:

SELECT id,name,people_num
FROM employee,department
WHERE employee.in_dpt = department.dpt_name
ORDER BY id;
로그인 후 복사

This result is the number of employees in each department, where employee id and name from the employee table, people_num from the department table:

MariaDB [mysql_labex]> SELECT id,name,people_num
    -> FROM employee,department
    -> WHERE employee.in_dpt = department.dpt_name
    -> ORDER BY id;
+----+------+------------+
| id | name | people_num |
+----+------+------------+
|  1 | Tom  |         15 |
|  2 | Jack |         12 |
|  3 | Rose |         10 |
|  4 | Jim  |         11 |
|  5 | Mary |         12 |
|  6 | Alex |         11 |
|  7 | Ken  |         11 |
|  8 | Rick |         10 |
|  9 | Joe  |         12 |
| 10 | Mike |         15 |
| 11 | Jobs |         12 |
| 12 | Tony |         10 |
+----+------+------------+
12 rows in set (0.000 sec)
로그인 후 복사

Another connection statement format is to use the JOIN ON syntax. The statement is the same as:

SELECT id,name,people_num
FROM employee JOIN department
ON employee.in_dpt = department.dpt_name
ORDER BY id;
로그인 후 복사

Result is the same.

Summary

In this lab we learned the basic use of SELECT statement:

  • Basic syntax
  • Mathmatical symbol conditions
  • AND OR IN
  • Wildcards
  • Sort
  • SQL built-in functions and calculations
  • Sunqueries and connection queries

? Practice Now: SQL's SELECT Statement


Want to Learn More?

  • ? Learn the latest MySQL Skill Trees
  • ? Read More MySQL Tutorials
  • ? Join our Discord or tweet us @WeAreLabEx

위 내용은 SQL 기초 | SELECT 문 | 데이터베이스 관리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿