Gan은 밤새 30,000 단어를 썼고 SQL 데이터베이스의 모든 명령, 기능 및 연산자를 명확하고 명확하게 설명했습니다.내용이 정말 풍부합니다.+3연속 칭찬을 수집하는 것이 좋습니다!

머리말

SQL을 대문자로 쓰는 습관이 익숙하지 않으실 수도 있지만, 실제 사양은 대문자로 하는 것이므로 점차 대문자 사용에 대한 제 설명에 익숙해져야 합니다. 다음의 모든 설명에서는 각 문장의 사용과 이해를 강화할 수 있도록 기본 문법, 사례, 연결 형태로 설명하겠습니다. 이 글은 작가가 밤새 편곡해서 쓴 글이니 3번 연속 칭찬해주시면 감사하겠습니다. 물론 이 기사를 통해 mysql의 모든 명령을 완전히 마스터할 수 있으며 더 이상 학습을 위해 구매하거나 어지럽힐 필요가 없습니다. 이 글의 내용은 데이터베이스의 생성, 백업 등의 초기 도입이 논의되었기 때문에 데이터베이스의 스크리닝 부분에 대해 일시적으로 설명 합니다
.
여기에 이미지 설명 삽입

MYSQL에서 가장 중요한 명령

SELECT 从数据库中提取数据
UPDATE  更新数据库中的数据
DELETE 从数据库中删除数据 
INSERT INTO 将新数据插入数据库
CREATE DATABASE 创建一个新的数据库
ALTER DATABASE 	修改数据库
CREATE TABLE 	创建一个新表
ALTER TABLE 	修改表
DROP TABLE		删除表
CREATE INDEX	创建索引(搜索键)
DROP INDEX	删除索引

SELECT 문

SELECT 문은 데이터베이스에서 데이터를 선택하는 데 사용됩니다. 리턴된 데이터는 결과 세트라는 결과 테이블에 저장됩니다.
SELECT 구문:

SELECT column1, column2, ...

여기서 column1, column2, ...는 데이터를 선택할 테이블의 필드 이름입니다. 테이블에서 사용 가능한 모든 필드를 선택하려면 다음 구문을 사용합니다.

SELECT * FROM table_name;

다음과 같은 Customers 데이터베이스가 이미 있다고 가정합니다.
여기에 이미지 설명 삽입
SELECT COLUMN EXAMPLE
다음 SQL 문은 "Customers" 테이블에서 "CustomerName" 및 "City" 열을 선택합니다.

SELECT CustomerName, City FROM Customers;

SELECT * 예제
다음 SQL 문은 "Customers" 테이블에서 모든 열을 선택합니다.

SELECT * FROM Customers;

연습 문제:
1- Customers 테이블의 모든 열을 가져옵니다.

SELECT * FROM Customers;

2- 고객 테이블에서 도시 선택 열을 작성합니다.

SELECT City FROM Customers;

3- 고객 테이블의 국가 열에서 모든 고유 값을 선택합니다. (나중에 얘기할게, 이해 안가도 상관없어)

SELECT DISTINCT	Country FROM Customers;

SELECT DISTINCT 다른 문 선택

SELECT DISTINCT 문은 고유한(다른) 값을 반환하는 데만 사용됩니다. 테이블에서 열에는 종종 많은 중복 값이 ​​포함되며 때로는 고유한(고유한) 값을 나열하고 싶을 수도 있습니다.
SELECT DISTINCT 구문

SELECT DISTINCT column1, column2, ...
FROM table_name;

또한 고객 데이터베이스를 가정해 보겠습니다.
여기에 이미지 설명 삽입
DISTINCT 없는 SELECT 예제
다음 SQL 문은 "Customers" 테이블의 "Country" 열에서 모든 값(중복 포함)을 선택합니다.

SELECT Country FROM Customers;

SELECT DISTINCT 예

SELECT DISTINCT Country FROM Customers;

다음 SQL 문은 고유한(다른) 고객 국가의 수를 나열합니다.

SELECT COUNT(DISTINCT Country) FROM Customers;

연습:
1- 테이블의 국가 열에서 모든 고유 값 고객을 선택합니다.

SELECT  DISTINC Country FROM Customers;

WHERE 쿼리 타겟팅 절

WHERE 절은 레코드를 필터링하는 데 사용됩니다. 지정된 조건을 충족하는 레코드만 추출하는 데 사용됩니다.
WHERE 구문

SELECT column1, column2, ...
FROM table_name
WHERE condition;

참고: WHERE 절은 SELECT 문에서만 사용되는 것이 아니라 UPDATE, DELETE 등에서도 사용됩니다!
다음과 같은 Customers와 같은 데이터베이스가 있다고 가정해 보겠습니다.
여기에 이미지 설명 삽입
WHERE 절 예제
다음 SQL 문은 "Customers" 테이블의 "Mexico" 국가에서 모든 고객을 선택합니다.

SELECT * FROM Customers
WHERE Country='Mexico';

텍스트 및 숫자 필드
SQL에서는 텍스트 값을 작은따옴표로 묶어야 합니다(대부분의 데이터베이스 시스템에서는 큰따옴표도 허용함). 그러나 숫자 필드는 따옴표로 묶지 않아야 합니다.

SELECT * FROM Customers
WHERE CustomerID=1;

WHERE 절의 연산자
WHERE 절에 다음 연산자를 사용할 수 있습니다.
여기에 이미지 설명 삽입
이러한 기호의 사용을 하나씩 시연할 수 있습니다. 인내심
을 갖고 Product라는 데이터베이스가 있다고 가정합니다.
여기에 이미지 설명 삽입

가격이 18인 모든 제품 선택(=)

SELECT * FROM Products
WHERE Price = 18;       

가격이 30(>)보다 큰 모든 제품을 선택하십시오.

SELECT * FROM Products
WHERE Price > 30;

가격이 30(<) 미만인 제품을 모두 선택하십시오.

SELECT * FROM Products
WHERE Price < 30;

가격이 30(>= ) 이상인 모든 제품을 선택하십시오.

SELECT * FROM Products
WHERE Price >= 30;

가격이 30( <= ) 이하인 제품을 모두 선택하십시오.

SELECT * FROM Products
WHERE Price <= 30;

가격이 18과 같지 않은 모든 제품을 선택하십시오(!=에 해당).

SELECT * FROM Products
WHERE Price <> 18;

가격이 50에서 60 사이인 모든 제품 선택

SELECT * FROM Products
WHERE Price BETWEEN 50 AND 60;

위의 고객 데이터베이스에서 문자로 시작하는 모든 도시를 검색하십시오.

SELECT * FROM Customers
WHERE City LIKE 's%';

고객 데이터베이스에서 파리와 런던의 모든 고객 찾기

SELECT * FROM Customers
WHERE City IN ('Paris','London');

위는 모든 기호의 데모입니다.
통합을 위해 몇 가지 연습 을 더 해보겠습니다(위의 고객을 사용함).
1- City 열 값이 "Berlin"인 모든 레코드를 선택합니다.

SELECT * FROM Customers
WHERE City='Berlin';

2- 도시가 "Berlin"이 아닌 모든 레코드를 선택하려면 NOT 키워드를 사용하십시오.

SELECT * FROM Customers
WHERE NOT City ='Berlin';

3- CustomerID 열 값이 32인 모든 레코드를 선택합니다.

SELECT * FROM Customers
WHERE CustomerID =12;

AND, OR 및 NOT 연산자

WHERE 절은 AND, OR 및 NOT 연산을 결합할 수 있습니다. AND 및 OR 연산은 여러 조건을 기반으로 레코드를 필터링하는 데 사용됩니다
. AND 연산은 모든 조건이 충족되고 AND가 참인 경우 레코드를 표시합니다.
OR 연산은 OR 조건 중 하나라도 참인 경우 레코드를 표시합니다.
기록하기에 조건이 올바르지 않으면 NOT 연산이 표시됩니다.
AND 구문

SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;

OR 구문

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;

NOT 구문

SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;

다음 "Customers" 테이블도 가정해 보겠습니다.
여기에 이미지 설명 삽입
AND 예제
다음 SQL 문은 국가가 "Germany"이고 도시가 "Berlin"인 Customers의 모든 필드를 선택합니다.

SELECT * FROM Customers
WHERE Country='Germany' AND City='Berlin';

또는 예
도시가 "Berlin" 또는 "München"인 모든 "Customers"를 선택하십시오.

SELECT * FROM Customers
WHERE City='Berlin' OR City='München';

NOT
국가가 "독일"이 아닌 "고객"에서 필드를 선택하는 예:

SELECT * FROM Customers
WHERE NOT Country='Germany';

AND, OR 및 NOT
을 결합하여 국가가 "독일""이고 도시가 "베를린" 또는 "뮌헨"이어야 하는 "고객"의 모든 필드를 선택합니다(복잡한 표현식을 구성하려면 괄호 사용).

SELECT * FROM Customers
WHERE Country='Germany' AND (City='Berlin' OR City='München');

국가가 "독일"이나 "미국"이 아닌 "고객"에서 모든 필드를 선택하십시오.

SELECT * FROM Customers
WHERE NOT Country='Germany' AND NOT Country='USA';

연습
City 열 값이 'Berlin'이고 PostalCode 열 값이 12209인 모든 레코드를 선택합니다.

SELECT * FROM Customers
WHERE City = 'Berlin'
AND PostalCode= 12209;

ORDER BY 키워드

ORDER BY 키워드는 결과 집합을 오름차순 또는 내림차순으로 정렬하는 데 사용됩니다. ORDER BY 기본적으로 키워드는 레코드를 오름차순으로 정렬합니다. 레코드를 내림차순으로 정렬하려면 DESC 키워드를 사용하십시오.
ORDER BY 구문

SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;

또한 다음과 같은 "Customers" 테이블이 있다고 가정해 보겠습니다.
여기에 이미지 설명 삽입
ORDER BY 예
"Customers" 테이블에서 "국가" 열을 기준으로 정렬된 모든 고객을 선택합니다.

SELECT * FROM Customers
ORDER BY Country;

ORDER BY DESC 예
"국가" 열을 기준으로 DESCENDING으로 정렬된 "고객" 테이블에서 모든 고객을 선택합니다.

SELECT * FROM Customers
ORDER BY Country DESC;

ORDER BY 다중 열 예
"국가" 및 "고객 이름" 열을 기준으로 정렬된 "고객" 테이블에서 모든 고객을 선택합니다. 즉, 국가별로 정렬되지만 일부 행에 동일한 국가가 있는 경우 CustomerName별로 정렬됩니다.

SELECT * FROM Customers
ORDER BY Country, CustomerName;

"국가" 오름차순 및 "CustomerName" 열 내림차순으로 정렬된 "고객" 테이블에서 모든 고객을 선택합니다.

SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;

연습
고객 테이블에서 모든 레코드를 선택하고 결과를 도시 열을 기준으로 알파벳순으로 정렬합니다.

SELECT * FROM Customers
ORDER BY City;

INSERT INTO 삽입문

INSERT INTO 문은 테이블에 새 레코드를 삽입하는 데 사용됩니다.
INSERT 구문
INSERT INTO 문은 두 가지 방법으로 작성할 수 있습니다.
1- 삽입할 열 이름과 값을 지정합니다.

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

2- 테이블의 모든 열에 대한 값을 추가하려는 경우 SQL 쿼리에서 열 이름을 지정할 필요가 없습니다. 그러나 값이 테이블의 열과 같은 순서인지 확인하십시오. 여기서 INSERT INTO 구문은 다음과 같습니다.

INSERT INTO table_name
VALUES (value1, value2, value3, ...);

여전히 동일한 Customers 테이블이 있다고 가정해 보겠습니다.
여기에 이미지 설명 삽입
INSERT 예제
다음 SQL 문은 "Customers" 테이블에 새 레코드를 삽입합니다.

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');

실행 결과 다음과 같이 표시
여기에 이미지 설명 삽입
됩니다. CustomerID 필드에 숫자를 삽입하지 않은 것을 눈치채셨나요? CustomerID 열은 새 레코드가 테이블에 삽입될 때 자동으로 생성되는 자동 증가 필드입니다.
지정된 열에만 데이터 삽입
다음 SQL 문은 "CustomerName", "City" 및 "Country" 열에만 새 레코드를 삽입합니다(CustomerID는 자동으로 업데이트됨).

INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');

실행 후 다음이 표시됩니다.
여기에 이미지 설명 삽입
연습:
테이블에 새 레코드를 삽입합니다.

INSERT INTO Customers 
(

CustomerName, 
Address, 
City, 
PostalCode,
Country
)

VALUES
 
(

'Hekkan Burger',
'Gateveien 15',
'Sandnes',
'4306',
'Norway'
)
;

NULL 빈 값

NULL 값이 있는 필드는 값이 없는 필드입니다. 테이블의 필드가 선택 사항인 경우 필드에 값을 추가하지 않고 새 레코드를 삽입하거나 레코드를 업데이트할 수 있습니다. 그러면 필드가 NULL 값으로 저장됩니다.
참고 : NULL 값은 0 값 또는 공백이 포함된 필드와 동일하지 않습니다. NULL 값이 있는 필드는 레코드 생성 시 공백으로 남겨지는 필드입니다!
NULL 값을 테스트하는 방법은 무엇입니까?
=, < 또는 <>와 같은 비교 연산자는 NULL 값을 테스트하는 데 사용할 수 없습니다. 대신 IS NULL 및 IS NOT NULL 연산자를 사용해야 합니다.
IS NULL 구문

SELECT column_names
FROM table_name
WHERE column_name IS NULL;

IS NOT NULL 구문

SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;

"Customers" 테이블을 예로 들어 보겠습니다.
여기에 이미지 설명 삽입

IS NULL 연산자
는 "주소" 필드에 NULL 값이 있는 모든 고객을 나열합니다.

SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NULL;

: NULL 값을 찾으려면 항상 IS NULL을 사용하십시오.
IS NOT NULL 연산자
IS NOT NULL 연산자는 null이 아닌 값(NOT NULL 값)을 테스트하는 데 사용됩니다.
"주소" 필드에 값이 있는 모든 고객을 나열합니다.

SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NOT NULL;

연습:
열이 비어 있는 고객의 모든 레코드 PostalCode를 선택합니다.

SELECT * FROM Customers
WHERE PostalCode IS NULL;

업데이트 업데이트 문

UPDATE 문은 테이블의 기존 레코드를 수정하는 데 사용됩니다.
업데이트 구문:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

참고: 테이블의 레코드를 업데이트할 때 주의하십시오! WHERE 문의 UPDATE 절에 유의하십시오. WHERE 절은 업데이트해야 하는 레코드를 지정합니다. WHERE 절을 생략하면 테이블의 모든 레코드가 업데이트됩니다!
"Customers" 테이블을 예로 들어 보겠습니다.
여기에 이미지 설명 삽입
테이블
업데이트 CustomerID = 1로 사용자 이름 및 도시 데이터 업데이트

UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;

업데이트 후는 다음과 같습니다.
여기에 이미지 설명 삽입
여러 레코드 업데이트
WHERE 절은 업데이트할 레코드 수를 결정합니다.
국가가 "Mexico"인 모든 레코드에 대해 ContactName을 "Juan"으로 업데이트합니다.

UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';

업데이트 후에는 다음과 같이 됩니다.
여기에 이미지 설명 삽입
업데이트 경고!
레코드를 업데이트할 때 주의하십시오. WHERE 절을 생략하면 모든 레코드가 업데이트됩니다!
예:

UPDATE Customers
SET ContactName='Juan';

결과는 다음과 같습니다.
여기에 이미지 설명 삽입
연습:
City 테이블에 있는 모든 레코드의 Customers 열을 업데이트합니다.

UPDATE Customers
SET City = 'Oslo';

DELETE 삭제 문

DELETE 문은 테이블의 기존 레코드를 삭제하는 데 사용됩니다.
구문 삭제

DELETE FROM table_name WHERE condition;

참고: 테이블에서 레코드를 삭제할 때 주의하십시오! WHERE 문의 DELETE 절에 유의하십시오. WHERE 절은 삭제할 레코드를 지정합니다. WHERE 절을 생략하면 테이블의 모든 레코드가 삭제됩니다!
하하하하, 다음과 같이 "Customers" 테이블을 예로 들어 보겠습니다.
여기에 이미지 설명 삽입
delete example
"Customers" 테이블에서 "Alfreds Futterkiste" 고객을 삭제합니다.

DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';

따라서 다음과 같이 됩니다.
여기에 이미지 설명 삽입
모든 레코드
삭제 테이블을 삭제하지 않고 테이블의 모든 행을 삭제할 수 있습니다. 이는 테이블 구조, 속성 및 인덱스가 동일하게 유지됨을 의미합니다.

DELETE FROM table_name;

예: "Customers" 테이블의 모든 행을 삭제하지만 테이블은 삭제하지 않습니다.

DELETE FROM Customers;

연습 : 고객 테이블에서 국가 값이 "노르웨이"인 모든 레코드를 삭제합니다.

DELETE FROM Customers
WHERE Country = 'Norway';

TOP, LIMIT, FETCH FIRST 또는 ROWNUM 제한 절

SELECT TOP 절
SELECT TOP 절은 반환할 레코드 수를 지정하는 데 사용됩니다. SELECT TOP 절은 수천 개의 레코드가 있는 큰 테이블에서 유용합니다. 많은 수의 레코드를 반환하면 성능에 영향을 줄 수 있습니다.
참고: 모든 데이터베이스 시스템이 SELECT TOP 절을 지원하는 것은 아닙니다. MySQL은 제한된 수의 레코드를 선택하기 위해 LIMIT 절을 지원하지만 Oracle은 FETCH FIRST n ROWSONLYROWNUM
Server/MS 액세스 구문을 사용합니다.

SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;

MySQL 구문:

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;

Oracle 12 구문:

SELECT column_name(s)
FROM table_name
ORDER BY column_name(s)
FETCH FIRST number ROWS ONLY;


여기에 이미지 설명 삽입
예를 들어 "Customers" 테이블 의 TOP, LIMIT 및 FETCH FIRST에 대한 다음 예
는 "Customers" 테이블(SQL Server/MS Access용)에서 처음 세 개의 레코드를 선택합니다.

SELECT TOP 3 * FROM Customers;

MySQL에 해당하는 예:

SELECT * FROM Customers
LIMIT 3;

Oracle에 해당하는 예:

SELECT * FROM Customers
FETCH FIRST 3 ROWS ONLY;

TOP PERCENT
"Customers" 테이블에서 상위 50% 레코드를 선택하는 예(SQL Server/MS Access용):

SELECT TOP 50 PERCENT * FROM Customers;

Oracle에 해당하는 예:

SELECT * FROM Customers
FETCH FIRST 50 PERCENT ROWS ONLY;

WHERE 절
을 추가하여 국가가 "독일"인 "고객" 테이블에서 처음 세 개의 레코드를 선택합니다(SQL Server/MS Access의 경우).

SELECT TOP 3 * FROM Customers
WHERE Country='Germany';

MySQL에 해당하는 예

SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;

Oracle에 해당하는 예:

SELECT * FROM Customers
WHERE Country='Germany'
FETCH FIRST 3 ROWS ONLY;

최대값과 최소값을 찾는 MIN() 및 MAX() 함수

MIN() 함수는 선택한 열의 최소값을 반환합니다. MAX() 함수는 선택한 열의 최대값을 반환합니다.
MIN() 구문

SELECT MIN(column_name)
FROM table_name
WHERE condition;

MAX() 구문

SELECT MAX(column_name)
FROM table_name
WHERE condition;

이제 다음과 같이 새 테이블 Product로 변경합니다.
여기에 이미지 설명 삽입
MIN() 예제
가장 저렴한 제품의 가격을 찾습니다.

SELECT MIN(Price) AS SmallestPrice
FROM Products;

디스플레이는 다음과 같습니다.
여기에 이미지 설명 삽입
MAX() 예제
가장 비싼 제품의 가격을 찾습니다.

SELECT MAX(Price) AS LargestPrice
FROM Products;

다음과 같이 반환됩니다.
여기에 이미지 설명 삽입
연습:
MIN 함수를 사용하여 Price 열의 최소값이 있는 레코드를 선택합니다.

SELECT  MIN(Price) FROM  Products;

COUNT(), AVG() 및 SUM() 함수

COUNT() 함수는 지정된 기준과 일치하는 행 수를 반환합니다.
COUNT() 구문

SELECT COUNT(column_name)
FROM table_name
WHERE condition;

AVG() 함수는 숫자 열의 평균을 반환합니다.
AVG() 구문

SELECT AVG(column_name)
FROM table_name
WHERE condition;

SUM() 함수는 숫자 열의 합계를 반환합니다.
SUM() 구문

SELECT SUM(column_name)
FROM table_name
WHERE condition;

여전히 테이블 product
여기에 이미지 설명 삽입
COUNT() 예제
를 사용하여 제품 수를 알아보겠습니다.

SELECT COUNT(ProductID)
FROM Products;

참고: NULL 값은 계산되지 않습니다.
AVG() 예제
모든 제품의 평균 가격 찾기:

SELECT AVG(Price)
FROM Products;

참고: NULL 값은 무시됩니다.
이제 다음과 같은 "OrderDetails" 테이블이 있다고 가정합니다.
여기에 이미지 설명 삽입
SUM() 예제
"OrderDetails" 테이블에서 "Quantity" 필드의 합계를 찾습니다.

SELECT SUM(Quantity)
FROM OrderDetails;

다음과 같이 반환됩니다.
여기에 이미지 설명 삽입
참고: NULL 값은 무시됩니다.
연습 :
Price 값이 18로 설정된 레코드 수를 반환합니다 .

SELECT COUNT(*) FROM Products
WHERE Price = 18;

좋아요 연산자

LIKE 연산자는 WHERE 절에서 열에서 지정된 패턴을 검색하는 데 사용됩니다. LIKE 연산자와 함께 자주 사용되는 두 개의 와일드카드 문자가 있습니다.
하나 이상의 문자를 나타내는 퍼센트 기호(%) 및 단일 문자
의 경우 밑줄( ) 이지만 참고: MS Access는 별표(*)를 사용합니다. 퍼센트 기호(%) 대신에 밑줄( ) 대신 물음표(?) 사용 물론 퍼센트 기호와 밑줄도 함께 사용할 수 있습니다! LIKE 구문


SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;

팁: AND 또는 OR 연산자를 사용하여 여러 조건을 결합할 수도 있습니다.
다음은 "%" 및 "_" 와일드카드가 있는 다양한 LIKE 연산자를 보여주는 몇 가지 예입니다
여기에 이미지 설명 삽입
. 해당 의미는 다음과 같습니다.
행 1: 행으로 시작하는 모든 필드
일치 2: 행으로 끝나는 모든 필드
일치: 다음과 일치하는 모든 필드 "또는"
행 4: 두 번째 위치에 "r"이 있는
값 찾기 행 5: "a"로 시작하고 길이가 2자 이상인
값 찾기 행 6: "a"로 시작하는 값 찾기 3자 이상이어야 합니다
. 7행: "a"로 시작하고 "o"로 끝나는 값을 찾습니다. 예를
들어 다음과 같은 Customers 테이블이 있습니다.
여기에 이미지 설명 삽입

LIKE 예
CustomerName이 "a"로 시작하는 모든 고객을 선택하려면:

SELECT * FROM Customers
WHERE CustomerName LIKE 'a%';

CustomerName이 "a"로 끝나는 모든 고객을 선택하십시오.

SELECT * FROM Customers
WHERE CustomerName LIKE '%a';

CustomerName에 "또는"이 있는 모든 고객을 선택하십시오.

SELECT * FROM Customers
WHERE CustomerName LIKE '%or%';

CustomerName에서 두 번째 위치가 "r"인 모든 고객을 선택하십시오.

SELECT * FROM Customers
WHERE CustomerName LIKE '_r%';

CustomerName이 "a"로 시작하고 길이가 3자 이상인 모든 고객을 선택하십시오.

SELECT * FROM Customers
WHERE CustomerName LIKE 'a__%';

ContactName이 "a"로 시작하고 "o"로 끝나는 모든 고객을 선택하십시오.

SELECT * FROM Customers
WHERE ContactName LIKE 'a%o';

CustomerName이 "a"로 시작하지 않는 모든 고객을 선택하십시오.

SELECT * FROM Customers
WHERE CustomerName NOT LIKE 'a%';

와일드카드 *? ! 기다리다

이것은 영어 문서에 있는 모든 와일드카드 문자에 대한 설명입니다. (정말 번역하고 싶지 않습니다. 직접 보겠습니다.)
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여전히 다음과 같은 "Customers" 테이블이 있다고 가정합니다.
여기에 이미지 설명 삽입
% 와일드카드를 사용하여
City가 시작하는 모든 고객을 선택합니다 . "베르"로:

SELECT * FROM Customers
WHERE City LIKE 'ber%';

도시에 "es"가 포함된 모든 고객을 선택하십시오.

SELECT * FROM Customers
WHERE City LIKE '%es%';

다음과 같이 반환됩니다.
여기에 이미지 설명 삽입
_ 와일드카드를 사용하여
도시가 "ondon"이 뒤에 오는 임의의 문자로 시작하는 모든 고객을 선택합니다.

SELECT * FROM Customers
WHERE City LIKE '_ondon';

도시가 "L"로 시작하고 그 뒤에 임의의 문자, "n", 임의의 문자, "on"이 오는 모든 고객을 선택하십시오.

SELECT * FROM Customers
WHERE City LIKE 'L_n_on';

[charlist] 와일드카드를 사용하여
도시가 "b", "s" 또는 "p"로 시작하는 모든 고객을 선택합니다.

SELECT * FROM Customers
WHERE City LIKE '[bsp]%';

도시가 "a", "b" 또는 "c"로 시작하는 모든 고객을 선택하십시오.

SELECT * FROM Customers
WHERE City LIKE '[a-c]%';

[!charlist] 와일드카드를 사용하여
도시가 "b", "s" 또는 "p"로 시작하지 않는 모든 고객을 선택합니다.

SELECT * FROM Customers
WHERE City LIKE '[!bsp]%';

또는

SELECT * FROM Customers
WHERE City NOT LIKE '[bsp]%';

IN 연산자

IN 연산자를 사용하면 WHERE 절에 여러 값을 지정할 수 있습니다.
IN 연산은 여러 속기 OR 조건을 위한 것입니다.
IN 구문

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

다시 "고객" 테이블을 예로 들어 보겠습니다.
여기에 이미지 설명 삽입
IN 연산자 예
'독일', '프랑스', '영국'에 있는 모든 고객을 선택하려면:

SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');

'독일', '프랑스', '영국'에 있는 모든 고객을 선택하지 않으려면 선택:

SELECT * FROM Customers
WHERE Country NOT IN ('Germany', 'France', 'UK');

공급자와 동일한 국가의 모든 고객을 선택하십시오.

SELECT * FROM Customers
WHERE Country IN (SELECT Country FROM Suppliers);

다음과 같이 반환
여기에 이미지 설명 삽입

BETWEEN 연산자

BETWEEN 연산자는 주어진 범위 내에서 값을 선택합니다. 값은 숫자, 텍스트 또는 날짜가 될 수 있습니다.
BETWEEN 구문

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

우리는 다음 제품 테이블을 사용합니다.
여기에 이미지 설명 삽입
예 사이
에서 가격이 10에서 20 사이인 모든 제품을 선택합니다.

SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20;

이전 예의 범위를 벗어난 제품을 표시하려면 NOT BETWEEN을 사용하십시오.

SELECT * FROM Products
WHERE Price NOT BETWEEN 10 AND 20;

숫자 사이
가격이 10에서 20 사이인 모든 제품을 선택하십시오. 또한 CategoryID가 1,2 또는 3인 제품을 표시하지 마십시오.

SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20
AND CategoryID NOT IN (1,2,3);

텍스트 값 사이
문은 Carnarvon Tigers와 Mozzarella di Giovanni 사이에서 ProductName이 있는 모든 제품을 선택합니다.

SELECT * FROM Products
WHERE ProductName BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni'
ORDER BY ProductName;

Carnarvon Tigers와 Chef Anton's Cajun Seasoning 중 제품 이름이 있는 모든 제품을 선택하십시오.

SELECT * FROM Products
WHERE ProductName BETWEEN "Carnarvon Tigers" AND "Chef Anton's Cajun Seasoning"
ORDER BY ProductName;

NOT BETWEEN 텍스트 값
ProductName이 Carnarvon Tigers와 Mozzarella di Giovanni 사이에 있지 않은 모든 제품을 선택하십시오.

SELECT * FROM Products
WHERE ProductName NOT BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni'
ORDER BY ProductName;

이제 다음과 같은 "주문" 테이블이 있다고 가정해 보겠습니다. 날짜 사이의
여기에 이미지 설명 삽입

OrderDate가 '01-July-1996'과 '31-July-1996' 사이에 있는 모든 주문을 선택하십시오.

SELECT * FROM Orders
WHERE OrderDate BETWEEN #07/01/1996# AND #07/31/1996#;

또는 사용:

SELECT * FROM Orders
WHERE OrderDate BETWEEN '1996-07-01' AND '1996-07-31';

AS 별칭 사용

별칭 열 구문

SELECT column_name AS alias_name
FROM table_name;

별칭 테이블 구문

SELECT column_name(s)
FROM table_name AS alias_name;

이제 여전히 다음과 같은 cusstorm 테이블이 있다고 가정해 보겠습니다. oeder 테이블 열에
여기에 이미지 설명 삽입
대한 별칭 예제도 있습니다. 두 개의 별칭을 만듭니다. 하나는 CustomerID 열이고 다른 하나는 CustomerName 열입니다.
여기에 이미지 설명 삽입

SELECT CustomerID AS ID, CustomerName AS Customer
FROM Customers;

CustomerName 열과 ContactName 열에 대해 하나씩 두 개의 별칭을 만듭니다. 참고: 별칭에 공백이 포함된 경우 큰따옴표 또는 대괄호가 필요합니다.

SELECT CustomerName AS Customer, ContactName AS [Contact Person]
FROM Customers;

4개의 열(Address, PostalCode, City 및 Country)을 결합하는 "Address"라는 별칭을 만듭니다.

SELECT CustomerName, Address + ', ' + PostalCode + ' ' + City + ', ' + Country AS Address
FROM Customers;

참고: 위의 SQL 문이 MySQL에서 작동하도록 하려면 다음 명령을 사용하십시오.

SELECT CustomerName, CONCAT(Address,', ',PostalCode,', ',City,', ',Country) AS Address
FROM Customers;

테이블 별칭의 예
CustomerID=4(Around Horn)인 고객의 모든 주문을 선택합니다. "Customers" 및 "Orders" 테이블을 사용하여 테이블에 각각 "c" 및 "o"라는 별칭을 부여합니다(여기에서는 별칭을 사용하여 SQL을 단축합니다).

SELECT o.OrderID, o.OrderDate, c.CustomerName
FROM Customers AS c, Orders AS o
WHERE c.CustomerName='Around the Horn' AND c.CustomerID=o.CustomerID;

다음 SQL 문은 위와 동일하지만 별칭이 없습니다.

SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName
FROM Customers, Orders
WHERE Customers.CustomerName='Around the Horn' AND Customers.CustomerID=Orders.CustomerID;

별칭은 다음과 같은 경우에 유용합니다.
1. 쿼리에 여러 테이블이 포함 되어
있는 경우 2. 쿼리에 여러 테이블이 포함 된 경우
3. 쿼리에 사용되는 함수
4. 열 이름이 크거나 가독성이 좋지 않은 경우
5. 둘 이상의 열이 모두 결합된 경우

연결 조인

JOIN 절은 둘 이상의 테이블 사이의 관련 열을 기반으로 행을 조인하는 데 사용됩니다. 이제 다음과 같은 "Orders" 테이블이 있고 다음 과 같은 "Customers"
테이블이 있다고 가정합니다. "Orders" 테이블 의 "CustomerID" 열은 "Customers" 테이블의 "CustomerID"를 참조합니다. 위의 두 테이블 간의 관계는 "CustomerID" 열입니다. INNER JOIN을 사용하여 두 테이블에서 값이 일치하는 레코드를 선택합니다.
여기에 이미지 설명 삽입

여기에 이미지 설명 삽입


SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;

다음과 같은 다른 유형의 SQL JOIN을 반환합니다.
여기에 이미지 설명 삽입

여기에 이미지 설명 삽입

INNER JOIN 내부 조인 키워드

INNER JOIN 키워드는 두 테이블 모두에서 일치하는 값을 가진 레코드를 선택합니다.
문법:

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

이해할 수 있는 그림 그리기: 주문 테이블 고객 테이블
여기에 이미지 설명 삽입
이 있다고 가정 합니다. INNER JOIN 예 고객 정보가 포함된 모든 주문을 선택합니다.
여기에 이미지 설명 삽입

여기에 이미지 설명 삽입

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;


여기에 이미지 설명 삽입
JOIN 3개 테이블 을 반환
하여 고객 및 배송업체 정보가 포함된 모든 주문을 선택합니다.

SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
FROM ((Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);

다음과 같이 반환
여기에 이미지 설명 삽입

LEFT JOIN 왼쪽 조인 키워드

LEFT JOIN 키워드는 왼쪽 테이블(table1)의 모든 레코드와 오른쪽 테이블(table2)의 일치하는 레코드를 반환합니다. 일치하는 항목이 없으면 결과는 오른쪽에 0개의 레코드입니다.
왼쪽 조인 구문

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

그림으로 이해할 수 있습니다.
여기에 이미지 설명 삽입
우리는 여전히 고객 테이블을 사용합니다:
여기에 이미지 설명 삽입
주문 테이블
여기에 이미지 설명 삽입
LEFT JOIN 예
모든 고객과 그들이 가질 수 있는 모든 주문을 선택하십시오:

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerName;

다음과 같이 반환
여기에 이미지 설명 삽입

RIGHT JOIN 오른쪽 조인 키워드

문법

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

이제 우리
여기에 이미지 설명 삽입
는 다음과 같이 주문 테이블을 사용합니다
여기에 이미지 설명 삽입
.또한
여기에 이미지 설명 삽입
모든 직원과 그들이 했을 수 있는 모든 주문을 반환하는 직원 테이블이 있습니다.

SELECT Orders.OrderID, Employees.LastName, Employees.FirstName
FROM Orders
RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
ORDER BY Orders.OrderID;

FULL OUTER JOIN 키워드

FULL OUTER JOIN은 FULL JOIN과 동일합니다.
구문은 다음과 같습니다.

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name
WHERE condition;

그림으로 이해할 수 있습니다.
여기에 이미지 설명 삽입
우리는 여전히 고객 테이블
여기에 이미지 설명 삽입
과 주문 테이블 을 사용
여기에 이미지 설명 삽입
하여 모든 고객과 모든 주문을 선택한다고 가정합니다.

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

다음과 같이 반환
여기에 이미지 설명 삽입

자체 조인 키워드

문법

SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;


여기에 이미지 설명 삽입
같은 도시의 고객과 일치하는 고객 테이블이 있다고 가정해 보겠습니다 .

SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City
FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City
ORDER BY A.City;

다음과 같이 반환
여기에 이미지 설명 삽입

GROUP BY 문

GROUP BY 문은 "각 국가의 고객 수 찾기"와 같이 동일한 값을 가진 행을 요약 행으로 그룹화합니다.
GROUP BY 문은 일반적으로 집계 함수( COUNT(), MAX(), MIN(), SUM(), AVG())와 함께 사용하여 결과 집합을 하나 이상의 열로 그룹화합니다.
문법:

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);


여기에 이미지 설명 삽입
각 국가의 고객 수를 나열하는 고객 테이블이 여전히 있다고 가정합니다 .

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;

각 국가의 고객 수가 가장 높은 것에서 가장 낮은 것으로 정렬되어 나열됩니다.

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;

HAVING 절

문법:

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);


여기에 이미지 설명 삽입
각 국가의 고객 수 를 나열하는 아래에 여전히 cusstorm 테이블이 있다고 가정합니다 . 고객이 5명 이상인 국가만 포함:

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;

각 국가의 고객 수가 가장 높은 것에서 가장 낮은 것으로 정렬되어 나열됩니다(5명 이상의 고객이 있는 국가만 포함됨).

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
ORDER BY COUNT(CustomerID) DESC;

EXISTS 연산자

EXISTS 연산자는 하위 쿼리에 레코드가 있는지 테스트하는 데 사용됩니다.
EXISTS 연산자는 하위 쿼리가 하나 이상의 레코드를 반환하는 경우 true를 반환합니다.
문법

SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);


여기에 이미지 설명 삽입
제품 테이블 공급자 테이블 을 계속 사용한다고 가정 합니다
여기에 이미지 설명 삽입
. 예를 들어
TRUE를 반환하고 제품 가격이 20보다 작은 공급자를 나열합니다.

SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.supplierID AND Price < 20);

다음과 같이
여기에 이미지 설명 삽입
반환합니다. TRUE를 반환하고 제품 가격이 22인 공급자를 나열합니다.

SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.supplierID AND Price = 22);

다음과 같이 반환합니다.
여기에 이미지 설명 삽입

메모

한 줄 주석은 -.
-로 시작하고 줄 끝 사이의 모든 텍스트는 무시됩니다(실행되지 않음).
예:

--Select all:
SELECT * FROM Customers;

또 다른 예

SELECT * FROM Customers -- WHERE City='Berlin';

여러 줄 주석 /* 및 /./ 와 * /
사이의 모든 텍스트 는 무시됩니다.
예:

/*Select all the columns
of all the records
in the Customers table:*/
SELECT * FROM Customers;

또 다른 예

/*SELECT * FROM Customers;
SELECT * FROM Products;
SELECT * FROM Orders;
SELECT * FROM Categories;*/
SELECT * FROM Suppliers;

명령문의 일부를 무시합니다.
예:

SELECT CustomerName, /*City,*/ Country FROM Customers;

또 다른 예

SELECT * FROM Customers WHERE (CustomerName LIKE 'L%'
OR CustomerName LIKE 'R%' /*OR CustomerName LIKE 'S%'
OR CustomerName LIKE 'T%'*/ OR CustomerName LIKE 'W%')
AND Country='USA'
ORDER BY CustomerName;

운영자

사실, 이 섹션에서는 이미 이전 연산자를 시연했습니다. 다시 말해.
산술 연산자 에는 20+30 찾기와 같은
여기에 이미지 설명 삽입
데모 부분 이 있습니다.

SELECT 30 + 20;

나눗셈(3을 반환)

SELECT 30 / 10;

나머지를 가져 가라 (2 반환)

SELECT 17 % 5;


여기에 이미지 설명 삽입
비교 연산자
_

SELECT * FROM Products
WHERE Price = 18;     

같지 않다

SELECT * FROM Products
WHERE Price <> 18;

크거나 같음

SELECT * FROM Products
WHERE Price >= 30;

рекомендация

отblog.csdn.net/weixin_46211269/article/details/119814777