T-SQL-빠른 가이드
1970 년대에 IBM이 개발 한 구조화 된 영어 쿼리 언어 인 'SEQUEL'이라는 제품은 구조적 쿼리 언어를 의미하는 'SQL'로 이름이 변경되었습니다.
1986 년 SQL은 ANSI (American National Standards Institute)의 승인을 받았으며 1987 년에는 ISO (International Standards Organization)의 승인을 받았습니다.
SQL은 모든 RDBMS 제품에 대한 공통 데이터베이스 언어 인 구조 쿼리 언어입니다. 여러 RDBMS 제품 공급 업체는 자체 RDBMS 제품에 대해 SQL을 확장하여 자체 데이터베이스 언어를 개발했습니다.
T-SQL은 Microsoft 제품이며 SQL 언어의 확장 인 Transact Structure Query Language의 약자입니다.
예
MS SQL 서버-SQL \ T-SQL
오라클-SQL \ PL-SQL
SQL Server 데이터 형식은 모든 개체의 데이터 형식을 지정하는 특성입니다. 각 열, 변수 및 식에는 SQL Server에서 관련 데이터 형식이 있습니다. 이러한 데이터 유형은 테이블을 만드는 동안 사용할 수 있습니다. 요구 사항에 따라 테이블 열에 대한 특정 데이터 유형을 선택할 수 있습니다.
SQL Server는 사용할 데이터 형식의 다른 범주를 포함하여 7 개의 범주를 제공합니다.
정확한 숫자 유형
유형 | 에서 | 에 |
---|---|---|
Bigint | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
int | -2,147,483,648 | 2,147,483,647 |
smallint | -32,768 | 32,767 |
작은 | 0 | 255 |
비트 | 0 | 1 |
소수 | -10 ^ 38 +1 | 10 ^ 38 –1 |
숫자 | -10 ^ 38 +1 | 10 ^ 38 –1 |
돈 | -922,337,203,685,477.5808 | +922,337,203,685,477.5807 |
작은 돈 | -214,748.3648 | +214,748.3647 |
숫자 및 소수는 고정 정밀도 및 스케일 데이터 유형이며 기능적으로 동일합니다.
대략적인 숫자 유형
유형 | 에서 | 에 |
---|---|---|
흙손 | -1.79E + 308 | 1.79E + 308 |
레알 | -3.40E + 38 | 3.40E + 38 |
날짜 및 시간 유형
유형 | 에서 | 에 |
---|---|---|
datetime(3.33 밀리 초 정확도) |
1753 년 1 월 1 일 | 9999 년 12 월 31 일 |
smalldatetime(1 분 정확도) |
1900 년 1 월 1 일 | 2079 년 6 월 6 일 |
date(1 일 정확도. SQL Server 2008에 도입 됨) |
0001 년 1 월 1 일 | 9999 년 12 월 31 일 |
datetimeoffset(100 나노초의 정확도. SQL Server 2008에 도입 됨) |
0001 년 1 월 1 일 | 9999 년 12 월 31 일 |
datetime2(100 나노초 정확도. SQL Server 2008) |
0001 년 1 월 1 일 | 9999 년 12 월 31 일 |
time(100 나노초 정확도. SQL Server 2008) |
00 : 00 : 00.0000000 | 23 : 59 : 59.9999999 |
문자열
Sr. 아니요 | 유형 및 설명 |
---|---|
1 | char 최대 길이가 8,000자인 고정 길이 비 유니 코드 문자 데이터. |
2 | varchar 최대 8,000자인 가변 길이 비 유니 코드 데이터. |
삼 | Varchar (max) 최대 길이가 231자인 가변 길이 비 유니 코드 데이터 (SQL Server 2005에 도입 됨). |
4 | text 최대 길이가 2,147,483,647자인 가변 길이 비 유니 코드 데이터 |
유니 코드 문자열
Sr. 아니요 | 유형 및 설명 |
---|---|
1 | nchar 최대 길이가 4,000자인 고정 길이 유니 코드 데이터입니다. |
2 | nvarchar 최대 길이가 4,000자인 가변 길이 유니 코드 데이터입니다. |
삼 | Nvarchar (max) 최대 길이가 2 ~ 30 자인 가변 길이 유니 코드 데이터 (SQL Server 2005에 도입 됨). |
4 | ntext 최대 길이가 1,073,741,823자인 가변 길이 유니 코드 데이터입니다. |
이진 문자열
Sr. 아니요 | 유형 및 설명 |
---|---|
1 | binary 최대 길이가 8,000 바이트 인 고정 길이 이진 데이터입니다. |
2 | varbinary 최대 길이가 8,000 바이트 인 가변 길이 이진 데이터입니다. |
삼 | varbinary(max) 최대 길이가 2 31 바이트 인 가변 길이 이진 데이터 (SQL Server 2005에 도입 됨). |
4 | image 최대 길이가 2,147,483,647 바이트 인 가변 길이 이진 데이터입니다. |
기타 데이터 유형
sql_variant − text, ntext 및 timestamp를 제외한 다양한 SQL Server 지원 데이터 유형의 값을 저장합니다.
timestamp − 행이 업데이트 될 때마다 업데이트되는 데이터베이스 전체 고유 번호를 저장합니다.
uniqueidentifier − GUID (Globally Unique Identifier)를 저장합니다.
xml− XML 데이터를 저장합니다. XML 인스턴스를 열 또는 변수에 저장할 수 있습니다 (SQL Server 2005에 도입 됨).
cursor − 커서에 대한 참조.
table − 나중에 처리 할 수 있도록 결과 집합을 저장합니다.
hierarchyid − 계층 구조에서 위치를 나타내는 데 사용되는 가변 길이, 시스템 데이터 유형 (SQL Server 2008에 도입 됨).
기본 테이블을 만들려면 테이블 이름을 지정하고 해당 열과 각 열의 데이터 유형을 정의해야합니다.
SQL 서버 CREATE TABLE 문은 새 테이블을 만드는 데 사용됩니다.
통사론
다음은 CREATE TABLE 문의 기본 구문입니다-
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns ));
CREATE TABLE은 수행 할 작업을 데이터베이스 시스템에 알려주는 키워드입니다. 이 경우 새 테이블을 생성하려고합니다. 테이블의 고유 이름 또는 식별자는 CREATE TABLE 문 뒤에옵니다. 그런 다음 괄호 안에 테이블의 각 열과 데이터 유형이 무엇인지 정의하는 목록이 있습니다. 다음 예제를 통해 구문을 더 쉽게 이해할 수 있습니다.
CREATE TABLE 문과 SELECT 문을 조합하여 기존 테이블의 복사본을 만들 수 있습니다. 전체 세부 정보는 다른 테이블을 사용하여 테이블 만들기에서 확인할 수 있습니다.
예
이 예에서 ID를 기본 키로 사용하여 CUSTOMERS 테이블을 만들고 NOT NULL은이 테이블에 레코드를 생성하는 동안 이러한 필드가 NULL이 될 수 없음을 보여주는 제약 조건입니다.
CREATE TABLE CUSTOMERS(
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25) ,
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID));
SQL 서버에 표시된 메시지를보고 테이블이 성공적으로 생성되었는지 확인할 수 있습니다. 그렇지 않으면 다음 명령을 사용할 수 있습니다.
exec sp_columns CUSTOMERS
위의 명령은 다음 출력을 생성합니다.
TABLE_QUALIFIER TABLE_OWNER TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME
PRECISION LENGTH SCALE RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE
SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SS_DATA_TYPE
TestDB dbo CUSTOMERS ID 4 int 10 4 0 10 0
NULL NULL 4 NULL NULL 1 NO 56
TestDB dbo CUSTOMERS NAME 12 varchar 20 20 NULL NULL 0
NULL NULL 12 NULL 20 2 NO 39
TestDB dbo CUSTOMERS AGE 4 int 10 4 0 10 0
NULL NULL 4 NULL NULL 3 NO 56
TestDB dbo CUSTOMERS ADDRESS 1 char 25 25 NULL NULL 1
NULL NULL 1 NULL 25 4 YES 39
TestDB dbo CUSTOMERS SALARY 3 decimal 18 20 2 10 1
NULL NULL 3 NULL NULL 5 YES 106
이제 고객과 관련된 필수 정보를 저장하는 데 사용할 수있는 데이터베이스에서 CUSTOMERS 테이블을 사용할 수 있음을 확인할 수 있습니다.
SQL 서버 DROP TABLE 문은 테이블 정의와 해당 테이블에 대한 모든 데이터, 인덱스, 트리거, 제약 조건 및 권한 사양을 제거하는 데 사용됩니다.
Note −이 명령을 사용하는 동안주의해야합니다. 테이블이 삭제되면 테이블에서 사용 가능한 모든 정보도 영원히 손실 될 수 있습니다.
통사론
다음은 DROP TABLE 문의 기본 구문입니다-
DROP TABLE table_name;
예
먼저 CUSTOMERS 테이블을 확인한 다음 데이터베이스에서 삭제하겠습니다.
Exec sp_columns CUSTOMERS;
위의 명령은 다음 표를 보여줍니다.
TABLE_QUALIFIER TABLE_OWNER TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME
PRECISION LENGTH SCALE RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE
SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SS_DATA_TYPE
TestDB dbo CUSTOMERS ID 4 int 10 4 0 10 0
NULL NULL 4 NULL NULL 1 NO 56
TestDB dbo CUSTOMERS NAME 12 varchar 20 20 NULL NULL 0
NULL NULL 12 NULL 20 2 NO 39
TestDB dbo CUSTOMERS AGE 4 int 10 4 0 10 0
NULL NULL 4 NULL NULL 3 NO 56
TestDB dbo CUSTOMERS ADDRESS 1 char 25 25 NULL NULL 1
NULL NULL 1 NULL 25 4 YES 39
TestDB dbo CUSTOMERS SALARY 3 decimal 18 20 2 10 1
NULL NULL 3 NULL NULL 5 YES 106
CUSTOMERS 테이블은 데이터베이스에서 사용할 수 있으므로 삭제하겠습니다. 다음은 동일한 명령입니다.
DROP TABLE CUSTOMERS;
Command(s) completed successfully.
위의 명령을 사용하면 행을 가져 오지 않습니다.
Exec sp_columns CUSTOMERS;
No rows\data will be displayed
SQL 서버 INSERT INTO 문은 데이터베이스의 테이블에 새 데이터 행을 추가하는 데 사용됩니다.
통사론
다음은 INSERT INTO 문의 두 가지 기본 구문입니다.
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]
VALUES (value1, value2, value3,...valueN);
여기서 column1, column2, ... columnN은 데이터를 삽입 할 테이블의 열 이름입니다.
테이블의 모든 열에 대한 값을 추가하는 경우 SQL 쿼리에 열 이름을 지정할 필요가 없습니다. 그러나 값의 순서가 테이블의 열과 동일한 순서인지 확인하십시오. 다음은 SQL INSERT INTO 구문입니다-
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
예
다음 문은 CUSTOMERS 테이블에 6 개의 레코드를 생성합니다-
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'kaushik', 23, 'Kota', 2000.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'Hardik', 27, 'Bhopal', 8500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Komal', 22, 'MP', 4500.00 );
통사론
다음과 같이 두 번째 구문을 사용하여 CUSTOMERS 테이블에 레코드를 만들 수 있습니다.
INSERT INTO CUSTOMERS VALUES (7, 'Muffy', 24, 'Indore', 10000.00 );
위의 모든 문은 CUSTOMERS 테이블에 다음 레코드를 생성합니다.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
다른 테이블을 사용하여 하나의 테이블 채우기
다른 테이블에 첫 번째 테이블을 채우는 데 필요한 필드 집합이있는 경우 SELECT 문을 통해 다른 테이블에 데이터를 채울 수 있습니다. 다음은 구문입니다-
INSERT INTO first_table_name
SELECT column1, column2, ...columnN
FROM second_table_name
[WHERE condition];
SQL 서버 SELECT문은 결과 테이블의 형태로 데이터를 반환하는 데이터베이스 테이블에서 데이터를 가져 오는 데 사용됩니다. 이러한 결과 테이블은result-sets.
통사론
다음은 SELECT 문의 기본 구문입니다-
SELECT column1, column2, columnN FROM table_name;
여기서 column1, column2 ...는 값을 가져 오려는 테이블의 필드입니다. 필드에서 사용 가능한 모든 필드를 가져 오려면 다음 구문을 사용할 수 있습니다.
SELECT * FROM table_name;
예
다음 레코드가있는 CUSTOMERS 테이블을 고려하십시오.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
다음 명령은 CUSTOMERS 테이블에서 사용 가능한 고객의 ID, 이름 및 급여 필드를 가져 오는 예제입니다-
SELECT ID, NAME, SALARY FROM CUSTOMERS;
위의 명령은 다음 출력을 생성합니다.
ID NAME SALARY
1 Ramesh 2000.00
2 Khilan 1500.00
3 kaushik 2000.00
4 Chaitali 6500.00
5 Hardik 8500.00
6 Komal 4500.00
7 Muffy 10000.00
CUSTOMERS 테이블의 모든 필드를 가져 오려면 다음 쿼리를 사용하십시오.
SELECT * FROM CUSTOMERS;
위의 내용은 다음과 같은 출력을 생성합니다.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
SQL 서버 UPDATE 쿼리는 테이블의 기존 레코드를 수정하는 데 사용됩니다.
UPDATE 쿼리와 함께 WHERE 절을 사용하여 선택한 행을 업데이트 할 수 있습니다. 그렇지 않으면 모든 행이 영향을받습니다.
통사론
다음은 WHERE 절이있는 UPDATE 쿼리의 기본 구문입니다.
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
AND 또는 OR 연산자를 사용하여 N 개의 조건을 결합 할 수 있습니다.
예
다음 레코드가있는 CUSTOMERS 테이블을 고려하십시오.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
다음 명령은 ID가 6 인 고객의 ADDRESS를 업데이트하는 예제입니다.
UPDATE CUSTOMERS
SET ADDRESS = 'Pune'
WHERE ID = 6;
CUSTOMERS 테이블에는 이제 다음 레코드가 있습니다.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 Pune 4500.00
7 Muffy 24 Indore 10000.00
CUSTOMERS 테이블의 모든 ADDRESS 및 SALARY 열 값을 수정하려는 경우 WHERE 절을 사용할 필요가 없습니다. UPDATE 쿼리는 다음과 같습니다-
UPDATE CUSTOMERS
SET ADDRESS = 'Pune', SALARY = 1000.00;
이제 CUSTOMERS 테이블에 다음 레코드가 있습니다.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Pune 1000.00
2 Khilan 25 Pune 1000.00
3 kaushik 23 Pune 1000.00
4 Chaitali 25 Pune 1000.00
5 Hardik 27 Pune 1000.00
6 Komal 22 Pune 1000.00
7 Muffy 24 Pune 1000.00
SQL 서버 DELETE 쿼리는 테이블에서 기존 레코드를 삭제하는 데 사용됩니다.
선택한 행을 삭제하려면 DELETE 쿼리와 함께 WHERE 절을 사용해야합니다. 그렇지 않으면 모든 레코드가 삭제됩니다.
통사론
다음은 WHERE 절이있는 DELETE 쿼리의 기본 구문입니다.
DELETE FROM table_name
WHERE [condition];
AND 또는 OR 연산자를 사용하여 N 개의 조건을 결합 할 수 있습니다.
예
다음 레코드가있는 CUSTOMERS 테이블을 고려하십시오.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
다음 명령은 ID가 6 인 고객을 삭제하는 예제입니다.
DELETE FROM CUSTOMERS
WHERE ID = 6;
이제 CUSTOMERS 테이블에 다음 레코드가 있습니다.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
7 Muffy 24 Indore 10000.00
CUSTOMERS 테이블의 모든 레코드를 삭제하려는 경우 WHERE 절을 사용할 필요가 없습니다. DELETE 쿼리는 다음과 같습니다.
DELETE FROM CUSTOMERS;
이제 CUSTOMERS 테이블에 레코드가 없습니다.
MS SQL 서버 WHERE 절은 단일 테이블에서 데이터를 가져 오거나 여러 테이블과 결합하는 동안 조건을 지정하는 데 사용됩니다.
주어진 조건이 충족되면 테이블에서 특정 값을 반환합니다. 레코드를 필터링하고 필요한 레코드 만 가져 오려면 WHERE 절을 사용해야합니다.
WHERE 절은 SELECT 문에서만 사용되는 것이 아니라 UPDATE, DELETE 문 등에서도 사용되며 다음 장에서 살펴볼 것입니다.
통사론
다음은 WHERE 절이있는 SELECT 문의 기본 구문입니다.
SELECT column1, column2, columnN
FROM table_name
WHERE [condition]
비교 또는>, <, =, LIKE, NOT 등과 같은 논리 연산자를 사용하여 조건을 지정할 수 있습니다. 다음 예제는이 개념을 명확하게합니다.
예
다음 레코드가있는 CUSTOMERS 테이블을 고려하십시오.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
다음 명령은 급여가 2000보다 큰 CUSTOMERS 테이블에서 ID, 이름 및 급여 필드를 가져 오는 예제입니다.
SELECT ID, NAME, SALARY
FROM CUSTOMERS
WHERE SALARY > 2000;
위의 명령은 다음 출력을 생성합니다.
ID NAME SALARY
4 Chaitali 6500.00
5 Hardik 8500.00
6 Komal 4500.00
7 Muffy 10000.00
다음 명령은 이름이 'Hardik'인 고객에 대한 CUSTOMERS 테이블에서 ID, 이름 및 급여 필드를 가져 오는 예제입니다. 모든 문자열은 작은 따옴표 ( '') 안에 있어야하지만 숫자 값은 위의 예에서와 같이 따옴표없이 제공되어야합니다.
SELECT ID, NAME, SALARY
FROM CUSTOMERS
WHERE NAME = 'Hardik';
위의 명령은 다음 출력을 생성합니다.
ID NAME SALARY
5 Hardik 8500.00
MS SQL 서버 LIKE절은 와일드 카드 연산자를 사용하여 값을 유사한 값과 비교하는 데 사용됩니다. LIKE 연산자와 함께 사용되는 두 개의 와일드 카드가 있습니다.
- 백분율 기호 (%)
- 밑줄 (_)
백분율 기호는 0, 1 또는 여러 문자를 나타냅니다. 밑줄은 단일 숫자 또는 문자를 나타냅니다. 기호는 조합하여 사용할 수 있습니다.
통사론
다음은 % 및 _의 기본 구문입니다.
SELECT *\column-list FROM table_name
WHERE column LIKE 'XXXX%'
or
SELECT *\column-list FROM table_name
WHERE column LIKE '%XXXX%'
or
SELECT *\column-list FROM table_name
WHERE column LIKE 'XXXX_'
or
SELECT *\column-list FROM table_name
WHERE column LIKE '_XXXX'
or
SELECT *\column-list FROM table_name
WHERE column LIKE '_XXXX_'
AND 또는 OR 연산자를 사용하여 N 개의 조건을 결합 할 수 있습니다. XXXX는 숫자 또는 문자열 값일 수 있습니다.
예
다음은 '%'및 '_'연산자를 사용하여 서로 다른 LIKE 절을 갖는 WHERE 부분을 보여주는 여러 예입니다.
Sr. 아니요 | 성명 및 설명 |
---|---|
1 | WHERE SALARY LIKE '200%' 200으로 시작하는 모든 값을 찾습니다. |
2 | WHERE SALARY LIKE '%200%' 임의의 위치에 200이있는 모든 값을 찾습니다. |
삼 | WHERE SALARY LIKE '_00%' 두 번째 및 세 번째 위치에 00이있는 모든 값을 찾습니다. |
4 | WHERE SALARY LIKE '2_%_%' 2로 시작하고 길이가 3 자 이상인 모든 값을 찾습니다. |
5 | WHERE SALARY LIKE '%2' 2로 끝나는 모든 값을 찾습니다. |
6 | WHERE SALARY LIKE '_2%3' 두 번째 위치에 2가 있고 3으로 끝나는 값을 찾습니다. |
7 | WHERE SALARY LIKE '2___3' 2로 시작하고 3으로 끝나는 5 자리 숫자의 값을 찾습니다. |
다음 레코드가있는 CUSTOMERS 테이블을 고려하십시오.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
다음 명령은 SALARY가 200으로 시작하는 CUSTOMERS 테이블의 모든 레코드를 표시하는 예제입니다.
SELECT * FROM CUSTOMERS
WHERE SALARY LIKE '200%';
위의 명령은 다음 출력을 생성합니다.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
3 kaushik 23 Kota 2000.00
MS SQL 서버 ORDERBY 절은 하나 이상의 열을 기준으로 데이터를 오름차순 또는 내림차순으로 정렬하는 데 사용됩니다. 일부 데이터베이스 정렬 쿼리는 기본적으로 오름차순으로 표시됩니다.
통사론
다음은 ORDER BY 절의 기본 구문입니다.
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
ORDER BY 절에서 둘 이상의 열을 사용할 수 있습니다. 정렬에 사용중인 열이 무엇이든 해당 열이 열 목록에 있어야합니다.
예
다음 레코드가있는 CUSTOMERS 테이블을 고려하십시오.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
다음 명령은 결과를 NAME 및 SALARY별로 오름차순으로 정렬하는 예제입니다.
SELECT * FROM CUSTOMERS
ORDER BY NAME, SALARY
위의 명령은 다음 출력을 생성합니다.
ID NAME AGE ADDRESS SALARY
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
3 kaushik 23 Kota 2000.00
2 Khilan 25 Delhi 1500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
1 Ramesh 32 Ahmedabad 2000.00
다음 명령은 NAME을 기준으로 결과를 내림차순으로 정렬하는 예입니다.
SELECT * FROM CUSTOMERS
ORDER BY NAME DESC
위의 명령은 다음 결과를 생성합니다-
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
7 Muffy 24 Indore 10000.00
6 Komal 22 MP 4500.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
5 Hardik 27 Bhopal 8500.00
4 Chaitali 25 Mumbai 6500.00
SQL 서버 GROUP BY 절은 SELECT 문과 협력하여 동일한 데이터를 그룹으로 배열하는 데 사용됩니다.
GROUP BY 절은 SELECT 문에서 WHERE 절 뒤에오고 ORDER BY 절 앞에옵니다.
통사론
다음은 GROUP BY 절의 기본 구문입니다. GROUP BY 절은 WHERE 절의 조건을 따라야하며 ORDER BY 절이 사용되는 경우 앞에 와야합니다.
SELECT column1, column2
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2
ORDER BY column1, column2
예
CUSTOMERS 테이블에 다음과 같은 레코드가 있다고 가정하십시오.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
각 고객의 총 급여 금액을 알고 싶다면 다음은 GROUP BY 쿼리입니다.
SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS
GROUP BY NAME;
위의 명령은 다음 출력을 생성합니다.
NAME sum of salary
Chaitali 6500.00
Hardik 8500.00
kaushik 2000.00
Khilan 1500.00
Komal 4500.00
Muffy 10000.00
Ramesh 2000.00
이제 중복 이름을 가진 다음 레코드가있는 다음 CUSTOMERS 테이블을 고려해 보겠습니다.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
각 고객의 총 급여액을 알고 싶다면 다음은 GROUP BY 쿼리입니다.
SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS
GROUP BY NAME
위의 명령은 다음 출력을 생성합니다.
NAME sum of salary
Hardik 8500.00
kaushik 8500.00
Komal 4500.00
Muffy 10000.00
Ramesh 3500.00
MS SQL 서버 DISTINCT 키워드는 SELECT 문과 함께 사용되어 모든 중복 레코드를 제거하고 고유 한 레코드 만 가져옵니다.
테이블에 중복 레코드가 여러 개있는 상황이있을 수 있습니다. 이러한 레코드를 가져 오는 동안 중복 레코드를 가져 오는 대신 고유 한 레코드 만 가져 오는 것이 더 합리적입니다.
통사론
다음은 중복 레코드를 제거하기위한 DISTINCT 키워드의 기본 구문입니다.
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]
예
다음 레코드가있는 CUSTOMERS 테이블을 고려하십시오.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
다음 SELECT 쿼리가 중복 급여 레코드를 반환하는 방법을 살펴 보겠습니다.
SELECT SALARY FROM CUSTOMERS
ORDER BY SALARY
위 명령은 원래 테이블의 중복 레코드 인 salary 2000이 두 번 나오는 다음 출력을 생성합니다.
SALARY
1500.00
2000.00
2000.00
4500.00
6500.00
8500.00
10000.00
이제 위의 SELECT 쿼리에 DISTINCT 키워드를 사용하여 결과를 확인하겠습니다.
SELECT DISTINCT SALARY FROM CUSTOMERS
ORDER BY SALARY
위의 명령은 중복 항목이없는 다음 출력을 생성합니다.
SALARY
1500.00
2000.00
4500.00
6500.00
8500.00
10000.00
MS SQL 서버 Joins절은 데이터베이스에있는 둘 이상의 테이블에서 레코드를 결합하는 데 사용됩니다. JOIN은 각각에 공통된 값을 사용하여 두 테이블의 필드를 결합하는 수단입니다.
다음 두 테이블을 고려하십시오. (a) CUSTOMERS 테이블은 다음과 같습니다.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
(b) 다른 테이블은 다음과 같이 ORDERS입니다.
OID DATE CUSTOMER_ID AMOUNT
100 2009-10-08 00:00:00.000 3 1500.00
101 2009-11-20 00:00:00.000 2 1560.00
102 2009-10-08 00:00:00.000 3 3000.00
103 2008-05-20 00:00:00.000 4 2060.00
다음과 같이 SELECT 문에서이 두 테이블을 결합 해 보겠습니다.
SELECT ID, NAME, AGE, AMOUNT
FROM CUSTOMERS, ORDERS
WHERE CUSTOMERS.ID = ORDERS.CUSTOMER_ID
OR
SELECT A.ID, A.NAME, A.AGE, B.AMOUNT
FROM CUSTOMERS A inner join ORDERS B on A.ID = B.Customer_ID
위의 명령은 다음 출력을 생성합니다.
ID NAME AGE AMOUNT
2 Khilan 25 1560.00
3 kaushik 23 1500.00
3 kaushik 23 3000.00
4 Chaitali 25 2060.00
조인이 WHERE 절에서 수행되는 것을 알 수 있습니다. =, <,>, <>, <=,> =,! =, BETWEEN, LIKE 및 NOT과 같은 여러 연산자를 사용하여 테이블을 조인 할 수 있습니다. 테이블을 결합하는 데 모두 사용할 수 있습니다. 그러나 가장 일반적인 연산자는 등호 기호입니다.
MS SQL Server 조인 유형-
MS SQL Server에서 사용할 수있는 다양한 유형의 조인이 있습니다.
INNER JOIN − 두 테이블에 일치하는 항목이 있으면 행을 반환합니다.
LEFT JOIN − 오른쪽 테이블에 일치하는 항목이없는 경우에도 왼쪽 테이블의 모든 행을 반환합니다.
RIGHT JOIN − 왼쪽 테이블에 일치하는 항목이없는 경우에도 오른쪽 테이블의 모든 행을 반환합니다.
FULL JOIN − 테이블 중 하나에 일치하는 항목이 있으면 행을 반환합니다.
SELF JOIN − 이는 테이블이 두 개의 테이블 인 것처럼 테이블을 자신에 결합하는 데 사용되며 MS SQL Server 문에서 하나 이상의 테이블 이름을 일시적으로 변경합니다.
CARTESIAN JOIN − 둘 이상의 조인 된 테이블에서 레코드 집합의 데카르트 곱을 반환합니다.
ㅏ sub-query 또는 Inner query 또는 Nested query다른 SQL Server 쿼리 내의 쿼리이며 WHERE 절에 포함됩니다. 하위 쿼리는 검색 할 데이터를 추가로 제한하는 조건으로 기본 쿼리에서 사용될 데이터를 반환하는 데 사용됩니다.
하위 쿼리는 =, <,>,> =, <=, IN, BETWEEN 등과 같은 연산자와 함께 SELECT, INSERT, UPDATE 및 DELETE 문과 함께 사용할 수 있습니다.
하위 쿼리가 따라야하는 몇 가지 규칙이 있습니다.
하위 쿼리는 괄호로 묶어야합니다.
하위 쿼리에는 SELECT 절과 FROM 절이 포함되어야합니다.
하위 쿼리에는 선택적 WHERE, GROUP BY 및 HAVING 절이 포함될 수 있습니다.
서브 쿼리는 COMPUTE 또는 FOR BROWSE 절을 포함 할 수 없습니다.
TOP 절이 포함 된 경우에만 ORDER BY 절을 포함 할 수 있습니다.
최대 32 레벨까지 하위 쿼리를 중첩 할 수 있습니다.
SELECT 문이있는 하위 쿼리
통사론
하위 쿼리는 SELECT 문과 함께 가장 자주 사용됩니다. 다음은 기본 구문입니다.
SELECT column_name [, column_name ]
FROM table1 [, table2 ]
WHERE column_name OPERATOR
(SELECT column_name [, column_name ]
FROM table1 [, table2 ]
[WHERE])
예
다음 레코드가있는 CUSTOMERS 테이블을 고려하십시오.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
SELECT 문을 사용하여 다음 하위 쿼리를 적용 해 보겠습니다.
SELECT *
FROM CUSTOMERS
WHERE ID IN (SELECT ID FROM CUSTOMERS WHERE SALARY > 4500)
위의 명령은 다음 출력을 생성합니다.
ID NAME AGE ADDRESS SALARY
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
7 Muffy 24 Indore 10000.00
INSERT 문이있는 하위 쿼리
하위 쿼리는 INSERT 문과 함께 사용할 수도 있습니다. INSERT 문은 하위 쿼리에서 반환 된 데이터를 사용하여 다른 테이블에 삽입합니다. 하위 쿼리에서 선택한 데이터는 문자, 날짜 또는 숫자 함수로 수정할 수 있습니다.
통사론
다음은 기본 구문입니다.
INSERT INTO table_name [ (column1 [, column2 ]) ]
SELECT [ *|column1 [, column2 ]
FROM table1 [, table2 ]
[ WHERE VALUE OPERATOR ]
예
CUSTOMERS 테이블과 유사한 구조를 가진 테이블 CUSTOMERS_BKP를 고려하십시오. 다음은 완전한 CUSTOMERS 테이블을 CUSTOMERS_BKP에 복사하는 구문입니다.
INSERT INTO CUSTOMERS_BKP
SELECT * FROM CUSTOMERS
WHERE ID IN (SELECT ID FROM CUSTOMERS)
UPDATE 문이있는 하위 쿼리
하위 쿼리는 UPDATE 문과 함께 사용할 수 있습니다. UPDATE 문과 함께 하위 쿼리를 사용할 때 테이블의 단일 또는 여러 열을 업데이트 할 수 있습니다.
통사론
다음은 기본 구문입니다.
UPDATE table
SET column_name = new_value
[ WHERE OPERATOR [ VALUE ]
(SELECT COLUMN_NAME
FROM TABLE_NAME)
[ WHERE) ]
예
CUSTOMERS 테이블의 백업 인 CUSTOMERS_BKP 테이블을 사용할 수 있다고 가정하겠습니다.
다음 명령 예제는 AGE가 27보다 크거나 같은 모든 고객에 대해 CUSTOMERS 테이블에서 SALARY를 0.25 배 업데이트합니다.
UPDATE CUSTOMERS
SET SALARY = SALARY * 0.25
WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >= 27 )
이것은 두 행에 영향을 미치고 마지막으로 CUSTOMERS 테이블에 다음 레코드가 있습니다.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 500.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 2125.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
DELETE 문이있는 하위 쿼리
하위 쿼리는 위에서 언급 한 다른 문과 마찬가지로 DELETE 문과 함께 사용할 수 있습니다.
통사론
다음은 기본 구문입니다.
DELETE FROM TABLE_NAME
[ WHERE OPERATOR [ VALUE ]
(SELECT COLUMN_NAME
FROM TABLE_NAME)
[ WHERE) ]
예
CUSTOMERS 테이블의 백업 인 CUSTOMERS_BKP 테이블을 사용할 수 있다고 가정하겠습니다.
다음 명령 예제는 AGE가 27보다 크거나 같은 모든 고객에 대해 CUSTOMERS 테이블에서 레코드를 삭제합니다.
DELETE FROM CUSTOMERS
WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >=27 )
이것은 두 행에 영향을 미치고 마지막으로 CUSTOMERS 테이블에 다음 레코드가 있습니다.
ID NAME AGE ADDRESS SALARY
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
MS SQL 서버 Stored procedure 데이터베이스에 동일한 내용을 저장하고 매개 변수를 전달하여 필요한 출력을 가져옴으로써 코드를 반복해서 작성하는 시간을 절약하는 데 사용됩니다.
통사론
다음은 저장 프로 시저 생성의 기본 구문입니다.
Create procedure <procedure_Name>
As
Begin
<SQL Statement>
End
Go
예
다음 레코드가있는 CUSTOMERS 테이블을 고려하십시오.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
다음 명령은 Testdb 데이터베이스의 CUSTOMERS 테이블에서 모든 레코드를 가져 오는 예제입니다.
CREATE PROCEDURE SelectCustomerstabledata
AS
SELECT * FROM Testdb.Customers
GO
위의 명령은 다음 출력을 생성합니다.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
ㅏ transaction데이터베이스에 대해 수행되는 작업 단위입니다. 트랜잭션은 사용자가 수동으로 수행하든 또는 일종의 데이터베이스 프로그램에 의해 자동으로 수행 되든 논리적 순서로 수행되는 작업 단위 또는 시퀀스입니다.
트랜잭션은 데이터베이스에 대한 하나 이상의 변경 사항을 전파하는 것입니다. 예를 들어 레코드를 만들거나 레코드를 업데이트하거나 테이블에서 레코드를 삭제하는 경우 테이블에서 트랜잭션을 수행하는 것입니다. 데이터 무결성을 보장하고 데이터베이스 오류를 처리하기 위해 트랜잭션을 제어하는 것이 중요합니다.
실제로 많은 SQL 쿼리를 그룹으로 묶고 트랜잭션의 일부로 모두 함께 실행합니다.
거래의 속성
트랜잭션은 일반적으로 ACID라는 약어로 참조되는 다음 네 가지 표준 속성을 가지고 있습니다.
Atomicity− 작업 단위 내의 모든 작업이 성공적으로 완료되었는지 확인합니다. 그렇지 않으면 트랜잭션이 실패 지점에서 중단되고 이전 작업이 이전 상태로 롤백됩니다.
Consistency − 성공적으로 커밋 된 트랜잭션시 데이터베이스가 상태를 적절하게 변경하는지 확인합니다.
Isolation − 트랜잭션이 서로 독립적이고 투명하게 작동 할 수 있습니다.
Durability − 시스템 장애시 커밋 된 트랜잭션의 결과 또는 효과가 지속되도록합니다.
거래 통제
트랜잭션을 제어하는 데 사용되는 다음 명령이 있습니다.
COMMIT − 변경 사항을 저장합니다.
ROLLBACK − 변경 사항을 롤백합니다.
SAVEPOINT − ROLLBACK 할 트랜잭션 그룹 내에서 포인트를 생성합니다.
SET TRANSACTION − 거래에 이름을 붙입니다.
트랜잭션 제어 명령은 DML 명령 INSERT, UPDATE 및 DELETE에만 사용됩니다. 이러한 작업은 데이터베이스에서 자동으로 커밋되기 때문에 테이블을 생성하거나 삭제하는 동안에는 사용할 수 없습니다.
MS SQL Server에서 트랜잭션 제어 명령을 사용하려면 'begin tran'으로 트랜잭션을 시작하거나 트랜잭션 명령을 시작해야합니다. 그렇지 않으면 이러한 명령이 작동하지 않습니다.
COMMIT 명령
COMMIT 명령은 트랜잭션에 의해 호출 된 변경 사항을 데이터베이스에 저장하는 데 사용되는 트랜잭션 명령입니다. 이 명령은 마지막 COMMIT 또는 ROLLBACK 명령 이후 모든 트랜잭션을 데이터베이스에 저장합니다.
통사론
다음은 COMMIT 명령 구문입니다.
COMMIT;
예
다음 레코드가있는 CUSTOMERS 테이블을 고려하십시오.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
다음 명령 예제는 age = 25 인 테이블에서 레코드를 삭제 한 다음 데이터베이스에서 변경 사항을 커밋합니다.
Begin Tran
DELETE FROM CUSTOMERS
WHERE AGE = 25
COMMIT
결과적으로 테이블의 두 행이 삭제되고 SELECT 문은 다음과 같은 출력을 생성합니다.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
3 kaushik 23 Kota 2000.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
ROLLBACK 명령
ROLLBACK 명령은 데이터베이스에 아직 저장되지 않은 트랜잭션을 실행 취소하는 데 사용되는 트랜잭션 명령입니다. 이 명령은 마지막 COMMIT 또는 ROLLBACK 명령이 발행 된 이후 트랜잭션을 실행 취소하는 데만 사용할 수 있습니다.
통사론
다음은 ROLLBACK 명령 구문입니다.
ROLLBACK
예
다음 레코드가있는 CUSTOMERS 테이블을 고려하십시오.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
다음 명령 예제는 age = 25 인 테이블에서 레코드를 삭제 한 다음 데이터베이스의 변경 사항을 ROLLBACK합니다.
Begin Tran
DELETE FROM CUSTOMERS
WHERE AGE = 25;
ROLLBACK
결과적으로 삭제 작업은 테이블에 영향을주지 않으며 SELECT 문은 다음과 같은 결과를 생성합니다.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
SAVEPOINT 명령
SAVEPOINT는 전체 트랜잭션을 롤백하지 않고 특정 지점으로 트랜잭션을 롤백 할 수있는 트랜잭션의 지점입니다.
통사론
다음은 SAVEPOINT 명령 구문입니다.
SAVE TRANSACTION SAVEPOINT_NAME
이 명령은 트랜잭션 문 사이에서 SAVEPOINT를 만드는 경우에만 사용됩니다. ROLLBACK 명령은 트랜잭션 그룹을 실행 취소하는 데 사용됩니다.
다음은 SAVEPOINT로 롤백하는 구문입니다.
ROLLBACK TO SAVEPOINT_NAME
다음 예에서는 CUSTOMERS 테이블에서 세 가지 다른 레코드를 삭제합니다. 삭제할 때마다 SAVEPOINT를 만들어야하므로 언제든지 SAVEPOINT로 ROLLBACK하여 적절한 데이터를 원래 상태로 되돌릴 수 있습니다.
예
다음 레코드가있는 CUSTOMERS 테이블을 고려하십시오.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
다음은 일련의 작업입니다-
Begin Tran
SAVE Transaction SP1
Savepoint created.
DELETE FROM CUSTOMERS WHERE ID = 1
1 row deleted.
SAVE Transaction SP2
Savepoint created.
DELETE FROM CUSTOMERS WHERE ID = 2
1 row deleted.
SAVE Transaction SP3
Savepoint created.
DELETE FROM CUSTOMERS WHERE ID = 3
1 row deleted.
세 번의 삭제가 발생했지만 마음이 바뀌었고 SP2로 식별 된 SAVEPOINT로 롤백하기로 결정했습니다. SP2는 첫 번째 삭제 후 생성되었으므로 마지막 두 삭제는 취소됩니다.
ROLLBACK Transaction SP2
Rollback complete.
SP2로 롤백 한 이후 첫 번째 삭제 만 발생했습니다.
SELECT * FROM CUSTOMERS
6 개 행이 선택되었습니다.
ID NAME AGE ADDRESS SALARY
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
SET TRANSACTION 명령
SET TRANSACTION 명령을 사용하여 데이터베이스 트랜잭션을 시작할 수 있습니다. 이 명령은 다음 트랜잭션의 특성을 지정하는 데 사용됩니다.
통사론
다음은 SET TRANSACTION의 구문입니다.
SET TRANSACTION ISOLATION LEVEL <Isolationlevel_name>
Indexes데이터베이스 검색 엔진이 데이터 검색 속도를 높이기 위해 사용할 수있는 특수 조회 테이블입니다. 간단히 말해서index테이블의 데이터에 대한 포인터입니다. 데이터베이스의 색인은 책 끝에있는 색인과 매우 유사합니다.
예를 들어, 특정 주제에 대해 논의하는 책의 모든 페이지를 참조하려면 먼저 색인을 참조하십시오. 색인은 모든 주제를 알파벳순으로 나열한 다음 하나 이상의 특정 페이지 번호를 참조합니다.
인덱스는 SELECT 쿼리 및 WHERE 절의 속도를 높이는 데 도움이되지만 UPDATE 및 INSERT 문을 사용하면 데이터 입력 속도가 느려집니다. 인덱스는 데이터에 영향을주지 않고 생성하거나 삭제할 수 있습니다.
인덱스 생성에는 인덱스의 이름을 지정하고, 테이블과 인덱싱 할 열을 지정하고, 인덱스가 오름차순인지 내림차순인지 표시 할 수있는 CREATE INDEX 문이 포함됩니다.
인덱스는 인덱스가있는 열 또는 열 조합의 중복 항목을 방지한다는 점에서 UNIQUE 제약 조건과 유사하게 고유 할 수도 있습니다.
CREATE INDEX 명령
다음은 CREATE INDEX의 기본 구문입니다.
통사론
CREATE INDEX index_name ON table_name
단일 열 인덱스
단일 열 인덱스는 하나의 테이블 열만을 기반으로 생성되는 인덱스입니다. 다음은 기본 구문입니다.
통사론
CREATE INDEX index_name
ON table_name (column_name)
예
CREATE INDEX singlecolumnindex
ON customers (ID)
고유 인덱스
고유 인덱스는 성능뿐만 아니라 데이터 무결성에도 사용됩니다. 고유 인덱스는 테이블에 중복 값을 삽입 할 수 없습니다. 다음은 기본 구문입니다.
통사론
CREATE UNIQUE INDEX index_name
on table_name (column_name)
예
CREATE UNIQUE INDEX uniqueindex
on customers (NAME)
복합 색인
복합 색인은 테이블의 두 개 이상의 열에 대한 색인입니다. 다음은 기본 구문입니다.
통사론
CREATE INDEX index_name on table_name (column1, column2)
예
CREATE INDEX compositeindex
on customers (NAME, ID)
단일 열 인덱스 또는 복합 인덱스를 만들 것인지 여부에 관계없이 쿼리의 WHERE 절에서 필터 조건으로 매우 자주 사용할 수있는 열을 고려하십시오.
열이 하나만 사용되는 경우 단일 열 인덱스를 선택해야합니다. WHERE 절에서 필터로 자주 사용되는 열이 두 개 이상있는 경우 복합 인덱스가 최선의 선택입니다.
암시 적 인덱스
암시 적 인덱스는 개체가 생성 될 때 데이터베이스 서버에서 자동으로 생성되는 인덱스입니다. 기본 키 제약 조건 및 고유 제약 조건에 대해 인덱스가 자동으로 생성됩니다.
DROP INDEX 명령
MS SQL SERVER DROP 명령을 사용하여 인덱스를 삭제할 수 있습니다. 성능이 느려지거나 향상 될 수 있으므로 인덱스를 삭제할 때주의해야합니다.
통사론
다음은 기본 구문입니다.
DROP INDEX tablename.index_name
인덱스를 피할 때
인덱스는 데이터베이스의 성능을 향상시키기위한 것이지만 피해야하는 경우가 있습니다. 다음 지침은 인덱스 사용을 재고해야하는시기를 나타냅니다.
작은 테이블에는 인덱스를 사용하면 안됩니다.
대규모 일괄 업데이트 또는 삽입 작업이 빈번한 테이블은 인덱싱해서는 안됩니다.
많은 수의 NULL 값을 포함하는 열에는 인덱스를 사용하면 안됩니다.
자주 조작되는 열은 인덱싱하지 않아야합니다.
MS SQL Server에는 문자열 또는 숫자 데이터에 대한 처리를 수행하는 많은 내장 함수가 있습니다. 다음은 모든 유용한 SQL 내장 함수 목록입니다.
SQL Server COUNT Function − SQL Server COUNT 집계 함수는 데이터베이스 테이블의 행 수를 계산하는 데 사용됩니다.
SQL Server MAX Function − SQL Server MAX 집계 함수를 사용하면 특정 열에 대해 가장 높은 (최대) 값을 선택할 수 있습니다.
SQL Server MIN Function − SQL Server MIN 집계 함수를 사용하면 특정 열에 대해 가장 낮은 (최소) 값을 선택할 수 있습니다.
SQL Server AVG Function − SQL Server AVG 집계 함수는 특정 테이블 열에 대한 평균 값을 선택합니다.
SQL Server SUM Function − SQL Server SUM 집계 함수를 사용하면 숫자 열의 합계를 선택할 수 있습니다.
SQL Server SQRT Function − 주어진 숫자의 제곱근을 생성하는 데 사용됩니다.
SQL Server RAND Function − SQL 명령어를 이용하여 난수를 생성 할 때 사용합니다.
SQL Server CONCAT Function − 여러 매개 변수를 단일 매개 변수로 연결하는 데 사용됩니다.
SQL Server Numeric Functions − SQL에서 숫자를 조작하는 데 필요한 SQL 함수의 전체 목록.
SQL Server String Functions − SQL에서 문자열을 조작하는 데 필요한 SQL 함수의 전체 목록.
MS SQL Server 문자열 함수는 문자열 값에 적용하거나 문자열 값 또는 숫자 데이터를 반환합니다.
다음은 예제와 함께 문자열 함수 목록입니다.
ASCII ()
Ascii 코드 값은 문자 표현식의 출력으로 제공됩니다.
예
다음 쿼리는 주어진 문자의 Ascii 코드 값을 제공합니다.
Select ASCII ('word')
숯()
문자는 주어진 Ascii 코드 또는 정수에 대한 출력으로 제공됩니다.
예
다음 쿼리는 주어진 정수에 대한 문자를 제공합니다.
Select CHAR(97)
NCHAR ()
유니 코드 문자는 주어진 정수에 대한 출력으로 제공됩니다.
예
다음 쿼리는 주어진 정수에 대한 유니 코드 문자를 제공합니다.
Select NCHAR(300)
CHARINDEX ()
주어진 검색 표현식의 시작 위치는 주어진 문자열 표현식의 출력으로 표시됩니다.
예
다음 쿼리는 주어진 문자열 표현식 'KING'에 대해 'G'문자의 시작 위치를 제공합니다.
Select CHARINDEX('G', 'KING')
왼쪽()
지정된 문자열의 출력으로 지정된 문자 수가 나올 때까지 지정된 문자열의 왼쪽 부분입니다.
예
다음 쿼리는 주어진 문자열 'WORLD'에 대해 언급 된 4 개의 문자 수에 따라 'WORL'문자열을 제공합니다.
Select LEFT('WORLD', 4)
권리()
지정된 문자열에 대한 출력으로 지정된 문자 수가 나올 때까지 지정된 문자열의 오른쪽 부분입니다.
예
다음 쿼리는 주어진 문자열 'INDIA'에 대해 언급 된 3 개의 문자 수와 같이 'DIA'문자열을 제공합니다.
Select RIGHT('INDIA', 3)
SUBSTRING ()
시작 위치 값과 길이 값을 기반으로하는 문자열의 일부는 주어진 문자열에 대한 출력으로 제공됩니다.
예
다음 쿼리는 주어진 문자열 'WORLD'에 대해 각각 시작 및 길이 값으로 (1,3), (3,3) 및 (2,3)을 언급했듯이 'WOR', 'DIA', 'ING'문자열을 제공합니다. , '인도', '킹'.
Select SUBSTRING ('WORLD', 1,3)
Select SUBSTRING ('INDIA', 3,3)
Select SUBSTRING ('KING', 2,3)
LEN ()
문자 수는 주어진 문자열 표현식에 대한 출력으로 제공됩니다.
예
다음 쿼리는 'HELLO'문자열 표현식에 5를 제공합니다.
Select LEN('HELLO')
보다 낮은()
소문자 문자열은 주어진 문자열 데이터에 대한 출력으로 제공됩니다.
예
다음 쿼리는 'SQLServer'문자 데이터에 대한 'sqlserver'를 제공합니다.
Select LOWER('SQLServer')
높은()
대문자 문자열은 주어진 문자열 데이터에 대한 출력으로 제공됩니다.
예
다음 쿼리는 'SqlServer'문자 데이터에 대한 'SQLSERVER'를 제공합니다.
Select UPPER('SqlServer')
LTRIM ()
문자열 표현식은 선행 공백을 제거한 후 주어진 문자열 데이터에 대한 출력으로 제공됩니다.
예
다음 쿼리는 'WORLD'문자 데이터에 대해 'WORLD'를 제공합니다.
Select LTRIM(' WORLD')
RTRIM ()
문자열 표현식은 후미 공백을 제거한 후 주어진 문자열 데이터에 대한 출력으로 제공됩니다.
예
다음 쿼리는 'INDIA'문자 데이터에 대해 'INDIA'를 제공합니다.
Select RTRIM('INDIA ')
바꾸다()
문자열 표현식은 지정된 문자의 모든 발생을 지정된 문자로 바꾼 후 지정된 문자열 데이터에 대한 출력으로 제공됩니다.
예
다음 쿼리는 'INDIA'문자열 데이터에 대해 'KNDKA'문자열을 제공합니다.
Select REPLACE('INDIA', 'I', 'K')
뒤로 젖히다()
반복 문자열 표현식은 지정된 횟수로 지정된 문자열 데이터에 대한 출력으로 제공됩니다.
예
다음 쿼리는 'WORLD'문자열 데이터에 대해 'WORLDWORLD'문자열을 제공합니다.
Select REPLICATE('WORLD', 2)
역전()
역 문자열 표현식은 주어진 문자열 데이터에 대한 출력으로 제공됩니다.
예
다음 쿼리는 'WORLD'문자열 데이터에 대한 'DLROW'문자열을 제공합니다.
Select REVERSE('WORLD')
SOUNDEX ()
주어진 두 문자열의 유사성을 평가하기 위해 4 자 (SOUNDEX) 코드를 반환합니다.
예
다음 쿼리는 'Smith', 'Smyth'문자열에 대해 'S530'을 제공합니다.
Select SOUNDEX('Smith'), SOUNDEX('Smyth')
차()
정수 값은 주어진 두 표현식의 출력으로 나옵니다.
예
다음 쿼리는 'Smith', 'Smyth'표현식에 대해 4를 제공합니다.
Select Difference('Smith','Smyth')
Note − 출력 값이 0이면 2 개의 표현이 약하거나 유사하지 않음을 나타냅니다.
우주()
문자열은 지정된 수의 공백과 함께 출력됩니다.
예
다음 쿼리는 'I LOVE INDIA'를 제공합니다.
Select 'I'+space(1)+'LOVE'+space(1)+'INDIA'
물건()
문자열 표현식은 시작 문자에서 지정된 길이까지 지정된 문자로 바꾼 후 지정된 문자열 데이터에 대한 출력으로 제공됩니다.
예
다음 쿼리는 주어진 시작 문자와 길이에 따라 'ABCDEFGH'문자열 데이터에 대한 'AIJKFGH'문자열을 각각 2와 4로, 지정된 대상 문자열로 'IJK'를 제공합니다.
Select STUFF('ABCDEFGH', 2,4,'IJK')
STR ()
문자 데이터는 주어진 숫자 데이터에 대한 출력으로 제공됩니다.
예
다음 쿼리는 지정된 길이를 6으로, 십진수를 2로하여 주어진 187.369에 대해 187.37을 제공합니다.
Select STR(187.369,6,2)
유니 코드 ()
정수 값은 주어진 표현식의 첫 번째 문자에 대한 출력으로 제공됩니다.
예
다음 쿼리는 'RAMA'표현식에 82를 제공합니다.
Select UNICODE('RAMA')
QUOTENAME ()
주어진 문자열은 지정된 구분 기호와 함께 출력됩니다.
예
다음 쿼리는 큰 따옴표를 구분자로 지정 했으므로 주어진 'RAMA'문자열에 대해 "RAMA"를 제공합니다.
Select QUOTENAME('RAMA','"')
PATINDEX ()
'I'위치를 지정 했으므로 주어진 표현식에서 첫 번째 발생의 시작 위치가 필요합니다.
예
다음 쿼리는 'INDIA'에 대해 1을 제공합니다.
Select PATINDEX('I%','INDIA')
체재()
주어진 표현식은 지정된 형식의 출력으로 제공됩니다.
예
다음 쿼리는 'D'가 요일 이름을 참조하는 지정된 형식에 따라 getdate 함수에 'Monday, November 16, 2015'를 제공합니다.
SELECT FORMAT ( getdate(), 'D')
CONCAT ()
주어진 매개 변수 값을 연결 한 후 단일 문자열이 출력됩니다.
예
다음 쿼리는 주어진 매개 변수에 대해 'A, B, C'를 제공합니다.
Select CONCAT('A',',','B',',','C')
다음은 MS SQL Server의 날짜 함수 목록입니다.
GETDATE ()
시간과 함께 현재 날짜를 반환합니다.
통사론
위 함수에 대한 구문-
GETDATE()
예
다음 쿼리는 MS SQL Server의 시간과 함께 현재 날짜를 반환합니다.
Select getdate() as currentdatetime
DATEPART ()
날짜 또는 시간의 일부를 반환합니다.
통사론
위 함수에 대한 구문-
DATEPART(datepart, datecolumnname)
예
Example 1 − 다음 쿼리는 MS SQL Server에서 현재 날짜의 일부를 반환합니다.
Select datepart(day, getdate()) as currentdate
Example 2 − 다음 쿼리는 MS SQL Server에서 이번 달의 일부를 반환합니다.
Select datepart(month, getdate()) as currentmonth
DATEADD ()
날짜와 시간 간격을 더하거나 빼서 날짜와 시간을 표시합니다.
통사론
위 함수에 대한 구문-
DATEADD(datepart, number, datecolumnname)
예
다음 쿼리는 MS SQL Server의 현재 날짜 및 시간에서 10 일 후 날짜 및 시간을 반환합니다.
Select dateadd(day, 10, getdate()) as after10daysdatetimefromcurrentdatetime
DATEDIFF ()
두 날짜 사이의 날짜와 시간이 표시됩니다.
통사론
위 함수에 대한 구문-
DATEDIFF(datepart, startdate, enddate)
예
다음 쿼리는 MS SQL Server에서 2015-11-16과 2015-11-11 날짜 사이의 시간 차이를 반환합니다.
Select datediff(hour, 2015-11-16, 2015-11-11) as
differencehoursbetween20151116and20151111
변하게 하다()
날짜와 시간이 다른 형식으로 표시됩니다.
통사론
위 함수에 대한 구문-
CONVERT(datatype, expression, style)
예
다음 쿼리는 MS SQL Server에서 다른 형식으로 날짜와 시간을 반환합니다.
SELECT CONVERT(VARCHAR(19),GETDATE())
SELECT CONVERT(VARCHAR(10),GETDATE(),10)
SELECT CONVERT(VARCHAR(10),GETDATE(),110)
MS SQL Server 숫자 함수는 숫자 데이터에 적용 할 수 있으며 숫자 데이터를 반환합니다.
다음은 예제와 함께 숫자 함수 목록입니다.
ABS ()
절대 값은 숫자 표현의 출력으로 제공됩니다.
예
다음 쿼리는 절대 값을 제공합니다.
Select ABS(-22)
ACOS ()
아크 코사인 값은 지정된 숫자 표현식에 대한 출력으로 제공됩니다.
예
다음 쿼리는 아크 코사인 값 0을 제공합니다.
Select ACOS(0)
ASIN ()
아크 사인 값은 지정된 숫자 표현식에 대한 출력으로 제공됩니다.
예
다음 쿼리는 아크 사인 값 0을 제공합니다.
Select ASIN(0)
ATAN ()
아크 탄젠트 값은 지정된 숫자 표현식에 대한 출력으로 제공됩니다.
예
다음 쿼리는 아크 탄젠트 값 0을 제공합니다.
Select ATAN(0)
ATN2 ()
4 개 사분면 모두의 아크 탄젠트 값이 지정된 숫자 표현식에 대한 출력으로 제공됩니다.
예
다음 쿼리는 4 사분면 모두 0의 아크 탄젠트 값을 제공합니다.
Select ATN2(0, -1)
다음 레코드가있는 CUSTOMERS 테이블을 고려하십시오.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
중에서()
주어진 두 표현식 사이에 값이 있으면 출력으로 제공됩니다.
예
다음 쿼리는 다음 출력을 제공합니다.
SELECT salary from customers where salary between 2000 and 8500
산출
salary
2000.00
2000.00
6500.00
8500.00
4500.00
MIN ()
최소값은 주어진 표현식에서 출력됩니다.
예
다음 쿼리는 customers 테이블에서 주어진 'salary'식에 대해 '1500.00'을 제공합니다.
Select MIN(salary)from CUSTOMERS
MAX ()
최대 값은 주어진 표현식에서 출력됩니다.
예
다음 쿼리는 customers 테이블에서 주어진 'salary'식에 대해 '10000.00'을 제공합니다.
Select MAX(salary)from CUSTOMERS
SQRT ()
주어진 숫자 표현식의 제곱근이 출력으로 나옵니다.
예
다음 쿼리는 주어진 4 개의 숫자 표현식에 대해 2를 제공합니다.
Select SQRT(4)
PI ()
PI 값이 출력됩니다.
예
다음 쿼리는 PI 값에 대해 3.14159265358979를 제공합니다.
Select PI()
천장()
주어진 값은 다음으로 높은 값인 소수를 반올림 한 후 출력으로 표시됩니다.
예
다음 쿼리는 주어진 123.25 값에 대해 124를 제공합니다.
Select CEILING(123.25)
바닥()
주어진 값은 표현식보다 작거나 같은 소수를 반올림 한 후 출력으로 나옵니다.
예
다음 쿼리는 주어진 123.25 값에 대해 123을 제공합니다.
Select FLOOR(123.25)
로그()
주어진 표현식의 자연 로그가 출력으로 나옵니다.
예
다음 쿼리는 주어진 1 값에 대해 0을 제공합니다.
Select LOG(1)