SQL 기초 이론 정리 / SQL basic theory summary
- -
https://www.w3schools.com/sql/sql_where.asp
SQL
: Structured Query Language
조건
= Equal
> Greater than
< Less than
>= Greater than or equal
<= Less than or equal
<> Not equal. Note: In some versions of SQL this operator may be written as !=
BETWEEN Between a certain range
LIKE Search for a pattern
IN To specify multiple possible values for a column
* null
=, < 또는 <>와 같은 비교 연산자를 사용하여 NULL 값을 테스트할 수 없습니다.
IS NULL대신 및 IS NOT NULL연산자 를 사용해야 합니다 .
* SELECT TOP 절
이 SELECT TOP절은 반환할 레코드 수를 지정하는 데 사용됩니다
이 SELECT TOP절은 수천 개의 레코드가 있는 대형 테이블에서 유용합니다. 많은 수의 레코드를 반환하면 성능에 영향을 줄 수 있습니다.
참고: 모든 데이터베이스 시스템이 이 SELECT TOP절을 지원하는 것은 아닙니다. MySQL은 LIMIT제한된 수의 레코드를 선택하는 절을 지원하는 반면 Oracle은 및 . FETCH FIRST n ROWS ONLYROWNUM
( number에는 숫자를 입력해주면 됨 )
SQL 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;
오라클 12 구문:
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s)
FETCH FIRST number ROWS ONLY;
이전 Oracle 구문:
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;
* LIKE
LIKE연산자 와 함께 자주 사용되는 두 가지 와일드카드가 있습니다 .
백분율 기호(%)는 0개, 1개 또는 여러 문자를 나타냅니다.
밑줄 기호(_)는 하나의 단일 문자를 나타냅니다.
참고: MS Access는 퍼센트 기호(%) 대신 별표(*)를 사용하고 밑줄(_) 대신 물음표(?)를 사용합니다.
LIKE다음은 '%' 및 '_' 와일드카드가 있는 다양한 연산자를 보여주는 몇 가지 예 입니다.
LIKE Operator Description
WHERE CustomerName LIKE 'a%' Finds any values that start with "a"
WHERE CustomerName LIKE '%a' Finds any values that end with "a"
WHERE CustomerName LIKE '%or%' Finds any values that have "or" in any position
WHERE CustomerName LIKE '_r%' Finds any values that have "r" in the second position
WHERE CustomerName LIKE 'a_%' Finds any values that start with "a" and are at least 2 characters in length
WHERE CustomerName LIKE 'a__%' Finds any values that start with "a" and are at least 3 characters in length
WHERE ContactName LIKE 'a%o'
* SQL 와일드카드 문자
와일드카드 문자는 문자열에서 하나 이상의 문자를 대체하는 데 사용됩니다.
와일드카드 문자는 연산자와 함께 사용됩니다.
연산자는 열에서 지정된 패턴을 검색하기 위해 절에서 사용 됩니다 .
LIKELIKE WHERE
MS Access의 와일드카드 문자
Symbol Description Example
* Represents zero or more characters bl* finds bl, black, blue, and blob
? Represents a single character h?t finds hot, hat, and hit
[] Represents any single character within the brackets h[oa]t finds hot and hat, but not hit
! Represents any character not in the brackets h[!oa]t finds hit, but not hot and hat
- Represents any single character within the specified range c[a-b]t finds cat and cbt
# Represents any single numeric character 2#5 finds 205, 215, 225, 235, 245, 255, 265, 275, 285, and 295
SQL Server의 와일드카드 문자
Symbol Description Example
% Represents zero or more characters bl% finds bl, black, blue, and blob
_ Represents a single character h_t finds hot, hat, and hit
[] Represents any single character within the brackets h[oa]t finds hot and hat, but not hit
^ Represents any character not in the brackets h[^oa]t finds hit, but not hot and hat
- Represents any single character within the specified range c[a-b]t finds cat and cbt
모든 와일드카드를 조합하여 사용할 수도 있습니다!
LIKE다음은 '%' 및 '_' 와일드카드가 있는 다양한 연산자를 보여주는 몇 가지 예 입니다.
LIKE Operator Description
WHERE CustomerName LIKE 'a%' Finds any values that starts with "a"
WHERE CustomerName LIKE '%a' Finds any values that ends with "a"
WHERE CustomerName LIKE '%or%' Finds any values that have "or" in any position
WHERE CustomerName LIKE '_r%' Finds any values that have "r" in the second position
WHERE CustomerName LIKE 'a__%' Finds any values that starts with "a" and are at least 3 characters in length
WHERE ContactName LIKE 'a%o' Finds any values that starts with "a" and ends with "o"
* SQL BETWEEN 연산자
연산자 는 BETWEEN주어진 범위 내에서 값을 선택합니다. 값은 숫자, 텍스트 또는 날짜일 수 있습니다.
BETWEEN연산자는 포괄적입니다. 시작 값과 끝 값이 포함됩니다.
( 시작, 끝 값 >> 포함 << )
* UNION 연산자
UNION연산자는 둘 이상의 SELECT 명령문 의 결과 집합을 결합 하는 데 사용됩니다.
내의 모든 SELECT명령문 UNION에는 동일한 수의 열이 있어야 합니다.
열의 데이터 유형도 유사해야 합니다.
모든 명령문의 열도 SELECT동일한 순서여야 합니다.
연산자 는 UNION기본적으로 고유한 값만 선택합니다.
중복 값을 허용하려면 다음을 사용 UNION ALL하십시오.
* group by
GROUP BY"각 국가의 고객 수 찾기"와 같이 동일한 값을 가진 행을 요약 행으로 그룹화합니다.
이 GROUP BY명령문은 종종 집계 함수( COUNT(), MAX(), MIN(), SUM(), AVG())와 함께 사용되어 결과 집합을 하나 이상의 열로 그룹화합니다.
* EXSIT 연산자
EXISTS연산자는 하위 쿼리에 레코드가 있는지 테스트하는 데 사용됩니다 .
EXISTS하위 쿼리가 하나 이상의 레코드를 반환하면 연산자는 TRUE를 반환합니다 .
* ANY 연산자
ANY운영자 :
결과로 부울 값을 반환합니다. ( boolean )
하위 쿼리 값 중 하나라도 조건을 충족하면 TRUE를 반환합니다.
ANY범위의 값 중 하나에 대해 작업이 참인 경우 조건이 참이 됨을 의미합니다.
ex. SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
(SELECT column_name
FROM table_name
WHERE condition);
* ALL 연산자
ALL운영자 :
결과로 부울 값을 반환합니다. ( boolean )
모든 하위 쿼리 값이 조건을 충족하면 TRUE를 반환합니다.
SELECT, WHERE및 HAVING문과 함께 사용
ALL범위의 모든 값에 대해 연산이 참인 경우에만 조건이 참이 됨을 의미합니다.
* SELECT INTO
명령문은 한 테이블 의 SELECT INTO데이터를 새 테이블로 복사합니다.
EX.
SELECT *
INTO newtable [IN externaldb]
FROM oldtable
WHERE condition;
* INSERT INTO SELECT 문
NSERT INTO SELECT한 테이블에서 데이터를 복사하여 다른 테이블에 삽입합니다.
명령문은 소스 및 대상 테이블의 데이터 유형 이 INSERT INTO SELECT일치해야 합니다.
참고: 대상 테이블의 기존 레코드는 영향을 받지 않습니다.
* CASE WHEN 표현식
표현식 은 CASE조건을 통과하고 첫 번째 조건이 충족되면 값을 반환합니다(예: if-then-else 문). 따라서 조건이 참이면 읽기를 중지하고 결과를 반환합니다. 참인 조건이 없으면 ELSE절의 값을 반환합니다. / 마지막 END 작성
( CASE WHEN 조건 THEN '' ELSE '' END )
EX.
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;
* NULL 함수
Oracle NVL()기능은 동일한 결과를 얻습니다.
SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products;
또는 다음 COALESCE() 과 같이 함수를 사용할 수 있습니다.
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;
( 안에 파라미터 중에서 순차적으로 돌면서 처음으로 NULL값이 아닌 값을 리턴하고, 모두 NULL값인 경우 NULL값을 리턴함 )
* stored Procedure
저장 프로시저는 저장할 수 있는 준비된 SQL 코드이므로 코드를 반복해서 재사용할 수 있습니다.
따라서 반복해서 작성하는 SQL 쿼리가 있는 경우 저장 프로시저로 저장한 다음 호출하여 실행하면 됩니다.
저장 프로시저가 전달된 매개 변수 값에 따라 작동할 수 있도록 매개 변수를 저장 프로시저에 전달할 수도 있습니다.
* CREATE | DROP DATEBASE 문
CREATE DATABASE문은 새 SQL 데이터베이스를 만드는 데 사용됩니다.
CREATE DATABASE databasename;
DROP DATABASE databasename;
* BACKUP DATABASE 문
BACKUP DATABASE명령문은 SQL Server에서 기존 SQL 데이터베이스의 전체 백업을 만드는 데 사용됩니다.
BACKUP DATABASE databasename
TO DISK = 'filepath';
* BACKUP WITH DIFFERENTIAL 문
BACKUP DATABASE명령문은 SQL Server에서 기존 SQL 데이터베이스의 전체 백업을 만드는 데 사용됩니다.
BACKUP DATABASE databasename
TO DISK = 'filepath'
WITH DIFFERENTIAL;
EX.
BACKUP DATABASE testDB
TO DISK = 'D:\backups\testDB.bak'
WITH DIFFERENTIAL;
* 다른 테이블을 사용하여 테이블 만들기
를 사용하여 기존 테이블의 복사본을 만들 수도 있습니다 CREATE TABLE.
새 테이블은 동일한 열 정의를 가져옵니다. 모든 열 또는 특정 열을 선택할 수 있습니다.
기존 테이블을 사용하여 새 테이블을 만드는 경우 새 테이블은 이전 테이블의 기존 값으로 채워집니다.
EX.
CREATE TABLE new_table_name AS
SELECT column1, column2,...
FROM existing_table_name
WHERE ....;
* ALTER TABLE 문
이 ALTER TABLE문은 기존 테이블의 열을 추가, 삭제 또는 수정하는 데 사용됩니다.
이 ALTER TABLE문은 기존 테이블에 다양한 제약 조건을 추가하고 삭제하는 데에도 사용됩니다.
EX.
// 열 추가
ALTER TABLE Customers
ADD Email varchar(255);
// 열 삭제
ALTER TABLE Customers
DROP COLUMN Email;
// 열 이름 바꾸기
ALTER TABLE table_name
RENAME COLUMN old_name to new_name;
// 테이블 변경 - 데이터 유형 변경 / 수정
ALTER TABLE table_name
MODIFY column_name datatype;
* SQL 제약
SQL 제약 조건은 테이블의 데이터에 대한 규칙을 지정하는 데 사용됩니다.
제약 조건은 테이블에 들어갈 수 있는 데이터 유형을 제한하는 데 사용됩니다. 이렇게 하면 테이블에 있는 데이터의 정확성과 신뢰성이 보장됩니다. 제약 조건과 데이터 작업 사이에 위반 사항이 있으면 작업이 중단됩니다.
제약 조건은 열 수준 또는 테이블 수준일 수 있습니다. 열 수준 제약 조건은 열에 적용되고 테이블 수준 제약 조건은 전체 테이블에 적용됩니다.
다음 제약 조건은 SQL에서 일반적으로 사용됩니다.
NOT NULL- 열이 NULL 값을 가질 수 없도록 합니다.
UNIQUE- 열의 모든 값이 다른지 확인
PRIMARY KEY- NOT NULL와 의 조합 UNIQUE. 테이블의 각 행을 고유하게 식별합니다.
FOREIGN KEY - 테이블 간의 링크를 파괴하는 행위를 방지합니다.
CHECK- 열의 값이 특정 조건을 충족하는지 확인
DEFAULT- 값이 지정되지 않은 경우 열의 기본값을 설정합니다.
CREATE INDEX- 데이터베이스에서 매우 빠르게 데이터를 생성하고 검색하는 데 사용됩니다.
* CREATE INDEX 문
인덱스는 다른 경우보다 더 빨리 데이터베이스에서 데이터를 검색하는 데 사용됩니다. 사용자는 인덱스를 볼 수 없으며 검색/쿼리 속도를 높이는 데만 사용됩니다.
참고: 인덱스가 있는 테이블을 업데이트하는 것은 인덱스가 없는 테이블을 업데이트하는 것보다 시간이 더 걸립니다(인덱스도 업데이트해야 하기 때문). 따라서 자주 검색되는 열에 대해서만 인덱스를 생성하십시오.
------ 인덱스 -----------
'[개발] 프로그램 지식' 카테고리의 다른 글
JSP 기초 정리 (1) / Summary of JSP basic concepts (0) | 2023.02.11 |
---|---|
[js] input 키보드 입력 막기 / block keyboard input (0) | 2023.02.11 |
[js] 자바스크립트 소수점 처리 코드 / JavaScript decimal handling code (0) | 2023.02.11 |
[java] split 함수 안에서 or조건도 사용한거 아셨나용? (0) | 2023.02.11 |
[oracle] 쿼리 함수때문에 속도 느린 경우 / 스칼라 서브쿼리 캐싱 코드 (0) | 2023.02.11 |
소중한 공감 감사합니다