Sql

SQL 기본 문법

SQL이란 무엇인가?

웹사이트에서 SQL 사용

데이터베이스의 데이터를 보여주는 웹 사이트를 구축하려면 다음이 필요합니다.

RDBMS란?

SQL문 기본 문법

주요 핵심 SQL명령어

SELECT - 데이터베이스에서 데이터를 추출합니다.
UPDATE - 데이터베이스의 데이터를 업데이트합니다.
DELETE - 데이터베이스에서 데이터를 삭제합니다.
INSERT INTO - 새로운 데이터를 데이터베이스에 삽입합니다.
CREATE DATABASE - 새 데이터베이스를 만듭니다.
ALTER DATABASE - 데이터베이스를 수정합니다.
CREATE TABLE - 새 테이블을 만듭니다.
ALTER TABLE - 테이블을 수정합니다.
DROP TABLE - 테이블을 삭제합니다.
CREATE INDEX - 색인 (검색 키)을 작성합니다.
DROP INDEX - 색인을 삭제합니다.

SQL SELECT문

SQL SELECT DISTINCT문

SQL WHERE절

Operator Description
= Equal
<> Not equal. Note: In some versions of SQL this operator may be written as !=
> Greater than
< Less than
>= Greater than or equal
<= Less than or equal
BETWEEN Between an inclusive range
LIKE Search for a pattern
IN To specify multiple possible values for a column

SQL AND, OR 및 NOT 연산자

SQL ORDER BY 키워드

SQL INSERT INTO문

SQL NULL 값

SQL UPDATE문

SQL DELETE문

SQL TOP, LIMIT 또는 ROWNUM절

SQL MIN() 및 MAX()합수

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

SQL LIKE연산자

%백분율 기호는 0, 1 또는 복수 문자를 나타냅니다.

_밑줄은 한 문자를 나타냅니다.

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 와일드 카드 문자

_ 밑줄은 한 문자를 나타냅니다.

SQL IN 연산자

SQL BETWEEN연산자

SQL Aliases

JOIN

Oders

OrderID CustomerID OrderDate
10308 2 1996-09-18
10309 37 1996-09-19
10310 77 1996-09-20

Customers

CustomerID CustomerName ContactName Country
1 Alfreds Futterkiste Maria Anders Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Mexico
3 Antonio Moreno Taquería Antonio Moreno Mexico

Orders테이블의 CustomerID열은 Customers테이블의 CustomerID를 나타냅니다. 위의 두 테이블 사이의 공유하고 있는 정보는 CustomerID열 입니다. 이와같이 같은 정보를 통하여 위의 두 테이블의 공통된 Value를 가지는 레코드를 골라내는 SQL문장을 만들어 낼 수 있습니다.

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

INNER JOIN문에서 Orders의 CustomersID와 Customers의 CustomersID가 같은 값을 찾아내고 같은 값을 가지는 행의 정보를 두 테이블에서 가져와 SELECT문에서 산출한다.

SQL INNER JOIN 키워드

SQL LEFT JOIN키워드

SQL RIGHT JOIN키워드

SQL FULL OUTER JOIN키워드

SELF JOIN문

SQL UNION연산자

열은 유사한 데이터 형식을 가져야합니다.

각 SELECT 문의 열은 같은 순서로 있어야합니다

SQL GROUP BY문

SQL HAVING Clause(HAVING절)

SQL EXISTS 연산자

SQL ANY 및 ALL 연산자

SQL SELECT INTO문

SQL INSERT INTO SELECT문

SQL NULL함수

예제 데이터 P_Id | ProductName | UnitPrice | UnitsInStock | UnitsOnOrder —|—|—|—|— 1 | Jarlsberg | 10.45 | 16 | 15 2 | Mascarpone | 32.56 | 23 | 3 | Gorgonzola | 15.67 | 9 | 20

SQL 주석

SQL 데이터베이스 동작 관련 문법

CREATE DATABASE문

DROP DATABASE문

CREATE TABLE문

datatype 매개 변수는 열에서 보유 할 수있는 데이터 유형 (예 : varchar, 정수, 날짜 등)을 지정합니다.

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype,
   ....
);

LastName, FirstName, Address 및 City 열은 varchar 유형이며 문자를 포함하며이 필드의 최대 길이는 255 자입니다.

빈 “Persons”테이블은 이제 다음과 같이 보입니다.

PersonID | LastName | FirstName | Address | City —|—|—|—|— —|—|—|—|—

DROP TABLE문

ALTER TABLE문

SQL Server / MS 액세스

ALTER TABLE table_name
ALTER COLUMN column_name datatype;

내 SQL / 오라클 (이전 버전 10G) :

ALTER TABLE table_name
MODIFY COLUMN column_name datatype;

Oracle 10G 이상

ALTER TABLE table_name
MODIFY column_name datatype;

SQL Constraints

NOT NULL - 열이 NULL 값을 가질 수 없음을 보장합니다.
UNIQUE - 열의 모든 값이 서로 다른지 확인합니다.
PRIMARY KEY - NOT NULL과 UNIQUE의 조합. 테이블의 각 행을 고유하게 식별합니다.
FOREIGN KEY - 다른 테이블의 행 / 레코드를 고유하게 식별합니다.
CHECK - 열의 모든 값이 특정 조건을 충족하는지 확인합니다.
DEFAULT - 값이 지정되지 않은 경우 열의 기본값을 설정합니다.
INDEX - 데이터베이스에서 데이터를 매우 신속하게 생성 및 검색하는 데 사용됩니다.

SQL NOT NULL 제약 조건

SQL UNIQUE 제약 조건

SQL Server / Oracle / MS 액세스

ALTER TABLE Persons
DROP CONSTRAINT UC_Person;

SQL PRIMARY KEY제약

MySQL

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (ID)
);

SQL Server / Oracle / MS 액세스

CREATE TABLE Persons (
    ID int NOT NULL PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

SQL Server / Oracle / MS 액세스

ALTER TABLE Persons
DROP CONSTRAINT PK_Person;

SQL FOREIGN KEY제약

Persons table PersonID | LastName | FirstName | Age —|—|—|— 1 | Hansen | Ola | 30 2 | Svendson | Tove | 23 3 | Pettersen | Kari | 20

Orders table OrderID | OrderNumber | PersonID —|—|— 1 | 77895 | 3 2 | 44678 | 3 3 | 22456 | 2 4 | 24562 | 1

SQL Server / Oracle / MS 액세스

ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;

SQL CHECK Constraint

SQL Server / Oracle / MS 액세스

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int CHECK (Age>=18)
);

MySQL

ALTER TABLE Persons
DROP CHECK CHK_PersonAge;

DEFAULT Constraint

SQL Server / MS Access:

ALTER TABLE Persons
ALTER COLUMN City SET DEFAULT 'Sandnes';

Oracle

ALTER TABLE Persons
MODIFY City DEFAULT 'Sandnes';

MySQL

ALTER TABLE Persons
ALTER City DROP DEFAULT;

Server / Oracle / MS 액세스

ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT;

CREATE INDEX문

INCREMENT 필드

SQL Date

다음 “Orders” 테이블이 있다고 가정합니다. OrderId | ProductName | OrderDate —|—|— 1 | Geitost | 2008-11-11 2 | Camembert Pierrot | 2008-11-09 3 | Mozzarella di Giovanni | 2008-11-11 4 | Mascarpone Fabioli | 2008-10-29

이제 “주문”테이블이 다음과 같이 보입니다 ( “주문일”열의 시간 구성 요소에 주목하십시오). OrderId | ProductName | OrderDate —|—|— 1 | Geitost | 2008-11-11 13:23 2 | Camembert Pierrot | 2008-11-09 15:45 3 | Mozzarella di Giovanni | 2008-11-11 11:12 4 | Mascarpone Fabioli | 2008-10-29 14:56

SQL CREATE VIEW문

SQL VIEW UPDATE

SQL INJECTION (추가공부 필요)

SQL Hosting